diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 3da03794..bf798fc4 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -8,7 +8,7 @@ jobs: strategy: matrix: - node-version: [10.x, 15.x] + node-version: [12.x, 15.x] steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 360cc0d4..bd5c3693 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v2.1.2 with: - node-version: '12' + node-version: '12.x' - uses: actions/cache@v2 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e4b0ee54..1bd3242a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/setup-node@v1 with: - node-version: 10.x + node-version: 12.x - name: cache dependencies uses: actions/cache@v1 diff --git a/.gitignore b/.gitignore index 32fda967..14071c9e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ node_modules .git coverage coverage.lcov -codecov.yml npm-debug.log .nyc_output *.DS_Store diff --git a/builds/wtf_wikipedia-client.js b/builds/wtf_wikipedia-client.js index a64f863c..67b458bb 100644 --- a/builds/wtf_wikipedia-client.js +++ b/builds/wtf_wikipedia-client.js @@ -1,10611 +1,9790 @@ -/* wtf_wikipedia 9.0.1 MIT */ +/* wtf_wikipedia 9.0.2 MIT */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtf = factory()); -}(this, (function () { 'use strict'; - - function require$$0$a (e, n) { - return n = n || {}, new Promise(function (t, r) { - var s = new XMLHttpRequest(), - o = [], - u = [], - i = {}, - a = function () { - return { - ok: 2 == (s.status / 100 | 0), - statusText: s.statusText, - status: s.status, - url: s.responseURL, - text: function () { - return Promise.resolve(s.responseText); - }, - json: function () { - return Promise.resolve(s.responseText).then(JSON.parse); - }, - blob: function () { - return Promise.resolve(new Blob([s.response])); - }, - clone: a, - headers: { - keys: function () { - return o; - }, - entries: function () { - return u; - }, - get: function (e) { - return i[e.toLowerCase()]; - }, - has: function (e) { - return e.toLowerCase() in i; - } - } - }; - }; - - for (var l in s.open(n.method || "get", e, !0), s.onload = function () { - s.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm, function (e, n, t) { - o.push(n = n.toLowerCase()), u.push([n, t]), i[n] = i[n] ? i[n] + "," + t : t; - }), t(a()); - }, s.onerror = r, s.withCredentials = "include" == n.credentials, n.headers) s.setRequestHeader(l, n.headers[l]); - - s.send(n.body || null); - }); - } - - var browser = self.fetch || (self.fetch = require$$0$a.default || require$$0$a); - - /** - * Parses out the domain and title from a url - * - * @private - * @param {string} url The url that will be parsed - * @returns {{domain: string, title: string}} The domain and title of a url - */ - const parseUrl$1 = function (url) { - let parsed = new URL(url); - let title = parsed.pathname.replace(/^\/(wiki\/)?/, ''); - title = decodeURIComponent(title); - return { - domain: parsed.host, - title: title - }; - }; - - var parseUrl_1 = parseUrl$1; - - /** - * capitalizes the input - * hello -> Hello - * hello there -> Hello there - * - * @private - * @param {string} [str] the string that will be capitalized - * @returns {string} the capitalized string - */ - function capitalise(str) { - if (str && typeof str === 'string') { - return str.charAt(0).toUpperCase() + str.slice(1); - } - - return ''; - } - /** - * trim whitespaces of the ends normalize 2 spaces into one and removes whitespaces before commas - * - * @private - * @param {string} [str] the string that will be processed - * @returns {string} the processed string - */ - - - function trim_whitespace$1(str) { - if (str && typeof str === 'string') { - str = str.replace(/^\s+/, ''); - str = str.replace(/\s+$/, ''); - str = str.replace(/ {2}/, ' '); - str = str.replace(/\s, /, ', '); - return str; - } - - return ''; - } - /** - * determines if an variable is an array or not - * - * @private - * @param {*} x the variable that needs to be checked - * @returns {boolean} whether the variable is an array - */ - - - function isArray$4(x) { - return Object.prototype.toString.call(x) === '[object Array]'; - } - /** - * determines if an variable is an object or not - * - * @private - * @param {*} x the variable that needs to be checked - * @returns {boolean} whether the variable is an object - */ - - - function isObject$1(x) { - return x && Object.prototype.toString.call(x) === '[object Object]'; - } - - var helpers = { - capitalise, - trim_whitespace: trim_whitespace$1, - isArray: isArray$4, - isObject: isObject$1 - }; - - var require$$0$9 = helpers; - - const { - isArray: isArray$3 - } = require$$0$9; - const isInterWiki = /(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/; - const defaults$c = { - action: 'query', - prop: 'revisions|pageprops', - // we use the 'revisions' api here, instead of the Raw api, for its CORS-rules.. - rvprop: 'content', - maxlag: 5, - rvslots: 'main', - origin: '*', - format: 'json', - redirects: 'true' - }; - /** - * turns a object into a query string - * - * @private - * @param {Object} obj - * @returns {string} QueryString - */ - - const toQueryString = function (obj) { - return Object.entries(obj).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join('&'); - }; - /** - * cleans and prepares the tile by replacing the spaces with underscores (_) and trimming the white spaces of the ends - * - * @private - * @param {string} page the title that needs cleaning - * @returns {string} the cleaned title - */ - - - const cleanTitle = page => { - return page.replace(/ /g, '_').trim(); - }; - /** - * generates the url for fetching the pages - * - * @private - * @param {import('.').fetchDefaults} options - * @returns {string} the url that can be used to make the fetch - */ - - - const makeUrl$1 = function (options) { - let params = Object.assign({}, defaults$c); //default url - - let apiPath = ''; //add support for third party apis - - if (options.domain) { - //wikimedia is the only api that uses `/w/api` as its path. other wikis use other paths - let path = isInterWiki.test(options.domain) ? 'w/api.php' : options.path; - apiPath = `https://${options.domain}/${path}?`; - } else if (options.lang && options.wiki) { - apiPath = `https://${options.lang}.${options.wiki}.org/w/api.php?`; - } else { - return ''; - } - - if (!options.follow_redirects) { - delete params.redirects; - } //support numerical ids - - - let title = options.title; - - if (typeof title === 'number') { - //single pageId - params.pageids = title; - } else if (typeof title === 'string') { - //single page title - params.titles = cleanTitle(title); - } else if (title !== undefined && isArray$3(title) && typeof title[0] === 'number') { - //pageid array - params.pageids = title.join('|'); - } else if (title !== undefined && isArray$3(title) === true && typeof title[0] === 'string') { - //title array - params.titles = title.map(cleanTitle).join('|'); - } else { - return ''; - } //make it! - - - return `${apiPath}${toQueryString(params)}`; - }; - - var makeUrl_1 = makeUrl$1; - - /** - * parses the media wiki api response to something we can use - * - * the data-format from mediawiki api is nutso - * - * @private - * @param {object} data - * @param {object} [options] - * @returns {*} result - */ - const getResult$1 = function (data, options = {}) { - //get all the pagesIds from the result - let pages = Object.keys(data.query.pages); // map over the pageIds to parse out all the information - - return pages.map(id => { - // get the page by pageID - let page = data.query.pages[id] || {}; // if the page is missing or not found than return null - - if (page.hasOwnProperty('missing') || page.hasOwnProperty('invalid')) { - return null; - } // get the text from the object - - - let text = page.revisions[0]['*']; // if the text is not found in the regular place than it is at the other place - - if (!text && page.revisions[0].slots) { - text = page.revisions[0].slots.main['*']; - } - - page.pageprops = page.pageprops || {}; - let domain = options.domain; - - if (!domain && options.wiki) { - domain = `${options.wiki}.org`; - } - - let meta = Object.assign({}, options, { - title: page.title, - pageID: page.pageid, - namespace: page.ns, - domain: domain, - wikidata: page.pageprops.wikibase_item, - description: page.pageprops['wikibase-shortdesc'] - }); - return { - wiki: text, - meta: meta - }; - }); - }; - - var getResult_1 = getResult$1; - - /** - * helper for looping around all sections of a document - * - * @private - * @param {Document} doc the document with the sections - * @param {string} fn the function name of the function that will be called - * @param {string | number} [clue] the clue that will be used with the function - * @returns {Array|*} the array of item at the index of the clue - */ - const sectionMap$1 = function (doc, fn, clue) { - let arr = []; - doc.sections().forEach(sec => { - let list = []; - - if (typeof clue === 'string') { - list = sec[fn](clue); - } else { - list = sec[fn](); - } - - list.forEach(t => { - arr.push(t); - }); - }); - - if (typeof clue === 'number') { - if (arr[clue] === undefined) { - return []; - } - - return [arr[clue]]; - } - - return arr; - }; - - var _sectionMap = sectionMap$1; - - /** - * applies the the key values of defaults to options - * - * @private - * @param {object} options the user options - * @param {object} defaults the defaults - * @returns {object} the user options with the defaults applied - */ - const setDefaults$1 = function (options, defaults) { - return Object.assign({}, defaults, options); - }; - - var setDefaults_1 = setDefaults$1; - - var setDefaults = setDefaults_1; - - /** - * @typedef DocumentToJsonOptions - * @property {boolean | undefined} title - * @property {boolean | undefined} pageID - * @property {boolean | undefined} categories - * @property {boolean | undefined} sections - * @property {boolean | undefined} coordinates - * @property {boolean | undefined} infoboxes - * @property {boolean | undefined} images - * @property {boolean | undefined} plaintext - * @property {boolean | undefined} citations - * @property {boolean | undefined} references - */ - - const defaults$b = { - title: true, - sections: true, - pageID: true, - categories: true - }; - /** - * @typedef documentToJsonReturn - * @property {string | undefined} title - * @property {number | null | undefined} pageID - * @property {string[] | undefined} categories - * @property {object[] | undefined} sections - * @property {boolean | undefined} isRedirect - * @property {object | undefined} redirectTo - * @property {object[] | undefined} coordinates - * @property {object[] | undefined} infoboxes - * @property {Image[] | undefined} images - * @property {string | undefined} plaintext - * @property {object[] | undefined} references - */ - - /** - * an opinionated output of the most-wanted data - * - * @private - * @param {Document} doc - * @param {DocumentToJsonOptions} options - * @returns {documentToJsonReturn} - */ - - const toJSON$8 = function (doc, options) { - options = setDefaults(options, defaults$b); - /** - * @type {documentToJsonReturn} - */ - - let data = {}; - - if (options.title) { - data.title = doc.title(); - } - - if (options.pageID) { - data.pageID = doc.pageID(); - } - - if (options.categories) { - data.categories = doc.categories(); - } - - if (options.sections) { - data.sections = doc.sections().map(i => i.json(options)); - } - - if (doc.isRedirect() === true) { - data.isRedirect = true; - data.redirectTo = doc.redirectTo(); - data.sections = []; - } //these are default-off - - - if (options.coordinates) { - data.coordinates = doc.coordinates(); - } - - if (options.infoboxes) { - data.infoboxes = doc.infoboxes().map(i => i.json(options)); - } - - if (options.images) { - data.images = doc.images().map(i => i.json(options)); - } - - if (options.plaintext) { - data.plaintext = doc.text(options); - } - - if (options.citations || options.references) { - data.references = doc.references(); - } - - return data; - }; - - var toJson$9 = toJSON$8; - - var categories$1 = ['category', //en - 'abdeeling', // pdc - 'bólkur', // fo - 'catagóir', // ga - 'categori', // cy - 'categoria', 'categoria', // co - 'categoría', // es - 'categorîa', // lij - 'categorìa', // pms - 'catégorie', 'categorie', 'catègorie', // frp - 'category', 'categuria', // lmo - 'catigurìa', // scn - 'class', // kw - 'ẹ̀ka', // yo - 'flocc', 'flocc', // ang - 'flokkur', 'grup', // tpi - 'jamii', // sw - 'kaarangay', // war - 'kateggoría', // lad - 'kategooria', // et - 'kategori', // da - 'kategorî', // ku - 'kategoria', // eu - 'kategória', // hu - 'kategorie', //de - 'kategoriija', // se - 'kategorija', // sl - 'kategorio', // eo - 'kategoriya', 'kategoriýa', // tk - 'kategoriye', // diq - 'kategory', // fy - 'kategorya', // tl - 'kateqoriya', // az - 'katiguriya', // qu - 'klad', // vo - 'luokka', 'ñemohenda', // gn - 'roinn', //-seòrsa gd - 'ronney', // gv - 'rummad', // br - 'setensele', // nso - 'sokajy', // mg - 'sumut', // atassuseq kl - 'thể', // loại vi - 'turkum', // uz - 'категорија', 'категория', // ru - 'категорія', // uk - 'катэгорыя', 'төркем', // tt - 'קטגוריה', // he - 'تصنيف', 'تۈر', // ug - 'رده', 'श्रेणी', 'श्रेणी', // hi - 'বিষয়শ্রেণী', // bn - 'หมวดหมู่', // th - '분류', // ko - '분류', //ko - '分类' // za - //-- - ]; - - var disambig_templates = ['dab', //en - 'disamb', //en - 'disambig', //en - 'disambiguation', //en - 'aðgreining', //is - 'aimai', //ja - 'ałtsʼáʼáztiin', //nv - 'anlam ayrımı', //gag - 'anlam ayrımı', //tr - 'apartigilo', //eo - 'argipen', //eu - 'begriepskloorenge', //stq - 'begriffsklärung', //als - 'begriffsklärung', //de - 'begriffsklärung', //pdc - 'begriffsklearung', //bar - 'bisongidila', //kg - 'bkl', //pfl - 'bokokani', //ln - 'caddayn', //so - 'clerheans', //kw - 'cudakirin', //ku - 'čvor', //bs - 'db', //vls - 'desambig', //nov - 'desambigación', //an - 'desambiguação', //pt - 'desambiguació', //ca - 'desambiguación', //es - 'desambiguáncia', //ext - 'desambiguasion', //lad - 'desambiguassiù', //lmo - 'desambigui', //lfn - 'dezambiguizare', //ro - 'dəqiqləşdirmə', //az - 'disambigua', //it - 'disambigua', //lij - 'disambigua', //nap - 'disambìgua', //sc - 'disambigua', //scn - 'disambiguasi', //id - 'disambiguasi', //su - 'discretiva', //la - 'disheñvelout', //br - 'disingkek', //min - 'dixanbigua', //vec - 'dixebra', //ast - 'diżambigwazzjoni', //mt - 'doorverwijspagina', //nl - 'dp', //nl - 'dp', //zea - 'dubbelsinnig', //af - 'dudalipen', //rmy - 'dv', //nds_nl - 'egyért', //hu - 'fleiri týdningar', //fo - 'fleirtyding', //nn - 'flertydig', //da - 'förgrening', //sv - 'gì-ngiê', //cdo - 'giklaro', //ceb - 'gwahaniaethu', //cy - 'homonimo', //io - 'homónimos', //gl - 'homonymie', //fr - 'huaʻōlelo puana like', //haw - 'idirdhealú', //ga - 'khu-pia̍t', //zh_min_nan - 'kthjellim', //sq - 'kujekesa', //sn - 'maana', //sw - 'maneo bin', //diq - 'mehrdüdig begreep', //nds - 'menm non', //ht - 'muardüüdag artiikel', //frr - 'neibetsjuttings', //fy - 'nozīmju atdalīšana', //lv - 'nuorodinis', //lt - 'nyahkekaburan', //ms - 'omonimeye', //wa - 'omonimia', //oc - 'page dé frouque', //nrm - 'paglilinaw', //tl - 'panangilawlawag', //ilo - 'pansayod', //war - 'pejy mitovy anarana', //mg - 'peker', //no - 'razdvojba', //hr - 'razločitev', //sl - 'razvrstavanje', //sh - 'reddaghey', //gv - 'rozcestník', //cs - 'rozlišovacia stránka', //sk - 'sclerir noziun', //rm - 'selvendyssivu', //olo - 'soilleireachadh', //gd - 'suzmunski', //jbo - 'täpsustuslehekülg', //et - 'täsmennyssivu', //fi - 'telplänov', //vo - 'tlahtolmelahuacatlaliztli', //nah - 'trang định hướng', //vi - 'ujednoznacznienie', //pl - 'verdudeliking', //li - 'wěcejwóznamowosć', //dsb - 'wjacezmyslnosć', //hsb - 'zambiguaçon', //mwl - 'zeimeibu škiršona', //ltg - 'αποσαφήνιση', //el - 'айрық', //kk - 'аҵакырацәа', //ab - 'вишезначна одредница', //sr - 'ибҳомзудоӣ', //tg - 'кёб магъаналы', //krc - 'күп мәгънәләр', //tt - 'күп мәғәнәлелек', //ba - 'мъногосъмꙑслиѥ', //cu - 'неадназначнасць', //be - 'неадназначнасьць', //be_x_old - 'неоднозначность', //ru - 'олон удхатай', //bxr - 'појаснување', //mk - 'пояснение', //bg - 'са шумуд манавал', //lez - 'салаа утгатай', //mn - 'суолталар', //sah - 'текмаанисиздик', //ky - 'цо магіна гуреб', //av - 'чеперушка', //rue - 'чолхалла', //ce - 'шуко ончыктымаш-влак', //mhr - 'მრავალმნიშვნელოვანი', //ka - 'բազմիմաստութիւն', //hyw - 'բազմիմաստություն', //hy - 'באדייטן', //yi - 'פירושונים', //he - 'ابهام‌زدایی', //fa - 'توضيح', //ar - 'توضيح', //arz - 'دقیقلشدیرمه', //azb - 'ڕوونکردنەوە', //ckb - 'سلجهائپ', //sd - 'ضد ابہام', //ur - 'گجگجی بیری', //mzn - 'نامبهمېدنه', //ps - 'መንታ', //am - 'अस्पष्टता', //ne - 'बहुअर्थी', //bh - 'बहुविकल्पी शब्द', //hi - 'দ্ব্যর্থতা নিরসন', //bn - 'ਗੁੰਝਲ-ਖੋਲ੍ਹ', //pa - 'સંદિગ્ધ શીર્ષક', //gu - 'பக்கவழி நெறிப்படுத்தல்', //ta - 'అయోమయ నివృత్తి', //te - 'ದ್ವಂದ್ವ ನಿವಾರಣೆ', //kn - 'വിവക്ഷകൾ', //ml - 'වක්‍රෝත්ති', //si - 'แก้ความกำกวม', //th - 'သံတူကြောင်းကွဲ', //my - 'ណែនាំ', //km - '동음이의', //ko - '扤清楚', //gan - '搞清楚', //zh_yue - '曖昧さ回避', //ja - '消歧义', //zh - '釋義', //zh_classical - "gestion dj'omònim", //pms - "sut'ichana qillqa" //qu - // 'z', //vep - // 'သဵင်မိူၼ် တူၼ်ႈထႅဝ်ပႅၵ်ႇ', //shn - ]; - - // used in titles to denote disambiguation pages - // see 'Football_(disambiguation)' - var disambig_titles = ['disambiguation', //en - 'homonymie', //fr - 'توضيح', //ar - 'desambiguação', //pt - 'Begriffsklärung', //de - 'disambigua', //it - '曖昧さ回避', //ja - '消歧義', //zh - '搞清楚', //zh-yue - 'значения', //ru - 'ابهام‌زدایی', //fa - 'د ابہام', //ur - '동음이의', //ko - 'dubbelsinnig', //af - 'այլ կիրառումներ', //hy - 'ujednoznacznienie' //pl - ]; - - var images = ['file', //en - 'image', //en - 'चित्र', //img - 'archivo', //es - 'attēls', //lv - 'berkas', //id - 'bestand', //nl - 'datei', //de - 'dosiero', //eo - 'dosya', //lad - 'fájl', //hu - 'fasciculus', //la - 'fichier', //fr - 'fil', //da - 'fitxategi', //eu - 'fitxer', //ca - 'gambar', //su - 'imagem', //pt - 'imej', //ms - 'immagine', //it - 'larawan', //tl - 'lêer', //af - 'plik', //pl - 'restr', //br - 'slika', //bs - 'wêne', //ku - 'wobraz', //dsb - 'выява', //be - 'податотека', //mk - 'слика', //sr - 'файл', //ru - 'სურათი', //ka - 'պատկեր', //hy - 'קובץ', //he - 'پرونده', //fa - 'دوتنه', //ps - 'ملف', //ar - 'وێنە', //ckb - 'चित्र', //hi - 'ไฟล์', //th - '파일', //ko - 'ファイル' //ja - ]; - - var infoboxes$1 = ['infobox', //en - 'anfo', //mwl - 'anuāmapa', //haw - 'bilgi kutusu', //tr - 'bilgi', //tr - 'bilgiquti', //uz - 'boaty', //mg - 'boestkelaouiñ', //br - 'bosca', //ga - 'capsa', //la - 'diehtokássa', //se - 'faktamall', //sv - 'ficha', //es - 'generalni', //hr - 'gwybodlen3', //cy - 'info', //pt - 'infobokis', //tpi - 'infoboks', //da - 'infochascha', //rm - 'infokašćik', //dsb - 'infokast', //et - 'infokutija', //bs - 'infolentelė', //lt - 'infopolje', //sl - 'informkesto', //eo - 'infoskreine', //ltg - 'infotaula', //eu - 'inligtingskas', 'inligtingskas3', //af - 'inligtingskas4', //af - 'kishtey', //gv - 'kotak', //su - 'tertcita', //jbo - 'tietolaatikko', //fi - 'yerleşim bilgi kutusu', 'ynfoboks', //fy - 'πλαίσιο', //el - 'акарточка', //ab - 'аҥа', //mhr - 'инфобокс', //kk - 'инфокутија', //sr - 'инфокутия', //bg - 'інфобокс', //rue - 'канадский', 'картка', //be - 'карточка', //ru - 'карточка2', //mdf - 'карточкарус', //ba - 'картуш', //koi - 'қуттӣ', //tg - 'ინფოდაფა', //ka - 'տեղեկաքարտ', //hy - 'אינפאקעסטל', //yi - 'תבנית', //he - 'بطاقة', //ar - 'ڄاڻخانو', //sd - 'خانہ', //ur - 'لغة', 'ज्ञानसन्दूक', //hi - 'তথ্যছক', //bn - 'ਜਾਣਕਾਰੀਡੱਬਾ', //pa - 'సమాచారపెట్టె', //te - 'තොරතුරුකොටුව', //si - 'กล่องข้อมูล', //th - 'ប្រអប់ព័ត៌មាន', //km - '정보상자', //ko - '明細' //zh_yue - ]; - - var redirects$2 = ['adkas', //br - 'aýdaw', 'doorverwijzing', //nl - 'ohjaus', 'patrz', //pl - 'přesměruj', 'redirección', 'redireccion', 'redirección', //es - 'redirecionamento', //pt - 'redirect', //en - 'redirection', 'redirection', //fr - 'rinvia', //it - 'tilvísun', 'uudelleenohjaus', 'weiterleitung', 'weiterleitung', //de - 'yönlendi̇r', 'yönlendirme', 'yönlendi̇rme', //tr - 'ανακατευθυνση', //el - 'айдау', 'перанакіраваньне', 'перенаправлення', //uk - 'пренасочување', //mk - 'преусмери', 'преусмјери', 'تغییر_مسیر', 'تغییرمسیر', 'تغییرمسیر', //fa - 'เปลี่ยนทาง', //th - 'ប្តូរទីតាំងទៅ', //km - '転送', //ja - '重定向']; - - var references = ['references', 'reference', 'einzelnachweise', 'referencias', 'références', 'notes et références', '脚注', 'referenser', 'bronnen', 'примечания']; - - var require$$0$8 = categories$1; - - var require$$1$8 = disambig_templates; - - var require$$2$7 = disambig_titles; - - var require$$3$4 = images; - - var require$$4$4 = infoboxes$1; - - var require$$5$3 = redirects$2; - - var require$$6$2 = references; - - /** - * wikipedia special terms lifted and augmented from parsoid parser april 2015 - * and then manually on March 2020 - * - * @private - * @type {{ - * images: string[], - * references: string[], - * redirects: string[], - * infoboxes: string[], - * categories: string[], - * disambig: string[] - * }} - */ - - var i18n$1 = { - categories: require$$0$8, - disambig_templates: require$$1$8, - disambig_titles: require$$2$7, - images: require$$3$4, - infoboxes: require$$4$4, - redirects: require$$5$3, - references: require$$6$2 //specials: [ - //'спэцыяльныя', - //'especial', - //'speciální', - //'spezial', - //'special', - //'ویژه', - //'toiminnot', - //'kerfissíða', - //'arnawlı', - //'spécial', - //'speciaal', - //'посебно', - //'özel', - //'特別' - //], - //users: [ - //'удзельнік', - //'usuari', - //'uživatel', - //'benutzer', - //'user', - //'usuario', - //'کاربر', - //'käyttäjä', - //'notandi', - //'paydalanıwshı', - //'utilisateur', - //'gebruiker', - //'корисник', - //'kullanıcı', - //'利用者' - //], - //sources: [ - ////blacklist these headings, as they're not plain-text - //'references', - //'see also', - //'external links', - //'further reading', - //'notes et références', - //'voir aussi', - //'liens externes', - //'参考文献', //references (ja) - //'脚注', //citations (ja) - //'関連項目', //see also (ja) - //'外部リンク' //external links (ja) - //] - - }; - - //alt disambig-templates en-wikipedia uses - let d = ' disambiguation'; - const templates$b = ['dab', 'dab', 'disamb', 'disambig', 'geodis', 'hndis', 'setindex', 'ship index', 'split dab', 'sport index', 'wp disambig', 'disambiguation cleanup', 'airport' + d, 'biology' + d, 'call sign' + d, 'caselaw' + d, 'chinese title' + d, 'genus' + d, 'hospital' + d, 'lake index', 'letter' + d, 'letter-number combination' + d, 'mathematical' + d, 'military unit' + d, 'mountainindex', 'number' + d, 'phonetics' + d, 'place name' + d, 'portal' + d, 'road' + d, 'school' + d, 'species latin name abbreviation' + d, 'species latin name' + d, 'station' + d, 'synagogue' + d, 'taxonomic authority' + d, 'taxonomy' + d].reduce((h, str) => { - h[str] = true; - return h; - }, {}); - var _disambig = templates$b; - - var i18n = i18n$1; - - var alt_disambig = _disambig; - - const inTitle = new RegExp('. \\((' + i18n.disambig_titles.join('|') + ')\\)$', 'i'); - const i18n_templates = i18n.disambig_templates.reduce((h, str) => { - h[str] = true; - return h; - }, {}); // look for '... may refer to' - - const byText = function (s) { - if (!s) { - return false; - } - - let txt = s.text(); - - if (txt !== null && txt[0]) { - if (/. may (also)? refer to\b/i.test(txt) === true) { - return true; - } - } - - return false; - }; - /** - * Parses the wikitext to find out if this page is a disambiguation - * - * @private - * @param {Document} doc the document that is examined - * @returns {boolean} an indication if the document is a disambiguation page - */ - - - const isDisambig$1 = function (doc) { - // check for a {{disambig}} template - let templates = doc.templates().map(tmpl => tmpl.json()); - let found = templates.find(obj => { - return alt_disambig.hasOwnProperty(obj.template) || i18n_templates.hasOwnProperty(obj.template); - }); - - if (found) { - return true; - } // check for (disambiguation) in title - - - let title = doc.title(); - - if (title && inTitle.test(title) === true) { - return true; - } //try 'may refer to' on first line for en-wiki? - - - if (byText(doc.sentence(0)) === true || byText(doc.sentence(1)) === true) { - return true; - } - - return false; - }; - - var isDisambig_1 = isDisambig$1; - - const defaults$a = { - caption: true, - alt: true, - links: true, - thumb: true, - url: true - }; // - - const toJson$8 = function (img, options) { - options = setDefaults(options, defaults$a); - let json = { - file: img.file() - }; - - if (options.thumb !== false) { - json.thumb = img.thumbnail(); - } - - if (options.url !== false) { - json.url = img.url(); - } //add captions + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtf = factory()); +})(this, (function () { 'use strict'; + + function getAugmentedNamespace(n) { + if (n.__esModule) return n; + var a = Object.defineProperty({}, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; + } + + function unfetch_module (e, n) { + return n = n || {}, new Promise(function (t, r) { + var s = new XMLHttpRequest(), + o = [], + u = [], + i = {}, + a = function () { + return { + ok: 2 == (s.status / 100 | 0), + statusText: s.statusText, + status: s.status, + url: s.responseURL, + text: function () { + return Promise.resolve(s.responseText); + }, + json: function () { + return Promise.resolve(s.responseText).then(JSON.parse); + }, + blob: function () { + return Promise.resolve(new Blob([s.response])); + }, + clone: a, + headers: { + keys: function () { + return o; + }, + entries: function () { + return u; + }, + get: function (e) { + return i[e.toLowerCase()]; + }, + has: function (e) { + return e.toLowerCase() in i; + } + } + }; + }; + + for (var l in s.open(n.method || "get", e, !0), s.onload = function () { + s.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm, function (e, n, t) { + o.push(n = n.toLowerCase()), u.push([n, t]), i[n] = i[n] ? i[n] + "," + t : t; + }), t(a()); + }, s.onerror = r, s.withCredentials = "include" == n.credentials, n.headers) s.setRequestHeader(l, n.headers[l]); + + s.send(n.body || null); + }); + } + + var unfetch_module$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + 'default': unfetch_module + }); + + var require$$0 = /*@__PURE__*/getAugmentedNamespace(unfetch_module$1); + + var browser = self.fetch || (self.fetch = require$$0.default || require$$0); + + /** + * Parses out the domain and title from a url + * + * @private + * @param {string} url The url that will be parsed + * @returns {{domain: string, title: string}} The domain and title of a url + */ + + const parseUrl$1 = function (url) { + let parsed = new URL(url); + let title = parsed.pathname.replace(/^\/(wiki\/)?/, ''); + title = decodeURIComponent(title); + return { + domain: parsed.host, + title: title + }; + }; + + var parseUrl_1 = parseUrl$1; + + /** + * capitalizes the input + * hello -> Hello + * hello there -> Hello there + * + * @private + * @param {string} [str] the string that will be capitalized + * @returns {string} the capitalized string + */ + + function capitalise(str) { + if (str && typeof str === 'string') { + return str.charAt(0).toUpperCase() + str.slice(1); + } + + return ''; + } + /** + * trim whitespaces of the ends normalize 2 spaces into one and removes whitespaces before commas + * + * @private + * @param {string} [str] the string that will be processed + * @returns {string} the processed string + */ + + + function trim_whitespace$1(str) { + if (str && typeof str === 'string') { + str = str.replace(/^\s+/, ''); + str = str.replace(/\s+$/, ''); + str = str.replace(/ {2}/, ' '); + str = str.replace(/\s, /, ', '); + return str; + } + + return ''; + } + /** + * determines if an variable is an array or not + * + * @private + * @param {*} x the variable that needs to be checked + * @returns {boolean} whether the variable is an array + */ + + + function isArray$4(x) { + return Object.prototype.toString.call(x) === '[object Array]'; + } + /** + * determines if an variable is an object or not + * + * @private + * @param {*} x the variable that needs to be checked + * @returns {boolean} whether the variable is an object + */ + + + function isObject$1(x) { + return x && Object.prototype.toString.call(x) === '[object Object]'; + } + + var helpers$1 = { + capitalise, + trim_whitespace: trim_whitespace$1, + isArray: isArray$4, + isObject: isObject$1 + }; + + const { + isArray: isArray$3 + } = helpers$1; + const isInterWiki = /(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/; + const defaults$c = { + action: 'query', + prop: 'revisions|pageprops', + // we use the 'revisions' api here, instead of the Raw api, for its CORS-rules.. + rvprop: 'content', + maxlag: 5, + rvslots: 'main', + origin: '*', + format: 'json', + redirects: 'true' + }; + /** + * turns a object into a query string + * + * @private + * @param {Object} obj + * @returns {string} QueryString + */ + + const toQueryString = function (obj) { + return Object.entries(obj).map(_ref => { + let [key, value] = _ref; + return "".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(value)); + }).join('&'); + }; + /** + * cleans and prepares the tile by replacing the spaces with underscores (_) and trimming the white spaces of the ends + * + * @private + * @param {string} page the title that needs cleaning + * @returns {string} the cleaned title + */ + + + const cleanTitle = page => { + return page.replace(/ /g, '_').trim(); + }; + /** + * generates the url for fetching the pages + * + * @private + * @param {import('.').fetchDefaults} options + * @returns {string} the url that can be used to make the fetch + */ + + + const makeUrl$1 = function (options) { + let params = Object.assign({}, defaults$c); //default url + + let apiPath = ''; //add support for third party apis + + if (options.domain) { + //wikimedia is the only api that uses `/w/api` as its path. other wikis use other paths + let path = isInterWiki.test(options.domain) ? 'w/api.php' : options.path; + apiPath = "https://".concat(options.domain, "/").concat(path, "?"); + } else if (options.lang && options.wiki) { + apiPath = "https://".concat(options.lang, ".").concat(options.wiki, ".org/w/api.php?"); + } else { + return ''; + } + + if (!options.follow_redirects) { + delete params.redirects; + } //support numerical ids + + + let title = options.title; + + if (typeof title === 'number') { + //single pageId + params.pageids = title; + } else if (typeof title === 'string') { + //single page title + params.titles = cleanTitle(title); + } else if (title !== undefined && isArray$3(title) && typeof title[0] === 'number') { + //pageid array + params.pageids = title.join('|'); + } else if (title !== undefined && isArray$3(title) === true && typeof title[0] === 'string') { + //title array + params.titles = title.map(cleanTitle).join('|'); + } else { + return ''; + } //make it! + + + return "".concat(apiPath).concat(toQueryString(params)); + }; + + var makeUrl_1 = makeUrl$1; + + /** + * parses the media wiki api response to something we can use + * + * the data-format from mediawiki api is nutso + * + * @private + * @param {object} data + * @param {object} [options] + * @returns {*} result + */ + + const getResult$1 = function (data) { + let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + //get all the pagesIds from the result + let pages = Object.keys(data.query.pages); // map over the pageIds to parse out all the information + + return pages.map(id => { + // get the page by pageID + let page = data.query.pages[id] || {}; // if the page is missing or not found than return null + + if (page.hasOwnProperty('missing') || page.hasOwnProperty('invalid')) { + return null; + } // get the text from the object + + + let text = page.revisions[0]['*']; // if the text is not found in the regular place than it is at the other place + + if (!text && page.revisions[0].slots) { + text = page.revisions[0].slots.main['*']; + } + + page.pageprops = page.pageprops || {}; + let domain = options.domain; + + if (!domain && options.wiki) { + domain = "".concat(options.wiki, ".org"); + } + + let meta = Object.assign({}, options, { + title: page.title, + pageID: page.pageid, + namespace: page.ns, + domain: domain, + wikidata: page.pageprops.wikibase_item, + description: page.pageprops['wikibase-shortdesc'] + }); + return { + wiki: text, + meta: meta + }; + }); + }; + + var getResult_1 = getResult$1; + + /** + * helper for looping around all sections of a document + * + * @private + * @param {Document} doc the document with the sections + * @param {string} fn the function name of the function that will be called + * @param {string | number} [clue] the clue that will be used with the function + * @returns {Array|*} the array of item at the index of the clue + */ + + const sectionMap$1 = function (doc, fn, clue) { + let arr = []; + doc.sections().forEach(sec => { + let list = []; + + if (typeof clue === 'string') { + list = sec[fn](clue); + } else { + list = sec[fn](); + } + + list.forEach(t => { + arr.push(t); + }); + }); + + if (typeof clue === 'number') { + if (arr[clue] === undefined) { + return []; + } + + return [arr[clue]]; + } + + return arr; + }; + + var _sectionMap = sectionMap$1; + + /** + * applies the the key values of defaults to options + * + * @private + * @param {object} options the user options + * @param {object} defaults the defaults + * @returns {object} the user options with the defaults applied + */ + + const setDefaults$a = function (options, defaults) { + return Object.assign({}, defaults, options); + }; + + var setDefaults_1 = setDefaults$a; + + const setDefaults$9 = setDefaults_1; + /** + * @typedef DocumentToJsonOptions + * @property {boolean | undefined} title + * @property {boolean | undefined} pageID + * @property {boolean | undefined} categories + * @property {boolean | undefined} sections + * @property {boolean | undefined} coordinates + * @property {boolean | undefined} infoboxes + * @property {boolean | undefined} images + * @property {boolean | undefined} plaintext + * @property {boolean | undefined} citations + * @property {boolean | undefined} references + */ + + const defaults$b = { + title: true, + sections: true, + pageID: true, + categories: true + }; + /** + * @typedef documentToJsonReturn + * @property {string | undefined} title + * @property {number | null | undefined} pageID + * @property {string[] | undefined} categories + * @property {object[] | undefined} sections + * @property {boolean | undefined} isRedirect + * @property {object | undefined} redirectTo + * @property {object[] | undefined} coordinates + * @property {object[] | undefined} infoboxes + * @property {Image[] | undefined} images + * @property {string | undefined} plaintext + * @property {object[] | undefined} references + */ + + /** + * an opinionated output of the most-wanted data + * + * @private + * @param {Document} doc + * @param {DocumentToJsonOptions} options + * @returns {documentToJsonReturn} + */ + + const toJSON$8 = function (doc, options) { + options = setDefaults$9(options, defaults$b); + /** + * @type {documentToJsonReturn} + */ + + let data = {}; + + if (options.title) { + data.title = doc.title(); + } + + if (options.pageID) { + data.pageID = doc.pageID(); + } + + if (options.categories) { + data.categories = doc.categories(); + } + + if (options.sections) { + data.sections = doc.sections().map(i => i.json(options)); + } + + if (doc.isRedirect() === true) { + data.isRedirect = true; + data.redirectTo = doc.redirectTo(); + data.sections = []; + } //these are default-off + + + if (options.coordinates) { + data.coordinates = doc.coordinates(); + } + + if (options.infoboxes) { + data.infoboxes = doc.infoboxes().map(i => i.json(options)); + } + + if (options.images) { + data.images = doc.images().map(i => i.json(options)); + } + + if (options.plaintext) { + data.plaintext = doc.text(options); + } + + if (options.citations || options.references) { + data.references = doc.references(); + } + + return data; + }; + + var toJson$9 = toJSON$8; + + var categories$1 = ['category', //en + 'abdeeling', // pdc + 'bólkur', // fo + 'catagóir', // ga + 'categori', // cy + 'categoria', 'categoria', // co + 'categoría', // es + 'categorîa', // lij + 'categorìa', // pms + 'catégorie', 'categorie', 'catègorie', // frp + 'category', 'categuria', // lmo + 'catigurìa', // scn + 'class', // kw + 'ẹ̀ka', // yo + 'flocc', 'flocc', // ang + 'flokkur', 'grup', // tpi + 'jamii', // sw + 'kaarangay', // war + 'kateggoría', // lad + 'kategooria', // et + 'kategori', // da + 'kategorî', // ku + 'kategoria', // eu + 'kategória', // hu + 'kategorie', //de + 'kategoriija', // se + 'kategorija', // sl + 'kategorio', // eo + 'kategoriya', 'kategoriýa', // tk + 'kategoriye', // diq + 'kategory', // fy + 'kategorya', // tl + 'kateqoriya', // az + 'katiguriya', // qu + 'klad', // vo + 'luokka', 'ñemohenda', // gn + 'roinn', //-seòrsa gd + 'ronney', // gv + 'rummad', // br + 'setensele', // nso + 'sokajy', // mg + 'sumut', // atassuseq kl + 'thể', // loại vi + 'turkum', // uz + 'категорија', 'категория', // ru + 'категорія', // uk + 'катэгорыя', 'төркем', // tt + 'קטגוריה', // he + 'تصنيف', 'تۈر', // ug + 'رده', 'श्रेणी', 'श्रेणी', // hi + 'বিষয়শ্রেণী', // bn + 'หมวดหมู่', // th + '분류', // ko + '분류', //ko + '分类' // za + //-- + ]; + + var disambig_templates = ['dab', //en + 'disamb', //en + 'disambig', //en + 'disambiguation', //en + 'aðgreining', //is + 'aimai', //ja + 'ałtsʼáʼáztiin', //nv + 'anlam ayrımı', //gag + 'anlam ayrımı', //tr + 'apartigilo', //eo + 'argipen', //eu + 'begriepskloorenge', //stq + 'begriffsklärung', //als + 'begriffsklärung', //de + 'begriffsklärung', //pdc + 'begriffsklearung', //bar + 'bisongidila', //kg + 'bkl', //pfl + 'bokokani', //ln + 'caddayn', //so + 'clerheans', //kw + 'cudakirin', //ku + 'čvor', //bs + 'db', //vls + 'desambig', //nov + 'desambigación', //an + 'desambiguação', //pt + 'desambiguació', //ca + 'desambiguación', //es + 'desambiguáncia', //ext + 'desambiguasion', //lad + 'desambiguassiù', //lmo + 'desambigui', //lfn + 'dezambiguizare', //ro + 'dəqiqləşdirmə', //az + 'disambigua', //it + 'disambigua', //lij + 'disambigua', //nap + 'disambìgua', //sc + 'disambigua', //scn + 'disambiguasi', //id + 'disambiguasi', //su + 'discretiva', //la + 'disheñvelout', //br + 'disingkek', //min + 'dixanbigua', //vec + 'dixebra', //ast + 'diżambigwazzjoni', //mt + 'doorverwijspagina', //nl + 'dp', //nl + 'dp', //zea + 'dubbelsinnig', //af + 'dudalipen', //rmy + 'dv', //nds_nl + 'egyért', //hu + 'fleiri týdningar', //fo + 'fleirtyding', //nn + 'flertydig', //da + 'förgrening', //sv + 'gì-ngiê', //cdo + 'giklaro', //ceb + 'gwahaniaethu', //cy + 'homonimo', //io + 'homónimos', //gl + 'homonymie', //fr + 'huaʻōlelo puana like', //haw + 'idirdhealú', //ga + 'khu-pia̍t', //zh_min_nan + 'kthjellim', //sq + 'kujekesa', //sn + 'maana', //sw + 'maneo bin', //diq + 'mehrdüdig begreep', //nds + 'menm non', //ht + 'muardüüdag artiikel', //frr + 'neibetsjuttings', //fy + 'nozīmju atdalīšana', //lv + 'nuorodinis', //lt + 'nyahkekaburan', //ms + 'omonimeye', //wa + 'omonimia', //oc + 'page dé frouque', //nrm + 'paglilinaw', //tl + 'panangilawlawag', //ilo + 'pansayod', //war + 'pejy mitovy anarana', //mg + 'peker', //no + 'razdvojba', //hr + 'razločitev', //sl + 'razvrstavanje', //sh + 'reddaghey', //gv + 'rozcestník', //cs + 'rozlišovacia stránka', //sk + 'sclerir noziun', //rm + 'selvendyssivu', //olo + 'soilleireachadh', //gd + 'suzmunski', //jbo + 'täpsustuslehekülg', //et + 'täsmennyssivu', //fi + 'telplänov', //vo + 'tlahtolmelahuacatlaliztli', //nah + 'trang định hướng', //vi + 'ujednoznacznienie', //pl + 'verdudeliking', //li + 'wěcejwóznamowosć', //dsb + 'wjacezmyslnosć', //hsb + 'zambiguaçon', //mwl + 'zeimeibu škiršona', //ltg + 'αποσαφήνιση', //el + 'айрық', //kk + 'аҵакырацәа', //ab + 'вишезначна одредница', //sr + 'ибҳомзудоӣ', //tg + 'кёб магъаналы', //krc + 'күп мәгънәләр', //tt + 'күп мәғәнәлелек', //ba + 'мъногосъмꙑслиѥ', //cu + 'неадназначнасць', //be + 'неадназначнасьць', //be_x_old + 'неоднозначность', //ru + 'олон удхатай', //bxr + 'појаснување', //mk + 'пояснение', //bg + 'са шумуд манавал', //lez + 'салаа утгатай', //mn + 'суолталар', //sah + 'текмаанисиздик', //ky + 'цо магіна гуреб', //av + 'чеперушка', //rue + 'чолхалла', //ce + 'шуко ончыктымаш-влак', //mhr + 'მრავალმნიშვნელოვანი', //ka + 'բազմիմաստութիւն', //hyw + 'բազմիմաստություն', //hy + 'באדייטן', //yi + 'פירושונים', //he + 'ابهام‌زدایی', //fa + 'توضيح', //ar + 'توضيح', //arz + 'دقیقلشدیرمه', //azb + 'ڕوونکردنەوە', //ckb + 'سلجهائپ', //sd + 'ضد ابہام', //ur + 'گجگجی بیری', //mzn + 'نامبهمېدنه', //ps + 'መንታ', //am + 'अस्पष्टता', //ne + 'बहुअर्थी', //bh + 'बहुविकल्पी शब्द', //hi + 'দ্ব্যর্থতা নিরসন', //bn + 'ਗੁੰਝਲ-ਖੋਲ੍ਹ', //pa + 'સંદિગ્ધ શીર્ષક', //gu + 'பக்கவழி நெறிப்படுத்தல்', //ta + 'అయోమయ నివృత్తి', //te + 'ದ್ವಂದ್ವ ನಿವಾರಣೆ', //kn + 'വിവക്ഷകൾ', //ml + 'වක්‍රෝත්ති', //si + 'แก้ความกำกวม', //th + 'သံတူကြောင်းကွဲ', //my + 'ណែនាំ', //km + '동음이의', //ko + '扤清楚', //gan + '搞清楚', //zh_yue + '曖昧さ回避', //ja + '消歧义', //zh + '釋義', //zh_classical + "gestion dj'omònim", //pms + "sut'ichana qillqa" //qu + // 'z', //vep + // 'သဵင်မိူၼ် တူၼ်ႈထႅဝ်ပႅၵ်ႇ', //shn + ]; + + // see 'Football_(disambiguation)' + + var disambig_titles = ['disambiguation', //en + 'homonymie', //fr + 'توضيح', //ar + 'desambiguação', //pt + 'Begriffsklärung', //de + 'disambigua', //it + '曖昧さ回避', //ja + '消歧義', //zh + '搞清楚', //zh-yue + 'значения', //ru + 'ابهام‌زدایی', //fa + 'د ابہام', //ur + '동음이의', //ko + 'dubbelsinnig', //af + 'այլ կիրառումներ', //hy + 'ujednoznacznienie' //pl + ]; + + var images = ['file', //en + 'image', //en + 'चित्र', //img + 'archivo', //es + 'attēls', //lv + 'berkas', //id + 'bestand', //nl + 'datei', //de + 'dosiero', //eo + 'dosya', //lad + 'fájl', //hu + 'fasciculus', //la + 'fichier', //fr + 'fil', //da + 'fitxategi', //eu + 'fitxer', //ca + 'gambar', //su + 'imagem', //pt + 'imej', //ms + 'immagine', //it + 'larawan', //tl + 'lêer', //af + 'plik', //pl + 'restr', //br + 'slika', //bs + 'wêne', //ku + 'wobraz', //dsb + 'выява', //be + 'податотека', //mk + 'слика', //sr + 'файл', //ru + 'სურათი', //ka + 'պատկեր', //hy + 'קובץ', //he + 'پرونده', //fa + 'دوتنه', //ps + 'ملف', //ar + 'وێنە', //ckb + 'चित्र', //hi + 'ไฟล์', //th + '파일', //ko + 'ファイル' //ja + ]; + + var infoboxes$2 = ['infobox', //en + 'anfo', //mwl + 'anuāmapa', //haw + 'bilgi kutusu', //tr + 'bilgi', //tr + 'bilgiquti', //uz + 'boaty', //mg + 'boestkelaouiñ', //br + 'bosca', //ga + 'capsa', //la + 'diehtokássa', //se + 'faktamall', //sv + 'ficha', //es + 'generalni', //hr + 'gwybodlen3', //cy + 'info', //pt + 'infobokis', //tpi + 'infoboks', //da + 'infochascha', //rm + 'infokašćik', //dsb + 'infokast', //et + 'infokutija', //bs + 'infolentelė', //lt + 'infopolje', //sl + 'informkesto', //eo + 'infoskreine', //ltg + 'infotaula', //eu + 'inligtingskas', 'inligtingskas3', //af + 'inligtingskas4', //af + 'kishtey', //gv + 'kotak', //su + 'tertcita', //jbo + 'tietolaatikko', //fi + 'yerleşim bilgi kutusu', 'ynfoboks', //fy + 'πλαίσιο', //el + 'акарточка', //ab + 'аҥа', //mhr + 'инфобокс', //kk + 'инфокутија', //sr + 'инфокутия', //bg + 'інфобокс', //rue + 'канадский', 'картка', //be + 'карточка', //ru + 'карточка2', //mdf + 'карточкарус', //ba + 'картуш', //koi + 'қуттӣ', //tg + 'ინფოდაფა', //ka + 'տեղեկաքարտ', //hy + 'אינפאקעסטל', //yi + 'תבנית', //he + 'بطاقة', //ar + 'ڄاڻخانو', //sd + 'خانہ', //ur + 'لغة', 'ज्ञानसन्दूक', //hi + 'তথ্যছক', //bn + 'ਜਾਣਕਾਰੀਡੱਬਾ', //pa + 'సమాచారపెట్టె', //te + 'තොරතුරුකොටුව', //si + 'กล่องข้อมูล', //th + 'ប្រអប់ព័ត៌មាន', //km + '정보상자', //ko + '明細' //zh_yue + ]; + + var redirects$2 = ['adkas', //br + 'aýdaw', 'doorverwijzing', //nl + 'ohjaus', 'patrz', //pl + 'přesměruj', 'redirección', 'redireccion', 'redirección', //es + 'redirecionamento', //pt + 'redirect', //en + 'redirection', 'redirection', //fr + 'rinvia', //it + 'tilvísun', 'uudelleenohjaus', 'weiterleitung', 'weiterleitung', //de + 'yönlendi̇r', 'yönlendirme', 'yönlendi̇rme', //tr + 'ανακατευθυνση', //el + 'айдау', 'перанакіраваньне', 'перенаправлення', //uk + 'пренасочување', //mk + 'преусмери', 'преусмјери', 'تغییر_مسیر', 'تغییرمسیر', 'تغییرمسیر', //fa + 'เปลี่ยนทาง', //th + 'ប្តូរទីតាំងទៅ', //km + '転送', //ja + '重定向']; + + var references = ['references', 'reference', 'einzelnachweise', 'referencias', 'références', 'notes et références', '脚注', 'referenser', 'bronnen', 'примечания']; + + /** + * wikipedia special terms lifted and augmented from parsoid parser april 2015 + * and then manually on March 2020 + * + * @private + * @type {{ + * images: string[], + * references: string[], + * redirects: string[], + * infoboxes: string[], + * categories: string[], + * disambig: string[] + * }} + */ + var i18n$6 = { + categories: categories$1, + disambig_templates: disambig_templates, + disambig_titles: disambig_titles, + images: images, + infoboxes: infoboxes$2, + redirects: redirects$2, + references: references //specials: [ + //'спэцыяльныя', + //'especial', + //'speciální', + //'spezial', + //'special', + //'ویژه', + //'toiminnot', + //'kerfissíða', + //'arnawlı', + //'spécial', + //'speciaal', + //'посебно', + //'özel', + //'特別' + //], + //users: [ + //'удзельнік', + //'usuari', + //'uživatel', + //'benutzer', + //'user', + //'usuario', + //'کاربر', + //'käyttäjä', + //'notandi', + //'paydalanıwshı', + //'utilisateur', + //'gebruiker', + //'корисник', + //'kullanıcı', + //'利用者' + //], + //sources: [ + ////blacklist these headings, as they're not plain-text + //'references', + //'see also', + //'external links', + //'further reading', + //'notes et références', + //'voir aussi', + //'liens externes', + //'参考文献', //references (ja) + //'脚注', //citations (ja) + //'関連項目', //see also (ja) + //'外部リンク' //external links (ja) + //] + + }; + + let d = ' disambiguation'; + const templates$c = ['dab', 'dab', 'disamb', 'disambig', 'geodis', 'hndis', 'setindex', 'ship index', 'split dab', 'sport index', 'wp disambig', 'disambiguation cleanup', 'airport' + d, 'biology' + d, 'call sign' + d, 'caselaw' + d, 'chinese title' + d, 'genus' + d, 'hospital' + d, 'lake index', 'letter' + d, 'letter-number combination' + d, 'mathematical' + d, 'military unit' + d, 'mountainindex', 'number' + d, 'phonetics' + d, 'place name' + d, 'portal' + d, 'road' + d, 'school' + d, 'species latin name abbreviation' + d, 'species latin name' + d, 'station' + d, 'synagogue' + d, 'taxonomic authority' + d, 'taxonomy' + d].reduce((h, str) => { + h[str] = true; + return h; + }, {}); + var _disambig = templates$c; + + const i18n$5 = i18n$6; + const alt_disambig = _disambig; + const inTitle = new RegExp('. \\((' + i18n$5.disambig_titles.join('|') + ')\\)$', 'i'); + const i18n_templates = i18n$5.disambig_templates.reduce((h, str) => { + h[str] = true; + return h; + }, {}); // look for '... may refer to' + + const byText = function (s) { + if (!s) { + return false; + } + + let txt = s.text(); + + if (txt !== null && txt[0]) { + if (/. may (also)? refer to\b/i.test(txt) === true) { + return true; + } + } + + return false; + }; + /** + * Parses the wikitext to find out if this page is a disambiguation + * + * @private + * @param {Document} doc the document that is examined + * @returns {boolean} an indication if the document is a disambiguation page + */ + + + const isDisambig$1 = function (doc) { + // check for a {{disambig}} template + let templates = doc.templates().map(tmpl => tmpl.json()); + let found = templates.find(obj => { + return alt_disambig.hasOwnProperty(obj.template) || i18n_templates.hasOwnProperty(obj.template); + }); + + if (found) { + return true; + } // check for (disambiguation) in title + + + let title = doc.title(); + + if (title && inTitle.test(title) === true) { + return true; + } //try 'may refer to' on first line for en-wiki? + + + if (byText(doc.sentence(0)) === true || byText(doc.sentence(1)) === true) { + return true; + } + + return false; + }; + + var isDisambig_1 = isDisambig$1; + + const setDefaults$8 = setDefaults_1; + const defaults$a = { + caption: true, + alt: true, + links: true, + thumb: true, + url: true + }; // + + const toJson$8 = function (img, options) { + options = setDefaults$8(options, defaults$a); + let json = { + file: img.file() + }; + + if (options.thumb !== false) { + json.thumb = img.thumbnail(); + } + + if (options.url !== false) { + json.url = img.url(); + } //add captions + + + if (options.caption !== false && img.data.caption) { + json.caption = img.caption(); + + if (options.links !== false && img.data.caption.links()) { + json.links = img.links(); + } + } + + if (options.alt !== false && img.data.alt) { + json.alt = img.alt(); + } + + return json; + }; + + var toJson_1$3 = toJson$8; + + const toJson$7 = toJson_1$3; + const server = 'wikipedia.org'; + + const encodeTitle = function (file) { + let title = file.replace(/^(image|file?):/i, ''); //titlecase it + + title = title.charAt(0).toUpperCase() + title.substring(1); //spaces to underscores + + title = title.trim().replace(/ /g, '_'); + return title; + }; //the wikimedia image url is a little silly: + + + const makeSrc = function (file) { + let title = encodeTitle(file); + title = encodeURIComponent(title); + return title; + }; //the class for our image generation functions + + + const Image$5 = function (data) { + Object.defineProperty(this, 'data', { + enumerable: false, + value: data + }); + }; + + const methods$8 = { + file() { + return this.data.file || ''; + }, + + alt() { + let str = this.data.alt || this.data.file || ''; + str = str.replace(/^(file|image):/i, ''); + str = str.replace(/\.(jpg|jpeg|png|gif|svg)/i, ''); + return str.replace(/_/g, ' '); + }, + + caption() { + if (this.data.caption) { + return this.data.caption.text(); + } + + return ''; + }, + + links() { + if (this.data.caption) { + return this.data.caption.links(); + } + + return []; + }, + + url() { + // let lang = 'en' //this.language() || 'en' //hmm: get actual language? + let fileName = makeSrc(this.file()); + let domain = this.data.domain || server; + let path = "wiki/Special:Redirect/file"; + return "https://".concat(domain, "/").concat(path, "/").concat(fileName); + }, + + thumbnail(size) { + size = size || 300; + return this.url() + '?width=' + size; + }, + + format() { + let arr = this.file().split('.'); + + if (arr[arr.length - 1]) { + return arr[arr.length - 1].toLowerCase(); + } + + return null; + }, + + json: function (options) { + options = options || {}; + return toJson$7(this, options); + }, + text: function () { + return ''; + }, + wikitext: function () { + return this.data.wiki || ''; + } + }; + Object.keys(methods$8).forEach(k => { + Image$5.prototype[k] = methods$8[k]; + }); + Image$5.prototype.src = Image$5.prototype.url; + Image$5.prototype.thumb = Image$5.prototype.thumbnail; + var Image_1 = Image$5; + + var languages$4 = { + aa: 'Afar', + //Afar + ab: 'Аҧсуа', + //Abkhazian + af: 'Afrikaans', + //Afrikaans + ak: 'Akana', + //Akan + als: 'Alemannisch', + //Alemannic + am: 'አማርኛ', + //Amharic + an: 'Aragonés', + //Aragonese + ang: 'Englisc', + //Anglo-Saxon + ar: 'العربية', + //Arabic + arc: 'ܣܘܪܬ', + //Aramaic + as: 'অসমীয়া', + //Assamese + ast: 'Asturianu', + //Asturian + av: 'Авар', + //Avar + ay: 'Aymar', + //Aymara + az: 'Azərbaycanca', + //Azerbaijani + ba: 'Башҡорт', + //Bashkir + bar: 'Boarisch', + //Bavarian + 'bat-smg': 'Žemaitėška', + //Samogitian + bcl: 'Bikol', + //Bikol + be: 'Беларуская', + //Belarusian + 'be-x-old': 'ltr', + //Belarusian + bg: 'Български', + //Bulgarian + bh: 'भोजपुरी', + //Bihari + bi: 'Bislama', + //Bislama + bm: 'Bamanankan', + //Bambara + bn: 'বাংলা', + //Bengali + bo: 'བོད་ཡིག', + //Tibetan + bpy: 'ltr', + //Bishnupriya + br: 'Brezhoneg', + //Breton + bs: 'Bosanski', + //Bosnian + bug: 'ᨅᨔ', + //Buginese + bxr: 'ltr', + //Buriat + ca: 'Català', + //Catalan + cdo: 'Chinese', + //Min + ce: 'Нохчийн', + //Chechen + ceb: 'Sinugboanong', + //Cebuano + ch: 'Chamoru', + //Chamorro + cho: 'Choctaw', + //Choctaw + chr: 'ᏣᎳᎩ', + //Cherokee + chy: 'Tsetsêhestâhese', + //Cheyenne + co: 'Corsu', + //Corsican + cr: 'Nehiyaw', + //Cree + cs: 'Česky', + //Czech + csb: 'Kaszëbsczi', + //Kashubian + cu: 'Slavonic', + //Old + cv: 'Чăваш', + //Chuvash + cy: 'Cymraeg', + //Welsh + da: 'Dansk', + //Danish + de: 'Deutsch', + //German + diq: 'Zazaki', + //Dimli + dsb: 'ltr', + //Lower + dv: 'ދިވެހިބަސް', + //Divehi + dz: 'ཇོང་ཁ', + //Dzongkha + ee: 'Ɛʋɛ', + //Ewe + far: 'فارسی', + //Farsi + el: 'Ελληνικά', + //Greek + en: 'English', + //English + eo: 'Esperanto', + //Esperanto + es: 'Español', + //Spanish + et: 'Eesti', + //Estonian + eu: 'Euskara', + //Basque + ext: 'Estremeñu', + //Extremaduran + ff: 'Fulfulde', + //Peul + fi: 'Suomi', + //Finnish + 'fiu-vro': 'Võro', + //Võro + fj: 'Na', + //Fijian + fo: 'Føroyskt', + //Faroese + fr: 'Français', + //French + frp: 'Arpitan', + //Arpitan + fur: 'Furlan', + //Friulian + fy: 'ltr', + //West + ga: 'Gaeilge', + //Irish + gan: 'ltr', + //Gan + gd: 'ltr', + //Scottish + gil: 'Taetae', + //Gilbertese + gl: 'Galego', + //Galician + gn: "Avañe'ẽ", + //Guarani + got: 'gutisk', + //Gothic + gu: 'ગુજરાતી', + //Gujarati + gv: 'Gaelg', + //Manx + ha: 'هَوُسَ', + //Hausa + hak: 'ltr', + //Hakka + haw: 'Hawai`i', + //Hawaiian + he: 'עברית', + //Hebrew + hi: 'हिन्दी', + //Hindi + ho: 'ltr', + //Hiri + hr: 'Hrvatski', + //Croatian + ht: 'Krèyol', + //Haitian + hu: 'Magyar', + //Hungarian + hy: 'Հայերեն', + //Armenian + hz: 'Otsiherero', + //Herero + ia: 'Interlingua', + //Interlingua + id: 'Bahasa', + //Indonesian + ie: 'Interlingue', + //Interlingue + ig: 'Igbo', + //Igbo + ii: 'ltr', + //Sichuan + ik: 'Iñupiak', + //Inupiak + ilo: 'Ilokano', + //Ilokano + io: 'Ido', + //Ido + is: 'Íslenska', + //Icelandic + it: 'Italiano', + //Italian + iu: 'ᐃᓄᒃᑎᑐᑦ', + //Inuktitut + ja: '日本語', + //Japanese + jbo: 'Lojban', + //Lojban + jv: 'Basa', + //Javanese + ka: 'ქართული', + //Georgian + kg: 'KiKongo', + //Kongo + ki: 'Gĩkũyũ', + //Kikuyu + kj: 'Kuanyama', + //Kuanyama + kk: 'Қазақша', + //Kazakh + kl: 'Kalaallisut', + //Greenlandic + km: 'ភាសាខ្មែរ', + //Cambodian + kn: 'ಕನ್ನಡ', + //Kannada + khw: 'کھوار', + //Khowar + ko: '한국어', + //Korean + kr: 'Kanuri', + //Kanuri + ks: 'कश्मीरी', + //Kashmiri + ksh: 'Ripoarisch', + //Ripuarian + ku: 'Kurdî', + //Kurdish + kv: 'Коми', + //Komi + kw: 'Kernewek', + //Cornish + ky: 'Kırgızca', + //Kirghiz + la: 'Latina', + //Latin + lad: 'Dzhudezmo', + //Ladino + lan: 'Leb', + //Lango + lb: 'Lëtzebuergesch', + //Luxembourgish + lg: 'Luganda', + //Ganda + li: 'Limburgs', + //Limburgian + lij: 'Líguru', + //Ligurian + lmo: 'Lumbaart', + //Lombard + ln: 'Lingála', + //Lingala + lo: 'ລາວ', + //Laotian + lt: 'Lietuvių', + //Lithuanian + lv: 'Latviešu', + //Latvian + 'map-bms': 'Basa', + //Banyumasan + mg: 'Malagasy', + //Malagasy + man: '官話', + //Mandarin + mh: 'Kajin', + //Marshallese + mi: 'Māori', + //Maori + min: 'Minangkabau', + //Minangkabau + mk: 'Македонски', + //Macedonian + ml: 'മലയാളം', + //Malayalam + mn: 'Монгол', + //Mongolian + mo: 'Moldovenească', + //Moldovan + mr: 'मराठी', + //Marathi + ms: 'Bahasa', + //Malay + mt: 'bil-Malti', + //Maltese + mus: 'Muskogee', + //Creek + my: 'Myanmasa', + //Burmese + na: 'Dorerin', + //Nauruan + nah: 'Nahuatl', + //Nahuatl + nap: 'Nnapulitano', + //Neapolitan + nd: 'ltr', + //North + nds: 'Plattdüütsch', + //Low German + 'nds-nl': 'Saxon', + //Dutch + ne: 'नेपाली', + //Nepali + new: 'नेपालभाषा', + //Newar + ng: 'Oshiwambo', + //Ndonga + nl: 'Nederlands', + //Dutch + nn: 'ltr', + //Norwegian + no: 'Norsk', + //Norwegian + nr: 'ltr', + //South + nso: 'ltr', + //Northern + nrm: 'Nouormand', + //Norman + nv: 'Diné', + //Navajo + ny: 'Chi-Chewa', + //Chichewa + oc: 'Occitan', + //Occitan + oj: 'ᐊᓂᔑᓈᐯᒧᐎᓐ', + //Ojibwa + om: 'Oromoo', + //Oromo + or: 'ଓଡ଼ିଆ', + //Oriya + os: 'Иронау', + //Ossetian + pa: 'ਪੰਜਾਬੀ', + //Panjabi + pag: 'Pangasinan', + //Pangasinan + pam: 'Kapampangan', + //Kapampangan + pap: 'Papiamentu', + //Papiamentu + pdc: 'ltr', + //Pennsylvania + pi: 'Pāli', + //Pali + pih: 'Norfuk', + //Norfolk + pl: 'Polski', + //Polish + pms: 'Piemontèis', + //Piedmontese + ps: 'پښتو', + //Pashto + pt: 'Português', + //Portuguese + qu: 'Runa', + //Quechua + rm: 'ltr', + //Raeto + rmy: 'Romani', + //Romani + rn: 'Kirundi', + //Kirundi + ro: 'Română', + //Romanian + 'roa-rup': 'Armâneashti', + //Aromanian + ru: 'Русский', + //Russian + rw: 'Kinyarwandi', + //Rwandi + sa: 'संस्कृतम्', + //Sanskrit + sc: 'Sardu', + //Sardinian + scn: 'Sicilianu', + //Sicilian + sco: 'Scots', + //Scots + sd: 'सिनधि', + //Sindhi + se: 'ltr', + //Northern + sg: 'Sängö', + //Sango + sh: 'Srpskohrvatski', + //Serbo-Croatian + si: 'සිංහල', + //Sinhalese + simple: 'ltr', + //Simple + sk: 'Slovenčina', + //Slovak + sl: 'Slovenščina', + //Slovenian + sm: 'Gagana', + //Samoan + sn: 'chiShona', + //Shona + so: 'Soomaaliga', + //Somalia + sq: 'Shqip', + //Albanian + sr: 'Српски', + //Serbian + ss: 'SiSwati', + //Swati + st: 'ltr', + //Southern + su: 'Basa', + //Sundanese + sv: 'Svenska', + //Swedish + sw: 'Kiswahili', + //Swahili + ta: 'தமிழ்', + //Tamil + te: 'తెలుగు', + //Telugu + tet: 'Tetun', + //Tetum + tg: 'Тоҷикӣ', + //Tajik + th: 'ไทย', + //Thai + ti: 'ትግርኛ', + //Tigrinya + tk: 'Туркмен', + //Turkmen + tl: 'Tagalog', + //Tagalog + tlh: 'tlhIngan-Hol', + //Klingon + tn: 'Setswana', + //Tswana + to: 'Lea', + //Tonga + tpi: 'ltr', + //Tok + tr: 'Türkçe', + //Turkish + ts: 'Xitsonga', + //Tsonga + tt: 'Tatarça', + //Tatar + tum: 'chiTumbuka', + //Tumbuka + tw: 'Twi', + //Twi + ty: 'Reo', + //Tahitian + udm: 'Удмурт', + //Udmurt + ug: 'Uyƣurqə', + //Uyghur + uk: 'Українська', + //Ukrainian + ur: 'اردو', + //Urdu + uz: 'Ўзбек', + //Uzbek + ve: 'Tshivenḓa', + //Venda + vi: 'Việtnam', + //Vietnamese + vec: 'Vèneto', + //Venetian + vls: 'ltr', + //West + vo: 'Volapük', + //Volapük + wa: 'Walon', + //Walloon + war: 'Winaray', + //Waray-Waray + wo: 'Wollof', + //Wolof + xal: 'Хальмг', + //Kalmyk + xh: 'isiXhosa', + //Xhosa + yi: 'ייִדיש', + //Yiddish + yo: 'Yorùbá', + //Yoruba + za: 'Cuengh', + //Zhuang + zh: '中文', + //Chinese + 'zh-classical': 'ltr', + //Classical + 'zh-min-nan': 'Bân-lâm-gú', + //Minnan + 'zh-yue': '粵語', + //Cantonese + zu: 'isiZulu' //Zulu + + }; + + const wp = '.wikipedia.org/wiki/$1'; + const wm = '.wikimedia.org/wiki/$1'; + const w = 'www.'; + var interwiki$1 = { + acronym: w + 'acronymfinder.com/$1.html', + advisory: 'advisory' + wm, + advogato: w + 'advogato.org/$1', + aew: 'wiki.arabeyes.org/$1', + appropedia: w + 'appropedia.org/$1', + aquariumwiki: w + 'theaquariumwiki.com/$1', + arborwiki: 'localwiki.org/ann-arbor/$1', + arxiv: 'arxiv.org/abs/$1', + atmwiki: w + 'otterstedt.de/wiki/index.php/$1', + baden: w + 'stadtwiki-baden-baden.de/wiki/$1/', + battlestarwiki: 'en.battlestarwiki.org/wiki/$1', + bcnbio: 'historiapolitica.bcn.cl/resenas_parlamentarias/wiki/$1', + beacha: w + 'beachapedia.org/$1', + betawiki: 'translatewiki.net/wiki/$1', + bibcode: 'adsabs.harvard.edu/abs/$1', + bibliowiki: 'wikilivres.org/wiki/$1', + bluwiki: 'bluwiki.com/go/$1', + blw: 'britainloves' + wp, + botwiki: 'botwiki.sno.cc/wiki/$1', + boxrec: w + 'boxrec.com/media/index.php?$1', + brickwiki: w + 'brickwiki.info/wiki/$1', + bugzilla: 'bugzilla.wikimedia.org/show_bug.cgi?id=$1', + bulba: 'bulbapedia.bulbagarden.net/wiki/$1', + c: 'commons' + wm, + c2: 'c2.com/cgi/wiki?$1', + c2find: 'c2.com/cgi/wiki?FindPage&value=$1', + cache: w + 'google.com/search?q=cache:$1', + ĉej: 'esperanto.blahus.cz/cxej/vikio/index.php/$1', + cellwiki: 'cell.wikia.com/wiki/$1', + centralwikia: 'community.wikia.com/wiki/$1', + chej: 'esperanto.blahus.cz/cxej/vikio/index.php/$1', + choralwiki: w + 'cpdl.org/wiki/index.php/$1', + citizendium: 'en.citizendium.org/wiki/$1', + ckwiss: w + 'ck-wissen.de/ckwiki/index.php?title=$1', + comixpedia: w + 'comixpedia.org/index.php?title=$1', + commons: 'commons' + wm, + communityscheme: 'community.schemewiki.org/?c=s&key=$1', + communitywiki: 'communitywiki.org/$1', + comune: 'rete.comuni-italiani.it/wiki/$1', + creativecommons: 'creativecommons.org/licenses/$1', + creativecommonswiki: 'wiki.creativecommons.org/$1', + cxej: 'esperanto.blahus.cz/cxej/vikio/index.php/$1', + dcc: w + 'dccwiki.com/$1', + dcdatabase: 'dc.wikia.com/$1', + dcma: 'christian-morgenstern.de/dcma/index.php?title=$1', + debian: 'wiki.debian.org/$1', + delicious: w + 'delicious.com/tag/$1', + devmo: 'developer.mozilla.org/en/docs/$1', + dictionary: w + 'dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1', + dict: w + 'dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1', + disinfopedia: 'sourcewatch.org/index.php/$1', + distributedproofreaders: w + 'pgdp.net/wiki/$1', + distributedproofreadersca: w + 'pgdpcanada.net/wiki/index.php/$1', + dmoz: 'curlie.org/$1', + dmozs: 'curlie.org/search?q=$1', + doi: 'doi.org/$1', + donate: 'donate' + wm, + doom_wiki: 'doom.wikia.com/wiki/$1', + download: 'releases.wikimedia.org/$1', + dbdump: 'dumps.wikimedia.org/$1/latest/', + dpd: 'lema.rae.es/dpd/?key=$1', + drae: 'dle.rae.es/?w=$1', + dreamhost: 'wiki.dreamhost.com/index.php/$1', + drumcorpswiki: w + 'drumcorpswiki.com/index.php/$1', + dwjwiki: w + 'suberic.net/cgi-bin/dwj/wiki.cgi?$1', + eĉei: w + 'ikso.net/cgi-bin/wiki.pl?$1', + ecoreality: w + 'EcoReality.org/wiki/$1', + ecxei: w + 'ikso.net/cgi-bin/wiki.pl?$1', + elibre: 'enciclopedia.us.es/index.php/$1', + emacswiki: w + 'emacswiki.org/emacs?$1', + encyc: 'encyc.org/wiki/$1', + energiewiki: w + 'netzwerk-energieberater.de/wiki/index.php/$1', + englyphwiki: 'en.glyphwiki.org/wiki/$1', + enkol: 'enkol.pl/$1', + eokulturcentro: 'esperanto.toulouse.free.fr/nova/wikini/wakka.php?wiki=$1', + esolang: 'esolangs.org/wiki/$1', + etherpad: 'etherpad.wikimedia.org/$1', + ethnologue: w + 'ethnologue.com/language/$1', + ethnologuefamily: w + 'ethnologue.com/show_family.asp?subid=$1', + evowiki: 'wiki.cotch.net/index.php/$1', + exotica: w + 'exotica.org.uk/wiki/$1', + fanimutationwiki: 'wiki.animutationportal.com/index.php/$1', + fedora: 'fedoraproject.org/wiki/$1', + finalfantasy: 'finalfantasy.wikia.com/wiki/$1', + finnix: w + 'finnix.org/$1', + flickruser: w + 'flickr.com/people/$1', + flickrphoto: w + 'flickr.com/photo.gne?id=$1', + floralwiki: w + 'floralwiki.co.uk/wiki/$1', + foldoc: 'foldoc.org/$1', + foundation: 'foundation' + wm, + foundationsite: 'wikimediafoundation.org/$1', + foxwiki: 'fox.wikis.com/wc.dll?Wiki~$1', + freebio: 'freebiology.org/wiki/$1', + freebsdman: w + 'FreeBSD.org/cgi/man.cgi?apropos=1&query=$1', + freeculturewiki: 'wiki.freeculture.org/index.php/$1', + freedomdefined: 'freedomdefined.org/$1', + freefeel: 'freefeel.org/wiki/$1', + freekiwiki: 'wiki.freegeek.org/index.php/$1', + // freenode: 'irc://irc.freenode.net/$1', + freesoft: 'directory.fsf.org/wiki/$1', + ganfyd: 'ganfyd.org/index.php?title=$1', + gardenology: w + 'gardenology.org/wiki/$1', + gausswiki: 'gauss.ffii.org/$1', + gentoo: 'wiki.gentoo.org/wiki/$1', + genwiki: 'wiki.genealogy.net/index.php/$1', + gerrit: 'gerrit.wikimedia.org/r/$1', + git: 'gerrit.wikimedia.org/g/$1', + google: w + 'google.com/search?q=$1', + googledefine: w + 'google.com/search?q=define:$1', + googlegroups: 'groups.google.com/groups?q=$1', + guildwarswiki: 'wiki.guildwars.com/wiki/$1', + guildwiki: 'guildwars.wikia.com/wiki/$1', + guc: 'tools.wmflabs.org/guc/?user=$1', + gucprefix: 'tools.wmflabs.org/guc/?isPrefixPattern=1&src=rc&user=$1', + gutenberg: w + 'gutenberg.org/etext/$1', + gutenbergwiki: w + 'gutenberg.org/wiki/$1', + hackerspaces: 'hackerspaces.org/wiki/$1', + h2wiki: 'halowiki.net/p/$1', + hammondwiki: w + 'dairiki.org/HammondWiki/index.php3?$1', + hdl: 'hdl.handle.net/$1', + heraldik: 'heraldik-wiki.de/wiki/$1', + heroeswiki: 'heroeswiki.com/$1', + horizonlabs: 'horizon.wikimedia.org/$1', + hrwiki: w + 'hrwiki.org/index.php/$1', + hrfwiki: 'fanstuff.hrwiki.org/index.php/$1', + hupwiki: 'wiki.hup.hu/index.php/$1', + iarchive: 'archive.org/details/$1', + imdbname: w + 'imdb.com/name/nm$1/', + imdbtitle: w + 'imdb.com/title/tt$1/', + imdbcompany: w + 'imdb.com/company/co$1/', + imdbcharacter: w + 'imdb.com/character/ch$1/', + incubator: 'incubator' + wm, + infosecpedia: 'infosecpedia.org/wiki/$1', + infosphere: 'theinfosphere.org/$1', + // irc: 'irc://irc.freenode.net/$1', + // ircs: 'ircs://irc.freenode.net/$1', + // ircrc: 'irc://irc.wikimedia.org/$1', + // rcirc: 'irc://irc.wikimedia.org/$1', + 'iso639-3': 'iso639-3.sil.org/code/$1', + issn: w + 'worldcat.org/issn/$1', + iuridictum: 'iuridictum.pecina.cz/w/$1', + jaglyphwiki: 'glyphwiki.org/wiki/$1', + jefo: 'esperanto-jeunes.org/wiki/$1', + jerseydatabase: 'jerseydatabase.com/wiki.php?id=$1', + jira: 'jira.toolserver.org/browse/$1', + jspwiki: w + 'ecyrd.com/JSPWiki/Wiki.jsp?page=$1', + jstor: w + 'jstor.org/journals/$1', + kamelo: 'kamelopedia.mormo.org/index.php/$1', + karlsruhe: 'ka.stadtwiki.net/$1', + kinowiki: 'kino.skripov.com/index.php/$1', + komicawiki: 'wiki.komica.org/?$1', + kontuwiki: 'kontu.wiki/$1', + wikitech: 'wikitech' + wm, + libreplanet: 'libreplanet.org/wiki/$1', + linguistlist: 'linguistlist.org/forms/langs/LLDescription.cfm?code=$1', + linuxwiki: w + 'linuxwiki.de/$1', + linuxwikide: w + 'linuxwiki.de/$1', + liswiki: 'liswiki.org/wiki/$1', + literateprograms: 'en.literateprograms.org/$1', + livepedia: w + 'livepedia.gr/index.php?title=$1', + localwiki: 'localwiki.org/$1', + lojban: 'mw.lojban.org/papri/$1', + lostpedia: 'lostpedia.wikia.com/wiki/$1', + lqwiki: 'wiki.linuxquestions.org/wiki/$1', + luxo: 'tools.wmflabs.org/guc/?user=$1', + mail: 'lists.wikimedia.org/mailman/listinfo/$1', + mailarchive: 'lists.wikimedia.org/pipermail/$1', + mariowiki: w + 'mariowiki.com/$1', + marveldatabase: w + 'marveldatabase.com/wiki/index.php/$1', + meatball: 'meatballwiki.org/wiki/$1', + mw: w + 'mediawiki.org/wiki/$1', + mediazilla: 'bugzilla.wikimedia.org/$1', + memoryalpha: 'memory-alpha.fandom.com/wiki/$1', + metawiki: 'meta' + wm, + metawikimedia: 'meta' + wm, + metawikipedia: 'meta' + wm, + mineralienatlas: w + 'mineralienatlas.de/lexikon/index.php/$1', + moinmoin: 'moinmo.in/$1', + monstropedia: w + 'monstropedia.org/?title=$1', + mosapedia: 'mosapedia.de/wiki/index.php/$1', + mozcom: 'mozilla.wikia.com/wiki/$1', + mozillawiki: 'wiki.mozilla.org/$1', + mozillazinekb: 'kb.mozillazine.org/$1', + musicbrainz: 'musicbrainz.org/doc/$1', + mediawikiwiki: w + 'mediawiki.org/wiki/$1', + mwod: w + 'merriam-webster.com/dictionary/$1', + mwot: w + 'merriam-webster.com/thesaurus/$1', + nkcells: w + 'nkcells.info/index.php?title=$1', + nara: 'catalog.archives.gov/id/$1', + nosmoke: 'no-smok.net/nsmk/$1', + nost: 'nostalgia.' + wp, + nostalgia: 'nostalgia.' + wp, + oeis: 'oeis.org/$1', + oldwikisource: 'wikisource.org/wiki/$1', + olpc: 'wiki.laptop.org/go/$1', + omegawiki: w + 'omegawiki.org/Expression:$1', + onelook: w + 'onelook.com/?ls=b&w=$1', + openlibrary: 'openlibrary.org/$1', + openstreetmap: 'wiki.openstreetmap.org/wiki/$1', + openwetware: 'openwetware.org/wiki/$1', + opera7wiki: 'operawiki.info/$1', + organicdesign: w + 'organicdesign.co.nz/$1', + orthodoxwiki: 'orthodoxwiki.org/$1', + osmwiki: 'wiki.openstreetmap.org/wiki/$1', + otrs: 'ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketID=$1', + otrswiki: 'otrs-wiki' + wm, + ourmedia: w + 'socialtext.net/ourmedia/index.cgi?$1', + outreach: 'outreach' + wm, + outreachwiki: 'outreach' + wm, + owasp: w + 'owasp.org/index.php/$1', + panawiki: 'wiki.alairelibre.net/index.php?title=$1', + patwiki: 'gauss.ffii.org/$1', + personaltelco: 'personaltelco.net/wiki/$1', + petscan: 'petscan.wmflabs.org/?psid=$1', + phab: 'phabricator.wikimedia.org/$1', + phabricator: 'phabricator.wikimedia.org/$1', + phwiki: w + 'pocketheaven.com/ph/wiki/index.php?title=$1', + phpwiki: 'phpwiki.sourceforge.net/phpwiki/index.php?$1', + planetmath: 'planetmath.org/node/$1', + pmeg: w + 'bertilow.com/pmeg/$1', + pmid: w + 'ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract', + pokewiki: 'pokewiki.de/$1', + pokéwiki: 'pokewiki.de/$1', + policy: 'policy.wikimedia.org/$1', + proofwiki: w + 'proofwiki.org/wiki/$1', + pyrev: w + 'mediawiki.org/wiki/Special:Code/pywikipedia/$1', + pythoninfo: 'wiki.python.org/moin/$1', + pythonwiki: w + 'pythonwiki.de/$1', + pywiki: 'c2.com/cgi/wiki?$1', + psycle: 'psycle.sourceforge.net/wiki/$1', + quality: 'quality' + wm, + quarry: 'quarry.wmflabs.org/$1', + regiowiki: 'regiowiki.at/wiki/$1', + rev: w + 'mediawiki.org/wiki/Special:Code/MediaWiki/$1', + revo: 'purl.org/NET/voko/revo/art/$1.html', + rfc: 'tools.ietf.org/html/rfc$1', + rheinneckar: 'rhein-neckar-wiki.de/$1', + robowiki: 'robowiki.net/?$1', + rodovid: 'en.rodovid.org/wk/$1', + reuterswiki: 'glossary.reuters.com/index.php/$1', + rowiki: 'wiki.rennkuckuck.de/index.php/$1', + rt: 'rt.wikimedia.org/Ticket/Display.html?id=$1', + // rtfm: 'ftp://rtfm.mit.edu/pub/faqs/$1', + s23wiki: 's23.org/wiki/$1', + scholar: 'scholar.google.com/scholar?q=$1', + schoolswp: 'schools-' + wp, + scores: 'imslp.org/wiki/$1', + scoutwiki: 'en.scoutwiki.org/$1', + scramble: w + 'scramble.nl/wiki/index.php?title=$1', + seapig: w + 'seapig.org/$1', + seattlewiki: 'seattle.wikia.com/wiki/$1', + slwiki: 'wiki.secondlife.com/wiki/$1', + 'semantic-mw': w + 'semantic-mediawiki.org/wiki/$1', + senseislibrary: 'senseis.xmp.net/?$1', + sharemap: 'sharemap.org/$1', + silcode: w + 'sil.org/iso639-3/documentation.asp?id=$1', + slashdot: 'slashdot.org/article.pl?sid=$1', + sourceforge: 'sourceforge.net/$1', + spcom: 'spcom' + wm, + species: 'species' + wm, + squeak: 'wiki.squeak.org/squeak/$1', + stats: 'stats.wikimedia.org/$1', + stewardry: 'tools.wmflabs.org/meta/stewardry/?wiki=$1', + strategy: 'strategy' + wm, + strategywiki: 'strategywiki.org/wiki/$1', + sulutil: 'meta.wikimedia.org/wiki/Special:CentralAuth/$1', + swtrain: 'train.spottingworld.com/$1', + svn: 'svn.wikimedia.org/viewvc/mediawiki/$1?view=log', + swinbrain: 'swinbrain.ict.swin.edu.au/wiki/$1', + tabwiki: w + 'tabwiki.com/index.php/$1', + tclerswiki: 'wiki.tcl.tk/$1', + technorati: w + 'technorati.com/search/$1', + tenwiki: 'ten.' + wp, + testwiki: 'test.' + wp, + testwikidata: 'test.wikidata.org/wiki/$1', + test2wiki: 'test2.' + wp, + tfwiki: 'tfwiki.net/wiki/$1', + thelemapedia: w + 'thelemapedia.org/index.php/$1', + theopedia: w + 'theopedia.com/$1', + thinkwiki: w + 'thinkwiki.org/wiki/$1', + ticket: 'ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketNumber=$1', + tmbw: 'tmbw.net/wiki/$1', + tmnet: w + 'technomanifestos.net/?$1', + tmwiki: w + 'EasyTopicMaps.com/?page=$1', + toolforge: 'tools.wmflabs.org/$1', + toollabs: 'tools.wmflabs.org/$1', + tools: 'toolserver.org/$1', + tswiki: w + 'mediawiki.org/wiki/Toolserver:$1', + translatewiki: 'translatewiki.net/wiki/$1', + tviv: 'tviv.org/wiki/$1', + tvtropes: w + 'tvtropes.org/pmwiki/pmwiki.php/Main/$1', + twiki: 'twiki.org/cgi-bin/view/$1', + tyvawiki: w + 'tyvawiki.org/wiki/$1', + umap: 'umap.openstreetmap.fr/$1', + uncyclopedia: 'en.uncyclopedia.co/wiki/$1', + unihan: w + 'unicode.org/cgi-bin/GetUnihanData.pl?codepoint=$1', + unreal: 'wiki.beyondunreal.com/wiki/$1', + urbandict: w + 'urbandictionary.com/define.php?term=$1', + usej: w + 'tejo.org/usej/$1', + usemod: w + 'usemod.com/cgi-bin/wiki.pl?$1', + usability: 'usability' + wm, + utrs: 'utrs.wmflabs.org/appeal.php?id=$1', + vikidia: 'fr.vikidia.org/wiki/$1', + vlos: 'tusach.thuvienkhoahoc.com/wiki/$1', + vkol: 'kol.coldfront.net/thekolwiki/index.php/$1', + voipinfo: w + 'voip-info.org/wiki/view/$1', + votewiki: 'vote' + wm, + werelate: w + 'werelate.org/wiki/$1', + wg: 'wg-en.' + wp, + wikia: w + 'wikia.com/wiki/w:c:$1', + wikiasite: w + 'wikia.com/wiki/w:c:$1', + wikiapiary: 'wikiapiary.com/wiki/$1', + wikibooks: 'en.wikibooks.org/wiki/$1', + wikichristian: w + 'wikichristian.org/index.php?title=$1', + wikicities: w + 'wikia.com/wiki/w:$1', + wikicity: w + 'wikia.com/wiki/w:c:$1', + wikiconference: 'wikiconference.org/wiki/$1', + wikidata: w + 'wikidata.org/wiki/$1', + wikif1: w + 'wikif1.org/$1', + wikifur: 'en.wikifur.com/wiki/$1', + wikihow: w + 'wikihow.com/$1', + wikiindex: 'wikiindex.org/$1', + wikilemon: 'wiki.illemonati.com/$1', + wikilivres: 'wikilivres.org/wiki/$1', + wikilivresru: 'wikilivres.ru/$1', + 'wikimac-de': 'apfelwiki.de/wiki/Main/$1', + wikimedia: 'foundation' + wm, + wikinews: 'en.wikinews.org/wiki/$1', + wikinfo: 'wikinfo.org/w/index.php/$1', + wikinvest: 'meta.wikimedia.org/wiki/Interwiki_map/discontinued#Wikinvest', + wikiotics: 'wikiotics.org/$1', + wikipapers: 'wikipapers.referata.com/wiki/$1', + wikipedia: 'en.' + wp, + wikipediawikipedia: 'en.wikipedia.org/wiki/Wikipedia:$1', + wikiquote: 'en.wikiquote.org/wiki/$1', + wikisophia: 'wikisophia.org/index.php?title=$1', + wikisource: 'en.wikisource.org/wiki/$1', + wikispecies: 'species' + wm, + wikispot: 'wikispot.org/?action=gotowikipage&v=$1', + wikiskripta: w + 'wikiskripta.eu/index.php/$1', + labsconsole: 'wikitech' + wm, + wikiti: 'wikiti.denglend.net/index.php?title=$1', + wikiversity: 'en.wikiversity.org/wiki/$1', + wikivoyage: 'en.wikivoyage.org/wiki/$1', + betawikiversity: 'beta.wikiversity.org/wiki/$1', + wikiwikiweb: 'c2.com/cgi/wiki?$1', + wiktionary: 'en.wiktionary.org/wiki/$1', + wipipedia: 'wipipedia.org/index.php/$1', + wlug: w + 'wlug.org.nz/$1', + wmam: 'am' + wm, + wmar: w + 'wikimedia.org.ar/wiki/$1', + wmat: 'mitglieder.wikimedia.at/$1', + wmau: 'wikimedia.org.au/wiki/$1', + wmbd: 'bd' + wm, + wmbe: 'be' + wm, + wmbr: 'br' + wm, + wmca: 'ca' + wm, + wmch: w + 'wikimedia.ch/$1', + wmcl: w + 'wikimediachile.cl/index.php?title=$1', + wmcn: 'cn' + wm, + wmco: 'co' + wm, + wmcz: w + 'wikimedia.cz/web/$1', + wmdc: 'wikimediadc.org/wiki/$1', + securewikidc: 'secure.wikidc.org/$1', + wmde: 'wikimedia.de/wiki/$1', + wmdk: 'dk' + wm, + wmee: 'ee' + wm, + wmec: 'ec' + wm, + wmes: w + 'wikimedia.es/wiki/$1', + wmet: 'ee' + wm, + wmfdashboard: 'outreachdashboard.wmflabs.org/$1', + wmfi: 'fi' + wm, + wmfr: 'wikimedia.fr/$1', + wmge: 'ge' + wm, + wmhi: 'hi' + wm, + wmhk: 'meta.wikimedia.org/wiki/Wikimedia_Hong_Kong', + wmhu: 'wikimedia.hu/wiki/$1', + wmid: 'id' + wm, + wmil: w + 'wikimedia.org.il/$1', + wmin: 'wiki.wikimedia.in/$1', + wmit: 'wiki.wikimedia.it/wiki/$1', + wmke: 'meta.wikimedia.org/wiki/Wikimedia_Kenya', + wmmk: 'mk' + wm, + wmmx: 'mx' + wm, + wmnl: 'nl' + wm, + wmnyc: 'nyc' + wm, + wmno: 'no' + wm, + 'wmpa-us': 'pa-us' + wm, + wmph: 'meta.wikimedia.org/wiki/Wikimedia_Philippines', + wmpl: 'pl' + wm, + wmpt: 'pt' + wm, + wmpunjabi: 'punjabi' + wm, + wmromd: 'romd' + wm, + wmrs: 'rs' + wm, + wmru: 'ru' + wm, + wmse: 'se' + wm, + wmsk: 'wikimedia.sk/$1', + wmtr: 'tr' + wm, + wmtw: 'wikimedia.tw/wiki/index.php5/$1', + wmua: 'ua' + wm, + wmuk: 'wikimedia.org.uk/wiki/$1', + wmve: 'wikimedia.org.ve/wiki/$1', + wmza: 'wikimedia.org.za/wiki/$1', + wm2005: 'wikimania2005' + wm, + wm2006: 'wikimania2006' + wm, + wm2007: 'wikimania2007' + wm, + wm2008: 'wikimania2008' + wm, + wm2009: 'wikimania2009' + wm, + wm2010: 'wikimania2010' + wm, + wm2011: 'wikimania2011' + wm, + wm2012: 'wikimania2012' + wm, + wm2013: 'wikimania2013' + wm, + wm2014: 'wikimania2014' + wm, + wm2015: 'wikimania2015' + wm, + wm2016: 'wikimania2016' + wm, + wm2017: 'wikimania2017' + wm, + wm2018: 'wikimania2018' + wm, + wmania: 'wikimania' + wm, + wikimania: 'wikimania' + wm, + wmteam: 'wikimaniateam' + wm, + wmf: 'foundation' + wm, + wmfblog: 'blog.wikimedia.org/$1', + wmdeblog: 'blog.wikimedia.de/$1', + wookieepedia: 'starwars.wikia.com/wiki/$1', + wowwiki: w + 'wowwiki.com/$1', + wqy: 'wqy.sourceforge.net/cgi-bin/index.cgi?$1', + wurmpedia: 'wurmpedia.com/index.php/$1', + viaf: 'viaf.org/viaf/$1', + zrhwiki: w + 'zrhwiki.ch/wiki/$1', + zum: 'wiki.zum.de/$1', + zwiki: w + 'zwiki.org/$1', + m: 'meta' + wm, + meta: 'meta' + wm, + sep11: 'sep11.' + wp, + d: w + 'wikidata.org/wiki/$1', + minnan: 'zh-min-nan.' + wp, + nb: 'no.' + wp, + 'zh-cfr': 'zh-min-nan.' + wp, + 'zh-cn': 'zh.' + wp, + 'zh-tw': 'zh.' + wp, + nan: 'zh-min-nan.' + wp, + vro: 'fiu-vro.' + wp, + cmn: 'zh.' + wp, + lzh: 'zh-classical.' + wp, + rup: 'roa-rup.' + wp, + gsw: 'als.' + wp, + 'be-tarask': 'be-x-old.' + wp, + sgs: 'bat-smg.' + wp, + egl: 'eml.' + wp, + w: 'en.' + wp, + wikt: 'en.wiktionary.org/wiki/$1', + q: 'en.wikiquote.org/wiki/$1', + b: 'en.wikibooks.org/wiki/$1', + n: 'en.wikinews.org/wiki/$1', + s: 'en.wikisource.org/wiki/$1', + chapter: 'en' + wm, + v: 'en.wikiversity.org/wiki/$1', + voy: 'en.wikivoyage.org/wiki/$1' + }; + + const languages$3 = languages$4; //some colon symbols are valid links, like `America: That place` + //so we have to whitelist allowable interwiki links + + const interwikis = interwiki$1; //add language prefixes too.. + + Object.keys(languages$3).forEach(k => { + interwikis[k] = k + '.wikipedia.org/wiki/$1'; + }); //this is predictably very complicated. + // https://meta.wikimedia.org/wiki/Help:Interwiki_linking + + const parseInterwiki = function (obj) { + let str = obj.page || ''; + + if (str.indexOf(':') !== -1) { + let m = str.match(/^(.*):(.*)/); + + if (m === null) { + return obj; + } + + let site = m[1] || ''; + site = site.toLowerCase(); + + if (site.indexOf(':') !== -1) { + let [, wiki, lang] = site.match(/^:?(.*):(.*)/); //only allow interwikis to these specific places + + if (interwikis.hasOwnProperty(wiki) && languages$3.hasOwnProperty(lang) === false) { + return obj; + } + + obj.wiki = { + wiki: wiki, + lang: lang + }; + } else { + if (interwikis.hasOwnProperty(site) === false) { + return obj; + } + + obj.wiki = site; + } + + obj.page = m[2]; + } + + return obj; + }; + + var interwiki = parseInterwiki; + + const parse_interwiki = interwiki; + const ignore_links = /^:?(category|catégorie|kategorie|categoría|categoria|categorie|kategoria|تصنيف|image|file|fichier|datei|media):/i; + const external_link = /\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]| ]{4,1500})([| ].*?)?\]/g; + const link_reg = /\[\[(.{0,160}?)\]\]([a-z]+)?/gi; //allow dangling suffixes - "[[flanders]]s" + + const external_links = function (links, str) { + str.replace(external_link, function (raw, protocol, link, text) { + text = text || ''; + links.push({ + type: 'external', + site: protocol + link, + text: text.trim(), + raw: raw + }); + return text; + }); + return links; + }; + + const internal_links = function (links, str) { + //regular links + str.replace(link_reg, function (raw, s, suffix) { + let txt = null; //make a copy of original + + let link = s; + + if (s.match(/\|/)) { + //replacement link [[link|text]] + s = s.replace(/\[\[(.{2,100}?)\]\](\w{0,10})/g, '$1$2'); //remove ['s and keep suffix + + link = s.replace(/(.{2,100})\|.{0,200}/, '$1'); //replaced links + + txt = s.replace(/.{2,100}?\|/, ''); //handle funky case of [[toronto|]] + if (txt === null && link.match(/\|$/)) { + link = link.replace(/\|$/, ''); + txt = link; + } + } //kill off non-wikipedia namespaces - if (options.caption !== false && img.data.caption) { - json.caption = img.caption(); - if (options.links !== false && img.data.caption.links()) { - json.links = img.links(); - } - } - - if (options.alt !== false && img.data.alt) { - json.alt = img.alt(); - } - - return json; - }; - - var toJson_1$3 = toJson$8; - - var toJson$7 = toJson_1$3; - - const server = 'wikipedia.org'; - - const encodeTitle = function (file) { - let title = file.replace(/^(image|file?):/i, ''); //titlecase it - - title = title.charAt(0).toUpperCase() + title.substring(1); //spaces to underscores - - title = title.trim().replace(/ /g, '_'); - return title; - }; //the wikimedia image url is a little silly: - - - const makeSrc = function (file) { - let title = encodeTitle(file); - title = encodeURIComponent(title); - return title; - }; //the class for our image generation functions - - - const Image = function (data) { - Object.defineProperty(this, 'data', { - enumerable: false, - value: data - }); - }; - - const methods$8 = { - file() { - return this.data.file || ''; - }, - - alt() { - let str = this.data.alt || this.data.file || ''; - str = str.replace(/^(file|image):/i, ''); - str = str.replace(/\.(jpg|jpeg|png|gif|svg)/i, ''); - return str.replace(/_/g, ' '); - }, - - caption() { - if (this.data.caption) { - return this.data.caption.text(); - } - - return ''; - }, - - links() { - if (this.data.caption) { - return this.data.caption.links(); - } - - return []; - }, - - url() { - // let lang = 'en' //this.language() || 'en' //hmm: get actual language? - let fileName = makeSrc(this.file()); - let domain = this.data.domain || server; - let path = `wiki/Special:Redirect/file`; - return `https://${domain}/${path}/${fileName}`; - }, - - thumbnail(size) { - size = size || 300; - return this.url() + '?width=' + size; - }, - - format() { - let arr = this.file().split('.'); - - if (arr[arr.length - 1]) { - return arr[arr.length - 1].toLowerCase(); - } - - return null; - }, - - json: function (options) { - options = options || {}; - return toJson$7(this, options); - }, - text: function () { - return ''; - }, - wikitext: function () { - return this.data.wiki || ''; - } - }; - Object.keys(methods$8).forEach(k => { - Image.prototype[k] = methods$8[k]; - }); - Image.prototype.src = Image.prototype.url; - Image.prototype.thumb = Image.prototype.thumbnail; - var Image_1 = Image; - - var languages$1 = { - aa: 'Afar', - //Afar - ab: 'Аҧсуа', - //Abkhazian - af: 'Afrikaans', - //Afrikaans - ak: 'Akana', - //Akan - als: 'Alemannisch', - //Alemannic - am: 'አማርኛ', - //Amharic - an: 'Aragonés', - //Aragonese - ang: 'Englisc', - //Anglo-Saxon - ar: 'العربية', - //Arabic - arc: 'ܣܘܪܬ', - //Aramaic - as: 'অসমীয়া', - //Assamese - ast: 'Asturianu', - //Asturian - av: 'Авар', - //Avar - ay: 'Aymar', - //Aymara - az: 'Azərbaycanca', - //Azerbaijani - ba: 'Башҡорт', - //Bashkir - bar: 'Boarisch', - //Bavarian - 'bat-smg': 'Žemaitėška', - //Samogitian - bcl: 'Bikol', - //Bikol - be: 'Беларуская', - //Belarusian - 'be-x-old': 'ltr', - //Belarusian - bg: 'Български', - //Bulgarian - bh: 'भोजपुरी', - //Bihari - bi: 'Bislama', - //Bislama - bm: 'Bamanankan', - //Bambara - bn: 'বাংলা', - //Bengali - bo: 'བོད་ཡིག', - //Tibetan - bpy: 'ltr', - //Bishnupriya - br: 'Brezhoneg', - //Breton - bs: 'Bosanski', - //Bosnian - bug: 'ᨅᨔ', - //Buginese - bxr: 'ltr', - //Buriat - ca: 'Català', - //Catalan - cdo: 'Chinese', - //Min - ce: 'Нохчийн', - //Chechen - ceb: 'Sinugboanong', - //Cebuano - ch: 'Chamoru', - //Chamorro - cho: 'Choctaw', - //Choctaw - chr: 'ᏣᎳᎩ', - //Cherokee - chy: 'Tsetsêhestâhese', - //Cheyenne - co: 'Corsu', - //Corsican - cr: 'Nehiyaw', - //Cree - cs: 'Česky', - //Czech - csb: 'Kaszëbsczi', - //Kashubian - cu: 'Slavonic', - //Old - cv: 'Чăваш', - //Chuvash - cy: 'Cymraeg', - //Welsh - da: 'Dansk', - //Danish - de: 'Deutsch', - //German - diq: 'Zazaki', - //Dimli - dsb: 'ltr', - //Lower - dv: 'ދިވެހިބަސް', - //Divehi - dz: 'ཇོང་ཁ', - //Dzongkha - ee: 'Ɛʋɛ', - //Ewe - far: 'فارسی', - //Farsi - el: 'Ελληνικά', - //Greek - en: 'English', - //English - eo: 'Esperanto', - //Esperanto - es: 'Español', - //Spanish - et: 'Eesti', - //Estonian - eu: 'Euskara', - //Basque - ext: 'Estremeñu', - //Extremaduran - ff: 'Fulfulde', - //Peul - fi: 'Suomi', - //Finnish - 'fiu-vro': 'Võro', - //Võro - fj: 'Na', - //Fijian - fo: 'Føroyskt', - //Faroese - fr: 'Français', - //French - frp: 'Arpitan', - //Arpitan - fur: 'Furlan', - //Friulian - fy: 'ltr', - //West - ga: 'Gaeilge', - //Irish - gan: 'ltr', - //Gan - gd: 'ltr', - //Scottish - gil: 'Taetae', - //Gilbertese - gl: 'Galego', - //Galician - gn: "Avañe'ẽ", - //Guarani - got: 'gutisk', - //Gothic - gu: 'ગુજરાતી', - //Gujarati - gv: 'Gaelg', - //Manx - ha: 'هَوُسَ', - //Hausa - hak: 'ltr', - //Hakka - haw: 'Hawai`i', - //Hawaiian - he: 'עברית', - //Hebrew - hi: 'हिन्दी', - //Hindi - ho: 'ltr', - //Hiri - hr: 'Hrvatski', - //Croatian - ht: 'Krèyol', - //Haitian - hu: 'Magyar', - //Hungarian - hy: 'Հայերեն', - //Armenian - hz: 'Otsiherero', - //Herero - ia: 'Interlingua', - //Interlingua - id: 'Bahasa', - //Indonesian - ie: 'Interlingue', - //Interlingue - ig: 'Igbo', - //Igbo - ii: 'ltr', - //Sichuan - ik: 'Iñupiak', - //Inupiak - ilo: 'Ilokano', - //Ilokano - io: 'Ido', - //Ido - is: 'Íslenska', - //Icelandic - it: 'Italiano', - //Italian - iu: 'ᐃᓄᒃᑎᑐᑦ', - //Inuktitut - ja: '日本語', - //Japanese - jbo: 'Lojban', - //Lojban - jv: 'Basa', - //Javanese - ka: 'ქართული', - //Georgian - kg: 'KiKongo', - //Kongo - ki: 'Gĩkũyũ', - //Kikuyu - kj: 'Kuanyama', - //Kuanyama - kk: 'Қазақша', - //Kazakh - kl: 'Kalaallisut', - //Greenlandic - km: 'ភាសាខ្មែរ', - //Cambodian - kn: 'ಕನ್ನಡ', - //Kannada - khw: 'کھوار', - //Khowar - ko: '한국어', - //Korean - kr: 'Kanuri', - //Kanuri - ks: 'कश्मीरी', - //Kashmiri - ksh: 'Ripoarisch', - //Ripuarian - ku: 'Kurdî', - //Kurdish - kv: 'Коми', - //Komi - kw: 'Kernewek', - //Cornish - ky: 'Kırgızca', - //Kirghiz - la: 'Latina', - //Latin - lad: 'Dzhudezmo', - //Ladino - lan: 'Leb', - //Lango - lb: 'Lëtzebuergesch', - //Luxembourgish - lg: 'Luganda', - //Ganda - li: 'Limburgs', - //Limburgian - lij: 'Líguru', - //Ligurian - lmo: 'Lumbaart', - //Lombard - ln: 'Lingála', - //Lingala - lo: 'ລາວ', - //Laotian - lt: 'Lietuvių', - //Lithuanian - lv: 'Latviešu', - //Latvian - 'map-bms': 'Basa', - //Banyumasan - mg: 'Malagasy', - //Malagasy - man: '官話', - //Mandarin - mh: 'Kajin', - //Marshallese - mi: 'Māori', - //Maori - min: 'Minangkabau', - //Minangkabau - mk: 'Македонски', - //Macedonian - ml: 'മലയാളം', - //Malayalam - mn: 'Монгол', - //Mongolian - mo: 'Moldovenească', - //Moldovan - mr: 'मराठी', - //Marathi - ms: 'Bahasa', - //Malay - mt: 'bil-Malti', - //Maltese - mus: 'Muskogee', - //Creek - my: 'Myanmasa', - //Burmese - na: 'Dorerin', - //Nauruan - nah: 'Nahuatl', - //Nahuatl - nap: 'Nnapulitano', - //Neapolitan - nd: 'ltr', - //North - nds: 'Plattdüütsch', - //Low German - 'nds-nl': 'Saxon', - //Dutch - ne: 'नेपाली', - //Nepali - new: 'नेपालभाषा', - //Newar - ng: 'Oshiwambo', - //Ndonga - nl: 'Nederlands', - //Dutch - nn: 'ltr', - //Norwegian - no: 'Norsk', - //Norwegian - nr: 'ltr', - //South - nso: 'ltr', - //Northern - nrm: 'Nouormand', - //Norman - nv: 'Diné', - //Navajo - ny: 'Chi-Chewa', - //Chichewa - oc: 'Occitan', - //Occitan - oj: 'ᐊᓂᔑᓈᐯᒧᐎᓐ', - //Ojibwa - om: 'Oromoo', - //Oromo - or: 'ଓଡ଼ିଆ', - //Oriya - os: 'Иронау', - //Ossetian - pa: 'ਪੰਜਾਬੀ', - //Panjabi - pag: 'Pangasinan', - //Pangasinan - pam: 'Kapampangan', - //Kapampangan - pap: 'Papiamentu', - //Papiamentu - pdc: 'ltr', - //Pennsylvania - pi: 'Pāli', - //Pali - pih: 'Norfuk', - //Norfolk - pl: 'Polski', - //Polish - pms: 'Piemontèis', - //Piedmontese - ps: 'پښتو', - //Pashto - pt: 'Português', - //Portuguese - qu: 'Runa', - //Quechua - rm: 'ltr', - //Raeto - rmy: 'Romani', - //Romani - rn: 'Kirundi', - //Kirundi - ro: 'Română', - //Romanian - 'roa-rup': 'Armâneashti', - //Aromanian - ru: 'Русский', - //Russian - rw: 'Kinyarwandi', - //Rwandi - sa: 'संस्कृतम्', - //Sanskrit - sc: 'Sardu', - //Sardinian - scn: 'Sicilianu', - //Sicilian - sco: 'Scots', - //Scots - sd: 'सिनधि', - //Sindhi - se: 'ltr', - //Northern - sg: 'Sängö', - //Sango - sh: 'Srpskohrvatski', - //Serbo-Croatian - si: 'සිංහල', - //Sinhalese - simple: 'ltr', - //Simple - sk: 'Slovenčina', - //Slovak - sl: 'Slovenščina', - //Slovenian - sm: 'Gagana', - //Samoan - sn: 'chiShona', - //Shona - so: 'Soomaaliga', - //Somalia - sq: 'Shqip', - //Albanian - sr: 'Српски', - //Serbian - ss: 'SiSwati', - //Swati - st: 'ltr', - //Southern - su: 'Basa', - //Sundanese - sv: 'Svenska', - //Swedish - sw: 'Kiswahili', - //Swahili - ta: 'தமிழ்', - //Tamil - te: 'తెలుగు', - //Telugu - tet: 'Tetun', - //Tetum - tg: 'Тоҷикӣ', - //Tajik - th: 'ไทย', - //Thai - ti: 'ትግርኛ', - //Tigrinya - tk: 'Туркмен', - //Turkmen - tl: 'Tagalog', - //Tagalog - tlh: 'tlhIngan-Hol', - //Klingon - tn: 'Setswana', - //Tswana - to: 'Lea', - //Tonga - tpi: 'ltr', - //Tok - tr: 'Türkçe', - //Turkish - ts: 'Xitsonga', - //Tsonga - tt: 'Tatarça', - //Tatar - tum: 'chiTumbuka', - //Tumbuka - tw: 'Twi', - //Twi - ty: 'Reo', - //Tahitian - udm: 'Удмурт', - //Udmurt - ug: 'Uyƣurqə', - //Uyghur - uk: 'Українська', - //Ukrainian - ur: 'اردو', - //Urdu - uz: 'Ўзбек', - //Uzbek - ve: 'Tshivenḓa', - //Venda - vi: 'Việtnam', - //Vietnamese - vec: 'Vèneto', - //Venetian - vls: 'ltr', - //West - vo: 'Volapük', - //Volapük - wa: 'Walon', - //Walloon - war: 'Winaray', - //Waray-Waray - wo: 'Wollof', - //Wolof - xal: 'Хальмг', - //Kalmyk - xh: 'isiXhosa', - //Xhosa - yi: 'ייִדיש', - //Yiddish - yo: 'Yorùbá', - //Yoruba - za: 'Cuengh', - //Zhuang - zh: '中文', - //Chinese - 'zh-classical': 'ltr', - //Classical - 'zh-min-nan': 'Bân-lâm-gú', - //Minnan - 'zh-yue': '粵語', - //Cantonese - zu: 'isiZulu' //Zulu - - }; - languages$1.aa; - languages$1.ab; - languages$1.af; - languages$1.ak; - languages$1.als; - languages$1.am; - languages$1.an; - languages$1.ang; - languages$1.ar; - languages$1.arc; - languages$1.as; - languages$1.ast; - languages$1.av; - languages$1.ay; - languages$1.az; - languages$1.ba; - languages$1.bar; - languages$1.bcl; - languages$1.be; - languages$1.bg; - languages$1.bh; - languages$1.bi; - languages$1.bm; - languages$1.bn; - languages$1.bo; - languages$1.bpy; - languages$1.br; - languages$1.bs; - languages$1.bug; - languages$1.bxr; - languages$1.ca; - languages$1.cdo; - languages$1.ce; - languages$1.ceb; - languages$1.ch; - languages$1.cho; - languages$1.chr; - languages$1.chy; - languages$1.co; - languages$1.cr; - languages$1.cs; - languages$1.csb; - languages$1.cu; - languages$1.cv; - languages$1.cy; - languages$1.da; - languages$1.de; - languages$1.diq; - languages$1.dsb; - languages$1.dv; - languages$1.dz; - languages$1.ee; - languages$1.far; - languages$1.el; - languages$1.en; - languages$1.eo; - languages$1.es; - languages$1.et; - languages$1.eu; - languages$1.ext; - languages$1.ff; - languages$1.fi; - languages$1.fj; - languages$1.fo; - languages$1.fr; - languages$1.frp; - languages$1.fur; - languages$1.fy; - languages$1.ga; - languages$1.gan; - languages$1.gd; - languages$1.gil; - languages$1.gl; - languages$1.gn; - languages$1.got; - languages$1.gu; - languages$1.gv; - languages$1.ha; - languages$1.hak; - languages$1.haw; - languages$1.he; - languages$1.hi; - languages$1.ho; - languages$1.hr; - languages$1.ht; - languages$1.hu; - languages$1.hy; - languages$1.hz; - languages$1.ia; - languages$1.id; - languages$1.ie; - languages$1.ig; - languages$1.ii; - languages$1.ik; - languages$1.ilo; - languages$1.io; - languages$1.is; - languages$1.it; - languages$1.iu; - languages$1.ja; - languages$1.jbo; - languages$1.jv; - languages$1.ka; - languages$1.kg; - languages$1.ki; - languages$1.kj; - languages$1.kk; - languages$1.kl; - languages$1.km; - languages$1.kn; - languages$1.khw; - languages$1.ko; - languages$1.kr; - languages$1.ks; - languages$1.ksh; - languages$1.ku; - languages$1.kv; - languages$1.kw; - languages$1.ky; - languages$1.la; - languages$1.lad; - languages$1.lan; - languages$1.lb; - languages$1.lg; - languages$1.li; - languages$1.lij; - languages$1.lmo; - languages$1.ln; - languages$1.lo; - languages$1.lt; - languages$1.lv; - languages$1.mg; - languages$1.man; - languages$1.mh; - languages$1.mi; - languages$1.min; - languages$1.mk; - languages$1.ml; - languages$1.mn; - languages$1.mo; - languages$1.mr; - languages$1.ms; - languages$1.mt; - languages$1.mus; - languages$1.my; - languages$1.na; - languages$1.nah; - languages$1.nap; - languages$1.nd; - languages$1.nds; - languages$1.ne; - languages$1.ng; - languages$1.nl; - languages$1.nn; - languages$1.no; - languages$1.nr; - languages$1.nso; - languages$1.nrm; - languages$1.nv; - languages$1.ny; - languages$1.oc; - languages$1.oj; - languages$1.om; - languages$1.or; - languages$1.os; - languages$1.pa; - languages$1.pag; - languages$1.pam; - languages$1.pap; - languages$1.pdc; - languages$1.pi; - languages$1.pih; - languages$1.pl; - languages$1.pms; - languages$1.ps; - languages$1.pt; - languages$1.qu; - languages$1.rm; - languages$1.rmy; - languages$1.rn; - languages$1.ro; - languages$1.ru; - languages$1.rw; - languages$1.sa; - languages$1.sc; - languages$1.scn; - languages$1.sco; - languages$1.sd; - languages$1.se; - languages$1.sg; - languages$1.sh; - languages$1.si; - languages$1.simple; - languages$1.sk; - languages$1.sl; - languages$1.sm; - languages$1.sn; - languages$1.so; - languages$1.sq; - languages$1.sr; - languages$1.ss; - languages$1.st; - languages$1.su; - languages$1.sv; - languages$1.sw; - languages$1.ta; - languages$1.te; - languages$1.tet; - languages$1.tg; - languages$1.th; - languages$1.ti; - languages$1.tk; - languages$1.tl; - languages$1.tlh; - languages$1.tn; - languages$1.to; - languages$1.tpi; - languages$1.tr; - languages$1.ts; - languages$1.tt; - languages$1.tum; - languages$1.tw; - languages$1.ty; - languages$1.udm; - languages$1.ug; - languages$1.uk; - languages$1.ur; - languages$1.uz; - languages$1.ve; - languages$1.vi; - languages$1.vec; - languages$1.vls; - languages$1.vo; - languages$1.wa; - languages$1.war; - languages$1.wo; - languages$1.xal; - languages$1.xh; - languages$1.yi; - languages$1.yo; - languages$1.za; - languages$1.zh; - languages$1.zu; - - const wp = '.wikipedia.org/wiki/$1'; - const wm = '.wikimedia.org/wiki/$1'; - const w = 'www.'; - var interwiki$1 = { - acronym: w + 'acronymfinder.com/$1.html', - advisory: 'advisory' + wm, - advogato: w + 'advogato.org/$1', - aew: 'wiki.arabeyes.org/$1', - appropedia: w + 'appropedia.org/$1', - aquariumwiki: w + 'theaquariumwiki.com/$1', - arborwiki: 'localwiki.org/ann-arbor/$1', - arxiv: 'arxiv.org/abs/$1', - atmwiki: w + 'otterstedt.de/wiki/index.php/$1', - baden: w + 'stadtwiki-baden-baden.de/wiki/$1/', - battlestarwiki: 'en.battlestarwiki.org/wiki/$1', - bcnbio: 'historiapolitica.bcn.cl/resenas_parlamentarias/wiki/$1', - beacha: w + 'beachapedia.org/$1', - betawiki: 'translatewiki.net/wiki/$1', - bibcode: 'adsabs.harvard.edu/abs/$1', - bibliowiki: 'wikilivres.org/wiki/$1', - bluwiki: 'bluwiki.com/go/$1', - blw: 'britainloves' + wp, - botwiki: 'botwiki.sno.cc/wiki/$1', - boxrec: w + 'boxrec.com/media/index.php?$1', - brickwiki: w + 'brickwiki.info/wiki/$1', - bugzilla: 'bugzilla.wikimedia.org/show_bug.cgi?id=$1', - bulba: 'bulbapedia.bulbagarden.net/wiki/$1', - c: 'commons' + wm, - c2: 'c2.com/cgi/wiki?$1', - c2find: 'c2.com/cgi/wiki?FindPage&value=$1', - cache: w + 'google.com/search?q=cache:$1', - ĉej: 'esperanto.blahus.cz/cxej/vikio/index.php/$1', - cellwiki: 'cell.wikia.com/wiki/$1', - centralwikia: 'community.wikia.com/wiki/$1', - chej: 'esperanto.blahus.cz/cxej/vikio/index.php/$1', - choralwiki: w + 'cpdl.org/wiki/index.php/$1', - citizendium: 'en.citizendium.org/wiki/$1', - ckwiss: w + 'ck-wissen.de/ckwiki/index.php?title=$1', - comixpedia: w + 'comixpedia.org/index.php?title=$1', - commons: 'commons' + wm, - communityscheme: 'community.schemewiki.org/?c=s&key=$1', - communitywiki: 'communitywiki.org/$1', - comune: 'rete.comuni-italiani.it/wiki/$1', - creativecommons: 'creativecommons.org/licenses/$1', - creativecommonswiki: 'wiki.creativecommons.org/$1', - cxej: 'esperanto.blahus.cz/cxej/vikio/index.php/$1', - dcc: w + 'dccwiki.com/$1', - dcdatabase: 'dc.wikia.com/$1', - dcma: 'christian-morgenstern.de/dcma/index.php?title=$1', - debian: 'wiki.debian.org/$1', - delicious: w + 'delicious.com/tag/$1', - devmo: 'developer.mozilla.org/en/docs/$1', - dictionary: w + 'dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1', - dict: w + 'dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1', - disinfopedia: 'sourcewatch.org/index.php/$1', - distributedproofreaders: w + 'pgdp.net/wiki/$1', - distributedproofreadersca: w + 'pgdpcanada.net/wiki/index.php/$1', - dmoz: 'curlie.org/$1', - dmozs: 'curlie.org/search?q=$1', - doi: 'doi.org/$1', - donate: 'donate' + wm, - doom_wiki: 'doom.wikia.com/wiki/$1', - download: 'releases.wikimedia.org/$1', - dbdump: 'dumps.wikimedia.org/$1/latest/', - dpd: 'lema.rae.es/dpd/?key=$1', - drae: 'dle.rae.es/?w=$1', - dreamhost: 'wiki.dreamhost.com/index.php/$1', - drumcorpswiki: w + 'drumcorpswiki.com/index.php/$1', - dwjwiki: w + 'suberic.net/cgi-bin/dwj/wiki.cgi?$1', - eĉei: w + 'ikso.net/cgi-bin/wiki.pl?$1', - ecoreality: w + 'EcoReality.org/wiki/$1', - ecxei: w + 'ikso.net/cgi-bin/wiki.pl?$1', - elibre: 'enciclopedia.us.es/index.php/$1', - emacswiki: w + 'emacswiki.org/emacs?$1', - encyc: 'encyc.org/wiki/$1', - energiewiki: w + 'netzwerk-energieberater.de/wiki/index.php/$1', - englyphwiki: 'en.glyphwiki.org/wiki/$1', - enkol: 'enkol.pl/$1', - eokulturcentro: 'esperanto.toulouse.free.fr/nova/wikini/wakka.php?wiki=$1', - esolang: 'esolangs.org/wiki/$1', - etherpad: 'etherpad.wikimedia.org/$1', - ethnologue: w + 'ethnologue.com/language/$1', - ethnologuefamily: w + 'ethnologue.com/show_family.asp?subid=$1', - evowiki: 'wiki.cotch.net/index.php/$1', - exotica: w + 'exotica.org.uk/wiki/$1', - fanimutationwiki: 'wiki.animutationportal.com/index.php/$1', - fedora: 'fedoraproject.org/wiki/$1', - finalfantasy: 'finalfantasy.wikia.com/wiki/$1', - finnix: w + 'finnix.org/$1', - flickruser: w + 'flickr.com/people/$1', - flickrphoto: w + 'flickr.com/photo.gne?id=$1', - floralwiki: w + 'floralwiki.co.uk/wiki/$1', - foldoc: 'foldoc.org/$1', - foundation: 'foundation' + wm, - foundationsite: 'wikimediafoundation.org/$1', - foxwiki: 'fox.wikis.com/wc.dll?Wiki~$1', - freebio: 'freebiology.org/wiki/$1', - freebsdman: w + 'FreeBSD.org/cgi/man.cgi?apropos=1&query=$1', - freeculturewiki: 'wiki.freeculture.org/index.php/$1', - freedomdefined: 'freedomdefined.org/$1', - freefeel: 'freefeel.org/wiki/$1', - freekiwiki: 'wiki.freegeek.org/index.php/$1', - // freenode: 'irc://irc.freenode.net/$1', - freesoft: 'directory.fsf.org/wiki/$1', - ganfyd: 'ganfyd.org/index.php?title=$1', - gardenology: w + 'gardenology.org/wiki/$1', - gausswiki: 'gauss.ffii.org/$1', - gentoo: 'wiki.gentoo.org/wiki/$1', - genwiki: 'wiki.genealogy.net/index.php/$1', - gerrit: 'gerrit.wikimedia.org/r/$1', - git: 'gerrit.wikimedia.org/g/$1', - google: w + 'google.com/search?q=$1', - googledefine: w + 'google.com/search?q=define:$1', - googlegroups: 'groups.google.com/groups?q=$1', - guildwarswiki: 'wiki.guildwars.com/wiki/$1', - guildwiki: 'guildwars.wikia.com/wiki/$1', - guc: 'tools.wmflabs.org/guc/?user=$1', - gucprefix: 'tools.wmflabs.org/guc/?isPrefixPattern=1&src=rc&user=$1', - gutenberg: w + 'gutenberg.org/etext/$1', - gutenbergwiki: w + 'gutenberg.org/wiki/$1', - hackerspaces: 'hackerspaces.org/wiki/$1', - h2wiki: 'halowiki.net/p/$1', - hammondwiki: w + 'dairiki.org/HammondWiki/index.php3?$1', - hdl: 'hdl.handle.net/$1', - heraldik: 'heraldik-wiki.de/wiki/$1', - heroeswiki: 'heroeswiki.com/$1', - horizonlabs: 'horizon.wikimedia.org/$1', - hrwiki: w + 'hrwiki.org/index.php/$1', - hrfwiki: 'fanstuff.hrwiki.org/index.php/$1', - hupwiki: 'wiki.hup.hu/index.php/$1', - iarchive: 'archive.org/details/$1', - imdbname: w + 'imdb.com/name/nm$1/', - imdbtitle: w + 'imdb.com/title/tt$1/', - imdbcompany: w + 'imdb.com/company/co$1/', - imdbcharacter: w + 'imdb.com/character/ch$1/', - incubator: 'incubator' + wm, - infosecpedia: 'infosecpedia.org/wiki/$1', - infosphere: 'theinfosphere.org/$1', - // irc: 'irc://irc.freenode.net/$1', - // ircs: 'ircs://irc.freenode.net/$1', - // ircrc: 'irc://irc.wikimedia.org/$1', - // rcirc: 'irc://irc.wikimedia.org/$1', - 'iso639-3': 'iso639-3.sil.org/code/$1', - issn: w + 'worldcat.org/issn/$1', - iuridictum: 'iuridictum.pecina.cz/w/$1', - jaglyphwiki: 'glyphwiki.org/wiki/$1', - jefo: 'esperanto-jeunes.org/wiki/$1', - jerseydatabase: 'jerseydatabase.com/wiki.php?id=$1', - jira: 'jira.toolserver.org/browse/$1', - jspwiki: w + 'ecyrd.com/JSPWiki/Wiki.jsp?page=$1', - jstor: w + 'jstor.org/journals/$1', - kamelo: 'kamelopedia.mormo.org/index.php/$1', - karlsruhe: 'ka.stadtwiki.net/$1', - kinowiki: 'kino.skripov.com/index.php/$1', - komicawiki: 'wiki.komica.org/?$1', - kontuwiki: 'kontu.wiki/$1', - wikitech: 'wikitech' + wm, - libreplanet: 'libreplanet.org/wiki/$1', - linguistlist: 'linguistlist.org/forms/langs/LLDescription.cfm?code=$1', - linuxwiki: w + 'linuxwiki.de/$1', - linuxwikide: w + 'linuxwiki.de/$1', - liswiki: 'liswiki.org/wiki/$1', - literateprograms: 'en.literateprograms.org/$1', - livepedia: w + 'livepedia.gr/index.php?title=$1', - localwiki: 'localwiki.org/$1', - lojban: 'mw.lojban.org/papri/$1', - lostpedia: 'lostpedia.wikia.com/wiki/$1', - lqwiki: 'wiki.linuxquestions.org/wiki/$1', - luxo: 'tools.wmflabs.org/guc/?user=$1', - mail: 'lists.wikimedia.org/mailman/listinfo/$1', - mailarchive: 'lists.wikimedia.org/pipermail/$1', - mariowiki: w + 'mariowiki.com/$1', - marveldatabase: w + 'marveldatabase.com/wiki/index.php/$1', - meatball: 'meatballwiki.org/wiki/$1', - mw: w + 'mediawiki.org/wiki/$1', - mediazilla: 'bugzilla.wikimedia.org/$1', - memoryalpha: 'memory-alpha.fandom.com/wiki/$1', - metawiki: 'meta' + wm, - metawikimedia: 'meta' + wm, - metawikipedia: 'meta' + wm, - mineralienatlas: w + 'mineralienatlas.de/lexikon/index.php/$1', - moinmoin: 'moinmo.in/$1', - monstropedia: w + 'monstropedia.org/?title=$1', - mosapedia: 'mosapedia.de/wiki/index.php/$1', - mozcom: 'mozilla.wikia.com/wiki/$1', - mozillawiki: 'wiki.mozilla.org/$1', - mozillazinekb: 'kb.mozillazine.org/$1', - musicbrainz: 'musicbrainz.org/doc/$1', - mediawikiwiki: w + 'mediawiki.org/wiki/$1', - mwod: w + 'merriam-webster.com/dictionary/$1', - mwot: w + 'merriam-webster.com/thesaurus/$1', - nkcells: w + 'nkcells.info/index.php?title=$1', - nara: 'catalog.archives.gov/id/$1', - nosmoke: 'no-smok.net/nsmk/$1', - nost: 'nostalgia.' + wp, - nostalgia: 'nostalgia.' + wp, - oeis: 'oeis.org/$1', - oldwikisource: 'wikisource.org/wiki/$1', - olpc: 'wiki.laptop.org/go/$1', - omegawiki: w + 'omegawiki.org/Expression:$1', - onelook: w + 'onelook.com/?ls=b&w=$1', - openlibrary: 'openlibrary.org/$1', - openstreetmap: 'wiki.openstreetmap.org/wiki/$1', - openwetware: 'openwetware.org/wiki/$1', - opera7wiki: 'operawiki.info/$1', - organicdesign: w + 'organicdesign.co.nz/$1', - orthodoxwiki: 'orthodoxwiki.org/$1', - osmwiki: 'wiki.openstreetmap.org/wiki/$1', - otrs: 'ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketID=$1', - otrswiki: 'otrs-wiki' + wm, - ourmedia: w + 'socialtext.net/ourmedia/index.cgi?$1', - outreach: 'outreach' + wm, - outreachwiki: 'outreach' + wm, - owasp: w + 'owasp.org/index.php/$1', - panawiki: 'wiki.alairelibre.net/index.php?title=$1', - patwiki: 'gauss.ffii.org/$1', - personaltelco: 'personaltelco.net/wiki/$1', - petscan: 'petscan.wmflabs.org/?psid=$1', - phab: 'phabricator.wikimedia.org/$1', - phabricator: 'phabricator.wikimedia.org/$1', - phwiki: w + 'pocketheaven.com/ph/wiki/index.php?title=$1', - phpwiki: 'phpwiki.sourceforge.net/phpwiki/index.php?$1', - planetmath: 'planetmath.org/node/$1', - pmeg: w + 'bertilow.com/pmeg/$1', - pmid: w + 'ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract', - pokewiki: 'pokewiki.de/$1', - pokéwiki: 'pokewiki.de/$1', - policy: 'policy.wikimedia.org/$1', - proofwiki: w + 'proofwiki.org/wiki/$1', - pyrev: w + 'mediawiki.org/wiki/Special:Code/pywikipedia/$1', - pythoninfo: 'wiki.python.org/moin/$1', - pythonwiki: w + 'pythonwiki.de/$1', - pywiki: 'c2.com/cgi/wiki?$1', - psycle: 'psycle.sourceforge.net/wiki/$1', - quality: 'quality' + wm, - quarry: 'quarry.wmflabs.org/$1', - regiowiki: 'regiowiki.at/wiki/$1', - rev: w + 'mediawiki.org/wiki/Special:Code/MediaWiki/$1', - revo: 'purl.org/NET/voko/revo/art/$1.html', - rfc: 'tools.ietf.org/html/rfc$1', - rheinneckar: 'rhein-neckar-wiki.de/$1', - robowiki: 'robowiki.net/?$1', - rodovid: 'en.rodovid.org/wk/$1', - reuterswiki: 'glossary.reuters.com/index.php/$1', - rowiki: 'wiki.rennkuckuck.de/index.php/$1', - rt: 'rt.wikimedia.org/Ticket/Display.html?id=$1', - // rtfm: 'ftp://rtfm.mit.edu/pub/faqs/$1', - s23wiki: 's23.org/wiki/$1', - scholar: 'scholar.google.com/scholar?q=$1', - schoolswp: 'schools-' + wp, - scores: 'imslp.org/wiki/$1', - scoutwiki: 'en.scoutwiki.org/$1', - scramble: w + 'scramble.nl/wiki/index.php?title=$1', - seapig: w + 'seapig.org/$1', - seattlewiki: 'seattle.wikia.com/wiki/$1', - slwiki: 'wiki.secondlife.com/wiki/$1', - 'semantic-mw': w + 'semantic-mediawiki.org/wiki/$1', - senseislibrary: 'senseis.xmp.net/?$1', - sharemap: 'sharemap.org/$1', - silcode: w + 'sil.org/iso639-3/documentation.asp?id=$1', - slashdot: 'slashdot.org/article.pl?sid=$1', - sourceforge: 'sourceforge.net/$1', - spcom: 'spcom' + wm, - species: 'species' + wm, - squeak: 'wiki.squeak.org/squeak/$1', - stats: 'stats.wikimedia.org/$1', - stewardry: 'tools.wmflabs.org/meta/stewardry/?wiki=$1', - strategy: 'strategy' + wm, - strategywiki: 'strategywiki.org/wiki/$1', - sulutil: 'meta.wikimedia.org/wiki/Special:CentralAuth/$1', - swtrain: 'train.spottingworld.com/$1', - svn: 'svn.wikimedia.org/viewvc/mediawiki/$1?view=log', - swinbrain: 'swinbrain.ict.swin.edu.au/wiki/$1', - tabwiki: w + 'tabwiki.com/index.php/$1', - tclerswiki: 'wiki.tcl.tk/$1', - technorati: w + 'technorati.com/search/$1', - tenwiki: 'ten.' + wp, - testwiki: 'test.' + wp, - testwikidata: 'test.wikidata.org/wiki/$1', - test2wiki: 'test2.' + wp, - tfwiki: 'tfwiki.net/wiki/$1', - thelemapedia: w + 'thelemapedia.org/index.php/$1', - theopedia: w + 'theopedia.com/$1', - thinkwiki: w + 'thinkwiki.org/wiki/$1', - ticket: 'ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketNumber=$1', - tmbw: 'tmbw.net/wiki/$1', - tmnet: w + 'technomanifestos.net/?$1', - tmwiki: w + 'EasyTopicMaps.com/?page=$1', - toolforge: 'tools.wmflabs.org/$1', - toollabs: 'tools.wmflabs.org/$1', - tools: 'toolserver.org/$1', - tswiki: w + 'mediawiki.org/wiki/Toolserver:$1', - translatewiki: 'translatewiki.net/wiki/$1', - tviv: 'tviv.org/wiki/$1', - tvtropes: w + 'tvtropes.org/pmwiki/pmwiki.php/Main/$1', - twiki: 'twiki.org/cgi-bin/view/$1', - tyvawiki: w + 'tyvawiki.org/wiki/$1', - umap: 'umap.openstreetmap.fr/$1', - uncyclopedia: 'en.uncyclopedia.co/wiki/$1', - unihan: w + 'unicode.org/cgi-bin/GetUnihanData.pl?codepoint=$1', - unreal: 'wiki.beyondunreal.com/wiki/$1', - urbandict: w + 'urbandictionary.com/define.php?term=$1', - usej: w + 'tejo.org/usej/$1', - usemod: w + 'usemod.com/cgi-bin/wiki.pl?$1', - usability: 'usability' + wm, - utrs: 'utrs.wmflabs.org/appeal.php?id=$1', - vikidia: 'fr.vikidia.org/wiki/$1', - vlos: 'tusach.thuvienkhoahoc.com/wiki/$1', - vkol: 'kol.coldfront.net/thekolwiki/index.php/$1', - voipinfo: w + 'voip-info.org/wiki/view/$1', - votewiki: 'vote' + wm, - werelate: w + 'werelate.org/wiki/$1', - wg: 'wg-en.' + wp, - wikia: w + 'wikia.com/wiki/w:c:$1', - wikiasite: w + 'wikia.com/wiki/w:c:$1', - wikiapiary: 'wikiapiary.com/wiki/$1', - wikibooks: 'en.wikibooks.org/wiki/$1', - wikichristian: w + 'wikichristian.org/index.php?title=$1', - wikicities: w + 'wikia.com/wiki/w:$1', - wikicity: w + 'wikia.com/wiki/w:c:$1', - wikiconference: 'wikiconference.org/wiki/$1', - wikidata: w + 'wikidata.org/wiki/$1', - wikif1: w + 'wikif1.org/$1', - wikifur: 'en.wikifur.com/wiki/$1', - wikihow: w + 'wikihow.com/$1', - wikiindex: 'wikiindex.org/$1', - wikilemon: 'wiki.illemonati.com/$1', - wikilivres: 'wikilivres.org/wiki/$1', - wikilivresru: 'wikilivres.ru/$1', - 'wikimac-de': 'apfelwiki.de/wiki/Main/$1', - wikimedia: 'foundation' + wm, - wikinews: 'en.wikinews.org/wiki/$1', - wikinfo: 'wikinfo.org/w/index.php/$1', - wikinvest: 'meta.wikimedia.org/wiki/Interwiki_map/discontinued#Wikinvest', - wikiotics: 'wikiotics.org/$1', - wikipapers: 'wikipapers.referata.com/wiki/$1', - wikipedia: 'en.' + wp, - wikipediawikipedia: 'en.wikipedia.org/wiki/Wikipedia:$1', - wikiquote: 'en.wikiquote.org/wiki/$1', - wikisophia: 'wikisophia.org/index.php?title=$1', - wikisource: 'en.wikisource.org/wiki/$1', - wikispecies: 'species' + wm, - wikispot: 'wikispot.org/?action=gotowikipage&v=$1', - wikiskripta: w + 'wikiskripta.eu/index.php/$1', - labsconsole: 'wikitech' + wm, - wikiti: 'wikiti.denglend.net/index.php?title=$1', - wikiversity: 'en.wikiversity.org/wiki/$1', - wikivoyage: 'en.wikivoyage.org/wiki/$1', - betawikiversity: 'beta.wikiversity.org/wiki/$1', - wikiwikiweb: 'c2.com/cgi/wiki?$1', - wiktionary: 'en.wiktionary.org/wiki/$1', - wipipedia: 'wipipedia.org/index.php/$1', - wlug: w + 'wlug.org.nz/$1', - wmam: 'am' + wm, - wmar: w + 'wikimedia.org.ar/wiki/$1', - wmat: 'mitglieder.wikimedia.at/$1', - wmau: 'wikimedia.org.au/wiki/$1', - wmbd: 'bd' + wm, - wmbe: 'be' + wm, - wmbr: 'br' + wm, - wmca: 'ca' + wm, - wmch: w + 'wikimedia.ch/$1', - wmcl: w + 'wikimediachile.cl/index.php?title=$1', - wmcn: 'cn' + wm, - wmco: 'co' + wm, - wmcz: w + 'wikimedia.cz/web/$1', - wmdc: 'wikimediadc.org/wiki/$1', - securewikidc: 'secure.wikidc.org/$1', - wmde: 'wikimedia.de/wiki/$1', - wmdk: 'dk' + wm, - wmee: 'ee' + wm, - wmec: 'ec' + wm, - wmes: w + 'wikimedia.es/wiki/$1', - wmet: 'ee' + wm, - wmfdashboard: 'outreachdashboard.wmflabs.org/$1', - wmfi: 'fi' + wm, - wmfr: 'wikimedia.fr/$1', - wmge: 'ge' + wm, - wmhi: 'hi' + wm, - wmhk: 'meta.wikimedia.org/wiki/Wikimedia_Hong_Kong', - wmhu: 'wikimedia.hu/wiki/$1', - wmid: 'id' + wm, - wmil: w + 'wikimedia.org.il/$1', - wmin: 'wiki.wikimedia.in/$1', - wmit: 'wiki.wikimedia.it/wiki/$1', - wmke: 'meta.wikimedia.org/wiki/Wikimedia_Kenya', - wmmk: 'mk' + wm, - wmmx: 'mx' + wm, - wmnl: 'nl' + wm, - wmnyc: 'nyc' + wm, - wmno: 'no' + wm, - 'wmpa-us': 'pa-us' + wm, - wmph: 'meta.wikimedia.org/wiki/Wikimedia_Philippines', - wmpl: 'pl' + wm, - wmpt: 'pt' + wm, - wmpunjabi: 'punjabi' + wm, - wmromd: 'romd' + wm, - wmrs: 'rs' + wm, - wmru: 'ru' + wm, - wmse: 'se' + wm, - wmsk: 'wikimedia.sk/$1', - wmtr: 'tr' + wm, - wmtw: 'wikimedia.tw/wiki/index.php5/$1', - wmua: 'ua' + wm, - wmuk: 'wikimedia.org.uk/wiki/$1', - wmve: 'wikimedia.org.ve/wiki/$1', - wmza: 'wikimedia.org.za/wiki/$1', - wm2005: 'wikimania2005' + wm, - wm2006: 'wikimania2006' + wm, - wm2007: 'wikimania2007' + wm, - wm2008: 'wikimania2008' + wm, - wm2009: 'wikimania2009' + wm, - wm2010: 'wikimania2010' + wm, - wm2011: 'wikimania2011' + wm, - wm2012: 'wikimania2012' + wm, - wm2013: 'wikimania2013' + wm, - wm2014: 'wikimania2014' + wm, - wm2015: 'wikimania2015' + wm, - wm2016: 'wikimania2016' + wm, - wm2017: 'wikimania2017' + wm, - wm2018: 'wikimania2018' + wm, - wmania: 'wikimania' + wm, - wikimania: 'wikimania' + wm, - wmteam: 'wikimaniateam' + wm, - wmf: 'foundation' + wm, - wmfblog: 'blog.wikimedia.org/$1', - wmdeblog: 'blog.wikimedia.de/$1', - wookieepedia: 'starwars.wikia.com/wiki/$1', - wowwiki: w + 'wowwiki.com/$1', - wqy: 'wqy.sourceforge.net/cgi-bin/index.cgi?$1', - wurmpedia: 'wurmpedia.com/index.php/$1', - viaf: 'viaf.org/viaf/$1', - zrhwiki: w + 'zrhwiki.ch/wiki/$1', - zum: 'wiki.zum.de/$1', - zwiki: w + 'zwiki.org/$1', - m: 'meta' + wm, - meta: 'meta' + wm, - sep11: 'sep11.' + wp, - d: w + 'wikidata.org/wiki/$1', - minnan: 'zh-min-nan.' + wp, - nb: 'no.' + wp, - 'zh-cfr': 'zh-min-nan.' + wp, - 'zh-cn': 'zh.' + wp, - 'zh-tw': 'zh.' + wp, - nan: 'zh-min-nan.' + wp, - vro: 'fiu-vro.' + wp, - cmn: 'zh.' + wp, - lzh: 'zh-classical.' + wp, - rup: 'roa-rup.' + wp, - gsw: 'als.' + wp, - 'be-tarask': 'be-x-old.' + wp, - sgs: 'bat-smg.' + wp, - egl: 'eml.' + wp, - w: 'en.' + wp, - wikt: 'en.wiktionary.org/wiki/$1', - q: 'en.wikiquote.org/wiki/$1', - b: 'en.wikibooks.org/wiki/$1', - n: 'en.wikinews.org/wiki/$1', - s: 'en.wikisource.org/wiki/$1', - chapter: 'en' + wm, - v: 'en.wikiversity.org/wiki/$1', - voy: 'en.wikivoyage.org/wiki/$1' - }; - interwiki$1.acronym; - interwiki$1.advisory; - interwiki$1.advogato; - interwiki$1.aew; - interwiki$1.appropedia; - interwiki$1.aquariumwiki; - interwiki$1.arborwiki; - interwiki$1.arxiv; - interwiki$1.atmwiki; - interwiki$1.baden; - interwiki$1.battlestarwiki; - interwiki$1.bcnbio; - interwiki$1.beacha; - interwiki$1.betawiki; - interwiki$1.bibcode; - interwiki$1.bibliowiki; - interwiki$1.bluwiki; - interwiki$1.blw; - interwiki$1.botwiki; - interwiki$1.boxrec; - interwiki$1.brickwiki; - interwiki$1.bugzilla; - interwiki$1.bulba; - interwiki$1.c; - interwiki$1.c2; - interwiki$1.c2find; - interwiki$1.cache; - interwiki$1.cellwiki; - interwiki$1.centralwikia; - interwiki$1.chej; - interwiki$1.choralwiki; - interwiki$1.citizendium; - interwiki$1.ckwiss; - interwiki$1.comixpedia; - interwiki$1.commons; - interwiki$1.communityscheme; - interwiki$1.communitywiki; - interwiki$1.comune; - interwiki$1.creativecommons; - interwiki$1.creativecommonswiki; - interwiki$1.cxej; - interwiki$1.dcc; - interwiki$1.dcdatabase; - interwiki$1.dcma; - interwiki$1.debian; - interwiki$1.delicious; - interwiki$1.devmo; - interwiki$1.dictionary; - interwiki$1.dict; - interwiki$1.disinfopedia; - interwiki$1.distributedproofreaders; - interwiki$1.distributedproofreadersca; - interwiki$1.dmoz; - interwiki$1.dmozs; - interwiki$1.doi; - interwiki$1.donate; - interwiki$1.doom_wiki; - interwiki$1.download; - interwiki$1.dbdump; - interwiki$1.dpd; - interwiki$1.drae; - interwiki$1.dreamhost; - interwiki$1.drumcorpswiki; - interwiki$1.dwjwiki; - interwiki$1.ecoreality; - interwiki$1.ecxei; - interwiki$1.elibre; - interwiki$1.emacswiki; - interwiki$1.encyc; - interwiki$1.energiewiki; - interwiki$1.englyphwiki; - interwiki$1.enkol; - interwiki$1.eokulturcentro; - interwiki$1.esolang; - interwiki$1.etherpad; - interwiki$1.ethnologue; - interwiki$1.ethnologuefamily; - interwiki$1.evowiki; - interwiki$1.exotica; - interwiki$1.fanimutationwiki; - interwiki$1.fedora; - interwiki$1.finalfantasy; - interwiki$1.finnix; - interwiki$1.flickruser; - interwiki$1.flickrphoto; - interwiki$1.floralwiki; - interwiki$1.foldoc; - interwiki$1.foundation; - interwiki$1.foundationsite; - interwiki$1.foxwiki; - interwiki$1.freebio; - interwiki$1.freebsdman; - interwiki$1.freeculturewiki; - interwiki$1.freedomdefined; - interwiki$1.freefeel; - interwiki$1.freekiwiki; - interwiki$1.freesoft; - interwiki$1.ganfyd; - interwiki$1.gardenology; - interwiki$1.gausswiki; - interwiki$1.gentoo; - interwiki$1.genwiki; - interwiki$1.gerrit; - interwiki$1.git; - interwiki$1.google; - interwiki$1.googledefine; - interwiki$1.googlegroups; - interwiki$1.guildwarswiki; - interwiki$1.guildwiki; - interwiki$1.guc; - interwiki$1.gucprefix; - interwiki$1.gutenberg; - interwiki$1.gutenbergwiki; - interwiki$1.hackerspaces; - interwiki$1.h2wiki; - interwiki$1.hammondwiki; - interwiki$1.hdl; - interwiki$1.heraldik; - interwiki$1.heroeswiki; - interwiki$1.horizonlabs; - interwiki$1.hrwiki; - interwiki$1.hrfwiki; - interwiki$1.hupwiki; - interwiki$1.iarchive; - interwiki$1.imdbname; - interwiki$1.imdbtitle; - interwiki$1.imdbcompany; - interwiki$1.imdbcharacter; - interwiki$1.incubator; - interwiki$1.infosecpedia; - interwiki$1.infosphere; - interwiki$1.issn; - interwiki$1.iuridictum; - interwiki$1.jaglyphwiki; - interwiki$1.jefo; - interwiki$1.jerseydatabase; - interwiki$1.jira; - interwiki$1.jspwiki; - interwiki$1.jstor; - interwiki$1.kamelo; - interwiki$1.karlsruhe; - interwiki$1.kinowiki; - interwiki$1.komicawiki; - interwiki$1.kontuwiki; - interwiki$1.wikitech; - interwiki$1.libreplanet; - interwiki$1.linguistlist; - interwiki$1.linuxwiki; - interwiki$1.linuxwikide; - interwiki$1.liswiki; - interwiki$1.literateprograms; - interwiki$1.livepedia; - interwiki$1.localwiki; - interwiki$1.lojban; - interwiki$1.lostpedia; - interwiki$1.lqwiki; - interwiki$1.luxo; - interwiki$1.mail; - interwiki$1.mailarchive; - interwiki$1.mariowiki; - interwiki$1.marveldatabase; - interwiki$1.meatball; - interwiki$1.mw; - interwiki$1.mediazilla; - interwiki$1.memoryalpha; - interwiki$1.metawiki; - interwiki$1.metawikimedia; - interwiki$1.metawikipedia; - interwiki$1.mineralienatlas; - interwiki$1.moinmoin; - interwiki$1.monstropedia; - interwiki$1.mosapedia; - interwiki$1.mozcom; - interwiki$1.mozillawiki; - interwiki$1.mozillazinekb; - interwiki$1.musicbrainz; - interwiki$1.mediawikiwiki; - interwiki$1.mwod; - interwiki$1.mwot; - interwiki$1.nkcells; - interwiki$1.nara; - interwiki$1.nosmoke; - interwiki$1.nost; - interwiki$1.nostalgia; - interwiki$1.oeis; - interwiki$1.oldwikisource; - interwiki$1.olpc; - interwiki$1.omegawiki; - interwiki$1.onelook; - interwiki$1.openlibrary; - interwiki$1.openstreetmap; - interwiki$1.openwetware; - interwiki$1.opera7wiki; - interwiki$1.organicdesign; - interwiki$1.orthodoxwiki; - interwiki$1.osmwiki; - interwiki$1.otrs; - interwiki$1.otrswiki; - interwiki$1.ourmedia; - interwiki$1.outreach; - interwiki$1.outreachwiki; - interwiki$1.owasp; - interwiki$1.panawiki; - interwiki$1.patwiki; - interwiki$1.personaltelco; - interwiki$1.petscan; - interwiki$1.phab; - interwiki$1.phabricator; - interwiki$1.phwiki; - interwiki$1.phpwiki; - interwiki$1.planetmath; - interwiki$1.pmeg; - interwiki$1.pmid; - interwiki$1.pokewiki; - interwiki$1.policy; - interwiki$1.proofwiki; - interwiki$1.pyrev; - interwiki$1.pythoninfo; - interwiki$1.pythonwiki; - interwiki$1.pywiki; - interwiki$1.psycle; - interwiki$1.quality; - interwiki$1.quarry; - interwiki$1.regiowiki; - interwiki$1.rev; - interwiki$1.revo; - interwiki$1.rfc; - interwiki$1.rheinneckar; - interwiki$1.robowiki; - interwiki$1.rodovid; - interwiki$1.reuterswiki; - interwiki$1.rowiki; - interwiki$1.rt; - interwiki$1.s23wiki; - interwiki$1.scholar; - interwiki$1.schoolswp; - interwiki$1.scores; - interwiki$1.scoutwiki; - interwiki$1.scramble; - interwiki$1.seapig; - interwiki$1.seattlewiki; - interwiki$1.slwiki; - interwiki$1.senseislibrary; - interwiki$1.sharemap; - interwiki$1.silcode; - interwiki$1.slashdot; - interwiki$1.sourceforge; - interwiki$1.spcom; - interwiki$1.species; - interwiki$1.squeak; - interwiki$1.stats; - interwiki$1.stewardry; - interwiki$1.strategy; - interwiki$1.strategywiki; - interwiki$1.sulutil; - interwiki$1.swtrain; - interwiki$1.svn; - interwiki$1.swinbrain; - interwiki$1.tabwiki; - interwiki$1.tclerswiki; - interwiki$1.technorati; - interwiki$1.tenwiki; - interwiki$1.testwiki; - interwiki$1.testwikidata; - interwiki$1.test2wiki; - interwiki$1.tfwiki; - interwiki$1.thelemapedia; - interwiki$1.theopedia; - interwiki$1.thinkwiki; - interwiki$1.ticket; - interwiki$1.tmbw; - interwiki$1.tmnet; - interwiki$1.tmwiki; - interwiki$1.toolforge; - interwiki$1.toollabs; - interwiki$1.tools; - interwiki$1.tswiki; - interwiki$1.translatewiki; - interwiki$1.tviv; - interwiki$1.tvtropes; - interwiki$1.twiki; - interwiki$1.tyvawiki; - interwiki$1.umap; - interwiki$1.uncyclopedia; - interwiki$1.unihan; - interwiki$1.unreal; - interwiki$1.urbandict; - interwiki$1.usej; - interwiki$1.usemod; - interwiki$1.usability; - interwiki$1.utrs; - interwiki$1.vikidia; - interwiki$1.vlos; - interwiki$1.vkol; - interwiki$1.voipinfo; - interwiki$1.votewiki; - interwiki$1.werelate; - interwiki$1.wg; - interwiki$1.wikia; - interwiki$1.wikiasite; - interwiki$1.wikiapiary; - interwiki$1.wikibooks; - interwiki$1.wikichristian; - interwiki$1.wikicities; - interwiki$1.wikicity; - interwiki$1.wikiconference; - interwiki$1.wikidata; - interwiki$1.wikif1; - interwiki$1.wikifur; - interwiki$1.wikihow; - interwiki$1.wikiindex; - interwiki$1.wikilemon; - interwiki$1.wikilivres; - interwiki$1.wikilivresru; - interwiki$1.wikimedia; - interwiki$1.wikinews; - interwiki$1.wikinfo; - interwiki$1.wikinvest; - interwiki$1.wikiotics; - interwiki$1.wikipapers; - interwiki$1.wikipedia; - interwiki$1.wikipediawikipedia; - interwiki$1.wikiquote; - interwiki$1.wikisophia; - interwiki$1.wikisource; - interwiki$1.wikispecies; - interwiki$1.wikispot; - interwiki$1.wikiskripta; - interwiki$1.labsconsole; - interwiki$1.wikiti; - interwiki$1.wikiversity; - interwiki$1.wikivoyage; - interwiki$1.betawikiversity; - interwiki$1.wikiwikiweb; - interwiki$1.wiktionary; - interwiki$1.wipipedia; - interwiki$1.wlug; - interwiki$1.wmam; - interwiki$1.wmar; - interwiki$1.wmat; - interwiki$1.wmau; - interwiki$1.wmbd; - interwiki$1.wmbe; - interwiki$1.wmbr; - interwiki$1.wmca; - interwiki$1.wmch; - interwiki$1.wmcl; - interwiki$1.wmcn; - interwiki$1.wmco; - interwiki$1.wmcz; - interwiki$1.wmdc; - interwiki$1.securewikidc; - interwiki$1.wmde; - interwiki$1.wmdk; - interwiki$1.wmee; - interwiki$1.wmec; - interwiki$1.wmes; - interwiki$1.wmet; - interwiki$1.wmfdashboard; - interwiki$1.wmfi; - interwiki$1.wmfr; - interwiki$1.wmge; - interwiki$1.wmhi; - interwiki$1.wmhk; - interwiki$1.wmhu; - interwiki$1.wmid; - interwiki$1.wmil; - interwiki$1.wmin; - interwiki$1.wmit; - interwiki$1.wmke; - interwiki$1.wmmk; - interwiki$1.wmmx; - interwiki$1.wmnl; - interwiki$1.wmnyc; - interwiki$1.wmno; - interwiki$1.wmph; - interwiki$1.wmpl; - interwiki$1.wmpt; - interwiki$1.wmpunjabi; - interwiki$1.wmromd; - interwiki$1.wmrs; - interwiki$1.wmru; - interwiki$1.wmse; - interwiki$1.wmsk; - interwiki$1.wmtr; - interwiki$1.wmtw; - interwiki$1.wmua; - interwiki$1.wmuk; - interwiki$1.wmve; - interwiki$1.wmza; - interwiki$1.wm2005; - interwiki$1.wm2006; - interwiki$1.wm2007; - interwiki$1.wm2008; - interwiki$1.wm2009; - interwiki$1.wm2010; - interwiki$1.wm2011; - interwiki$1.wm2012; - interwiki$1.wm2013; - interwiki$1.wm2014; - interwiki$1.wm2015; - interwiki$1.wm2016; - interwiki$1.wm2017; - interwiki$1.wm2018; - interwiki$1.wmania; - interwiki$1.wikimania; - interwiki$1.wmteam; - interwiki$1.wmf; - interwiki$1.wmfblog; - interwiki$1.wmdeblog; - interwiki$1.wookieepedia; - interwiki$1.wowwiki; - interwiki$1.wqy; - interwiki$1.wurmpedia; - interwiki$1.viaf; - interwiki$1.zrhwiki; - interwiki$1.zum; - interwiki$1.zwiki; - interwiki$1.m; - interwiki$1.meta; - interwiki$1.sep11; - interwiki$1.d; - interwiki$1.minnan; - interwiki$1.nb; - interwiki$1.nan; - interwiki$1.vro; - interwiki$1.cmn; - interwiki$1.lzh; - interwiki$1.rup; - interwiki$1.gsw; - interwiki$1.sgs; - interwiki$1.egl; - interwiki$1.w; - interwiki$1.wikt; - interwiki$1.q; - interwiki$1.b; - interwiki$1.n; - interwiki$1.s; - interwiki$1.chapter; - interwiki$1.v; - interwiki$1.voy; - - var languages = languages$1; - - var wikis = interwiki$1; - - //so we have to whitelist allowable interwiki links - //add language prefixes too.. - - Object.keys(languages).forEach(k => { - wikis[k] = k + '.wikipedia.org/wiki/$1'; - }); //this is predictably very complicated. - // https://meta.wikimedia.org/wiki/Help:Interwiki_linking - - const parseInterwiki = function (obj) { - let str = obj.page || ''; - - if (str.indexOf(':') !== -1) { - let m = str.match(/^(.*):(.*)/); - - if (m === null) { - return obj; - } - - let site = m[1] || ''; - site = site.toLowerCase(); - - if (site.indexOf(':') !== -1) { - let [, wiki, lang] = site.match(/^:?(.*):(.*)/); //only allow interwikis to these specific places - - if (wikis.hasOwnProperty(wiki) && languages.hasOwnProperty(lang) === false) { - return obj; - } - - obj.wiki = { - wiki: wiki, - lang: lang - }; - } else { - if (wikis.hasOwnProperty(site) === false) { - return obj; - } - - obj.wiki = site; - } - - obj.page = m[2]; - } - - return obj; - }; - - var interwiki = parseInterwiki; - - var parse_interwiki = interwiki; - - const ignore_links = /^:?(category|catégorie|kategorie|categoría|categoria|categorie|kategoria|تصنيف|image|file|fichier|datei|media):/i; - const external_link = /\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]| ]{4,1500})([| ].*?)?\]/g; - const link_reg = /\[\[(.{0,160}?)\]\]([a-z]+)?/gi; //allow dangling suffixes - "[[flanders]]s" - - const external_links = function (links, str) { - str.replace(external_link, function (raw, protocol, link, text) { - text = text || ''; - links.push({ - type: 'external', - site: protocol + link, - text: text.trim(), - raw: raw - }); - return text; - }); - return links; - }; - - const internal_links = function (links, str) { - //regular links - str.replace(link_reg, function (raw, s, suffix) { - let txt = null; //make a copy of original + if (link.match(ignore_links)) { + return s; + } //kill off just these just-anchor links [[#history]] + // if (link.match(/^#/i)) { + // console.log(s) + // return s + // } + //remove anchors from end [[toronto#history]] - let link = s; - if (s.match(/\|/)) { - //replacement link [[link|text]] - s = s.replace(/\[\[(.{2,100}?)\]\](\w{0,10})/g, '$1$2'); //remove ['s and keep suffix + let obj = { + page: link, + raw: raw + }; + obj.page = obj.page.replace(/#(.*)/, (a, b) => { + obj.anchor = b; + return ''; + }); //grab any fr:Paris parts - link = s.replace(/(.{2,100})\|.{0,200}/, '$1'); //replaced links + obj = parse_interwiki(obj); - txt = s.replace(/.{2,100}?\|/, ''); //handle funky case of [[toronto|]] + if (obj.wiki) { + obj.type = 'interwiki'; + } - if (txt === null && link.match(/\|$/)) { - link = link.replace(/\|$/, ''); - txt = link; - } - } //kill off non-wikipedia namespaces + if (txt !== null && txt !== obj.page) { + obj.text = txt; + } //finally, support [[link]]'s apostrophe - if (link.match(ignore_links)) { - return s; - } //kill off just these just-anchor links [[#history]] - // if (link.match(/^#/i)) { - // console.log(s) - // return s - // } - //remove anchors from end [[toronto#history]] + if (suffix) { + obj.text = obj.text || obj.page; + obj.text += suffix.trim(); + } //titlecase it, if necessary - let obj = { - page: link, - raw: raw - }; - obj.page = obj.page.replace(/#(.*)/, (a, b) => { - obj.anchor = b; - return ''; - }); //grab any fr:Paris parts + if (obj.page && /^[A-Z]/.test(obj.page) === false) { + if (!obj.text) { + obj.text = obj.page; + } - obj = parse_interwiki(obj); + obj.page = obj.page; + } - if (obj.wiki) { - obj.type = 'interwiki'; - } + links.push(obj); + return s; + }); + return links; + }; //grab an array of internal links in the text - if (txt !== null && txt !== obj.page) { - obj.text = txt; - } //finally, support [[link]]'s apostrophe + const parse_links = function (str) { + let links = []; //first, parse external links - if (suffix) { - obj.text = obj.text || obj.page; - obj.text += suffix.trim(); - } //titlecase it, if necessary + links = external_links(links, str); //internal links + links = internal_links(links, str); - if (obj.page && /^[A-Z]/.test(obj.page) === false) { - if (!obj.text) { - obj.text = obj.page; - } + if (links.length === 0) { + return undefined; + } - obj.page = obj.page; - } + return links; + }; - links.push(obj); - return s; - }); - return links; - }; //grab an array of internal links in the text + var parse$m = parse_links; + const i18n$4 = i18n$6; + const parseLink = parse$m; //pulls target link out of redirect page - const parse_links = function (str) { - let links = []; //first, parse external links + const REDIRECT_REGEX = new RegExp('^[ \n\t]*?#(' + i18n$4.redirects.join('|') + ') *?(\\[\\[.{2,180}?\\]\\])', 'i'); - links = external_links(links, str); //internal links + const isRedirect = function (wiki) { + //too long to be a redirect? + if (!wiki || wiki.length > 500) { + return false; + } - links = internal_links(links, str); + return REDIRECT_REGEX.test(wiki); + }; - if (links.length === 0) { - return undefined; - } + const parse$l = function (wiki) { + let m = wiki.match(REDIRECT_REGEX); - return links; - }; + if (m && m[2]) { + let links = parseLink(m[2]) || []; + return links[0]; + } - var parse$8 = parse_links; + return {}; + }; - var parseLinks$1 = parse$8; + var redirects$1 = { + isRedirect: isRedirect, + parse: parse$l + }; - const REDIRECT_REGEX = new RegExp('^[ \n\t]*?#(' + i18n.redirects.join('|') + ') *?(\\[\\[.{2,180}?\\]\\])', 'i'); + //https://en.wikipedia.org/wiki/Help:HTML_in_wikitext + //these are things we throw-away + //these will mess-up if they're nested, but they're not usually. - const isRedirect = function (wiki) { - //too long to be a redirect? - if (!wiki || wiki.length > 500) { - return false; - } + const ignore$2 = ['table', 'code', 'score', 'data', 'categorytree', 'charinsert', 'hiero', 'imagemap', 'inputbox', 'nowiki', 'poem', 'references', 'source', 'syntaxhighlight', 'timeline']; + const openTag = "< ?(".concat(ignore$2.join('|'), ") ?[^>]{0,200}?>"); + const closeTag = "< ?/ ?(".concat(ignore$2.join('|'), ") ?>"); + const anyChar = '\\s\\S'; //including newline - return REDIRECT_REGEX.test(wiki); - }; + const noThanks = new RegExp("".concat(openTag, "[").concat(anyChar, "]+?").concat(closeTag), 'gi'); - const parse$7 = function (wiki) { - let m = wiki.match(REDIRECT_REGEX); + const kill_xml$1 = function (wiki) { + //( tags are parsed in Section class) - luckily, refs can't be recursive. + //types of html/xml that we want to trash completely. + wiki = wiki.replace(noThanks, ' '); //some xml-like fragments we can also kill - if (m && m[2]) { - let links = parseLinks$1(m[2]) || []; - return links[0]; - } + wiki = wiki.replace(/ ?< ?(span|div|table|data) [a-zA-Z0-9=%.\-#:;'" ]{2,100}\/? ?> ?/g, ' '); // + //only kill ref tags if they are selfclosing - return {}; - }; + wiki = wiki.replace(/ ?< ?(ref) [a-zA-Z0-9=" ]{2,100}\/ ?> ?/g, ' '); // + // convert these html tags to known formatting - var redirects$1 = { - isRedirect: isRedirect, - parse: parse$7 - }; + wiki = wiki.replace(/(.*?)<\/i>/g, "''$1''"); + wiki = wiki.replace(/(.*?)<\/b>/g, "'''$1'''"); // these are better-handled with templates - //okay, i know you're not supposed to regex html, but... - //https://en.wikipedia.org/wiki/Help:HTML_in_wikitext - //these are things we throw-away - //these will mess-up if they're nested, but they're not usually. - const ignore$2 = ['table', 'code', 'score', 'data', 'categorytree', 'charinsert', 'hiero', 'imagemap', 'inputbox', 'nowiki', 'poem', 'references', 'source', 'syntaxhighlight', 'timeline']; - const openTag = `< ?(${ignore$2.join('|')}) ?[^>]{0,200}?>`; - const closeTag = `< ?/ ?(${ignore$2.join('|')}) ?>`; - const anyChar = '\\s\\S'; //including newline + wiki = wiki.replace(/(.*?)<\/sub>/g, "{{sub|$1}}"); + wiki = wiki.replace(/(.*?)<\/sup>/g, "{{sup|$1}}"); //some formatting xml, we'll keep their insides though - const noThanks = new RegExp(`${openTag}[${anyChar}]+?${closeTag}`, 'gi'); + wiki = wiki.replace(/ ?<[ /]?(p|sub|sup|span|nowiki|div|table|br|tr|td|th|pre|pre2|hr)[ /]?> ?/g, ' '); //, - const kill_xml$1 = function (wiki) { - //( tags are parsed in Section class) - luckily, refs can't be recursive. - //types of html/xml that we want to trash completely. - wiki = wiki.replace(noThanks, ' '); //some xml-like fragments we can also kill + wiki = wiki.replace(/ ?<[ /]?(abbr|bdi|bdo|blockquote|cite|del|dfn|em|ins|kbd|mark|q|s|small)[ /]?> ?/g, ' '); //, - wiki = wiki.replace(/ ?< ?(span|div|table|data) [a-zA-Z0-9=%.\-#:;'" ]{2,100}\/? ?> ?/g, ' '); // - //only kill ref tags if they are selfclosing + wiki = wiki.replace(/ ?<[ /]?h[0-9][ /]?> ?/g, ' '); //

,

- wiki = wiki.replace(/ ?< ?(ref) [a-zA-Z0-9=" ]{2,100}\/ ?> ?/g, ' '); // - // convert these html tags to known formatting + wiki = wiki.replace(/ ?< ?br ?\/> ?/g, '\n'); //
- wiki = wiki.replace(/(.*?)<\/i>/g, `''$1''`); - wiki = wiki.replace(/(.*?)<\/b>/g, `'''$1'''`); // these are better-handled with templates + return wiki.trim(); + }; - wiki = wiki.replace(/(.*?)<\/sub>/g, `{{sub|$1}}`); - wiki = wiki.replace(/(.*?)<\/sup>/g, `{{sup|$1}}`); //some formatting xml, we'll keep their insides though + var kill_xml_1 = kill_xml$1; - wiki = wiki.replace(/ ?<[ /]?(p|sub|sup|span|nowiki|div|table|br|tr|td|th|pre|pre2|hr)[ /]?> ?/g, ' '); //, + const kill_xml = kill_xml_1; + /** + * removes unnecessary strings from the wikitext + * it is mostly-formatting stuff can be cleaned-up first, to make life easier + * + * @private + * @param {string} wiki the wikitext that needs processing + * @returns {string} the processed text + */ - wiki = wiki.replace(/ ?<[ /]?(abbr|bdi|bdo|blockquote|cite|del|dfn|em|ins|kbd|mark|q|s|small)[ /]?> ?/g, ' '); //, + function preProcess$1(wiki) { + //remove comments + wiki = wiki.replace(//g, ''); + wiki = wiki.replace(/__(NOTOC|NOEDITSECTION|FORCETOC|TOC)__/gi, ''); //signitures - wiki = wiki.replace(/ ?<[ /]?h[0-9][ /]?> ?/g, ' '); //

,

+ wiki = wiki.replace(/~{2,3}/g, ''); //windows newlines - wiki = wiki.replace(/ ?< ?br ?\/> ?/g, '\n'); //
+ wiki = wiki.replace(/\r/g, ''); //japanese periods - '。' - return wiki.trim(); - }; + wiki = wiki.replace(/\u3002/g, '. '); //horizontal rule - var kill_xml_1 = kill_xml$1; + wiki = wiki.replace(/----/g, ''); //formatting for templates-in-templates... - var kill_xml = kill_xml_1; + wiki = wiki.replace(/\{\{\}\}/g, ' – '); + wiki = wiki.replace(/\{\{\\\}\}/g, ' / '); //space - /** - * removes unnecessary strings from the wikitext - * it is mostly-formatting stuff can be cleaned-up first, to make life easier - * - * @private - * @param {string} wiki the wikitext that needs processing - * @returns {string} the processed text - */ + wiki = wiki.replace(/ /g, ' '); //give it the inglorious send-off it deserves.. - function preProcess$1(wiki) { - //remove comments - wiki = wiki.replace(//g, ''); - wiki = wiki.replace(/__(NOTOC|NOEDITSECTION|FORCETOC|TOC)__/gi, ''); //signitures + wiki = kill_xml(wiki); //({{template}},{{template}}) leaves empty parentheses - wiki = wiki.replace(/~{2,3}/g, ''); //windows newlines + wiki = wiki.replace(/\([,;: ]+\)/g, ''); //these templates just screw things up, too - wiki = wiki.replace(/\r/g, ''); //japanese periods - '。' + wiki = wiki.replace(/\{\{(baseball|basketball) (primary|secondary) (style|color).*?\}\}/i, ''); + return wiki; + } - wiki = wiki.replace(/\u3002/g, '. '); //horizontal rule + var preProcess_1 = preProcess$1; - wiki = wiki.replace(/----/g, ''); //formatting for templates-in-templates... + //mongo has some opinions about what characters are allowed as keys and ids. + //https://stackoverflow.com/questions/12397118/mongodb-dot-in-key-name/30254815#30254815 - wiki = wiki.replace(/\{\{\}\}/g, ' – '); - wiki = wiki.replace(/\{\{\\\}\}/g, ' / '); //space + const specialChar = /[\\.$]/; + /** + * this function encodes a string to make it mongodb compatible. + * https://stackoverflow.com/questions/12397118/mongodb-dot-in-key-name/30254815#30254815 + * + * @param {string} str + * @returns {string} the encoded string + */ - wiki = wiki.replace(/ /g, ' '); //give it the inglorious send-off it deserves.. + const encodeStr = function (str) { + if (typeof str !== 'string') { + str = ''; + } - wiki = kill_xml(wiki); //({{template}},{{template}}) leaves empty parentheses + str = str.replace(/\\/g, '\\\\'); + str = str.replace(/^\$/, '\\u0024'); + str = str.replace(/\./g, '\\u002e'); + return str; + }; - wiki = wiki.replace(/\([,;: ]+\)/g, ''); //these templates just screw things up, too + const encodeObj = function () { + let obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + let keys = Object.keys(obj); - wiki = wiki.replace(/\{\{(baseball|basketball) (primary|secondary) (style|color).*?\}\}/i, ''); - return wiki; - } + for (let i = 0; i < keys.length; i += 1) { + if (specialChar.test(keys[i]) === true) { + let str = encodeStr(keys[i]); - var preProcess_1 = preProcess$1; + if (str !== keys[i]) { + obj[str] = obj[keys[i]]; + delete obj[keys[i]]; + } + } + } - //dumpster-dive throws everything into mongodb - github.com/spencermountain/dumpster-dive - //mongo has some opinions about what characters are allowed as keys and ids. - //https://stackoverflow.com/questions/12397118/mongodb-dot-in-key-name/30254815#30254815 - const specialChar = /[\\.$]/; - /** - * this function encodes a string to make it mongodb compatible. - * https://stackoverflow.com/questions/12397118/mongodb-dot-in-key-name/30254815#30254815 - * - * @param {string} str - * @returns {string} the encoded string - */ + return obj; + }; - const encodeStr = function (str) { - if (typeof str !== 'string') { - str = ''; - } + var encode$4 = { + encodeObj: encodeObj + }; - str = str.replace(/\\/g, '\\\\'); - str = str.replace(/^\$/, '\\u0024'); - str = str.replace(/\./g, '\\u002e'); - return str; - }; + const setDefaults$7 = setDefaults_1; + const encode$3 = encode$4; + const defaults$9 = { + headers: true, + depth: true, + paragraphs: true, + images: true, + tables: true, + templates: true, + infoboxes: true, + lists: true, + references: true + }; + /** + * + * @param {Section} section + * @param {sectionToJsonOptions} options + * @returns {object} + */ - const encodeObj = function (obj = {}) { - let keys = Object.keys(obj); + const toJSON$7 = function (section, options) { + options = setDefaults$7(options, defaults$9); + /** + * @type {object} + */ - for (let i = 0; i < keys.length; i += 1) { - if (specialChar.test(keys[i]) === true) { - let str = encodeStr(keys[i]); + let data = {}; - if (str !== keys[i]) { - obj[str] = obj[keys[i]]; - delete obj[keys[i]]; - } - } - } + if (options.headers === true) { + data.title = section.title(); + } - return obj; - }; + if (options.depth === true) { + data.depth = section.depth(); + } //these return objects - var encode$1 = { - encodeObj: encodeObj - }; - var encode = encode$1; + if (options.paragraphs === true) { + let paragraphs = section.paragraphs().map(p => p.json(options)); - const defaults$9 = { - headers: true, - depth: true, - paragraphs: true, - images: true, - tables: true, - templates: true, - infoboxes: true, - lists: true, - references: true - }; - /** - * - * @param {Section} section - * @param {sectionToJsonOptions} options - * @returns {object} - */ + if (paragraphs.length > 0) { + data.paragraphs = paragraphs; + } + } //image json data - const toJSON$7 = function (section, options) { - options = setDefaults(options, defaults$9); - /** - * @type {object} - */ - let data = {}; + if (options.images === true) { + let images = section.images().map(img => img.json(options)); + + if (images.length > 0) { + data.images = images; + } + } //table json data + + + if (options.tables === true) { + let tables = section.tables().map(t => t.json(options)); + + if (tables.length > 0) { + data.tables = tables; + } + } //template json data + + + if (options.templates === true) { + let templates = section.templates().map(tmpl => tmpl.json()); + + if (templates.length > 0) { + data.templates = templates; //encode them, for mongodb + + if (options.encode === true) { + data.templates.forEach(t => encode$3.encodeObj(t)); + } + } + } //infobox json data + + + if (options.infoboxes === true) { + let infoboxes = section.infoboxes().map(i => i.json(options)); + + if (infoboxes.length > 0) { + data.infoboxes = infoboxes; + } + } //list json data + + + if (options.lists === true) { + let lists = section.lists().map(list => list.json(options)); + + if (lists.length > 0) { + data.lists = lists; + } + } //list references - default true + + + if (options.references === true || options.citations === true) { + let references = section.references().map(ref => ref.json(options)); + + if (references.length > 0) { + data.references = references; + } + } //default off + + + if (options.sentences === true) { + data.sentences = section.sentences().map(s => s.json(options)); + } + + return data; + }; + + var toJson$6 = toJSON$7; + + const wikis = interwiki$1; + const defaults$8 = { + type: 'internal' + }; + + const Link$1 = function (data) { + data = data || {}; + data = Object.assign({}, defaults$8, data); + Object.defineProperty(this, 'data', { + enumerable: false, + value: data + }); + }; + + const methods$7 = { + text: function (str) { + if (str !== undefined) { + this.data.text = str; + } + + let txt = this.data.text || this.data.page || ''; // remove bold/italics + + txt = txt.replace(/'{2,}/g, ''); + return txt; + }, + json: function () { + let obj = { + text: this.data.text, + type: this.type() + }; + + if (obj.type === 'internal') { + obj.page = this.page(); + } else if (obj.type === 'interwiki') { + obj.wiki = this.wiki(); + } else { + obj.site = this.site(); + } + + let anchor = this.anchor(); + + if (anchor) { + obj.anchor = anchor; + } + + return obj; + }, + wikitext: function () { + let txt = this.data.raw || ''; + return txt; + }, + page: function (str) { + if (str !== undefined) { + this.data.page = str; + } + + return this.data.page; + }, + anchor: function (str) { + if (str !== undefined) { + this.data.anchor = str; + } + + return this.data.anchor || ''; + }, + wiki: function (str) { + if (str !== undefined) { + this.data.wiki = str; + } + + return this.data.wiki; + }, + type: function (str) { + if (str !== undefined) { + this.data.type = str; + } + + return this.data.type; + }, + site: function (str) { + if (str !== undefined) { + this.data.site = str; + } + + return this.data.site; + }, + //create a url for any type of link + href: function () { + let type = this.type(); + + if (type === 'external') { + return this.site(); + } + + let page = this.page(); + page = page.replace(/ /g, '_'); + page = encodeURIComponent(page); + let url = ''; + + if (type === 'interwiki') { + let wiki = this.wiki(); + url = 'https://en.wikipedia.org/wiki/$1'; + + if (wikis.hasOwnProperty(wiki)) { + url = 'http://' + wikis[this.wiki()]; + } + + url = url.replace(/\$1/g, page); + } else { + //internal link + url = "./".concat(this.page()); + } //add anchor on the end + + + if (this.anchor()) { + url += '#' + this.anchor(); + } + + return url; + } + }; + Object.keys(methods$7).forEach(k => { + Link$1.prototype[k] = methods$7[k]; + }); + var Link_1 = Link$1; + + const Link = Link_1; + const parseLinks$1 = parse$m; // const i18n = require('../_data/i18n') + // const cat_reg = new RegExp('\\[\\[:?(' + i18n.categories.join('|') + '):[^\\]\\]]{2,80}\\]\\]', 'gi') + //return only rendered text of wiki links + + const removeLinks = function (line) { + // [[File:with|Size]] + line = line.replace(/\[\[File:(.{2,80}?)\|([^\]]+)\]\](\w{0,5})/g, '$1'); + return line; + }; + + const getLinks = function (data) { + let wiki = data.text; + let links = parseLinks$1(wiki) || []; + data.links = links.map(link => { + wiki = wiki.replace(link.raw, link.text || link.page || ''); // delete link.raw + + return new Link(link); + }); + wiki = removeLinks(wiki); + data.text = wiki; + }; + + var link = getLinks; + + const formatting = function (obj) { + let bolds = []; + let italics = []; + let wiki = obj.text || ''; //bold and italics combined 5 's + + wiki = wiki.replace(/'''''(.{0,200}?)'''''/g, (a, b) => { + bolds.push(b); + italics.push(b); + return b; + }); //''''four'''' → bold with quotes + + wiki = wiki.replace(/''''(.{0,200}?)''''/g, (a, b) => { + bolds.push("'".concat(b, "'")); + return "'".concat(b, "'"); + }); //'''bold''' + + wiki = wiki.replace(/'''(.{0,200}?)'''/g, (a, b) => { + bolds.push(b); + return b; + }); //''italic'' + + wiki = wiki.replace(/''(.{0,200}?)''/g, (a, b) => { + italics.push(b); + return b; + }); //pack it all up.. + + obj.text = wiki; + + if (bolds.length > 0) { + obj.fmt = obj.fmt || {}; + obj.fmt.bold = bolds; + } + + if (italics.length > 0) { + obj.fmt = obj.fmt || {}; + obj.fmt.italic = italics; + } + + return obj; + }; + + var formatting_1 = formatting; + + const setDefaults$6 = setDefaults_1; + const isNumber = /^[0-9,.]+$/; + const defaults$7 = { + text: true, + links: true, + formatting: true, + numbers: true + }; + + const toJSON$6 = function (s, options) { + options = setDefaults$6(options, defaults$7); + let data = {}; + let text = s.text(); + + if (options.text === true) { + data.text = text; + } //add number field + + + if (options.numbers === true && isNumber.test(text)) { + let num = Number(text.replace(/,/g, '')); + + if (isNaN(num) === false) { + data.number = num; + } + } + + if (options.links && s.links().length > 0) { + data.links = s.links().map(l => l.json()); + } + + if (options.formatting && s.data.fmt) { + data.formatting = s.data.fmt; + } + + return data; + }; + + var toJson$5 = toJSON$6; + + const toJSON$5 = toJson$5; //where we store the formatting, link, date information + + const Sentence$2 = function () { + let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + Object.defineProperty(this, 'data', { + enumerable: false, + value: data + }); + }; + + const methods$6 = { + links: function (n) { + let arr = this.data.links || []; + + if (typeof n === 'string') { + //grab a link like .links('Fortnight') + n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it + + let link = arr.find(o => o.page === n); + return link === undefined ? [] : [link]; + } + + return arr; + }, + interwiki: function () { + return this.links().filter(l => l.wiki !== undefined); + }, + bolds: function () { + if (this.data && this.data.fmt && this.data.fmt.bold) { + return this.data.fmt.bold || []; + } + + return []; + }, + italics: function () { + if (this.data && this.data.fmt && this.data.fmt.italic) { + return this.data.fmt.italic || []; + } + + return []; + }, + text: function (str) { + if (str !== undefined && typeof str === 'string') { + //set the text? + this.data.text = str; + } + + return this.data.text || ''; + }, + json: function (options) { + return toJSON$5(this, options); + }, + wikitext: function () { + return this.data.wiki || ''; + }, + isEmpty: function () { + return this.data.text === ''; + } + }; + Object.keys(methods$6).forEach(k => { + Sentence$2.prototype[k] = methods$6[k]; + }); // aliases + + const singular$3 = { + links: 'link', + bolds: 'bold', + italics: 'italic' + }; + Object.keys(singular$3).forEach(k => { + let sing = singular$3[k]; + + Sentence$2.prototype[sing] = function (clue) { + let arr = this[k](clue); + + if (typeof clue === 'number') { + return arr[clue]; + } + + return arr[0]; + }; + }); + Sentence$2.prototype.plaintext = Sentence$2.prototype.text; + var Sentence_1 = Sentence$2; + + var _abbreviations = ['ad', 'adj', 'adm', 'adv', 'al', 'alta', 'approx', 'apr', 'apt', 'arc', 'ariz', 'assn', 'asst', 'atty', 'aug', 'ave', 'ba', 'bc', 'bl', 'bldg', 'blvd', 'brig', 'bros', 'ca', 'cal', 'calif', 'capt', 'cca', 'cg', 'cl', 'cm', 'cmdr', 'co', 'col', 'colo', 'comdr', 'conn', 'corp', 'cpl', 'cres', 'ct', 'cyn', 'dak', 'dec', 'def', 'dept', 'det', 'dg', 'dist', 'dl', 'dm', 'dr', 'ea', 'eg', 'eng', 'esp', 'esq', 'est', 'etc', 'ex', 'exp', 'feb', 'fem', 'fig', 'fl oz', 'fl', 'fla', 'fm', 'fr', 'ft', 'fy', 'ga', 'gal', 'gb', 'gen', 'gov', 'hg', 'hon', 'hr', 'hrs', 'hwy', 'hz', 'ia', 'ida', 'ie', 'inc', 'inf', 'jan', 'jd', 'jr', 'jul', 'jun', 'kan', 'kans', 'kb', 'kg', 'km', 'kmph', 'lat', 'lb', 'lit', 'llb', 'lm', 'lng', 'lt', 'ltd', 'lx', 'ma', 'maj', 'mar', 'masc', 'mb', 'md', 'messrs', 'mg', 'mi', 'min', 'minn', 'misc', 'mister', 'ml', 'mlle', 'mm', 'mme', 'mph', 'mps', 'mr', 'mrs', 'ms', 'mstr', 'mt', 'neb', 'nebr', 'nee', 'no', 'nov', 'oct', 'okla', 'ont', 'op', 'ord', 'oz', 'pa', 'pd', 'penn', 'penna', 'phd', 'pl', 'pp', 'pref', 'prob', 'prof', 'pron', 'ps', 'psa', 'pseud', 'pt', 'pvt', 'qt', 'que', 'rb', 'rd', 'rep', 'reps', 'res', 'rev', 'sask', 'sec', 'sen', 'sens', 'sep', 'sept', 'sfc', 'sgt', 'sir', 'situ', 'sq ft', 'sq', 'sr', 'ss', 'st', 'supt', 'surg', 'tb', 'tbl', 'tbsp', 'tce', 'td', 'tel', 'temp', 'tenn', 'tex', 'tsp', 'univ', 'usafa', 'ut', 'va', 'vb', 'ver', 'vet', 'vitro', 'vivo', 'vol', 'vs', 'vt', 'wis', 'wisc', 'wr', 'wy', 'wyo', 'yb', 'µg']; + + //@spencermountain MIT + //(Rule-based sentence boundary segmentation) - chop given text into its proper sentences. + // Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc. + // @spencermountain 2015 MIT + + const literalAbbreviations = _abbreviations; + const abbreviations = literalAbbreviations.concat('[^]][^]]'); + const abbrev_reg = new RegExp("(^| |')(" + abbreviations.join('|') + ")[.!?] ?$", 'i'); + const acronym_reg = /[ .'][A-Z].? *$/i; + const elipses_reg = /\.{3,} +$/; + const circa_reg = / c\.\s$/; + const hasWord = /\p{Letter}/iu; //turn a nested array into one array + + const flatten = function (arr) { + let all = []; + arr.forEach(function (a) { + all = all.concat(a); + }); + return all; + }; + + const naiive_split = function (text) { + //first, split by newline + let splits = text.split(/(\n+)/); + splits = splits.filter(s => s.match(/\S/)); //split by period, question-mark, and exclamation-mark + + splits = splits.map(function (str) { + return str.split(/(\S.+?[.!?]"?)(?=\s|$)/g); //\u3002 + }); + return flatten(splits); + }; // if this looks like a period within a wikipedia link, return false + + + const isBalanced = function (str) { + str = str || ''; + const open = str.split(/\[\[/) || []; + const closed = str.split(/\]\]/) || []; + + if (open.length > closed.length) { + return false; + } //make sure quotes are closed too + + + const quotes = str.match(/"/g); + + if (quotes && quotes.length % 2 !== 0 && str.length < 900) { + return false; + } + + return true; + }; + + const sentence_parser = function (text) { + let sentences = []; //first do a greedy-split.. + + let chunks = []; //ensure it 'smells like' a sentence + + if (!text || typeof text !== 'string' || text.trim().length === 0) { + return sentences; + } // This was the splitter regex updated to fix quoted punctuation marks. + // let splits = text.split(/(\S.+?[.\?!])(?=\s+|$|")/g); + // todo: look for side effects in this regex replacement: + + + let splits = naiive_split(text); //filter-out the grap ones + + for (let i = 0; i < splits.length; i++) { + let s = splits[i]; + + if (!s || s === '') { + continue; + } //this is meaningful whitespace + + + if (!s.match(/\S/)) { + //add it to the last one + if (chunks[chunks.length - 1]) { + chunks[chunks.length - 1] += s; + continue; + } else if (splits[i + 1]) { + //add it to the next one + splits[i + 1] = s + splits[i + 1]; + continue; + } + } + + chunks.push(s); + } //detection of non-sentence chunks - if (options.headers === true) { - data.title = section.title(); - } - if (options.depth === true) { - data.depth = section.depth(); - } //these return objects + const isSentence = function (hmm) { + if (hmm.match(abbrev_reg) || hmm.match(acronym_reg) || hmm.match(elipses_reg) || hmm.match(circa_reg)) { + return false; + } //too short? - no consecutive letters - if (options.paragraphs === true) { - let paragraphs = section.paragraphs().map(p => p.json(options)); + if (hasWord.test(hmm) === false) { + return false; + } - if (paragraphs.length > 0) { - data.paragraphs = paragraphs; - } - } //image json data + if (!isBalanced(hmm)) { + return false; + } + + return true; + }; //loop through these chunks, and join the non-sentence chunks back together.. - if (options.images === true) { - let images = section.images().map(img => img.json(options)); - - if (images.length > 0) { - data.images = images; - } - } //table json data - - - if (options.tables === true) { - let tables = section.tables().map(t => t.json(options)); - - if (tables.length > 0) { - data.tables = tables; - } - } //template json data - - - if (options.templates === true) { - let templates = section.templates().map(tmpl => tmpl.json()); - - if (templates.length > 0) { - data.templates = templates; //encode them, for mongodb - - if (options.encode === true) { - data.templates.forEach(t => encode.encodeObj(t)); - } - } - } //infobox json data - - - if (options.infoboxes === true) { - let infoboxes = section.infoboxes().map(i => i.json(options)); - - if (infoboxes.length > 0) { - data.infoboxes = infoboxes; - } - } //list json data - - - if (options.lists === true) { - let lists = section.lists().map(list => list.json(options)); - - if (lists.length > 0) { - data.lists = lists; - } - } //list references - default true - - - if (options.references === true || options.citations === true) { - let references = section.references().map(ref => ref.json(options)); - - if (references.length > 0) { - data.references = references; - } - } //default off - - - if (options.sentences === true) { - data.sentences = section.sentences().map(s => s.json(options)); - } - - return data; - }; - - var toJson$6 = toJSON$7; - - const defaults$8 = { - type: 'internal' - }; - - const Link = function (data) { - data = data || {}; - data = Object.assign({}, defaults$8, data); - Object.defineProperty(this, 'data', { - enumerable: false, - value: data - }); - }; + for (let i = 0; i < chunks.length; i++) { + //should this chunk be combined with the next one? + if (chunks[i + 1] && !isSentence(chunks[i])) { + chunks[i + 1] = chunks[i] + (chunks[i + 1] || ''); //.replace(/ +/g, ' '); + } else if (chunks[i] && chunks[i].length > 0) { + //this chunk is a proper sentence.. + sentences.push(chunks[i]); + chunks[i] = ''; + } + } //if we never got a sentence, return the given text - const methods$7 = { - text: function (str) { - if (str !== undefined) { - this.data.text = str; - } - - let txt = this.data.text || this.data.page || ''; // remove bold/italics - - txt = txt.replace(/'{2,}/g, ''); - return txt; - }, - json: function () { - let obj = { - text: this.data.text, - type: this.type() - }; - - if (obj.type === 'internal') { - obj.page = this.page(); - } else if (obj.type === 'interwiki') { - obj.wiki = this.wiki(); - } else { - obj.site = this.site(); - } - - let anchor = this.anchor(); - - if (anchor) { - obj.anchor = anchor; - } - - return obj; - }, - wikitext: function () { - let txt = this.data.raw || ''; - return txt; - }, - page: function (str) { - if (str !== undefined) { - this.data.page = str; - } - - return this.data.page; - }, - anchor: function (str) { - if (str !== undefined) { - this.data.anchor = str; - } - - return this.data.anchor || ''; - }, - wiki: function (str) { - if (str !== undefined) { - this.data.wiki = str; - } - - return this.data.wiki; - }, - type: function (str) { - if (str !== undefined) { - this.data.type = str; - } - - return this.data.type; - }, - site: function (str) { - if (str !== undefined) { - this.data.site = str; - } - - return this.data.site; - }, - //create a url for any type of link - href: function () { - let type = this.type(); - - if (type === 'external') { - return this.site(); - } - - let page = this.page(); - page = page.replace(/ /g, '_'); - page = encodeURIComponent(page); - let url = ''; - - if (type === 'interwiki') { - let wiki = this.wiki(); - url = 'https://en.wikipedia.org/wiki/$1'; - - if (wikis.hasOwnProperty(wiki)) { - url = 'http://' + wikis[this.wiki()]; - } - - url = url.replace(/\$1/g, page); - } else { - //internal link - url = `./${this.page()}`; - } //add anchor on the end - - - if (this.anchor()) { - url += '#' + this.anchor(); - } - - return url; - } - }; - Object.keys(methods$7).forEach(k => { - Link.prototype[k] = methods$7[k]; - }); - var Link_1 = Link; - - var require$$5$2 = Link_1; - - // const cat_reg = new RegExp('\\[\\[:?(' + i18n.categories.join('|') + '):[^\\]\\]]{2,80}\\]\\]', 'gi') - //return only rendered text of wiki links - - const removeLinks = function (line) { - // [[File:with|Size]] - line = line.replace(/\[\[File:(.{2,80}?)\|([^\]]+)\]\](\w{0,5})/g, '$1'); - return line; - }; - - const getLinks = function (data) { - let wiki = data.text; - let links = parseLinks$1(wiki) || []; - data.links = links.map(link => { - wiki = wiki.replace(link.raw, link.text || link.page || ''); // delete link.raw - - return new require$$5$2(link); - }); - wiki = removeLinks(wiki); - data.text = wiki; - }; - - var link = getLinks; - - //handle the bold/italics - const formatting = function (obj) { - let bolds = []; - let italics = []; - let wiki = obj.text || ''; //bold and italics combined 5 's - - wiki = wiki.replace(/'''''(.{0,200}?)'''''/g, (a, b) => { - bolds.push(b); - italics.push(b); - return b; - }); //''''four'''' → bold with quotes - - wiki = wiki.replace(/''''(.{0,200}?)''''/g, (a, b) => { - bolds.push(`'${b}'`); - return `'${b}'`; - }); //'''bold''' - - wiki = wiki.replace(/'''(.{0,200}?)'''/g, (a, b) => { - bolds.push(b); - return b; - }); //''italic'' - - wiki = wiki.replace(/''(.{0,200}?)''/g, (a, b) => { - italics.push(b); - return b; - }); //pack it all up.. - - obj.text = wiki; - - if (bolds.length > 0) { - obj.fmt = obj.fmt || {}; - obj.fmt.bold = bolds; - } - - if (italics.length > 0) { - obj.fmt = obj.fmt || {}; - obj.fmt.italic = italics; - } - - return obj; - }; - - var formatting_1 = formatting; - - const isNumber = /^[0-9,.]+$/; - const defaults$7 = { - text: true, - links: true, - formatting: true, - numbers: true - }; - - const toJSON$6 = function (s, options) { - options = setDefaults(options, defaults$7); - let data = {}; - let text = s.text(); - - if (options.text === true) { - data.text = text; - } //add number field - - - if (options.numbers === true && isNumber.test(text)) { - let num = Number(text.replace(/,/g, '')); - - if (isNaN(num) === false) { - data.number = num; - } - } - - if (options.links && s.links().length > 0) { - data.links = s.links().map(l => l.json()); - } - - if (options.formatting && s.data.fmt) { - data.formatting = s.data.fmt; - } - - return data; - }; - - var toJson$5 = toJSON$6; - - var toJSON$5 = toJson$5; - - const Sentence = function (data = {}) { - Object.defineProperty(this, 'data', { - enumerable: false, - value: data - }); - }; - - const methods$6 = { - links: function (n) { - let arr = this.data.links || []; - - if (typeof n === 'string') { - //grab a link like .links('Fortnight') - n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it - - let link = arr.find(o => o.page === n); - return link === undefined ? [] : [link]; - } - - return arr; - }, - interwiki: function () { - return this.links().filter(l => l.wiki !== undefined); - }, - bolds: function () { - if (this.data && this.data.fmt && this.data.fmt.bold) { - return this.data.fmt.bold || []; - } - - return []; - }, - italics: function () { - if (this.data && this.data.fmt && this.data.fmt.italic) { - return this.data.fmt.italic || []; - } - - return []; - }, - text: function (str) { - if (str !== undefined && typeof str === 'string') { - //set the text? - this.data.text = str; - } - - return this.data.text || ''; - }, - json: function (options) { - return toJSON$5(this, options); - }, - wikitext: function () { - return this.data.wiki || ''; - }, - isEmpty: function () { - return this.data.text === ''; - } - }; - Object.keys(methods$6).forEach(k => { - Sentence.prototype[k] = methods$6[k]; - }); // aliases - - const singular$3 = { - links: 'link', - bolds: 'bold', - italics: 'italic' - }; - Object.keys(singular$3).forEach(k => { - let sing = singular$3[k]; - - Sentence.prototype[sing] = function (clue) { - let arr = this[k](clue); - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr[0]; - }; - }); - Sentence.prototype.plaintext = Sentence.prototype.text; - var Sentence_1 = Sentence; - - //these are used for the sentence-splitter - var _abbreviations = ['ad', 'adj', 'adm', 'adv', 'al', 'alta', 'approx', 'apr', 'apt', 'arc', 'ariz', 'assn', 'asst', 'atty', 'aug', 'ave', 'ba', 'bc', 'bl', 'bldg', 'blvd', 'brig', 'bros', 'ca', 'cal', 'calif', 'capt', 'cca', 'cg', 'cl', 'cm', 'cmdr', 'co', 'col', 'colo', 'comdr', 'conn', 'corp', 'cpl', 'cres', 'ct', 'cyn', 'dak', 'dec', 'def', 'dept', 'det', 'dg', 'dist', 'dl', 'dm', 'dr', 'ea', 'eg', 'eng', 'esp', 'esq', 'est', 'etc', 'ex', 'exp', 'feb', 'fem', 'fig', 'fl oz', 'fl', 'fla', 'fm', 'fr', 'ft', 'fy', 'ga', 'gal', 'gb', 'gen', 'gov', 'hg', 'hon', 'hr', 'hrs', 'hwy', 'hz', 'ia', 'ida', 'ie', 'inc', 'inf', 'jan', 'jd', 'jr', 'jul', 'jun', 'kan', 'kans', 'kb', 'kg', 'km', 'kmph', 'lat', 'lb', 'lit', 'llb', 'lm', 'lng', 'lt', 'ltd', 'lx', 'ma', 'maj', 'mar', 'masc', 'mb', 'md', 'messrs', 'mg', 'mi', 'min', 'minn', 'misc', 'mister', 'ml', 'mlle', 'mm', 'mme', 'mph', 'mps', 'mr', 'mrs', 'ms', 'mstr', 'mt', 'neb', 'nebr', 'nee', 'no', 'nov', 'oct', 'okla', 'ont', 'op', 'ord', 'oz', 'pa', 'pd', 'penn', 'penna', 'phd', 'pl', 'pp', 'pref', 'prob', 'prof', 'pron', 'ps', 'psa', 'pseud', 'pt', 'pvt', 'qt', 'que', 'rb', 'rd', 'rep', 'reps', 'res', 'rev', 'sask', 'sec', 'sen', 'sens', 'sep', 'sept', 'sfc', 'sgt', 'sir', 'situ', 'sq ft', 'sq', 'sr', 'ss', 'st', 'supt', 'surg', 'tb', 'tbl', 'tbsp', 'tce', 'td', 'tel', 'temp', 'tenn', 'tex', 'tsp', 'univ', 'usafa', 'ut', 'va', 'vb', 'ver', 'vet', 'vitro', 'vivo', 'vol', 'vs', 'vt', 'wis', 'wisc', 'wr', 'wy', 'wyo', 'yb', 'µg']; - - var literalAbbreviations = _abbreviations; - - //@spencermountain MIT - //(Rule-based sentence boundary segmentation) - chop given text into its proper sentences. - // Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc. - // @spencermountain 2015 MIT - - const abbreviations = literalAbbreviations.concat('[^]][^]]'); - const abbrev_reg = new RegExp("(^| |')(" + abbreviations.join('|') + `)[.!?] ?$`, 'i'); - const acronym_reg = /[ .'][A-Z].? *?$/i; - const elipses_reg = /\.{3,} +?$/; - const circa_reg = / c\.\s$/; - const hasWord = /\p{Letter}/iu; //turn a nested array into one array - - const flatten = function (arr) { - let all = []; - arr.forEach(function (a) { - all = all.concat(a); - }); - return all; - }; - - const naiive_split = function (text) { - //first, split by newline - let splits = text.split(/(\n+)/); - splits = splits.filter(s => s.match(/\S/)); //split by period, question-mark, and exclamation-mark - - splits = splits.map(function (str) { - return str.split(/(\S.+?[.!?]"?)(?=\s|$)/g); //\u3002 - }); - return flatten(splits); - }; // if this looks like a period within a wikipedia link, return false - - - const isBalanced = function (str) { - str = str || ''; - const open = str.split(/\[\[/) || []; - const closed = str.split(/\]\]/) || []; - - if (open.length > closed.length) { - return false; - } //make sure quotes are closed too - - - const quotes = str.match(/"/g); - - if (quotes && quotes.length % 2 !== 0 && str.length < 900) { - return false; - } - - return true; - }; - - const sentence_parser = function (text) { - let sentences = []; //first do a greedy-split.. - - let chunks = []; //ensure it 'smells like' a sentence - - if (!text || typeof text !== 'string' || text.trim().length === 0) { - return sentences; - } // This was the splitter regex updated to fix quoted punctuation marks. - // let splits = text.split(/(\S.+?[.\?!])(?=\s+|$|")/g); - // todo: look for side effects in this regex replacement: + if (sentences.length === 0) { + return [text]; + } - let splits = naiive_split(text); //filter-out the grap ones + return sentences; + }; - for (let i = 0; i < splits.length; i++) { - let s = splits[i]; + var parse$k = sentence_parser; - if (!s || s === '') { - continue; - } //this is meaningful whitespace + const helpers = helpers$1; + const parseLinks = link; + const parseFmt = formatting_1; + const Sentence$1 = Sentence_1; + const sentenceParser = parse$k; + /** + * This function removes some final characters from the sentence + * + * @private + * @param {string} line the wiki text for processing + * @returns {string} the processed string + */ + function postprocess(line) { + //remove empty parentheses (sometimes caused by removing templates) + line = line.replace(/\([,;: ]*\)/g, ''); //these semi-colons in parentheses are particularly troublesome - if (!s.match(/\S/)) { - //add it to the last one - if (chunks[chunks.length - 1]) { - chunks[chunks.length - 1] += s; - continue; - } else if (splits[i + 1]) { - //add it to the next one - splits[i + 1] = s + splits[i + 1]; - continue; - } - } + line = line.replace(/\( *(; ?)+/g, '('); //dangling punctuation + + line = helpers.trim_whitespace(line); + line = line.replace(/ +\.$/, '.'); + return line; + } + /** + * returns one sentence object + * + * @param {string} str create a object from a sentence + * @returns {Sentence} the Sentence created from the text + */ - chunks.push(s); - } //detection of non-sentence chunks + function fromText(str) { + let obj = { + wiki: str, + text: str + }; //pull-out the [[links]] - const isSentence = function (hmm) { - if (hmm.match(abbrev_reg) || hmm.match(acronym_reg) || hmm.match(elipses_reg) || hmm.match(circa_reg)) { - return false; - } //too short? - no consecutive letters + parseLinks(obj); + obj.text = postprocess(obj.text); //pull-out the bolds and ''italics'' + obj = parseFmt(obj); //pull-out things like {{start date|...}} + + return new Sentence$1(obj); + } //used for consistency with other class-definitions + + + const byParagraph = function (paragraph) { + //array of texts + let sentences = sentenceParser(paragraph.wiki); //sentence objects + + sentences = sentences.map(fromText); //remove :indented first line, as it is often a disambiguation + + if (sentences[0] && sentences[0].text() && sentences[0].text()[0] === ':') { + sentences = sentences.slice(1); + } + + paragraph.sentences = sentences; + }; + + var _04Sentence = { + fromText: fromText, + byParagraph: byParagraph + }; + + /** + * removes the top and bottom off the template + * so it removes tje '{{' and '}}' + * + * @private + * @param {string} tmpl the string to be striped + * @returns {string} the striped string + */ + + const strip$3 = function (tmpl) { + tmpl = tmpl.replace(/^\{\{/, ''); + tmpl = tmpl.replace(/\}\}$/, ''); + return tmpl; + }; + + var _strip = strip$3; + + const fmtName$2 = function (name) { + name = (name || '').trim(); + name = name.toLowerCase(); + name = name.replace(/_/g, ' '); + return name; + }; + + var _fmtName = fmtName$2; + + /** + * turn {{name|one|two|three}} into [name, one, two, three] + * + * @private + * @param {string} tmpl the template text + * @returns {string[]} a array containing all the split parameters + */ + + const pipeSplitter$1 = function (tmpl) { + //start with a naive '|' split + let arr = tmpl.split(/\n?\|/); //we've split by '|', which is pretty lame + //look for broken-up links and fix them :/ + + arr.forEach((a, i) => { + if (a === null) { + return; + } //has '[[' but no ']]' + //has equal number of opening and closing tags. handle nested case '[[[[' ']]' + + + if (/\[\[[^\]]+$/.test(a) || /\{\{[^}]+$/.test(a) || a.split('{{').length !== a.split('}}').length || a.split('[[').length !== a.split(']]').length) { + arr[i + 1] = arr[i] + '|' + arr[i + 1]; //@ts-expect-error we can ignore this error because we filter out all nulls later in + + arr[i] = null; + } + }); //cleanup any mistakes we've made + + arr = arr.filter(a => a !== null); + arr = arr.map(a => (a || '').trim()); //remove empty fields, only at the end: + + for (let i = arr.length - 1; i >= 0; i -= 1) { + if (arr[i] === '') { + arr.pop(); + } + + break; + } + + return arr; + }; + + var _01PipeSplitter = pipeSplitter$1; + + //here we come up with names for them + + const hasKey = /^[\p{Letter}0-9._\- '()]+=/iu; //templates with these properties are asking for trouble + + const reserved = { + template: true, + list: true, + prototype: true + }; + /** + * @typedef parseKeyReturn + * @property {string} val + * @property {string} key + */ + + /** + * turn 'key=val' into {key:key, val:val} + * + * @param {string} str the string that will be parsed + * @returns {parseKeyReturn} the spit string + */ + + const parseKey = function (str) { + let parts = str.split('='); + let key = parts[0] || ''; + key = key.toLowerCase().trim(); + let val = parts.slice(1).join('='); //don't let it be called 'template'.. + + if (reserved.hasOwnProperty(key)) { + key = '_' + key; + } + + return { + key: key, + val: val.trim() + }; + }; + /** + * turn [a, b=v, c] into {'1':a, b:v, '2':c} + * + * @private + * @param {string[]} arr the array of parameters + * @param {string[]} [order] the order in which the parameters are returned + * @returns {object} and object with the names as the keys and the values as the values + */ + + + const keyMaker$1 = function (arr, order) { + let keyIndex = 0; + return arr.reduce(function (h) { + let str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + str = str.trim(); //support named keys - 'foo=bar' + + if (hasKey.test(str) === true) { + let res = parseKey(str); + + if (res.key) { + h[res.key] = res.val; + return h; + } + } //if the current index is present in the order array then we have a name for the key + + + if (order && order[keyIndex]) { + let key = order[keyIndex]; + h[key] = str; + } else { + h.list = h.list || []; + h.list.push(str); + } + + keyIndex += 1; + return h; + }, {}); + }; + + var _02KeyMaker = keyMaker$1; + + const whoCares = { + classname: true, + style: true, + align: true, + margin: true, + left: true, + break: true, + boxsize: true, + framestyle: true, + item_style: true, + collapsible: true, + list_style_type: true, + 'list-style-type': true, + colwidth: true + }; //remove wiki-cruft & some styling info from templates + + const cleanup$2 = function (obj) { + Object.keys(obj).forEach(k => { + if (whoCares[k.toLowerCase()] === true) { + delete obj[k]; + } //remove empty values, too + + + if (obj[k] === null || obj[k] === '') { + delete obj[k]; + } + }); + return obj; + }; + + var _03Cleanup = cleanup$2; + + const strip$2 = _strip; + const fmtName$1 = _fmtName; + const parseSentence$7 = _04Sentence.fromText; + const pipeSplitter = _01PipeSplitter; + const keyMaker = _02KeyMaker; + const cleanup$1 = _03Cleanup; + /** + * most templates just want plaintext... + * + * @private + * @param {str} str + * @param {'json' | 'raw'} [fmt] + * @returns {string} text + */ + + const makeFormat = function (str, fmt) { + let s = parseSentence$7(str); //support various output formats + + if (fmt === 'json') { + return s.json(); + } else if (fmt === 'raw') { + return s; + } //default to flat text + + + return s.text(); + }; + /** + * parses the parameters of a template to a usable format + * + * @private + * @param {string} tmpl the template text + * @param {string[]} [order] the order in which the parameters are returned + * @param {'json' | 'raw'} [fmt] whether you wan to parse the text of the template the raw object or just the text + * @returns {object} the parameters of the template in a usable format + */ + + + const parser = function (tmpl) { + let order = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + let fmt = arguments.length > 2 ? arguments[2] : undefined; + //remove {{}}'s and split based on pipes + tmpl = strip$2(tmpl || ''); + let arr = pipeSplitter(tmpl); //get template name + + let name = arr.shift(); //name each value + + let obj = keyMaker(arr, order); //remove wiki-junk + + obj = cleanup$1(obj); //is this a infobox/reference? + //let known = isKnown(obj); + //using '|1=content' is an escaping-thing.. + + if (obj['1'] && order[0] && obj.hasOwnProperty(order[0]) === false) { + //move it over.. + obj[order[0]] = obj['1']; + delete obj['1']; + } + + Object.keys(obj).forEach(k => { + if (k === 'list') { + obj[k] = obj[k].map(v => makeFormat(v, fmt)); + return; + } + + obj[k] = makeFormat(obj[k], fmt); + }); //add the template name + + if (name) { + obj.template = fmtName$1(name); + } + + return obj; + }; + + var toJSON$4 = parser; + + const encode$2 = encode$4; //also called 'citations' + + const Reference$2 = function (data, wiki) { + Object.defineProperty(this, 'data', { + enumerable: false, + value: data + }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); + }; + + const methods$5 = { + title: function () { + let data = this.data; + return data.title || data.encyclopedia || data.author || ''; + }, + links: function (n) { + let arr = []; + + if (typeof n === 'number') { + return arr[n]; + } //grab a specific link.. + + + if (typeof n === 'number') { + return arr[n]; + } else if (typeof n === 'string') { + //grab a link like .links('Fortnight') + n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it + + let link = arr.find(o => o.page() === n); + return link === undefined ? [] : [link]; + } + + return arr || []; + }, + text: function () { + return ''; //nah, skip these. + }, + wikitext: function () { + return this.wiki || ''; + }, + json: function () { + let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + let json = this.data || {}; //encode them, for mongodb + + if (options.encode === true) { + json = Object.assign({}, json); + json = encode$2.encodeObj(json); + } + + return json; + } + }; + Object.keys(methods$5).forEach(k => { + Reference$2.prototype[k] = methods$5[k]; + }); + var Reference_1 = Reference$2; + + const parse$j = toJSON$4; //const parse = require('../../templates/wikipedia/page').citation; + + const parseSentence$6 = _04Sentence.fromText; + const Reference$1 = Reference_1; //structured Cite templates - {{Cite.. + + const hasCitation = function (str) { + return /^ *\{\{ *(cite|citation)/i.test(str) && /\}\} *$/.test(str) && /citation needed/i.test(str) === false; + }; + + const parseCitation = function (tmpl) { + let obj = parse$j(tmpl); + obj.type = obj.template.replace(/cite /, ''); + obj.template = 'citation'; + return obj; + }; //handle unstructured ones - some text + + + const parseInline = function (str) { + let obj = parseSentence$6(str) || {}; + return { + template: 'citation', + type: 'inline', + data: {}, + inline: obj + }; + }; //parse xml tags + + + const parseRefs = function (section) { + let references = []; + let wiki = section._wiki; + wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (all, tmpl) { + if (hasCitation(tmpl)) { + let obj = parseCitation(tmpl); + + if (obj) { + references.push({ + json: obj, + wiki: all + }); + } + + wiki = wiki.replace(tmpl, ''); + } else { + references.push({ + json: parseInline(tmpl), + wiki: all + }); + } + + return ' '; + }); // + + wiki = wiki.replace(/ ?]{0,200}?\/> ?/gi, ' '); // + + wiki = wiki.replace(/ ?]{0,200}>([\s\S]{0,1800}?)<\/ref> ?/gi, function (all, tmpl) { + if (hasCitation(tmpl)) { + let obj = parseCitation(tmpl); + + if (obj) { + references.push({ + json: obj, + wiki: tmpl + }); + } + + wiki = wiki.replace(tmpl, ''); + } else { + references.push({ + json: parseInline(tmpl), + wiki: all + }); + } + + return ' '; + }); //now that we're done with xml, do a generic + dangerous xml-tag removal + + wiki = wiki.replace(/ ?<[ /]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ /]?> ?/g, ' '); // + + section._references = references.map(obj => new Reference$1(obj.json, obj.wiki)); + section._wiki = wiki; + }; + + var reference = parseRefs; + + const { + trim_whitespace + } = helpers$1; + const parseSentence$5 = _04Sentence.fromText; + const parseReferences = reference; + const heading_reg = /^(={1,5})(.{1,200}?)={1,5}$/; + /** + * @typedef fakeSection + * @property {string} title + * @property {null | number} depth + * @property {string} wiki + */ + + /** + * estimates the depth of a section and parses the title to a normal format + * + * @private + * @param {fakeSection} section + * @param {string} str + * @returns {fakeSection} section the depth in a object + */ + + const parseHeading = function (section, str) { + let m = str.match(heading_reg); + + if (!m) { + section.title = ''; + section.depth = 0; + return section; + } + + let title = m[2] || ''; + title = parseSentence$5(title).text(); //amazingly, you can see inline {{templates}} in this text, too + //... let's not think about that now. + + title = title.replace(/\{\{.+?\}\}/, ''); //same for references (i know..) + + let obj = { + _wiki: title + }; + parseReferences(obj); + title = obj._wiki; //trim leading/trailing whitespace + + title = trim_whitespace(title); + let depth = 0; + + if (m[1]) { + depth = m[1].length - 2; + } + + section.title = title; + section.depth = depth; + return section; + }; + + var heading = parseHeading; + + const cleanup = function (lines) { + lines = lines.filter(line => { + //a '|+' row is a 'table caption', remove it. + return line && /^\|\+/.test(line) !== true; + }); + + if (/^\{\|/.test(lines[0]) === true) { + lines.shift(); + } + + if (/^\|\}/.test(lines[lines.length - 1]) === true) { + lines.pop(); + } + + if (/^\|-/.test(lines[0]) === true) { + lines.shift(); + } + + return lines; + }; //turn newline seperated into '|-' seperated + + + const findRows$1 = function (lines) { + let rows = []; + let row = []; + lines = cleanup(lines); + + for (let i = 0; i < lines.length; i += 1) { + let line = lines[i]; //'|-' is a row-seperator + + if (/^\|-/.test(line) === true) { + //okay, we're done the row + if (row.length > 0) { + rows.push(row); + row = []; + } + } else { + //look for '||' inline row-splitter + line = line.split(/(?:\|\||!!)/); //eslint-disable-line + //support newline -> '||' + + if (!line[0] && line[1]) { + line.shift(); + } + + line.forEach(l => { + l = l.replace(/^\| */, ''); + l = l.trim(); + row.push(l); + }); + } + } //finish the last one + + + if (row.length > 0) { + rows.push(row); + } + + return rows; + }; + + var _findRows = findRows$1; + + const getRowSpan = /.*rowspan *= *["']?([0-9]+)["']?[ |]*/; + const getColSpan = /.*colspan *= *["']?([0-9]+)["']?[ |]*/; //colspans stretch ←left/right→ + + const doColSpan = function (rows) { + rows.forEach(row => { + row.forEach((str, c) => { + let m = str.match(getColSpan); + + if (m !== null) { + let num = parseInt(m[1], 10); //...maybe if num is so big, and centered, remove it? + // if (num > 3) { + // rows[r] = [] + // return + // } + //splice-in n empty columns right here + + row[c] = str.replace(getColSpan, ''); + + for (let i = 1; i < num; i += 1) { + row.splice(c + 1, 0, ''); + } + } + }); + }); + rows = rows.filter(r => r.length > 0); + return rows; + }; //colspans stretch up/down + + + const doRowSpan = function (rows) { + rows.forEach((row, r) => { + row.forEach((str, c) => { + let m = str.match(getRowSpan); + + if (m !== null) { + let num = parseInt(m[1], 10); //copy this cell down n rows + + str = str.replace(getRowSpan, ''); + row[c] = str; + + for (let i = r + 1; i < r + num; i += 1) { + if (!rows[i]) { + break; + } + + rows[i].splice(c, 0, str); + } + } + }); + }); + return rows; + }; // + + + const handleSpans$1 = function (rows) { + rows = doColSpan(rows); + rows = doRowSpan(rows); + return rows; + }; + + var _spans = handleSpans$1; + + const parseSentence$4 = _04Sentence.fromText; + const findRows = _findRows; + const handleSpans = _spans; + const isHeading = /^!/; //common ones + + const headings$1 = { + name: true, + age: true, + born: true, + date: true, + year: true, + city: true, + country: true, + population: true, + count: true, + number: true + }; //additional table-cruft to remove before parseLine method + + const cleanText = function (str) { + str = parseSentence$4(str).text(); //anything before a single-pipe is styling, so remove it + + if (str.match(/\|/)) { + str = str.replace(/.+\| ?/, ''); //class="unsortable"|title + } + + str = str.replace(/style=['"].*?["']/, ''); //'!' is used as a highlighed-column + + str = str.replace(/^!/, ''); // str = str.replace(/\(.*?\)/, '') + + str = str.trim(); // str = str.toLowerCase() + + return str; + }; + + const skipSpanRow = function (row) { + row = row || []; + let len = row.length; + let hasTxt = row.filter(str => str).length; //does it have 3 empty spaces? + + if (len - hasTxt > 3) { + return true; + } + + return false; + }; //remove non-header span rows + + + const removeMidSpans = function (rows) { + rows = rows.filter(row => { + if (row.length === 1 && row[0] && isHeading.test(row[0]) && /rowspan/i.test(row[0]) === false) { + return false; + } - if (hasWord.test(hmm) === false) { - return false; - } + return true; + }); + return rows; + }; //'!' starts a header-row - if (!isBalanced(hmm)) { - return false; - } - return true; - }; //loop through these chunks, and join the non-sentence chunks back together.. + const findHeaders = function () { + let rows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + let headers = []; // is the first-row just a ton of colspan? + if (skipSpanRow(rows[0])) { + rows.shift(); + } - for (let i = 0; i < chunks.length; i++) { - //should this chunk be combined with the next one? - if (chunks[i + 1] && !isSentence(chunks[i])) { - chunks[i + 1] = chunks[i] + (chunks[i + 1] || ''); //.replace(/ +/g, ' '); - } else if (chunks[i] && chunks[i].length > 0) { - //this chunk is a proper sentence.. - sentences.push(chunks[i]); - chunks[i] = ''; - } - } //if we never got a sentence, return the given text + let first = rows[0]; + if (first && first[0] && first[1] && (/^!/.test(first[0]) || /^!/.test(first[1]))) { + headers = first.map(h => { + h = h.replace(/^! */, ''); + h = cleanText(h); + return h; + }); + rows.shift(); + } //try the second row, too (overwrite first-row, if it exists) - if (sentences.length === 0) { - return [text]; - } - return sentences; - }; + first = rows[0]; - var parse$6 = sentence_parser; + if (first && first[0] && first[1] && /^!/.test(first[0]) && /^!/.test(first[1])) { + first.forEach((h, i) => { + h = h.replace(/^! */, ''); + h = cleanText(h); - var parseLinks = link; + if (Boolean(h) === true) { + headers[i] = h; + } + }); + rows.shift(); + } - var parseFmt = formatting_1; + return headers; + }; //turn headers, array into an object - var require$$2$6 = Sentence_1; - var sentenceParser = parse$6; + const parseRow = function (arr, headers) { + let row = {}; + arr.forEach((str, i) => { + let h = headers[i] || 'col' + (i + 1); + let s = parseSentence$4(str); + s.text(cleanText(s.text())); + row[h] = s; + }); + return row; + }; //should we use the first row as a the headers? - /** - * This function removes some final characters from the sentence - * - * @private - * @param {string} line the wiki text for processing - * @returns {string} the processed string - */ - function postprocess(line) { - //remove empty parentheses (sometimes caused by removing templates) - line = line.replace(/\([,;: ]*\)/g, ''); //these semi-colons in parentheses are particularly troublesome + const firstRowHeader = function (rows) { + if (rows.length <= 3) { + return []; + } - line = line.replace(/\( *(; ?)+/g, '('); //dangling punctuation + let headers = rows[0].slice(0); + headers = headers.map(h => { + h = h.replace(/^! */, ''); + h = parseSentence$4(h).text(); + h = cleanText(h); + h = h.toLowerCase(); + return h; + }); + + for (let i = 0; i < headers.length; i += 1) { + if (headings$1.hasOwnProperty(headers[i])) { + rows.shift(); + return headers; + } + } + + return []; + }; //turn a {|...table string into an array of arrays + + + const parseTable$1 = function (wiki) { + let lines = wiki.replace(/\r/g, '').replace(/\n(\s*[^|!{\s])/g, ' $1') //remove unecessary newlines + .split(/\n/).map(l => l.trim()); + let rows = findRows(lines); + rows = rows.filter(r => r); + + if (rows.length === 0) { + return []; + } //remove non-header span rows + + + rows = removeMidSpans(rows); //support colspan, rowspan... + + rows = handleSpans(rows); //grab the header rows + + let headers = findHeaders(rows); + + if (!headers || headers.length <= 1) { + headers = firstRowHeader(rows); + let want = rows[rows.length - 1] || []; //try the second row + + if (headers.length <= 1 && want.length > 2) { + headers = firstRowHeader(rows.slice(1)); + + if (headers.length > 0) { + rows = rows.slice(2); //remove them + } + } + } //index each column by it's header + + + let table = rows.map(arr => { + return parseRow(arr, headers); + }); + return table; + }; + + var parse$i = parseTable$1; + + const encode$1 = encode$4; // + + const toJson$4 = function (tables, options) { + return tables.map(table => { + let row = {}; + Object.keys(table).forEach(k => { + row[k] = table[k].json(); //(they're sentence objects) + }); //encode them, for mongodb + + if (options.encode === true) { + row = encode$1.encodeObj(row); + } + + return row; + }); + }; + + var toJson_1$2 = toJson$4; + + const setDefaults$5 = setDefaults_1; + const toJson$3 = toJson_1$2; + const defaults$6 = {}; + + const normalize$1 = function () { + let key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + key = key.toLowerCase(); + key = key.replace(/[_-]/g, ' '); + key = key.replace(/\(.*?\)/, ''); + key = key.trim(); + return key; + }; + + const Table$1 = function (data) { + let wiki = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + Object.defineProperty(this, 'data', { + enumerable: false, + value: data + }); + Object.defineProperty(this, '_wiki', { + enumerable: false, + value: wiki + }); + }; + + const methods$4 = { + links(n) { + let links = []; + this.data.forEach(r => { + Object.keys(r).forEach(k => { + links = links.concat(r[k].links()); + }); + }); + + if (typeof n === 'string') { + //grab a link like .links('Fortnight') + n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it + + let link = links.find(o => o.page() === n); + return link === undefined ? [] : [link]; + } + + return links; + }, + + get(keys) { + // normalize mappings + let have = this.data[0] || {}; + let mapping = Object.keys(have).reduce((h, k) => { + h[normalize$1(k)] = k; + return h; + }, {}); // string gets a flat-list + + if (typeof keys === 'string') { + let key = normalize$1(keys); + key = mapping[key] || key; + return this.data.map(row => { + return row[key] ? row[key].text() : null; + }); + } // array gets obj-list + + + keys = keys.map(normalize$1).map(k => mapping[k] || k); + return this.data.map(row => { + return keys.reduce((h, k) => { + if (row[k]) { + h[k] = row[k].text(); + } else { + h[k] = ''; + } + + return h; + }, {}); + }); + }, + + keyValue(options) { + let rows = this.json(options); + rows.forEach(row => { + Object.keys(row).forEach(k => { + row[k] = row[k].text; + }); + }); + return rows; + }, + + json(options) { + options = setDefaults$5(options, defaults$6); + return toJson$3(this.data, options); + }, + + text() { + return ''; + }, + + wikitext() { + return this._wiki || ''; + } + + }; + methods$4.keyvalue = methods$4.keyValue; + methods$4.keyval = methods$4.keyValue; + Object.keys(methods$4).forEach(k => { + Table$1.prototype[k] = methods$4[k]; + }); + var Table_1 = Table$1; + + const parseTable = parse$i; + const Table = Table_1; //const table_reg = /\{\|[\s\S]+?\|\}/g; //the largest-cities table is ~70k chars. + + const openReg = /^\s*\{\|/; + const closeReg = /^\s*\|\}/; //tables can be recursive, so looky-here. + + const findTables = function (section) { + let list = []; + let wiki = section._wiki; + let lines = wiki.split('\n'); + let stack = []; + + for (let i = 0; i < lines.length; i += 1) { + //start a table + if (openReg.test(lines[i]) === true) { + stack.push(lines[i]); + continue; + } //close a table + + + if (closeReg.test(lines[i]) === true) { + stack[stack.length - 1] += '\n' + lines[i]; + let table = stack.pop(); + list.push(table); + continue; + } //keep-going on one + + + if (stack.length > 0) { + stack[stack.length - 1] += '\n' + lines[i]; + } + } //work-em together for a Table class + + + let tables = []; + list.forEach(str => { + if (str) { + //also re-remove a newline at the end of the table (awkward) + wiki = wiki.replace(str + '\n', ''); + wiki = wiki.replace(str, ''); + let data = parseTable(str); + + if (data && data.length > 0) { + tables.push(new Table(data, str)); + } + } + }); + + if (tables.length > 0) { + section._tables = tables; + } + + section._wiki = wiki; + }; + + var table = findTables; + + const setDefaults$4 = setDefaults_1; + const defaults$5 = { + sentences: true + }; + + const toJson$2 = function (p, options) { + options = setDefaults$4(options, defaults$5); + let data = {}; + + if (options.sentences === true) { + data.sentences = p.sentences().map(s => s.json(options)); + } + + return data; + }; + + var toJson_1$1 = toJson$2; + + const toJSON$3 = toJson_1$1; + const setDefaults$3 = setDefaults_1; + const defaults$4 = { + sentences: true, + lists: true, + images: true + }; + + const Paragraph$1 = function (data) { + Object.defineProperty(this, 'data', { + enumerable: false, + value: data + }); + }; + + const methods$3 = { + sentences: function () { + return this.data.sentences || []; + }, + references: function () { + return this.data.references; + }, + lists: function () { + return this.data.lists; + }, + + images() { + return this.data.images || []; + }, + + links: function (clue) { + let arr = []; + this.sentences().forEach(s => { + arr = arr.concat(s.links(clue)); + }); + + if (typeof clue === 'string') { + //grab a specific link like .links('Fortnight') + clue = clue.charAt(0).toUpperCase() + clue.substring(1); //titlecase it + + let link = arr.find(o => o.page() === clue); + return link === undefined ? [] : [link]; + } + + return arr || []; + }, + + interwiki() { + let arr = []; + this.sentences().forEach(s => { + arr = arr.concat(s.interwiki()); + }); + return arr || []; + }, + + text: function (options) { + options = setDefaults$3(options, defaults$4); + let str = this.sentences().map(s => s.text(options)).join(' '); + this.lists().forEach(list => { + str += '\n' + list.text(); + }); + return str; + }, + json: function (options) { + options = setDefaults$3(options, defaults$4); + return toJSON$3(this, options); + }, + wikitext: function () { + return this.data.wiki; + } + }; + methods$3.citations = methods$3.references; + Object.keys(methods$3).forEach(k => { + Paragraph$1.prototype[k] = methods$3[k]; + }); // aliases + + const singular$2 = { + sentences: 'sentence', + references: 'reference', + citation: 'citations', + lists: 'list', + images: 'image', + links: 'link' + }; + Object.keys(singular$2).forEach(k => { + let sing = singular$2[k]; + + Paragraph$1.prototype[sing] = function (clue) { + let arr = this[k](clue); + + if (typeof clue === 'number') { + return arr[clue]; + } + + return arr[0]; + }; + }); + var Paragraph_1 = Paragraph$1; + + const opener = '['; + const closer = ']'; + /** + * + * find all the pairs of '[[...[[..]]...]]' in the text + * used to properly root out recursive template calls, [[.. [[...]] ]] + * basically just adds open tags, and subtracts closing tags + * + * @private + * @param {string} text the text in which is searched in + * @returns {string[]} all the links in the text + */ + + function nested_find$1(text) { + let out = []; + let last = []; + const chars = text.split(''); + let open = 0; + + for (let i = 0; i < chars.length; i++) { + const c = text[i]; //increment open tag + + if (c === opener) { + open += 1; + } //decrement close tag + else if (c === closer) { + open -= 1; + + if (open < 0) { + open = 0; + } + } else if (last.length === 0) { + //If we're not inside of a pair of delimiters, we can discard the current letter. + //The return of this function is only used to extract images. + continue; + } + + last.push(c); + + if (open === 0 && last.length > 0) { + //first, fix botched parse + let open_count = 0; + let close_count = 0; + + for (let j = 0; j < last.length; j++) { + if (last[j] === opener) { + open_count++; + } else if (last[j] === closer) { + close_count++; + } + } //is it botched? + + + if (open_count > close_count) { + last.push(closer); + } //looks good, keep it + + + out.push(last.join('')); + last = []; + } + } + + return out; + } + + var nested_find_1 = nested_find$1; + + const i18n$3 = i18n$6; + const Image$4 = Image_1; + const parseTemplate$3 = toJSON$4; + const parseSentence$3 = _04Sentence.fromText; + const nested_find = nested_find_1; //regexes: + + const isFile = new RegExp('(' + i18n$3.images.join('|') + '):', 'i'); + let fileNames = "(".concat(i18n$3.images.join('|'), ")"); + const file_reg = new RegExp(fileNames + ':(.+?)[\\||\\]]', 'iu'); //style directives for Wikipedia:Extended_image_syntax + + const imgLayouts = { + thumb: true, + thumbnail: true, + border: true, + right: true, + left: true, + center: true, + top: true, + bottom: true, + none: true, + upright: true, + baseline: true, + middle: true, + sub: true, + super: true + }; //images are usually [[image:my_pic.jpg]] + + const oneImage = function (img, doc) { + let m = img.match(file_reg); + + if (m === null || !m[2]) { + return null; + } + + let file = "".concat(m[1], ":").concat(m[2] || ''); + file = file.trim(); //titlecase it + + let title = file.charAt(0).toUpperCase() + file.substring(1); //spaces to underscores + + title = title.replace(/ /g, '_'); + + if (title) { + let obj = { + file: file, + lang: doc._lang, + domain: doc._domain, + wiki: img + }; //try to grab other metadata, too + + img = img.replace(/^\[\[/, ''); + img = img.replace(/\]\]$/, ''); //https://en.wikipedia.org/wiki/Wikipedia:Extended_image_syntax + //- [[File:Name|Type|Border|Location|Alignment|Size|link=Link|alt=Alt|lang=Langtag|Caption]] + + let imgData = parseTemplate$3(img); + let arr = imgData.list || []; //parse-out alt text, if explicitly given + + if (imgData.alt) { + obj.alt = imgData.alt; + } //remove 'thumb' and things + + + arr = arr.filter(str => imgLayouts.hasOwnProperty(str) === false); + + if (arr[arr.length - 1]) { + obj.caption = parseSentence$3(arr[arr.length - 1]); + } + + return new Image$4(obj); + } + + return null; + }; + + const parseImages = function (paragraph, doc) { + let wiki = paragraph.wiki; //parse+remove scary '[[ [[]] ]]' stuff + + let matches = nested_find(wiki); + matches.forEach(function (s) { + if (isFile.test(s) === true) { + paragraph.images = paragraph.images || []; + let img = oneImage(s, doc); + + if (img) { + paragraph.images.push(img); + } + + wiki = wiki.replace(s, ''); + } + }); + paragraph.wiki = wiki; + }; + + var image = parseImages; + + const setDefaults$2 = setDefaults_1; + const defaults$3 = {}; + + const toText$2 = (list, options) => { + return list.map(s => { + let str = s.text(options); + return ' * ' + str; + }).join('\n'); + }; + + const List$1 = function (data) { + let wiki = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + Object.defineProperty(this, 'data', { + enumerable: false, + value: data + }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); + }; + + const methods$2 = { + lines() { + return this.data; + }, + + links(clue) { + let links = []; + this.lines().forEach(s => { + links = links.concat(s.links()); + }); + + if (typeof clue === 'string') { + //grab a link like .links('Fortnight') + clue = clue.charAt(0).toUpperCase() + clue.substring(1); //titlecase it + + let link = links.find(o => o.page() === clue); + return link === undefined ? [] : [link]; + } + + return links; + }, + + json(options) { + options = setDefaults$2(options, defaults$3); + return this.lines().map(s => s.json(options)); + }, + + text() { + return toText$2(this.data); + }, + + wikitext() { + return this.wiki || ''; + } + + }; + Object.keys(methods$2).forEach(k => { + List$1.prototype[k] = methods$2[k]; + }); + var List_1 = List$1; + + const List = List_1; + const parseSentence$2 = _04Sentence.fromText; + const list_reg = /^[#*:;|]+/; + const bullet_reg = /^\*+[^:,|]{4}/; + const number_reg = /^ ?#[^:,|]{4}/; + const has_word = /[a-z_0-9\]}]/i; // does it start with a bullet point or something? + + const isList = function (line) { + return list_reg.test(line) || bullet_reg.test(line) || number_reg.test(line); + }; //make bullets/numbers into human-readable *'s + + + const cleanList = function (list) { + let number = 1; + list = list.filter(l => l); + + for (let i = 0; i < list.length; i++) { + let line = list[i]; //add # numberings formatting + + if (line.match(number_reg)) { + line = line.replace(/^ ?#*/, number + ') '); + line = line + '\n'; + number += 1; + } else if (line.match(list_reg)) { + number = 1; + line = line.replace(list_reg, ''); + } + + list[i] = parseSentence$2(line); + } + + return list; + }; + + const grabList = function (lines, i) { + let sub = []; + + for (let o = i; o < lines.length; o++) { + if (isList(lines[o])) { + sub.push(lines[o]); + } else { + break; + } + } + + sub = sub.filter(a => a && has_word.test(a)); + sub = cleanList(sub); + return sub; + }; + + const parseList = function (paragraph) { + let wiki = paragraph.wiki; + let lines = wiki.split(/\n/g); + let lists = []; + let theRest = []; + + for (let i = 0; i < lines.length; i++) { + if (isList(lines[i])) { + let sub = grabList(lines, i); + + if (sub.length > 0) { + lists.push(sub); + i += sub.length - 1; + } + } else { + theRest.push(lines[i]); + } + } + + paragraph.lists = lists.map(l => new List(l, wiki)); + paragraph.wiki = theRest.join('\n'); + }; + + var list$1 = parseList; + + const Paragraph = Paragraph_1; + const parseSentences = _04Sentence.byParagraph; + const twoNewLines = /\r?\n\r?\n/; + const parse$h = { + image: image, + list: list$1 + }; + + const parseParagraphs = function (section, doc) { + let wiki = section._wiki; + let paragraphs = wiki.split(twoNewLines); //don't create empty paragraphs + + paragraphs = paragraphs.filter(p => p && p.trim().length > 0); + paragraphs = paragraphs.map(str => { + let paragraph = { + wiki: str, + lists: [], + sentences: [], + images: [] + }; //parse the lists + + parse$h.list(paragraph); //parse images + + parse$h.image(paragraph, doc); //parse the sentences + + parseSentences(paragraph); + return new Paragraph(paragraph); + }); + section._wiki = wiki; + section._paragraphs = paragraphs; + }; + + var _03Paragraph = parseParagraphs; + + const open = '{'; + const close = '}'; //grab all first-level recursions of '{{...}}' + + const findFlat$1 = function (wiki) { + let depth = 0; + let list = []; + let carry = []; + + for (let i = wiki.indexOf(open); i !== -1 && i < wiki.length; depth > 0 ? i++ : i = wiki.indexOf(open, i + 1)) { + let c = wiki[i]; //open it + + if (c === open) { + depth += 1; + } //close it + + + if (depth > 0) { + if (c === close) { + depth -= 1; + + if (depth === 0) { + carry.push(c); + let tmpl = carry.join(''); + carry = []; //last check + + if (/\{\{/.test(tmpl) && /\}\}/.test(tmpl)) { + list.push(tmpl); + } + + continue; + } + } //require two '{{' to open it + + + if (depth === 1 && c !== open && c !== close) { + depth = 0; + carry = []; + continue; + } + + carry.push(c); + } + } + + return list; + }; + + var _02Flat = findFlat$1; + + const fmtName = _fmtName; //get the name of the template + //templates are usually '{{name|stuff}}' + + const getName$1 = function (tmpl) { + let name = null; //{{name|foo}} + + if (/^\{\{[^\n]+\|/.test(tmpl)) { + name = (tmpl.match(/^\{\{(.+?)\|/) || [])[1]; + } else if (tmpl.indexOf('\n') !== -1) { + // {{name \n... + name = (tmpl.match(/^\{\{(.+)\n/) || [])[1]; + } else { + //{{name here}} + name = (tmpl.match(/^\{\{(.+?)\}\}$/) || [])[1]; + } + + if (name) { + name = name.replace(/:.*/, ''); + name = fmtName(name); + } + + return name || null; + }; + + var _getName = getName$1; + + const findFlat = _02Flat; + const getName = _getName; + const hasTemplate = /\{\{/; + + const parseTemplate$2 = function (tmpl) { + // this is some unexplained Lua thing + tmpl = tmpl.replace(/#invoke:/, ''); + return { + body: tmpl, + name: getName(tmpl), + children: [] + }; + }; + + const doEach = function (obj) { + // peel-off top-level + let wiki = obj.body.substr(2); + wiki = wiki.replace(/\}\}$/, ''); // get our child templates + + obj.children = findFlat(wiki); + obj.children = obj.children.map(parseTemplate$2); + + if (obj.children.length === 0) { + return obj; + } // recurse through children + + + obj.children.forEach(ch => { + let inside = ch.body.substr(2); + + if (hasTemplate.test(inside)) { + return doEach(ch); //keep going + } + + return null; + }); + return obj; + }; // return a nested structure of all templates + + + const findTemplates$1 = function (wiki) { + let list = findFlat(wiki); + list = list.map(parseTemplate$2); + list = list.map(doEach); + return list; + }; + + var _01Nested = findTemplates$1; + + const list = [//https://en.wikipedia.org/wiki/category:templates_with_no_visible_output + 'anchor', 'defaultsort', 'use list-defined references', 'void', //https://en.wikipedia.org/wiki/Category:Protection_templates + 'pp', 'pp-move-indef', 'pp-semi-indef', 'pp-vandalism', //https://en.wikipedia.org/wiki/Template:R + 'r', //out-of-scope still - https://en.wikipedia.org/wiki/Template:Tag + '#tag', //https://en.wikipedia.org/wiki/Template:Navboxes + // 'navboxes', + // 'reflist', + // 'ref-list', + 'div col', // 'authority control', + //https://en.wikipedia.org/wiki/Template:Citation_needed + // 'better source', + // 'citation needed', + // 'clarify', + // 'cite quote', + // 'dead link', + // 'by whom', + // 'dubious', + // 'when', + // 'who', + // 'quantify', + // 'refimprove', + // 'weasel inline', + //https://en.wikipedia.org/wiki/Template:End + 'pope list end', 'shipwreck list end', 'starbox end', 'end box', 'end', 's-end']; + const ignore$1 = list.reduce((h, str) => { + h[str] = true; + return h; + }, {}); + var _ignore = ignore$1; + + var _infoboxes = { + 'gnf protein box': true, + 'automatic taxobox': true, + 'chembox ': true, + editnotice: true, + geobox: true, + hybridbox: true, + ichnobox: true, + infraspeciesbox: true, + mycomorphbox: true, + oobox: true, + 'paraphyletic group': true, + speciesbox: true, + subspeciesbox: true, + 'starbox short': true, + taxobox: true, + nhlteamseason: true, + 'asian games bid': true, + 'canadian federal election results': true, + 'dc thomson comic strip': true, + 'daytona 24 races': true, + edencharacter: true, + 'moldova national football team results': true, + samurai: true, + protein: true, + 'sheet authority': true, + 'order-of-approx': true, + 'bacterial labs': true, + 'medical resources': true, + ordination: true, + 'hockey team coach': true, + 'hockey team gm': true, + 'pro hockey team': true, + 'hockey team player': true, + 'hockey team start': true, + mlbbioret: true + }; + + const i18n$2 = i18n$6; + const infoboxes$1 = _infoboxes; + const i18nReg = new RegExp('^(subst.)?(' + i18n$2.infoboxes.join('|') + ')[: \n]', 'i'); //some looser ones + + const startReg = /^infobox /i; + const endReg = / infobox$/i; + const yearIn = /^year in [A-Z]/i; //some known ones from + //https://en.wikipedia.org/wiki/Wikipedia:List_of_infoboxes + //and https://en.wikipedia.org/wiki/Category:Infobox_templates + + const isInfobox = function (name) { + //known + if (infoboxes$1.hasOwnProperty(name) === true) { + return true; + } + + if (i18nReg.test(name)) { + return true; + } + + if (startReg.test(name) || endReg.test(name)) { + return true; + } //these are also infoboxes: 'Year in Belarus' + + + if (yearIn.test(name)) { + return true; + } + + return false; + }; //turns template data into good infobox data + + + const fmtInfobox = function () { + let obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + let m = obj.template.match(i18nReg); + let type = obj.template; + + if (m && m[0]) { + type = type.replace(m[0], ''); + } + + type = type.trim(); + let infobox = { + template: 'infobox', + type: type, + data: obj + }; + delete infobox.data.template; //already have this. + + delete infobox.data.list; //just in case! + + return infobox; + }; + + var _infobox = { + isInfobox: isInfobox, + format: fmtInfobox + }; + + const languages$2 = languages$4; //aliases + + let aliases$1 = { + imdb: 'imdb name', + 'imdb episodess': 'imdb episode', + localday: 'currentday', + localdayname: 'currentdayname', + localyear: 'currentyear', + 'birth date based on age at death': 'birth based on age as of date', + 'bare anchored list': 'anchored list', + cvt: 'convert', + cricon: 'flagicon', + sfrac: 'frac', + sqrt: 'radic', + 'unreferenced section': 'unreferenced', + redir: 'redirect', + sisterlinks: 'sister project links', + 'main article': 'main' + }; //multiple aliases + + let multi = { + date: ['byline', 'dateline'], + //wikinews + citation: ['cite', 'source', 'source-pr', 'source-science'], + flagcountry: ['cr', 'cr-rt'], + trunc: ['str left', 'str crop'], + percentage: ['pct', 'percentage'], + rnd: ['rndfrac', 'rndnear'], + abbr: ['tooltip', 'abbrv', 'define'], + sfn: ['sfnref', 'harvid', 'harvnb'], + 'birth date and age': ['death date and age', 'bda'], + currentmonth: ['localmonth', 'currentmonthname', 'currentmonthabbrev'], + currency: ['monnaie', 'unité', 'nombre', 'nb', 'iso4217'], + coord: ['coor', 'coor title dms', 'coor title dec', 'coor dms', 'coor dm', 'coor dec'], + 'columns-list': ['cmn', 'col-list', 'columnslist', 'collist'], + nihongo: ['nihongo2', 'nihongo3', 'nihongo-s', 'nihongo foot'], + plainlist: ['flatlist', 'plain list'], + 'winning percentage': ['winpct', 'winperc'], + 'collapsible list': ['nblist', 'nonbulleted list', 'ubl', 'ublist', 'ubt', 'unbullet', 'unbulleted list', 'unbulleted', 'unbulletedlist', 'vunblist'], + 'election box begin': ['election box begin no change', 'election box begin no party', 'election box begin no party no change', 'election box inline begin', 'election box inline begin no change'], + 'election box candidate': ['election box candidate for alliance', 'election box candidate minor party', 'election box candidate no party link no change', 'election box candidate with party link', 'election box candidate with party link coalition 1918', 'election box candidate with party link no change', 'election box inline candidate', 'election box inline candidate no change', 'election box inline candidate with party link', 'election box inline candidate with party link no change', 'election box inline incumbent'], + '4teambracket': ['2teambracket', '4team2elimbracket', '8teambracket', '16teambracket', '32teambracket', '4roundbracket-byes', 'cwsbracket', 'nhlbracket', 'nhlbracket-reseed', '4teambracket-nhl', '4teambracket-ncaa', '4teambracket-mma', '4teambracket-mlb', '16teambracket-two-reseeds', '8teambracket-nhl', '8teambracket-mlb', '8teambracket-ncaa', '8teambracket-afc', '8teambracket-afl', '8teambracket-tennis3', '8teambracket-tennis5', '16teambracket-nhl', '16teambracket-nhl divisional', '16teambracket-nhl-reseed', '16teambracket-nba', '16teambracket-swtc', '16teambracket-afc', '16teambracket-tennis3', '16teambracket-tennis5'], + start: ['end', 'birth', 'death', 'start date', 'end date', 'birth date', 'death date', 'start date and age', 'end date and age', 'dob'], + 'start-date': ['end-date', 'birth-date', 'death-date', 'birth-date and age', 'birth-date and given age', 'death-date and age', 'death-date and given age'], + tl: ['lts', 't', 'tfd links', 'tiw', 'tltt', 'tetl', 'tsetl', 'ti', 'tic', 'tiw', 'tlt', 'ttl', 'twlh', 'tl2', 'tlu', 'demo', 'hatnote', 'xpd', 'para', 'elc', 'xtag', 'mli', 'mlix', '#invoke', 'url' //https://en.wikipedia.org/wiki/Template:URL + ] + }; // - other languages - + // Polish, {{IPAc-pl}} {{IPAc-pl|'|sz|cz|e|ć|i|n}} → [ˈʂt͡ʂɛt͡ɕin] + // Portuguese, {{IPAc-pt}} {{IPAc-pt|p|o|<|r|t|u|'|g|a|l|lang=pt}} and {{IPAc-pt|b|r|a|'|s|i|l|lang=br}} → [puɾtuˈɣaɫ] and [bɾaˈsiw] + + Object.keys(languages$2).forEach(lang => { + aliases$1['ipa-' + lang] = 'ipa'; + aliases$1['ipac-' + lang] = 'ipac'; + }); // add each alias in + + Object.keys(multi).forEach(k => { + multi[k].forEach(str => { + aliases$1[str] = k; + }); + }); + var aliases_1 = aliases$1; + + var hardcoded = { + '·': '·', + dot: '·', + middot: '·', + '•': ' • ', + ',': ',', + '1/2': '1⁄2', + '1/3': '1⁄3', + '2/3': '2⁄3', + '1/4': '1⁄4', + '3/4': '3⁄4', + '–': '–', + ndash: '–', + 'en dash': '–', + 'spaced ndash': ' – ', + '—': '—', + mdash: '—', + 'em dash': '—', + 'number sign': '#', + ibeam: 'I', + '&': '&', + ';': ';', + ampersand: '&', + snds: ' – ', + snd: ' – ', + '^': ' ', + '!': '|', + '\\': ' /', + '`': '`', + '=': '=', + bracket: '[', + '[': '[', + '*': '*', + asterisk: '*', + 'long dash': '———', + clear: '\n\n', + 'h.': 'ḥ', + profit: '▲', + loss: '▼', + gain: '▲' + }; + + const languages$1 = languages$4; //grab the first, second or third pipe.. + + let templates$b = { + p1: 0, + p2: 1, + p3: 2, + resize: 1, + //https://en.wikipedia.org/wiki/Template:Resize + lang: 1, + 'rtl-lang': 1, + l: 2, + h: 1, + //https://en.wikipedia.org/wiki/Template:Hover_title + sort: 1 //https://en.wikipedia.org/wiki/Template:Sort + + }; //templates that we simply grab their insides as plaintext + + let zeros = ['defn', 'lino', //https://en.wikipedia.org/wiki/Template:Linum + 'finedetail', //https://en.wikipedia.org/wiki/Template:Finedetail + 'nobold', 'noitalic', 'nocaps', 'vanchor', //https://en.wikipedia.org/wiki/Template:Visible_anchor + 'rnd', 'date', //Explictly-set dates - https://en.wikipedia.org/wiki/Template:Date + 'taste', 'monthname', 'baseball secondary style', 'lang-de', 'nowrap', 'nobr', 'big', 'cquote', 'pull quote', 'small', 'smaller', 'midsize', 'larger', 'big', 'kbd', 'bigger', 'large', 'mono', 'strongbad', 'stronggood', 'huge', 'xt', 'xt2', '!xt', 'xtn', 'xtd', 'dc', 'dcr', 'mxt', '!mxt', 'mxtn', 'mxtd', 'bxt', '!bxt', 'bxtn', 'bxtd', 'delink', //https://en.wikipedia.org/wiki/Template:Delink + 'pre', 'var', 'mvar', 'pre2', 'code']; + zeros.forEach(k => { + templates$b[k] = 0; + }); //https://en.wikipedia.org/wiki/Category:Lang-x_templates + + Object.keys(languages$1).forEach(k => { + templates$b['lang-' + k] = 0; + }); + var shorthand$1 = templates$b; + + const languages = languages$4; //simply num/denom * 100 + + const percentage = function (obj) { + if (!obj.numerator && !obj.denominator) { + return null; + } + + let perc = Number(obj.numerator) / Number(obj.denominator); + perc *= 100; + let dec = Number(obj.decimals); + + if (isNaN(dec)) { + dec = 1; + } + + perc = perc.toFixed(dec); + return Number(perc); + }; + + const toNumber = function () { + let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + + if (typeof str === 'number') { + return str; + } + + str = str.replace(/,/g, ''); + str = str.replace(/−/g, '-'); + let num = Number(str); + + if (isNaN(num)) { + return str; + } + + return num; + }; + + const getLang = function (name) { + //grab the language from the template name - 'ipa-de' + let lang = name.match(/ipac?-(.+)/); + + if (lang !== null) { + if (languages.hasOwnProperty(lang[1]) === true) { + return languages[lang[1]].english_title; + } + + return lang[1]; + } + + return null; + }; + + const titlecase$1 = str => { + return str.charAt(0).toUpperCase() + str.substring(1); + }; + + const sisterProjects = { + wikt: 'wiktionary', + commons: 'commons', + c: 'commons', + commonscat: 'commonscat', + n: 'wikinews', + q: 'wikiquote', + s: 'wikisource', + a: 'wikiauthor', + b: 'wikibooks', + voy: 'wikivoyage', + v: 'wikiversity', + d: 'wikidata', + species: 'wikispecies', + m: 'meta', + mw: 'mediawiki' + }; + var _lib$3 = { + titlecase: titlecase$1, + sisterProjects: sisterProjects, + getLang: getLang, + percentage: percentage, + toNumber: toNumber + }; + + const parse$g = toJSON$4; + const strip$1 = _strip; + const lib$3 = _lib$3; + var functions$2 = { + //https://en.wikipedia.org/wiki/Template:Ra + ra: tmpl => { + let obj = parse$g(tmpl, ['hours', 'minutes', 'seconds']); + return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); + }, + //https://en.wikipedia.org/wiki/Template:Deg2HMS + deg2hms: tmpl => { + //this template should do the conversion + let obj = parse$g(tmpl, ['degrees']); + return (obj.degrees || '') + '°'; + }, + hms2deg: tmpl => { + //this template should do the conversion too + let obj = parse$g(tmpl, ['hours', 'minutes', 'seconds']); + return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); + }, + decdeg: tmpl => { + //this template should do the conversion too + let obj = parse$g(tmpl, ['deg', 'min', 'sec', 'hem', 'rnd']); + return (obj.deg || obj.degrees) + '°'; + }, + //https://en.wikipedia.org/wiki/Template:Sortname + sortname: tmpl => { + let order = ['first', 'last', 'target', 'sort']; + let obj = parse$g(tmpl, order); + let name = "".concat(obj.first || '', " ").concat(obj.last || ''); + name = name.trim(); + + if (obj.nolink) { + return obj.target || name; + } + + if (obj.dab) { + name += " (".concat(obj.dab, ")"); + + if (obj.target) { + obj.target += " (".concat(obj.dab, ")"); + } + } + + if (obj.target) { + return "[[".concat(obj.target, "|").concat(name, "]]"); + } + + return "[[".concat(name, "]]"); + }, + // https://en.wikipedia.org/wiki/Template:First_word + 'first word': tmpl => { + let obj = parse$g(tmpl, ['text']); + let str = obj.text; + + if (obj.sep) { + return str.split(obj.sep)[0]; + } + + return str.split(' ')[0]; + }, + trunc: tmpl => { + let order = ['str', 'len']; + let obj = parse$g(tmpl, order); + return obj.str.substr(0, obj.len); + }, + 'str mid': tmpl => { + let order = ['str', 'start', 'end']; + let obj = parse$g(tmpl, order); + let start = parseInt(obj.start, 10) - 1; + let end = parseInt(obj.end, 10); + return obj.str.substr(start, end); + }, + reign: tmpl => { + let order = ['start', 'end']; + let obj = parse$g(tmpl, order); + return "(r. ".concat(obj.start, " \u2013 ").concat(obj.end, ")"); + }, + circa: tmpl => { + let obj = parse$g(tmpl, ['year']); + return "c.\u2009".concat(obj.year); + }, + // https://en.wikipedia.org/wiki/Template:Decade_link + 'decade link': tmpl => { + let obj = parse$g(tmpl, ['year']); + return "".concat(obj.year, "|").concat(obj.year, "s"); + }, + // https://en.wikipedia.org/wiki/Template:Decade + decade: tmpl => { + let obj = parse$g(tmpl, ['year']); + let year = Number(obj.year); + year = parseInt(year / 10, 10) * 10; // round to decade + + return "".concat(year, "s"); + }, + // https://en.wikipedia.org/wiki/Template:Century + century: tmpl => { + let obj = parse$g(tmpl, ['year']); + let year = Number(obj.year); + year = parseInt(year / 100, 10) + 1; + return "".concat(year); + }, + //https://en.wikipedia.org/wiki/Template:Radic + radic: tmpl => { + let order = ['after', 'before']; + let obj = parse$g(tmpl, order); + return "".concat(obj.before || '', "\u221A").concat(obj.after || ''); + }, + 'medical cases chart/row': tmpl => { + // Deprecated template; we keep it. + return tmpl; + }, + //https://en.wikipedia.org/wiki/Template:OldStyleDate + oldstyledate: tmpl => { + let order = ['date', 'year']; + let obj = parse$g(tmpl, order); + return obj.year ? obj.date + ' ' + obj.year : obj.date; + }, + //formatting things - https://en.wikipedia.org/wiki/Template:Nobold + braces: tmpl => { + let obj = parse$g(tmpl, ['text']); + let attrs = ''; + + if (obj.list) { + attrs = '|' + obj.list.join('|'); + } + + return '{{' + (obj.text || '') + attrs + '}}'; + }, + hlist: tmpl => { + let obj = parse$g(tmpl); + obj.list = obj.list || []; + return obj.list.join(' · '); + }, + pagelist: tmpl => { + let arr = parse$g(tmpl).list || []; + return arr.join(', '); + }, + //actually rendering these links removes the text. + //https://en.wikipedia.org/wiki/Template:Catlist + catlist: tmpl => { + let arr = parse$g(tmpl).list || []; + return arr.join(', '); + }, + //https://en.wikipedia.org/wiki/Template:Br_separated_entries + 'br separated entries': tmpl => { + let arr = parse$g(tmpl).list || []; + return arr.join('\n\n'); + }, + 'comma separated entries': tmpl => { + let arr = parse$g(tmpl).list || []; + return arr.join(', '); + }, + //https://en.wikipedia.org/wiki/Template:Bare_anchored_list + 'anchored list': tmpl => { + let arr = parse$g(tmpl).list || []; + arr = arr.map((str, i) => "".concat(i + 1, ". ").concat(str)); + return arr.join('\n\n'); + }, + 'bulleted list': tmpl => { + let arr = parse$g(tmpl).list || []; + arr = arr.filter(f => f); + arr = arr.map(str => '• ' + str); + return arr.join('\n\n'); + }, + //a strange, newline-based list - https://en.wikipedia.org/wiki/Template:Plainlist + plainlist: tmpl => { + tmpl = strip$1(tmpl); + let arr = tmpl.split('|').slice(1); //remove the title + + arr = arr.join('|').split(/\n ?\* ?/); //split on newline + + arr = arr.filter(s => s); + return arr.join('\n\n'); + }, + //https://en.wikipedia.org/wiki/Template:Term + term: tmpl => { + let obj = parse$g(tmpl, ['term']); + return "".concat(obj.term, ":"); + }, + linum: tmpl => { + let obj = parse$g(tmpl, ['num', 'text']); + return "".concat(obj.num, ". ").concat(obj.text); + }, + 'block indent': tmpl => { + let obj = parse$g(tmpl); + + if (obj['1']) { + return '\n' + obj['1'] + '\n'; + } + + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Lbs + lbs: tmpl => { + let obj = parse$g(tmpl, ['text']); + return "[[".concat(obj.text, " Lifeboat Station|").concat(obj.text, "]]"); + }, + //Foo-class + lbc: tmpl => { + let obj = parse$g(tmpl, ['text']); + return "[[".concat(obj.text, "-class lifeboat|").concat(obj.text, "-class]]"); + }, + lbb: tmpl => { + let obj = parse$g(tmpl, ['text']); + return "[[".concat(obj.text, "-class lifeboat|").concat(obj.text, "]]"); + }, + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + '#dateformat': tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = parse$g(tmpl, ['date', 'format']); + return obj.date; + }, + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + lc: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = parse$g(tmpl, ['text']); + return (obj.text || '').toLowerCase(); + }, + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + uc: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = parse$g(tmpl, ['text']); + return (obj.text || '').toUpperCase(); + }, + lcfirst: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let text = parse$g(tmpl, ['text']).text; + + if (!text) { + return ''; + } + + return text[0].toLowerCase() + text.substr(1); + }, + ucfirst: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let text = parse$g(tmpl, ['text']).text; + + if (!text) { + return ''; + } + + return text[0].toUpperCase() + text.substr(1); + }, + padleft: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = parse$g(tmpl, ['text', 'num']); + let text = obj.text || ''; + return text.padStart(obj.num, obj.str || '0'); + }, + padright: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = parse$g(tmpl, ['text', 'num']); + let text = obj.text || ''; + return text.padEnd(obj.num, obj.str || '0'); + }, + //https://en.wikipedia.org/wiki/Template:Abbrlink + abbrlink: tmpl => { + let obj = parse$g(tmpl, ['abbr', 'page']); + + if (obj.page) { + return "[[".concat(obj.page, "|").concat(obj.abbr, "]]"); + } + + return "[[".concat(obj.abbr, "]]"); + }, + // https://en.wikipedia.org/wiki/Template:Own + own: tmpl => { + let obj = parse$g(tmpl, ['author']); + let str = 'Own work'; + + if (obj.author) { + str += ' by ' + obj.author; + } + + return str; + }, + //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting + formatnum: tmpl => { + tmpl = tmpl.replace(/:/, '|'); + let obj = parse$g(tmpl, ['number']); + let str = obj.number || ''; + str = str.replace(/,/g, ''); + let num = Number(str); + return num.toLocaleString() || ''; + }, + //https://en.wikipedia.org/wiki/Template:Frac + frac: tmpl => { + let order = ['a', 'b', 'c']; + let obj = parse$g(tmpl, order); + + if (obj.c) { + return "".concat(obj.a, " ").concat(obj.b, "/").concat(obj.c); + } + + if (obj.b) { + return "".concat(obj.a, "/").concat(obj.b); + } + + return "1/".concat(obj.b); + }, + //https://en.wikipedia.org/wiki/Template:Convert#Ranges_of_values + convert: tmpl => { + let order = ['num', 'two', 'three', 'four']; + let obj = parse$g(tmpl, order); //todo: support plural units + + if (obj.two === '-' || obj.two === 'to' || obj.two === 'and') { + if (obj.four) { + return "".concat(obj.num, " ").concat(obj.two, " ").concat(obj.three, " ").concat(obj.four); + } + + return "".concat(obj.num, " ").concat(obj.two, " ").concat(obj.three); + } + + return "".concat(obj.num, " ").concat(obj.two); + }, + // Large number of aliases - https://en.wikipedia.org/wiki/Template:Tl + tl: tmpl => { + let order = ['first', 'second']; + let obj = parse$g(tmpl, order); + return obj.second || obj.first; + }, + //this one's a little different + won: tmpl => { + let data = parse$g(tmpl, ['text']); + return data.place || data.text || lib$3.titlecase(data.template); + }, + //a convulated way to make a xml tag - https://en.wikipedia.org/wiki/Template:Tag + tag: tmpl => { + let obj = parse$g(tmpl, ['tag', 'open']); + const ignore = { + span: true, + div: true, + p: true + }; //pair, empty, close, single + + if (!obj.open || obj.open === 'pair') { + //just skip generating spans and things.. + if (ignore[obj.tag]) { + return obj.content || ''; + } + + return "<".concat(obj.tag, " ").concat(obj.attribs || '', ">").concat(obj.content || '', ""); + } + + return ''; + }, + //dumb inflector - https://en.wikipedia.org/wiki/Template:Plural + plural: tmpl => { + tmpl = tmpl.replace(/plural:/, 'plural|'); + let order = ['num', 'word']; + let obj = parse$g(tmpl, order); + let num = Number(obj.num); + let word = obj.word; + + if (num !== 1) { + if (/.y$/.test(word)) { + word = word.replace(/y$/, 'ies'); + } else { + word += 's'; + } + } + + return num + ' ' + word; + }, + //https://en.wikipedia.org/wiki/Template:DEC + dec: tmpl => { + let obj = parse$g(tmpl, ['degrees', 'minutes', 'seconds']); + let str = (obj.degrees || 0) + '°'; + + if (obj.minutes) { + str += obj.minutes + "\u2032"; + } + + if (obj.seconds) { + str += obj.seconds + '″'; + } + + return str; + }, + //https://en.wikipedia.org/wiki/Template:Val + val: tmpl => { + let obj = parse$g(tmpl, ['number', 'uncertainty']); + let num = obj.number; + + if (num && Number(num)) { + num = Number(num).toLocaleString(); + } + + let str = num || ''; //prefix/suffix + + if (obj.p) { + str = obj.p + str; + } + + if (obj.s) { + str = obj.s + str; + } //add units, too + + + if (obj.u || obj.ul || obj.upl) { + str = str + ' ' + (obj.u || obj.ul || obj.upl); + } + + return str; + }, + //{{percentage | numerator | denominator | decimals to round to (zero or greater) }} + percentage: tmpl => { + let obj = parse$g(tmpl, ['numerator', 'denominator', 'decimals']); + let num = lib$3.percentage(obj); + + if (num === null) { + return ''; + } + + return num + '%'; + }, + // {{Percent-done|done=N|total=N|digits=N}} + 'percent-done': tmpl => { + let obj = parse$g(tmpl, ['done', 'total', 'digits']); + let num = lib$3.percentage({ + numerator: obj.done, + denominator: obj.total, + decimals: obj.digits + }); + + if (num === null) { + return ''; + } + + return "".concat(obj.done, " (").concat(num, "%) done"); + } + }; + + var flags$2 = [['🇦🇩', 'and', 'andorra'], ['🇦🇪', 'are', 'united arab emirates'], ['🇦🇫', 'afg', 'afghanistan'], ['🇦🇬', 'atg', 'antigua and barbuda'], ['🇦🇮', 'aia', 'anguilla'], ['🇦🇱', 'alb', 'albania'], ['🇦🇲', 'arm', 'armenia'], ['🇦🇴', 'ago', 'angola'], ['🇦🇶', 'ata', 'antarctica'], ['🇦🇷', 'arg', 'argentina'], ['🇦🇸', 'asm', 'american samoa'], ['🇦🇹', 'aut', 'austria'], ['🇦🇺', 'aus', 'australia'], ['🇦🇼', 'abw', 'aruba'], ['🇦🇽', 'ala', 'åland islands'], ['🇦🇿', 'aze', 'azerbaijan'], ['🇧🇦', 'bih', 'bosnia and herzegovina'], ['🇧🇧', 'brb', 'barbados'], ['🇧🇩', 'bgd', 'bangladesh'], ['🇧🇪', 'bel', 'belgium'], ['🇧🇫', 'bfa', 'burkina faso'], ['🇧🇬', 'bgr', 'bulgaria'], ['🇧🇬', 'bul', 'bulgaria'], //dupe + ['🇧🇭', 'bhr', 'bahrain'], ['🇧🇮', 'bdi', 'burundi'], ['🇧🇯', 'ben', 'benin'], ['🇧🇱', 'blm', 'saint barthélemy'], ['🇧🇲', 'bmu', 'bermuda'], ['🇧🇳', 'brn', 'brunei darussalam'], ['🇧🇴', 'bol', 'bolivia'], ['🇧🇶', 'bes', 'bonaire, sint eustatius and saba'], ['🇧🇷', 'bra', 'brazil'], ['🇧🇸', 'bhs', 'bahamas'], ['🇧🇹', 'btn', 'bhutan'], ['🇧🇻', 'bvt', 'bouvet island'], ['🇧🇼', 'bwa', 'botswana'], ['🇧🇾', 'blr', 'belarus'], ['🇧🇿', 'blz', 'belize'], ['🇨🇦', 'can', 'canada'], ['🇨🇨', 'cck', 'cocos (keeling) islands'], ['🇨🇩', 'cod', 'congo'], ['🇨🇫', 'caf', 'central african republic'], ['🇨🇬', 'cog', 'congo'], ['🇨🇭', 'che', 'switzerland'], ['🇨🇮', 'civ', 'côte d\'ivoire'], ['🇨🇰', 'cok', 'cook islands'], ['🇨🇱', 'chl', 'chile'], ['🇨🇲', 'cmr', 'cameroon'], ['🇨🇳', 'chn', 'china'], ['🇨🇴', 'col', 'colombia'], ['🇨🇷', 'cri', 'costa rica'], ['🇨🇺', 'cub', 'cuba'], ['🇨🇻', 'cpv', 'cape verde'], ['🇨🇼', 'cuw', 'curaçao'], ['🇨🇽', 'cxr', 'christmas island'], ['🇨🇾', 'cyp', 'cyprus'], ['🇨🇿', 'cze', 'czech republic'], ['🇩🇪', 'deu', 'germany'], ['🇩🇪', 'ger', 'germany'], //alias + ['🇩🇯', 'dji', 'djibouti'], ['🇩🇰', 'dnk', 'denmark'], ['🇩🇲', 'dma', 'dominica'], ['🇩🇴', 'dom', 'dominican republic'], ['🇩🇿', 'dza', 'algeria'], ['🇪🇨', 'ecu', 'ecuador'], ['🇪🇪', 'est', 'estonia'], ['🇪🇬', 'egy', 'egypt'], ['🇪🇭', 'esh', 'western sahara'], ['🇪🇷', 'eri', 'eritrea'], ['🇪🇸', 'esp', 'spain'], ['🇪🇹', 'eth', 'ethiopia'], ['🇫🇮', 'fin', 'finland'], ['🇫🇯', 'fji', 'fiji'], ['🇫🇰', 'flk', 'falkland islands (malvinas)'], ['🇫🇲', 'fsm', 'micronesia'], ['🇫🇴', 'fro', 'faroe islands'], ['🇫🇷', 'fra', 'france'], ['🇬🇦', 'gab', 'gabon'], ['🇬🇧', 'gbr', 'united kingdom'], ['🇬🇩', 'grd', 'grenada'], //['🇬🇪', 'geo', 'georgia'], + ['🇬🇫', 'guf', 'french guiana'], ['🇬🇬', 'ggy', 'guernsey'], ['🇬🇭', 'gha', 'ghana'], ['🇬🇮', 'gib', 'gibraltar'], ['🇬🇱', 'grl', 'greenland'], ['🇬🇲', 'gmb', 'gambia'], ['🇬🇳', 'gin', 'guinea'], ['🇬🇵', 'glp', 'guadeloupe'], ['🇬🇶', 'gnq', 'equatorial guinea'], ['🇬🇷', 'grc', 'greece'], ['🇬🇸', 'sgs', 'south georgia'], ['🇬🇹', 'gtm', 'guatemala'], ['🇬🇺', 'gum', 'guam'], ['🇬🇼', 'gnb', 'guinea-bissau'], ['🇬🇾', 'guy', 'guyana'], ['🇭🇰', 'hkg', 'hong kong'], ['🇭🇲', 'hmd', 'heard island and mcdonald islands'], ['🇭🇳', 'hnd', 'honduras'], ['🇭🇷', 'hrv', 'croatia'], ['🇭🇹', 'hti', 'haiti'], ['🇭🇺', 'hun', 'hungary'], ['🇮🇩', 'idn', 'indonesia'], ['🇮🇪', 'irl', 'ireland'], ['🇮🇱', 'isr', 'israel'], ['🇮🇲', 'imn', 'isle of man'], ['🇮🇳', 'ind', 'india'], ['🇮🇴', 'iot', 'british indian ocean territory'], ['🇮🇶', 'irq', 'iraq'], ['🇮🇷', 'irn', 'iran'], ['🇮🇸', 'isl', 'iceland'], ['🇮🇹', 'ita', 'italy'], ['🇯🇪', 'jey', 'jersey'], ['🇯🇲', 'jam', 'jamaica'], ['🇯🇴', 'jor', 'jordan'], ['🇯🇵', 'jpn', 'japan'], ['🇰🇪', 'ken', 'kenya'], ['🇰🇬', 'kgz', 'kyrgyzstan'], ['🇰🇭', 'khm', 'cambodia'], ['🇰🇮', 'kir', 'kiribati'], ['🇰🇲', 'com', 'comoros'], ['🇰🇳', 'kna', 'saint kitts and nevis'], ['🇰🇵', 'prk', 'north korea'], ['🇰🇷', 'kor', 'south korea'], ['🇰🇼', 'kwt', 'kuwait'], ['🇰🇾', 'cym', 'cayman islands'], ['🇰🇿', 'kaz', 'kazakhstan'], ['🇱🇦', 'lao', 'lao people\'s democratic republic'], ['🇱🇧', 'lbn', 'lebanon'], ['🇱🇨', 'lca', 'saint lucia'], ['🇱🇮', 'lie', 'liechtenstein'], ['🇱🇰', 'lka', 'sri lanka'], ['🇱🇷', 'lbr', 'liberia'], ['🇱🇸', 'lso', 'lesotho'], ['🇱🇹', 'ltu', 'lithuania'], ['🇱🇺', 'lux', 'luxembourg'], ['🇱🇻', 'lva', 'latvia'], ['🇱🇾', 'lby', 'libya'], ['🇲🇦', 'mar', 'morocco'], ['🇲🇨', 'mco', 'monaco'], ['🇲🇩', 'mda', 'moldova'], ['🇲🇪', 'mne', 'montenegro'], ['🇲🇫', 'maf', 'saint martin (french part)'], ['🇲🇬', 'mdg', 'madagascar'], ['🇲🇭', 'mhl', 'marshall islands'], ['🇲🇰', 'mkd', 'macedonia'], ['🇲🇱', 'mli', 'mali'], ['🇲🇲', 'mmr', 'myanmar'], ['🇲🇳', 'mng', 'mongolia'], ['🇲🇴', 'mac', 'macao'], ['🇲🇵', 'mnp', 'northern mariana islands'], ['🇲🇶', 'mtq', 'martinique'], ['🇲🇷', 'mrt', 'mauritania'], ['🇲🇸', 'msr', 'montserrat'], ['🇲🇹', 'mlt', 'malta'], ['🇲🇺', 'mus', 'mauritius'], ['🇲🇻', 'mdv', 'maldives'], ['🇲🇼', 'mwi', 'malawi'], ['🇲🇽', 'mex', 'mexico'], ['🇲🇾', 'mys', 'malaysia'], ['🇲🇿', 'moz', 'mozambique'], ['🇳🇦', 'nam', 'namibia'], ['🇳🇨', 'ncl', 'new caledonia'], ['🇳🇪', 'ner', 'niger'], ['🇳🇫', 'nfk', 'norfolk island'], ['🇳🇬', 'nga', 'nigeria'], ['🇳🇮', 'nic', 'nicaragua'], ['🇳🇱', 'nld', 'netherlands'], ['🇳🇴', 'nor', 'norway'], ['🇳🇵', 'npl', 'nepal'], ['🇳🇷', 'nru', 'nauru'], ['🇳🇺', 'niu', 'niue'], ['🇳🇿', 'nzl', 'new zealand'], ['🇴🇲', 'omn', 'oman'], ['🇵🇦', 'pan', 'panama'], ['🇵🇪', 'per', 'peru'], ['🇵🇫', 'pyf', 'french polynesia'], ['🇵🇬', 'png', 'papua new guinea'], ['🇵🇭', 'phl', 'philippines'], ['🇵🇰', 'pak', 'pakistan'], ['🇵🇱', 'pol', 'poland'], ['🇵🇲', 'spm', 'saint pierre and miquelon'], ['🇵🇳', 'pcn', 'pitcairn'], ['🇵🇷', 'pri', 'puerto rico'], ['🇵🇸', 'pse', 'palestinian territory'], ['🇵🇹', 'prt', 'portugal'], ['🇵🇼', 'plw', 'palau'], ['🇵🇾', 'pry', 'paraguay'], ['🇶🇦', 'qat', 'qatar'], ['🇷🇪', 'reu', 'réunion'], ['🇷🇴', 'rou', 'romania'], ['🇷🇸', 'srb', 'serbia'], ['🇷🇺', 'rus', 'russia'], ['🇷🇼', 'rwa', 'rwanda'], ['🇸🇦', 'sau', 'saudi arabia'], ['🇸🇧', 'slb', 'solomon islands'], ['🇸🇨', 'syc', 'seychelles'], ['🇸🇩', 'sdn', 'sudan'], ['🇸🇪', 'swe', 'sweden'], ['🇸🇬', 'sgp', 'singapore'], ['🇸🇭', 'shn', 'saint helena, ascension and tristan da cunha'], ['🇸🇮', 'svn', 'slovenia'], ['🇸🇯', 'sjm', 'svalbard and jan mayen'], ['🇸🇰', 'svk', 'slovakia'], ['🇸🇱', 'sle', 'sierra leone'], ['🇸🇲', 'smr', 'san marino'], ['🇸🇳', 'sen', 'senegal'], ['🇸🇴', 'som', 'somalia'], ['🇸🇷', 'sur', 'suriname'], ['🇸🇸', 'ssd', 'south sudan'], ['🇸🇹', 'stp', 'sao tome and principe'], ['🇸🇻', 'slv', 'el salvador'], ['🇸🇽', 'sxm', 'sint maarten (dutch part)'], ['🇸🇾', 'syr', 'syrian arab republic'], ['🇸🇿', 'swz', 'swaziland'], ['🇹🇨', 'tca', 'turks and caicos islands'], ['🇹🇩', 'tcd', 'chad'], ['🇹🇫', 'atf', 'french southern territories'], ['🇹🇬', 'tgo', 'togo'], ['🇹🇭', 'tha', 'thailand'], ['🇹🇯', 'tjk', 'tajikistan'], ['🇹🇰', 'tkl', 'tokelau'], ['🇹🇱', 'tls', 'timor-leste'], ['🇹🇲', 'tkm', 'turkmenistan'], ['🇹🇳', 'tun', 'tunisia'], ['🇹🇴', 'ton', 'tonga'], ['🇹🇷', 'tur', 'turkey'], ['🇹🇹', 'tto', 'trinidad and tobago'], ['🇹🇻', 'tuv', 'tuvalu'], ['🇹🇼', 'twn', 'taiwan'], ['🇹🇿', 'tza', 'tanzania'], ['🇺🇦', 'ukr', 'ukraine'], ['🇺🇬', 'uga', 'uganda'], ['🇺🇲', 'umi', 'united states minor outlying islands'], ['🇺🇸', 'us', 'united states'], //alias + ['🇺🇸', 'usa', 'united states'], ['🇺🇾', 'ury', 'uruguay'], ['🇺🇿', 'uzb', 'uzbekistan'], ['🇻🇦', 'vat', 'vatican city'], ['🇻🇨', 'vct', 'saint vincent and the grenadines'], ['🇻🇪', 'ven', 'venezuela'], ['🇻🇬', 'vgb', 'virgin islands, british'], ['🇻🇮', 'vir', 'virgin islands, u.s.'], ['🇻🇳', 'vnm', 'viet nam'], ['🇻🇺', 'vut', 'vanuatu'], ['🇼🇫', 'wlf', 'wallis and futuna'], ['🇼🇸', 'wsm', 'samoa'], ['🇾🇪', 'yem', 'yemen'], ['🇾🇹', 'myt', 'mayotte'], ['🇿🇦', 'zaf', 'south africa'], ['🇿🇲', 'zmb', 'zambia'], ['🇿🇼 ', 'zwe', 'zimbabwe'], //others (later unicode versions) + ['🇺🇳', 'un', 'united nations'], ['🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿', 'eng', 'england'], ['🏴󠁧󠁢󠁳󠁣󠁴󠁿', 'sct', 'scotland'], ['🏴󠁧󠁢󠁷󠁬󠁳󠁿', 'wal', 'wales'], ['🇪🇺', 'eu', 'european union']]; + + const parse$f = toJSON$4; + const flags$1 = flags$2; + let templates$a = { + //https://en.wikipedia.org/wiki/Template:Flag + // {{flag|USA}} → USA + flag: tmpl => { + let order = ['flag', 'variant']; + let obj = parse$f(tmpl, order); + let name = obj.flag || ''; + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + let flag = found[0] || ''; + return "".concat(flag, " [[").concat(found[2], "|").concat(name, "]]"); + }, + // {{flagcountry|USA}} → United States + flagcountry: tmpl => { + let order = ['flag', 'variant']; + let obj = parse$f(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + let flag = found[0] || ''; + return "".concat(flag, " [[").concat(found[2], "]]"); + }, + // (unlinked flag-country) + flagcu: tmpl => { + let order = ['flag', 'variant']; + let obj = parse$f(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + let flag = found[0] || ''; + return "".concat(flag, " ").concat(found[2]); + }, + //https://en.wikipedia.org/wiki/Template:Flagicon + // {{flagicon|USA}} → United States + flagicon: tmpl => { + let order = ['flag', 'variant']; + let obj = parse$f(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]); + + if (!found) { + return ''; + } + + return "[[".concat(found[2], "|").concat(found[0], "]]"); + }, + //unlinked flagicon + flagdeco: tmpl => { + let order = ['flag', 'variant']; + let obj = parse$f(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + return found[0] || ''; + }, + //same, but a soccer team + fb: tmpl => { + let order = ['flag', 'variant']; + let obj = parse$f(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]); + + if (!found) { + return ''; + } + + return "".concat(found[0], " [[").concat(found[2], " national football team|").concat(found[2], "]]"); + }, + fbicon: tmpl => { + let order = ['flag', 'variant']; + let obj = parse$f(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]); + + if (!found) { + return ''; + } + + return " [[".concat(found[2], " national football team|").concat(found[0], "]]"); + }, + flagathlete: tmpl => { + let order = ['name', 'flag', 'variant']; + let obj = parse$f(tmpl, order); + obj.flag = (obj.flag || '').toLowerCase(); + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]); + + if (!found) { + return "[[".concat(obj.name || '', "]]"); + } + + return "".concat(found[0], " [[").concat(obj.name || '', "]] (").concat(found[1].toUpperCase(), ")"); + } + }; //support {{can}} + + flags$1.forEach(a => { + templates$a[a[1]] = () => { + return a[0]; + }; + }); + var flags_1 = templates$a; + + const parse$e = toJSON$4; + const titlecase = _lib$3.titlecase; //https://en.wikipedia.org/wiki/Template:Yes + + let templates$9 = {}; + let cells = ['rh', 'rh2', 'yes', 'no', 'maybe', 'eliminated', 'lost', 'safe', 'active', 'site active', 'coming soon', 'good', 'won', 'nom', 'sho', 'longlisted', 'tba', 'success', 'operational', 'failure', 'partial', 'regional', 'maybecheck', 'partial success', 'partial failure', 'okay', 'yes-no', 'some', 'nonpartisan', 'pending', 'unofficial', 'unofficial2', 'usually', 'rarely', 'sometimes', 'any', 'varies', 'black', 'non-album single', 'unreleased', 'unknown', 'perhaps', 'depends', 'included', 'dropped', 'terminated', 'beta', 'table-experimental', 'free', 'proprietary', 'nonfree', 'needs', 'nightly', 'release-candidate', 'planned', 'scheduled', 'incorrect', 'no result', 'cmain', 'calso starring', 'crecurring', 'cguest', 'not yet', 'optional']; + cells.forEach(str => { + templates$9[str] = tmpl => { + let data = parse$e(tmpl, ['text']); + return data.text || titlecase(data.template); + }; + }); //these ones have a text result + + let moreCells = [['active fire', 'Active'], ['site active', 'Active'], ['site inactive', 'Inactive'], ['yes2', ''], ['no2', ''], ['ya', '✅'], ['na', '❌'], ['nom', 'Nominated'], ['sho', 'Shortlisted'], ['tba', 'TBA'], ['maybecheck', '✔️'], ['okay', 'Neutral'], ['n/a', 'N/A'], ['sdash', '—'], ['dunno', '?'], ['draw', ''], ['cnone', ''], ['nocontest', '']]; + moreCells.forEach(a => { + templates$9[a[0]] = tmpl => { + let data = parse$e(tmpl, ['text']); + return data.text || a[1]; + }; + }); + var tableCell = templates$9; + + var textOnly = Object.assign({}, hardcoded, shorthand$1, functions$2, flags_1, tableCell); + + let templates$8 = {}; // these all have ['id', 'name'] + + let idName = ['goodreads author', 'twitter', 'facebook', 'instagram', 'tumblr', 'pinterest', 'espn nfl', 'espn nhl', 'espn fc', 'hockeydb', 'fifa player', 'worldcat', 'worldcat id', 'nfl player', 'ted speaker', 'playmate']; + idName.forEach(name => { + templates$8[name] = ['id', 'name']; + }); + var idName_1 = templates$8; + + let templates$7 = {}; // these all have ['id', 'title', 'description', 'section'] + + let idTitle = ['imdb title', //https://en.wikipedia.org/wiki/Template:IMDb_title + 'imdb name', 'imdb episode', 'imdb event', 'afi film', 'allmovie title', 'allgame', 'tcmdb title', 'discogs artist', 'discogs label', 'discogs release', 'discogs master', 'librivox author', 'musicbrainz artist', 'musicbrainz label', 'musicbrainz recording', 'musicbrainz release', 'musicbrainz work', 'youtube', 'goodreads book', 'dmoz' //https://en.wikipedia.org/wiki/Template:DMOZ + ]; + idTitle.forEach(name => { + templates$7[name] = ['id', 'title', 'description', 'section']; + }); + var idTitle_1 = templates$7; + + const parse$d = toJSON$4; + const Image$3 = Image_1; + const lib$2 = _lib$3; + var functions$1 = { + // https://en.wikipedia.org/wiki/Template:IPA + ipa: (tmpl, list) => { + let obj = parse$d(tmpl, ['transcription', 'lang', 'audio']); + obj.lang = lib$2.getLang(obj.template); + obj.template = 'ipa'; + list.push(obj); + return ''; + }, + //https://en.wikipedia.org/wiki/Template:IPAc-en + ipac: (tmpl, list) => { + let obj = parse$d(tmpl); + obj.transcription = (obj.list || []).join(','); + delete obj.list; + obj.lang = lib$2.getLang(obj.template); + obj.template = 'ipac'; + list.push(obj); + return ''; + }, + quote: (tmpl, list) => { + let order = ['text', 'author']; + let obj = parse$d(tmpl, order); + list.push(obj); //create plaintext version + + if (obj.text) { + let str = "\"".concat(obj.text, "\""); + + if (obj.author) { + str += '\n\n'; + str += " - ".concat(obj.author); + } + + return str + '\n'; + } + + return ''; + }, + //this one sucks - https://en.wikipedia.org/wiki/Template:GNIS + 'cite gnis': (tmpl, list) => { + let order = ['id', 'name', 'type']; + let obj = parse$d(tmpl, order); + obj.type = 'gnis'; + obj.template = 'citation'; + list.push(obj); + return ''; + }, + 'spoken wikipedia': (tmpl, list) => { + let order = ['file', 'date']; + let obj = parse$d(tmpl, order); + obj.template = 'audio'; + list.push(obj); + return ''; + }, + //yellow card + yel: (tmpl, list) => { + let obj = parse$d(tmpl, ['min']); + list.push(obj); + + if (obj.min) { + return "yellow: ".concat(obj.min || '', "'"); //no yellow-card emoji + } + + return ''; + }, + subon: (tmpl, list) => { + let obj = parse$d(tmpl, ['min']); + list.push(obj); + + if (obj.min) { + return "sub on: ".concat(obj.min || '', "'"); //no yellow-card emoji + } + + return ''; + }, + suboff: (tmpl, list) => { + let obj = parse$d(tmpl, ['min']); + list.push(obj); + + if (obj.min) { + return "sub off: ".concat(obj.min || '', "'"); //no yellow-card emoji + } + + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Sfn + sfn: (tmpl, list, parser, alias) => { + let order = ['author', 'year', 'location']; + let obj = parse$d(tmpl, order); + + if (alias) { + obj.name = obj.template; + obj.teplate = alias; + } + + list.push(obj); + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Redirect + redirect: (tmpl, list) => { + let data = parse$d(tmpl, ['redirect']); + let lines = data.list || []; + let links = []; + + for (let i = 0; i < lines.length; i += 2) { + links.push({ + page: lines[i + 1], + desc: lines[i] + }); + } + + let obj = { + template: 'redirect', + redirect: data.redirect, + links: links + }; + list.push(obj); + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Sister_project_links + 'sister project links': (tmpl, list) => { + let data = parse$d(tmpl); //rename 'wd' to 'wikidata' + + let links = {}; + Object.keys(lib$2.sisterProjects).forEach(k => { + if (data.hasOwnProperty(k) === true) { + links[lib$2.sisterProjects[k]] = data[k]; //.text(); + } + }); + let obj = { + template: 'sister project links', + links: links + }; + list.push(obj); + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Subject_bar + 'subject bar': (tmpl, list) => { + let data = parse$d(tmpl); + Object.keys(data).forEach(k => { + //rename 'voy' to 'wikivoyage' + if (lib$2.sisterProjects.hasOwnProperty(k)) { + data[lib$2.sisterProjects[k]] = data[k]; + delete data[k]; + } + }); + let obj = { + template: 'subject bar', + links: data + }; + list.push(obj); + return ''; + }, + //amazingly, this one does not obey any known patterns + //https://en.wikipedia.org/wiki/Template:Gallery + gallery: (tmpl, list) => { + let obj = parse$d(tmpl); + let images = (obj.list || []).filter(line => /^ *File ?:/.test(line)); + images = images.map(file => { + let img = { + file: file + }; // todo: add lang and domain information + + return new Image$3(img).json(); + }); + obj = { + template: 'gallery', + images: images + }; + list.push(obj); + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Sky + sky: (tmpl, list) => { + let obj = parse$d(tmpl, ['asc_hours', 'asc_minutes', 'asc_seconds', 'dec_sign', 'dec_degrees', 'dec_minutes', 'dec_seconds', 'distance']); + let template = { + template: 'sky', + ascension: { + hours: obj.asc_hours, + minutes: obj.asc_minutes, + seconds: obj.asc_seconds + }, + declination: { + sign: obj.dec_sign, + degrees: obj.dec_degrees, + minutes: obj.dec_minutes, + seconds: obj.dec_seconds + }, + distance: obj.distance + }; + list.push(template); + return ''; + }, + // Parse https://en.wikipedia.org/wiki/Template:Medical_cases_chart -- see + // https://en.wikipedia.org/wiki/Module:Medical_cases_chart for the original + // parsing code. + 'medical cases chart': (tmpl, list) => { + let order = ['date', 'deathsExpr', 'recoveriesExpr', 'casesExpr', '4thExpr', '5thExpr', 'col1', 'col1Change', 'col2', 'col2Change']; + let obj = parse$d(tmpl); + obj.data = obj.data || ''; + let rows = obj.data.split('\n'); // Mimic row parsing in _buildBars in the Lua source, from the following + // line on: + // + // for parameter in mw.text.gsplit(line, ';') do + + let dataArray = rows.map(row => { + let parameters = row.split(';'); + let rowObject = { + options: new Map() + }; + let positionalIndex = 0; + + for (let i = 0; i < parameters.length; i++) { + let parameter = parameters[i].trim(); + + if (parameter.match(/^[a-zA-Z_]/)) { + // Named argument + let [key, value] = parameter.split('='); // At this point, the Lua code evaluates alttot1 and alttot2 values as + // #expr expressions, but we just pass them through. See also: + // https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions##expr + + if (value === undefined) { + value = null; + } + + rowObject.options.set(key, value); + } else { + // Positional argument + // Here again, the Lua code evaluates arguments at index 1 through 5 + // as #expr expressions, but we just pass them through. + if (positionalIndex < order.length) { + rowObject[order[positionalIndex]] = parameter; + } + + positionalIndex++; + } + } + + for (; positionalIndex < order.length; positionalIndex++) { + rowObject[order[positionalIndex]] = null; + } + + return rowObject; + }); + obj.data = dataArray; + list.push(obj); + return ''; + }, + graph: (tmpl, list) => { + let data = parse$d(tmpl); + + if (data.x) { + data.x = data.x.split(',').map(str => str.trim()); + } + + if (data.y) { + data.y = data.y.split(',').map(str => str.trim()); + } + + let y = 1; + + while (data['y' + y]) { + data['y' + y] = data['y' + y].split(',').map(str => str.trim()); + y += 1; + } + + list.push(data); + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Historical_populations + 'historical populations': (tmpl, list) => { + let data = parse$d(tmpl); + data.list = data.list || []; + let years = []; + + for (let i = 0; i < data.list.length; i += 2) { + let num = data.list[i + 1]; + years.push({ + year: data.list[i], + val: Number(num) || num + }); + } + + data.data = years; + delete data.list; + list.push(data); + return ''; + }, + // this one is a handful! + //https://en.wikipedia.org/wiki/Template:Weather_box + 'weather box': (tmpl, list) => { + const hasMonth = /^jan /i; + const isYear = /^year /i; + let obj = parse$d(tmpl); + const monthList = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']; + let byMonth = {}; + let properties = Object.keys(obj).filter(k => hasMonth.test(k)); + properties = properties.map(k => k.replace(hasMonth, '')); + properties.forEach(prop => { + byMonth[prop] = []; + monthList.forEach(m => { + let key = "".concat(m, " ").concat(prop); + + if (obj.hasOwnProperty(key)) { + let num = lib$2.toNumber(obj[key]); + delete obj[key]; + byMonth[prop].push(num); + } + }); + }); //add these to original + + obj.byMonth = byMonth; //collect year-based data + + let byYear = {}; + Object.keys(obj).forEach(k => { + if (isYear.test(k)) { + let prop = k.replace(isYear, ''); + byYear[prop] = obj[k]; + delete obj[k]; + } + }); + obj.byYear = byYear; + list.push(obj); + return ''; + }, + //The 36 parameters are: 12 monthly highs (C), 12 lows (total 24) plus an optional 12 monthly rain/precipitation + //https://en.wikipedia.org/wiki/Template:Weather_box/concise_C + 'weather box/concise c': (tmpl, list) => { + let obj = parse$d(tmpl); + obj.list = obj.list.map(s => lib$2.toNumber(s)); + obj.byMonth = { + 'high c': obj.list.slice(0, 12), + 'low c': obj.list.slice(12, 24), + 'rain mm': obj.list.slice(24, 36) + }; + delete obj.list; + obj.template = 'weather box'; + list.push(obj); + return ''; + }, + 'weather box/concise f': (tmpl, list) => { + let obj = parse$d(tmpl); + obj.list = obj.list.map(s => lib$2.toNumber(s)); + obj.byMonth = { + 'high f': obj.list.slice(0, 12), + 'low f': obj.list.slice(12, 24), + 'rain inch': obj.list.slice(24, 36) + }; + delete obj.list; + obj.template = 'weather box'; + list.push(obj); + return ''; + }, + //https://en.wikipedia.org/wiki/Template:Climate_chart + 'climate chart': (tmpl, list) => { + let lines = parse$d(tmpl).list || []; + let title = lines[0]; + let source = lines[38]; + lines = lines.slice(1); //amazingly, they use '−' symbol here instead of negatives... + + lines = lines.map(str => { + if (str && str[0] === '−') { + str = str.replace(/−/, '-'); + } + + return str; + }); + let months = []; //groups of three, for 12 months + + for (let i = 0; i < 36; i += 3) { + months.push({ + low: lib$2.toNumber(lines[i]), + high: lib$2.toNumber(lines[i + 1]), + precip: lib$2.toNumber(lines[i + 2]) + }); + } + + let obj = { + template: 'climate chart', + data: { + title: title, + source: source, + months: months + } + }; + list.push(obj); + return ''; + } + }; + + let templates$6 = { + //https://en.wikipedia.org/wiki/Category:External_link_templates + 'find a grave': ['id', 'name', 'work', 'last', 'first', 'date', 'accessdate'], + congbio: ['id', 'name', 'date'], + 'hollywood walk of fame': ['name'], + 'wide image': ['file', 'width', 'caption'], + audio: ['file', 'text', 'type'], + rp: ['page'], + 'short description': ['description'], + 'coord missing': ['region'], + unreferenced: ['date'], + 'taxon info': ['taxon', 'item'], + //https://en.wikipedia.org/wiki/Template:Taxon_info + 'portuguese name': ['first', 'second', 'suffix'], + // https://en.wikipedia.org/wiki/Template:Portuguese_name + geo: ['lat', 'lon', 'zoom'] //https://en.wikivoyage.org/wiki/Template:Geo + + }; + templates$6 = Object.assign(templates$6, idName_1, idTitle_1, functions$1); + var dataOnly = templates$6; + + var shorthand = { + mlbplayer: { + props: ['number', 'name', 'il'], + out: 'name' + }, + syntaxhighlight: { + props: [], + out: 'code' + }, + samp: { + props: ['1'], + out: '1' + }, + //https://en.wikipedia.org/wiki/Template:Sub + sub: { + props: ['text'], + out: 'text' + }, + //https://en.wikipedia.org/wiki/Template:Sup + sup: { + props: ['text'], + out: 'text' + }, + //https://en.wikipedia.org/wiki/Template:Chem2 + chem2: { + props: ['equation'], + out: 'equation' + }, + //https://en.wikipedia.org/wiki/Template:Interlanguage_link + ill: { + props: ['text', 'lan1', 'text1', 'lan2', 'text2'], + out: 'text' + }, + //https://en.wikipedia.org/wiki/Template:Abbr + abbr: { + props: ['abbr', 'meaning', 'ipa'], + out: 'abbr' + } // name: { + // props: [], + // out: '', + // }, + + }; + + const parse$c = toJSON$4; + const lib$1 = _lib$3; + let templates$5 = { + // https://en.wikipedia.org/wiki/Template:Math + math: (tmpl, list) => { + let obj = parse$c(tmpl, ['formula']); + list.push(obj); + return '\n\n' + (obj.formula || '') + '\n\n'; + }, + isbn: (tmpl, list) => { + let order = ['id', 'id2', 'id3']; + let obj = parse$c(tmpl, order); + list.push(obj); + return 'ISBN: ' + (obj.id || ''); + }, + //https://en.wikipedia.org/wiki/Template:Based_on + 'based on': (tmpl, list) => { + let obj = parse$c(tmpl, ['title', 'author']); + list.push(obj); + return "".concat(obj.title, " by ").concat(obj.author || ''); + }, + //barrels of oil https://en.wikipedia.org/wiki/Template:Bbl_to_t + 'bbl to t': (tmpl, list) => { + let obj = parse$c(tmpl, ['barrels']); + list.push(obj); + + if (obj.barrels === '0') { + return obj.barrels + ' barrel'; + } + + return obj.barrels + ' barrels'; + }, + //minor planet - https://en.wikipedia.org/wiki/Template:MPC + mpc: (tmpl, list) => { + let obj = parse$c(tmpl, ['number', 'text']); + list.push(obj); + return "[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ".concat(obj.text || obj.number, "]"); + }, + pengoal: (tmpl, list) => { + list.push({ + template: 'pengoal' + }); + return '✅'; + }, + penmiss: (tmpl, list) => { + list.push({ + template: 'penmiss' + }); + return '❌'; + }, + // https://en.wikipedia.org/wiki/Template:Ordered_list + 'ordered list': (tmpl, list) => { + let obj = parse$c(tmpl); + list.push(obj); + obj.list = obj.list || []; + let lines = obj.list.map((str, i) => "".concat(i + 1, ". ").concat(str)); + return lines.join('\n\n'); + }, + // https://en.wikipedia.org/wiki/Template:Title_year + 'title year': (tmpl, _list, _alias, _parse, doc) => { + let obj = parse$c(tmpl, ['match', 'nomatch', 'page']); + let title = obj.page || doc.title(); + + if (title) { + let m = title.match(/\b[0-9]{4}\b/); //parse the year out of the title's name + + if (m) { + return m[0]; + } + } + + return obj.nomatch || ''; //use default response + }, + // https://en.wikipedia.org/wiki/Template:Title_century + 'title century': (tmpl, _list, _alias, _parse, doc) => { + let obj = parse$c(tmpl, ['match', 'nomatch', 'page']); + let title = obj.page || doc.title(); + + if (title) { + let m = title.match(/\b([0-9]+)(st|nd|rd|th)\b/); //parse the century out of the title's name + + if (m) { + return m[1] || ''; + } + } + + return obj.nomatch || ''; //use default response + }, + // https://en.wikipedia.org/wiki/Template:Title_decade + 'title decade': (tmpl, _list, _alias, _parse, doc) => { + let obj = parse$c(tmpl, ['match', 'nomatch', 'page']); + let title = obj.page || doc.title(); + + if (title) { + let m = title.match(/\b([0-9]+)s\b/); //parse the decade out of the title's name + + if (m) { + return m[1] || ''; + } + } + + return obj.nomatch || ''; //use default response + }, + //https://en.wikipedia.org/wiki/Template:Nihongo + nihongo: (tmpl, list) => { + let obj = parse$c(tmpl, ['english', 'kanji', 'romaji', 'extra']); + list.push(obj); + let str = obj.english || obj.romaji || ''; + + if (obj.kanji) { + str += " (".concat(obj.kanji, ")"); + } + + return str; + }, + //https://en.wikipedia.org/wiki/Template:Marriage + //this one creates a template, and an inline response + marriage: (tmpl, list) => { + let data = parse$c(tmpl, ['spouse', 'from', 'to', 'end']); + list.push(data); + let str = data.spouse || ''; + + if (data.from) { + if (data.to) { + str += " (m. ".concat(data.from, "-").concat(data.to, ")"); + } else { + str += " (m. ".concat(data.from, ")"); + } + } + + return str; + }, + //'red' card - {{sent off|cards|min1|min2}} + 'sent off': (tmpl, list) => { + let obj = parse$c(tmpl, ['cards']); + let result = { + template: 'sent off', + cards: obj.cards, + minutes: obj.list || [] + }; + list.push(result); + let mins = result.minutes.map(m => m + "'").join(', '); + return 'sent off: ' + mins; + }, + transl: (tmpl, list) => { + let obj = parse$c(tmpl, ['lang', 'text', 'text2']); // support 3-param + + if (obj.text2) { + obj.iso = obj.text; + obj.text = obj.text2; + delete obj.text2; + } + + list.push(obj); + return obj.text || ''; + }, + //show/hide: https://en.wikipedia.org/wiki/Template:Collapsible_list + 'collapsible list': (tmpl, list) => { + let obj = parse$c(tmpl); + list.push(obj); + let str = ''; + + if (obj.title) { + str += "'''".concat(obj.title, "'''") + '\n\n'; + } + + if (!obj.list) { + obj.list = []; + + for (let i = 1; i < 10; i += 1) { + if (obj[i]) { + obj.list.push(obj[i]); + delete obj[i]; + } + } + } + + obj.list = obj.list.filter(s => s); + str += obj.list.join('\n\n'); + return str; + }, + //https://en.wikipedia.org/wiki/Template:Columns-list + 'columns-list': (tmpl, list) => { + let arr = parse$c(tmpl).list || []; + let str = arr[0] || ''; + let lines = str.split(/\n/).filter(f => f); + lines = lines.map(s => s.replace(/\*/, '')); + list.push({ + template: 'columns-list', + list: lines + }); + lines = lines.map(s => '• ' + s); + return lines.join('\n\n'); + }, + //https://en.wikipedia.org/wiki/Template:Height - {{height|ft=6|in=1}} + height: (tmpl, list) => { + let obj = parse$c(tmpl); + list.push(obj); + let result = []; + let units = ['m', 'cm', 'ft', 'in']; //order matters + + units.forEach(unit => { + if (obj.hasOwnProperty(unit) === true) { + result.push(obj[unit] + unit); + } + }); + return result.join(' '); + }, + //https://en.wikipedia.org/wiki/Template:Sic + sic: (tmpl, list) => { + let obj = parse$c(tmpl, ['one', 'two', 'three']); + let word = (obj.one || '') + (obj.two || ''); //support '[sic?]' + + if (obj.one === '?') { + word = (obj.two || '') + (obj.three || ''); + } + + list.push({ + template: 'sic', + word: word + }); + + if (obj.nolink === 'y') { + return word; + } + + return "".concat(word, " [sic]"); + }, + // + inrconvert: (tmpl, list) => { + let o = parse$c(tmpl, ['rupee_value', 'currency_formatting']); + list.push(o); + const mults = { + k: 1000, + m: 1000000, + b: 1000000000, + t: 1000000000000, + l: 100000, + c: 10000000, + lc: 1000000000000 + }; + + if (o.currency_formatting) { + let multiplier = mults[o.currency_formatting] || 1; + o.rupee_value = o.rupee_value * multiplier; + } + + return "inr ".concat(o.rupee_value || ''); + }, + //fraction - https://en.wikipedia.org/wiki/Template:Sfrac + frac: (tmpl, list) => { + let order = ['a', 'b', 'c']; + let obj = parse$c(tmpl, order); + let data = { + template: 'sfrac' + }; + + if (obj.c) { + data.integer = obj.a; + data.numerator = obj.b; + data.denominator = obj.c; + } else if (obj.b) { + data.numerator = obj.a; + data.denominator = obj.b; + } else { + data.numerator = 1; + data.denominator = obj.a; + } + + list.push(data); + + if (data.integer) { + return "".concat(data.integer, " ").concat(data.numerator, "\u2044").concat(data.denominator); + } + + return "".concat(data.numerator, "\u2044").concat(data.denominator); + }, + 'winning percentage': (tmpl, list) => { + let obj = parse$c(tmpl, ['wins', 'losses', 'ties']); + list.push(obj); + let wins = Number(obj.wins); + let losses = Number(obj.losses); + let ties = Number(obj.ties) || 0; + let games = wins + losses + ties; + + if (obj.ignore_ties === 'y') { + ties = 0; + } + + if (ties) { + wins += ties / 2; + } + + let num = lib$1.percentage({ + numerator: wins, + denominator: games, + decimals: 1 + }); + + if (num === null) { + return ''; + } + + return ".".concat(num * 10); + }, + winlosspct: (tmpl, list) => { + let obj = parse$c(tmpl, ['wins', 'losses']); + list.push(obj); + let wins = Number(obj.wins); + let losses = Number(obj.losses); + let num = lib$1.percentage({ + numerator: wins, + denominator: wins + losses, + decimals: 1 + }); + + if (num === null) { + return ''; + } + + num = ".".concat(num * 10); + return "".concat(wins || 0, " || ").concat(losses || 0, " || ").concat(num || '-'); + }, + //https://en.wikipedia.org/wiki/Template:Video_game_release + 'video game release': (tmpl, list) => { + let order = ['region', 'date', 'region2', 'date2', 'region3', 'date3', 'region4', 'date4']; + let obj = parse$c(tmpl, order); + let template = { + template: 'video game release', + releases: [] + }; + + for (let i = 0; i < order.length; i += 2) { + if (obj[order[i]]) { + template.releases.push({ + region: obj[order[i]], + date: obj[order[i + 1]] + }); + } + } + + list.push(template); + let str = template.releases.map(o => "".concat(o.region, ": ").concat(o.date || '')).join('\n\n'); + return '\n' + str + '\n'; + }, + // https://en.m.wikipedia.org/wiki/Template:USS + uss: (tmpl, list) => { + let obj = parse$c(tmpl, ['name', 'id']); + list.push(obj); + + if (obj.id) { + return "[[USS ".concat(obj.name, " (").concat(obj.id, ")|USS ''").concat(obj.name, "'' (").concat(obj.id, ")]]"); + } + + return "[[USS ".concat(obj.name, "|USS ''").concat(obj.name, "'']]"); + } + }; + var functions = templates$5; + + const parse$b = toJSON$4; + const codes$1 = { + '£': 'GB£', + // https://en.wikipedia.org/wiki/Template:GBP + '¥': '¥', + // https://en.wikipedia.org/wiki/Template:JPY + '৳': '৳', + // https://en.wikipedia.org/wiki/Template:BDT + '₩': '₩', + // https://en.wikipedia.org/wiki/Template:SK_won + '€': '€', + // https://en.wikipedia.org/wiki/Template:€ + '₱': '₱', + // https://en.wikipedia.org/wiki/Template:Philippine_peso + '₹': '₹', + // https://en.wikipedia.org/wiki/Template:Indian_Rupee + '₽': '₽', + // https://en.wikipedia.org/wiki/Template:RUB + 'cn¥': 'CN¥', + // https://en.wikipedia.org/wiki/Template:CNY + 'gb£': 'GB£', + // https://en.wikipedia.org/wiki/Template:GBP + 'india rs': '₹', + // https://en.wikipedia.org/wiki/Template:Indian_Rupee + 'indian rupee symbol': '₹', + // https://en.wikipedia.org/wiki/Template:Indian_Rupee + 'indian rupee': '₹', + // https://en.wikipedia.org/wiki/Template:Indian_Rupee + 'indian rupees': '₹', + // https://en.wikipedia.org/wiki/Template:Indian_Rupee + 'philippine peso': '₱', + // https://en.wikipedia.org/wiki/Template:Philippine_peso + 'russian ruble': '₽', + // https://en.wikipedia.org/wiki/Template:Russian_ruble + 'SK won': '₩', + // https://en.wikipedia.org/wiki/Template:SK_won + 'turkish lira': 'TRY', + //https://en.wikipedia.org/wiki/Template:Turkish_lira + a$: 'A$', + // https://en.wikipedia.org/wiki/Template:AUD + au$: 'A$', + //https://en.wikipedia.org/wiki/Template:AUD + aud: 'A$', + //https://en.wikipedia.org/wiki/Template:AUD + bdt: 'BDT', + //https://en.wikipedia.org/wiki/Template:BDT + brl: 'BRL', + //https://en.wikipedia.org/wiki/Template:BRL + ca$: 'CA$', + // https://en.wikipedia.org/wiki/Template:CAD + cad: 'CA$', + // https://en.wikipedia.org/wiki/Template:CAD + chf: 'CHF', + // https://en.wikipedia.org/wiki/Template:CHF + cny: 'CN¥', + // https://en.wikipedia.org/wiki/Template:CNY + czk: 'czk', + // https://en.wikipedia.org/wiki/Template:CZK + dkk: 'dkk', + // https://en.wikipedia.org/wiki/Template:DKK + dkk2: 'dkk', + // https://en.wikipedia.org/wiki/Template:DKK + euro: '€', + // https://en.wikipedia.org/wiki/Template:€ + gbp: 'GB£', + // https://en.wikipedia.org/wiki/Template:GBP + hk$: 'HK$', + // https://en.wikipedia.org/wiki/Template:HKD + hkd: 'HK$', + // https://en.wikipedia.org/wiki/Template:HKD + ils: 'ILS', + // https://en.wikipedia.org/wiki/Template:ILS + inr: '₹', + // https://en.wikipedia.org/wiki/Template:Indian_Rupee + jpy: '¥', + // https://en.wikipedia.org/wiki/Template:JPY + myr: 'MYR', + // https://en.wikipedia.org/wiki/Template:MYR + nis: 'ILS', + // https://en.wikipedia.org/wiki/Template:ILS + nok: 'NOK', + //https://en.wikipedia.org/wiki/Template:NOK + nok2: 'NOK', + //https://en.wikipedia.org/wiki/Template:NOK + nz$: 'NZ$', + //https://en.wikipedia.org/wiki/Template:NZD + nzd: 'NZ$', + //https://en.wikipedia.org/wiki/Template:NZD + peso: 'peso', + //https://en.wikipedia.org/wiki/Template:Peso + pkr: '₨', + // https://en.wikipedia.org/wiki/Template:Pakistani_Rupee + r$: 'BRL', + //https://en.wikipedia.org/wiki/Template:BRL + rmb: 'CN¥', + // https://en.wikipedia.org/wiki/Template:CNY + rub: '₽', + // https://en.wikipedia.org/wiki/Template:RUB + ruble: '₽', + // https://en.wikipedia.org/wiki/Template:Ruble + rupee: '₹', + // https://en.wikipedia.org/wiki/Template:Rupee + s$: 'sgd', + // https://en.wikipedia.org/wiki/Template:SGD + sek: 'SEK', + // https://en.wikipedia.org/wiki/Template:SEK + sek2: 'SEK', + // https://en.wikipedia.org/wiki/Template:SEK + sfr: 'CHF', + // https://en.wikipedia.org/wiki/Template:CHF + sgd: 'sgd', + // https://en.wikipedia.org/wiki/Template:SGD + shekel: 'ILS', + // https://en.wikipedia.org/wiki/Template:ILS + sheqel: 'ILS', + // https://en.wikipedia.org/wiki/Template:ILS + ttd: 'TTD', + //https://en.wikipedia.org/wiki/Template:TTD + us$: 'US$', + // https://en.wikipedia.org/wiki/Template:US$ + usd: 'US$', + // https://en.wikipedia.org/wiki/Template:US$ + yen: '¥', + // https://en.wikipedia.org/wiki/Template:JPY + zar: 'R' //https://en.wikipedia.org/wiki/Template:ZAR + + }; + + const parseCurrency = (tmpl, list) => { + let o = parse$b(tmpl, ['amount', 'code']); + list.push(o); + let code = o.template || ''; + + if (code === 'currency') { + code = o.code; + + if (!code) { + o.code = code = 'usd'; //Special case when currency template has no code argument + } + } else if (code === '' || code === 'monnaie' || code === 'unité' || code === 'nombre' || code === 'nb') { + code = o.code; + } + + code = (code || '').toLowerCase(); + + if (code === 'us') { + o.code = code = 'usd'; + } else if (code === 'uk') { + o.code = code = 'gbp'; + } + + let str = "".concat(codes$1[code] || '').concat(o.amount || ''); //support unknown currencies after the number - like '5 BTC' + + if (o.code && !codes$1[o.code.toLowerCase()]) { + str += ' ' + o.code; + } + + return str; + }; + + let templates$4 = { + currency: parseCurrency + }; //and the others fit the same pattern + + Object.keys(codes$1).forEach(k => { + templates$4[k] = parseCurrency; + }); + var currency = templates$4; + + const toOrdinal = function (i) { + let j = i % 10; + let k = i % 100; + + if (j === 1 && k !== 11) { + return i + 'st'; + } + + if (j === 2 && k !== 12) { + return i + 'nd'; + } + + if (j === 3 && k !== 13) { + return i + 'rd'; + } + + return i + 'th'; + }; //this is allowed to be rough + + + const day = 1000 * 60 * 60 * 24; + const month = day * 30; + const year = day * 365; + + const getEpoch = function (obj) { + return new Date("".concat(obj.year, "-").concat(obj.month || 0, "-").concat(obj.date || 1)).getTime(); + }; //very rough! + + + const delta$1 = function (from, to) { + from = getEpoch(from); + to = getEpoch(to); + let diff = to - from; + let obj = {}; //get years + + let years = Math.floor(diff / year, 10); + + if (years > 0) { + obj.years = years; + diff -= obj.years * year; + } //get months - line = require$$0$9.trim_whitespace(line); - line = line.replace(/ +\.$/, '.'); - return line; - } - /** - * returns one sentence object - * - * @param {string} str create a object from a sentence - * @returns {Sentence} the Sentence created from the text - */ + let monthCount = Math.floor(diff / month, 10); - function fromText(str) { - let obj = { - wiki: str, - text: str - }; //pull-out the [[links]] + if (monthCount > 0) { + obj.months = monthCount; + diff -= obj.months * month; + } //get days - parseLinks(obj); - obj.text = postprocess(obj.text); //pull-out the bolds and ''italics'' - obj = parseFmt(obj); //pull-out things like {{start date|...}} - - return new require$$2$6(obj); - } //used for consistency with other class-definitions - - - const byParagraph = function (paragraph) { - //array of texts - let sentences = sentenceParser(paragraph.wiki); //sentence objects - - sentences = sentences.map(fromText); //remove :indented first line, as it is often a disambiguation - - if (sentences[0] && sentences[0].text() && sentences[0].text()[0] === ':') { - sentences = sentences.slice(1); - } - - paragraph.sentences = sentences; - }; - - var _04Sentence = { - fromText: fromText, - byParagraph: byParagraph - }; - - /** - * removes the top and bottom off the template - * so it removes tje '{{' and '}}' - * - * @private - * @param {string} tmpl the string to be striped - * @returns {string} the striped string - */ - const strip$1 = function (tmpl) { - tmpl = tmpl.replace(/^\{\{/, ''); - tmpl = tmpl.replace(/\}\}$/, ''); - return tmpl; - }; - - var _strip = strip$1; - - //normalize template names - const fmtName$1 = function (name) { - name = (name || '').trim(); - name = name.toLowerCase(); - name = name.replace(/_/g, ' '); - return name; - }; - - var _fmtName = fmtName$1; - - /** - * turn {{name|one|two|three}} into [name, one, two, three] - * - * @private - * @param {string} tmpl the template text - * @returns {string[]} a array containing all the split parameters - */ - const pipeSplitter$1 = function (tmpl) { - //start with a naive '|' split - let arr = tmpl.split(/\n?\|/); //we've split by '|', which is pretty lame - //look for broken-up links and fix them :/ - - arr.forEach((a, i) => { - if (a === null) { - return; - } //has '[[' but no ']]' - //has equal number of opening and closing tags. handle nested case '[[[[' ']]' - - - if (/\[\[[^\]]+$/.test(a) || /\{\{[^}]+$/.test(a) || a.split('{{').length !== a.split('}}').length || a.split('[[').length !== a.split(']]').length) { - arr[i + 1] = arr[i] + '|' + arr[i + 1]; //@ts-expect-error we can ignore this error because we filter out all nulls later in - - arr[i] = null; - } - }); //cleanup any mistakes we've made - - arr = arr.filter(a => a !== null); - arr = arr.map(a => (a || '').trim()); //remove empty fields, only at the end: - - for (let i = arr.length - 1; i >= 0; i -= 1) { - if (arr[i] === '') { - arr.pop(); - } - - break; - } - - return arr; - }; - - var _01PipeSplitter = pipeSplitter$1; - - //every value in {{tmpl|a|b|c}} needs a name - //here we come up with names for them - const hasKey = /^[\p{Letter}0-9._\- '()]+=/iu; //templates with these properties are asking for trouble - - const reserved = { - template: true, - list: true, - prototype: true - }; - /** - * @typedef parseKeyReturn - * @property {string} val - * @property {string} key - */ - - /** - * turn 'key=val' into {key:key, val:val} - * - * @param {string} str the string that will be parsed - * @returns {parseKeyReturn} the spit string - */ - - const parseKey = function (str) { - let parts = str.split('='); - let key = parts[0] || ''; - key = key.toLowerCase().trim(); - let val = parts.slice(1).join('='); //don't let it be called 'template'.. - - if (reserved.hasOwnProperty(key)) { - key = '_' + key; - } - - return { - key: key, - val: val.trim() - }; - }; - /** - * turn [a, b=v, c] into {'1':a, b:v, '2':c} - * - * @private - * @param {string[]} arr the array of parameters - * @param {string[]} [order] the order in which the parameters are returned - * @returns {object} and object with the names as the keys and the values as the values - */ - - - const keyMaker$1 = function (arr, order) { - let keyIndex = 0; - return arr.reduce((h, str = '') => { - str = str.trim(); //support named keys - 'foo=bar' - - if (hasKey.test(str) === true) { - let res = parseKey(str); - - if (res.key) { - h[res.key] = res.val; - return h; - } - } //if the current index is present in the order array then we have a name for the key - - - if (order && order[keyIndex]) { - let key = order[keyIndex]; - h[key] = str; - } else { - h.list = h.list || []; - h.list.push(str); - } - - keyIndex += 1; - return h; - }, {}); - }; - - var _02KeyMaker = keyMaker$1; - - const whoCares = { - classname: true, - style: true, - align: true, - margin: true, - left: true, - break: true, - boxsize: true, - framestyle: true, - item_style: true, - collapsible: true, - list_style_type: true, - 'list-style-type': true, - colwidth: true - }; //remove wiki-cruft & some styling info from templates - - const cleanup$2 = function (obj) { - Object.keys(obj).forEach(k => { - if (whoCares[k.toLowerCase()] === true) { - delete obj[k]; - } //remove empty values, too - - - if (obj[k] === null || obj[k] === '') { - delete obj[k]; - } - }); - return obj; - }; - - var _03Cleanup = cleanup$2; - - var strip = _strip; - - var fmtName = _fmtName; - - var require$$0$7 = _04Sentence; - - var pipeSplitter = _01PipeSplitter; - - var keyMaker = _02KeyMaker; - - var cleanup$1 = _03Cleanup; - - const parseSentence$7 = require$$0$7.fromText; - /** - * most templates just want plaintext... - * - * @private - * @param {str} str - * @param {'json' | 'raw'} [fmt] - * @returns {string} text - */ - - const makeFormat = function (str, fmt) { - let s = parseSentence$7(str); //support various output formats - - if (fmt === 'json') { - return s.json(); - } else if (fmt === 'raw') { - return s; - } //default to flat text - - - return s.text(); - }; - /** - * parses the parameters of a template to a usable format - * - * @private - * @param {string} tmpl the template text - * @param {string[]} [order] the order in which the parameters are returned - * @param {'json' | 'raw'} [fmt] whether you wan to parse the text of the template the raw object or just the text - * @returns {object} the parameters of the template in a usable format - */ - - - const parser = function (tmpl, order = [], fmt) { - //remove {{}}'s and split based on pipes - tmpl = strip(tmpl || ''); - let arr = pipeSplitter(tmpl); //get template name - - let name = arr.shift(); //name each value - - let obj = keyMaker(arr, order); //remove wiki-junk - - obj = cleanup$1(obj); //is this a infobox/reference? - //let known = isKnown(obj); - //using '|1=content' is an escaping-thing.. - - if (obj['1'] && order[0] && obj.hasOwnProperty(order[0]) === false) { - //move it over.. - obj[order[0]] = obj['1']; - delete obj['1']; - } - - Object.keys(obj).forEach(k => { - if (k === 'list') { - obj[k] = obj[k].map(v => makeFormat(v, fmt)); - return; - } - - obj[k] = makeFormat(obj[k], fmt); - }); //add the template name - - if (name) { - obj.template = fmtName(name); - } - - return obj; - }; - - var toJSON$4 = parser; - - const Reference = function (data, wiki) { - Object.defineProperty(this, 'data', { - enumerable: false, - value: data - }); - Object.defineProperty(this, 'wiki', { - enumerable: false, - value: wiki - }); - }; - - const methods$5 = { - title: function () { - let data = this.data; - return data.title || data.encyclopedia || data.author || ''; - }, - links: function (n) { - let arr = []; - - if (typeof n === 'number') { - return arr[n]; - } //grab a specific link.. - - - if (typeof n === 'number') { - return arr[n]; - } else if (typeof n === 'string') { - //grab a link like .links('Fortnight') - n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it - - let link = arr.find(o => o.page() === n); - return link === undefined ? [] : [link]; - } - - return arr || []; - }, - text: function () { - return ''; //nah, skip these. - }, - wikitext: function () { - return this.wiki || ''; - }, - json: function (options = {}) { - let json = this.data || {}; //encode them, for mongodb - - if (options.encode === true) { - json = Object.assign({}, json); - json = encode.encodeObj(json); - } - - return json; - } - }; - Object.keys(methods$5).forEach(k => { - Reference.prototype[k] = methods$5[k]; - }); - var Reference_1 = Reference; - - var toJSON$3 = toJSON$4; - - var require$$7$1 = Reference_1; - - const parseSentence$6 = require$$0$7.fromText; //structured Cite templates - {{Cite.. - - const hasCitation = function (str) { - return /^ *\{\{ *(cite|citation)/i.test(str) && /\}\} *$/.test(str) && /citation needed/i.test(str) === false; - }; - - const parseCitation = function (tmpl) { - let obj = toJSON$3(tmpl); - obj.type = obj.template.replace(/cite /, ''); - obj.template = 'citation'; - return obj; - }; //handle unstructured ones - some text - - - const parseInline = function (str) { - let obj = parseSentence$6(str) || {}; - return { - template: 'citation', - type: 'inline', - data: {}, - inline: obj - }; - }; //parse xml tags - - - const parseRefs = function (section) { - let references = []; - let wiki = section._wiki; - wiki = wiki.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi, function (all, tmpl) { - if (hasCitation(tmpl)) { - let obj = parseCitation(tmpl); - - if (obj) { - references.push({ - json: obj, - wiki: all - }); - } - - wiki = wiki.replace(tmpl, ''); - } else { - references.push({ - json: parseInline(tmpl), - wiki: all - }); - } - - return ' '; - }); // - - wiki = wiki.replace(/ ?]{0,200}?\/> ?/gi, ' '); // - - wiki = wiki.replace(/ ?]{0,200}>([\s\S]{0,1800}?)<\/ref> ?/gi, function (all, tmpl) { - if (hasCitation(tmpl)) { - let obj = parseCitation(tmpl); - - if (obj) { - references.push({ - json: obj, - wiki: tmpl - }); - } - - wiki = wiki.replace(tmpl, ''); - } else { - references.push({ - json: parseInline(tmpl), - wiki: all - }); - } - - return ' '; - }); //now that we're done with xml, do a generic + dangerous xml-tag removal - - wiki = wiki.replace(/ ?<[ /]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ /]?> ?/g, ' '); // - - section._references = references.map(obj => new require$$7$1(obj.json, obj.wiki)); - section._wiki = wiki; - }; - - var reference = parseRefs; - - var require$$4$3 = reference; - - const { - trim_whitespace - } = require$$0$9; - const parseSentence$5 = require$$0$7.fromText; - const heading_reg = /^(={1,5})(.{1,200}?)={1,5}$/; - /** - * @typedef fakeSection - * @property {string} title - * @property {null | number} depth - * @property {string} wiki - */ - - /** - * estimates the depth of a section and parses the title to a normal format - * - * @private - * @param {fakeSection} section - * @param {string} str - * @returns {fakeSection} section the depth in a object - */ - - const parseHeading = function (section, str) { - let m = str.match(heading_reg); - - if (!m) { - section.title = ''; - section.depth = 0; - return section; - } - - let title = m[2] || ''; - title = parseSentence$5(title).text(); //amazingly, you can see inline {{templates}} in this text, too - //... let's not think about that now. - - title = title.replace(/\{\{.+?\}\}/, ''); //same for references (i know..) - - let obj = { - _wiki: title - }; - require$$4$3(obj); - title = obj._wiki; //trim leading/trailing whitespace - - title = trim_whitespace(title); - let depth = 0; - - if (m[1]) { - depth = m[1].length - 2; - } - - section.title = title; - section.depth = depth; - return section; - }; - - var heading = parseHeading; - - //remove top-bottoms - const cleanup = function (lines) { - lines = lines.filter(line => { - //a '|+' row is a 'table caption', remove it. - return line && /^\|\+/.test(line) !== true; - }); - - if (/^\{\|/.test(lines[0]) === true) { - lines.shift(); - } - - if (/^\|\}/.test(lines[lines.length - 1]) === true) { - lines.pop(); - } - - if (/^\|-/.test(lines[0]) === true) { - lines.shift(); - } - - return lines; - }; //turn newline seperated into '|-' seperated - - - const findRows$1 = function (lines) { - let rows = []; - let row = []; - lines = cleanup(lines); - - for (let i = 0; i < lines.length; i += 1) { - let line = lines[i]; //'|-' is a row-seperator - - if (/^\|-/.test(line) === true) { - //okay, we're done the row - if (row.length > 0) { - rows.push(row); - row = []; - } - } else { - //look for '||' inline row-splitter - line = line.split(/(?:\|\||!!)/); //eslint-disable-line - //support newline -> '||' - - if (!line[0] && line[1]) { - line.shift(); - } - - line.forEach(l => { - l = l.replace(/^\| */, ''); - l = l.trim(); - row.push(l); - }); - } - } //finish the last one - - - if (row.length > 0) { - rows.push(row); - } - - return rows; - }; - - var _findRows = findRows$1; - - const getRowSpan = /.*rowspan *= *["']?([0-9]+)["']?[ |]*/; - const getColSpan = /.*colspan *= *["']?([0-9]+)["']?[ |]*/; //colspans stretch ←left/right→ - - const doColSpan = function (rows) { - rows.forEach(row => { - row.forEach((str, c) => { - let m = str.match(getColSpan); - - if (m !== null) { - let num = parseInt(m[1], 10); //...maybe if num is so big, and centered, remove it? - // if (num > 3) { - // rows[r] = [] - // return - // } - //splice-in n empty columns right here - - row[c] = str.replace(getColSpan, ''); - - for (let i = 1; i < num; i += 1) { - row.splice(c + 1, 0, ''); - } - } - }); - }); - rows = rows.filter(r => r.length > 0); - return rows; - }; //colspans stretch up/down + let days = Math.floor(diff / day, 10); + if (days > 0) { + obj.days = days; // diff -= (obj.days * day); + } - const doRowSpan = function (rows) { - rows.forEach((row, r) => { - row.forEach((str, c) => { - let m = str.match(getRowSpan); + return obj; + }; //not all too fancy - used in {{timesince}} - if (m !== null) { - let num = parseInt(m[1], 10); //copy this cell down n rows - - str = str.replace(getRowSpan, ''); - row[c] = str; - - for (let i = r + 1; i < r + num; i += 1) { - if (!rows[i]) { - break; - } - rows[i].splice(c, 0, str); - } - } - }); - }); - return rows; - }; // + const timeSince = function (str) { + let d = new Date(str); + if (isNaN(d.getTime())) { + return ''; + } - const handleSpans$1 = function (rows) { - rows = doColSpan(rows); - rows = doRowSpan(rows); - return rows; - }; + let now = new Date(); + let delt = now.getTime() - d.getTime(); + let predicate = 'ago'; - var _spans = handleSpans$1; + if (delt < 0) { + predicate = 'from now'; + delt = Math.abs(delt); + } //figure out units - var findRows = _findRows; - var handleSpans = _spans; - - const parseSentence$4 = require$$0$7.fromText; - const isHeading = /^!/; //common ones - - const headings$1 = { - name: true, - age: true, - born: true, - date: true, - year: true, - city: true, - country: true, - population: true, - count: true, - number: true - }; //additional table-cruft to remove before parseLine method + let hours = delt / 1000 / 60 / 60; + let days = hours / 24; - const cleanText = function (str) { - str = parseSentence$4(str).text(); //anything before a single-pipe is styling, so remove it - - if (str.match(/\|/)) { - str = str.replace(/.+\| ?/, ''); //class="unsortable"|title - } + if (days < 365) { + return parseInt(days, 10) + ' days ' + predicate; + } - str = str.replace(/style=['"].*?["']/, ''); //'!' is used as a highlighed-column - - str = str.replace(/^!/, ''); // str = str.replace(/\(.*?\)/, '') - - str = str.trim(); // str = str.toLowerCase() - - return str; - }; + let years = days / 365; + return parseInt(years, 10) + ' years ' + predicate; + }; - const skipSpanRow = function (row) { - row = row || []; - let len = row.length; - let hasTxt = row.filter(str => str).length; //does it have 3 empty spaces? - - if (len - hasTxt > 3) { - return true; - } - - return false; - }; //remove non-header span rows + const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; + var _lib$2 = { + days: days, + timeSince: timeSince, + delta: delta$1, + toOrdinal: toOrdinal + }; + const months$1 = [undefined, //1-based months.. :/ + 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; + const monthName = months$1.reduce((h, str, i) => { + if (i === 0) { + return h; + } - const removeMidSpans = function (rows) { - rows = rows.filter(row => { - if (row.length === 1 && row[0] && isHeading.test(row[0]) && /rowspan/i.test(row[0]) === false) { - return false; - } + h[str.toLowerCase()] = i; + return h; + }, {}); //parse year|month|date numbers - return true; - }); - return rows; - }; //'!' starts a header-row + const ymd = function (arr) { + let obj = {}; + let units = ['year', 'month', 'date', 'hour', 'minute', 'second']; //parse each unit in sequence.. + for (let i = 0; i < units.length; i += 1) { + //skip it + if (!arr[i] && arr[1] !== 0) { + continue; + } - const findHeaders = function (rows = []) { - let headers = []; // is the first-row just a ton of colspan? + let num = parseInt(arr[i], 10); - if (skipSpanRow(rows[0])) { - rows.shift(); - } + if (isNaN(num) === false) { + obj[units[i]] = num; //we good. + } else if (units[i] === 'month' && monthName.hasOwnProperty(arr[i])) { + //try for month-name, like 'january + let month = monthName[arr[i]]; + obj[units[i]] = month; + } else { + //we dead. so skip this unit + delete obj[units[i]]; + } + } //try for timezone,too ftw + + + let last = arr[arr.length - 1] || ''; + last = String(last); + + if (last.toLowerCase() === 'z') { + obj.tz = 'UTC'; + } else if (/[+-][0-9]+:[0-9]/.test(last)) { + obj.tz = arr[6]; + } + + return obj; + }; //zero-pad a number + + + const pad = function (num) { + if (num < 10) { + return '0' + num; + } + + return String(num); + }; + + const toText$1 = function (date) { + //eg '1995' + let str = String(date.year || ''); + + if (date.month !== undefined && months$1.hasOwnProperty(date.month) === true) { + if (date.date === undefined) { + //January 1995 + str = "".concat(months$1[date.month], " ").concat(date.year); + } else { + //January 5, 1995 + str = "".concat(months$1[date.month], " ").concat(date.date, ", ").concat(date.year); //add times, if available + + if (date.hour !== undefined && date.minute !== undefined) { + let time = "".concat(pad(date.hour), ":").concat(pad(date.minute)); + + if (date.second !== undefined) { + time = time + ':' + pad(date.second); + } + + str = time + ', ' + str; //add timezone, if there, at the end in brackets + } + + if (date.tz) { + str += " (".concat(date.tz, ")"); + } + } + } + + return str; + }; + + var _format = { + toText: toText$1, + ymd: ymd + }; // console.log(toText(ymd([2018, 3, 28]))); + + const strip = _strip; + const parse$a = toJSON$4; + const delta = _lib$2.delta; + const fmt = _format; //wrap it up as a template + + const template$1 = function (date) { + return { + template: 'date', + data: date + }; + }; + + const getBoth = function (tmpl) { + tmpl = strip(tmpl); + let arr = tmpl.split('|'); + let from = fmt.ymd(arr.slice(1, 4)); + let to = arr.slice(4, 7); //assume now, if 'to' is empty + + if (to.length === 0) { + let d = new Date(); + to = [d.getFullYear(), d.getMonth(), d.getDate()]; + } + + to = fmt.ymd(to); + return { + from: from, + to: to + }; + }; + + const parsers$1 = { + //generic {{date|year|month|date}} template + date: (tmpl, list) => { + let order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'timezone']; + let obj = parse$a(tmpl, order); + let data = fmt.ymd([obj.year, obj.month, obj.date || obj.day]); + obj.text = fmt.toText(data); //make the replacement string + + if (obj.timezone) { + if (obj.timezone === 'Z') { + obj.timezone = 'UTC'; + } + + obj.text += " (".concat(obj.timezone, ")"); + } + + if (obj.hour && obj.minute) { + if (obj.second) { + obj.text = "".concat(obj.hour, ":").concat(obj.minute, ":").concat(obj.second, ", ") + obj.text; + } else { + obj.text = "".concat(obj.hour, ":").concat(obj.minute, ", ") + obj.text; + } + } + + if (obj.text) { + list.push(template$1(obj)); + } + + return obj.text; + }, + //support parsing of 'February 10, 1992' + natural_date: (tmpl, list) => { + let order = ['text']; + let obj = parse$a(tmpl, order); + let str = obj.text || ''; // - just a year + + let date = {}; + + if (/^[0-9]{4}$/.test(str)) { + date.year = parseInt(str, 10); + } else { + //parse the date, using the js date object (for now?) + let txt = str.replace(/[a-z]+\/[a-z]+/i, ''); + txt = txt.replace(/[0-9]+:[0-9]+(am|pm)?/i, ''); + let d = new Date(txt); + + if (isNaN(d.getTime()) === false) { + date.year = d.getFullYear(); + date.month = d.getMonth() + 1; + date.date = d.getDate(); + } + } + + list.push(template$1(date)); + return str.trim(); + }, + //just grab the first value, and assume it's a year + one_year: (tmpl, list) => { + let order = ['year']; + let obj = parse$a(tmpl, order); + let year = Number(obj.year); + list.push(template$1({ + year: year + })); + return String(year); + }, + //assume 'y|m|d' | 'y|m|d' // {{BirthDeathAge|B|1976|6|6|1990|8|8}} + two_dates: (tmpl, list) => { + let order = ['b', 'birth_year', 'birth_month', 'birth_date', 'death_year', 'death_month', 'death_date']; + let obj = parse$a(tmpl, order); //'b' means show birth-date, otherwise show death-date + + if (obj.b && obj.b.toLowerCase() === 'b') { + let date = fmt.ymd([obj.birth_year, obj.birth_month, obj.birth_date]); + list.push(template$1(date)); + return fmt.toText(date); + } + + let date = fmt.ymd([obj.death_year, obj.death_month, obj.death_date]); + list.push(template$1(date)); + return fmt.toText(date); + }, + age: tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + return diff.years || 0; + }, + 'diff-y': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + + if (diff.years === 1) { + return diff.years + ' year'; + } + + return (diff.years || 0) + ' years'; + }, + 'diff-ym': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + let arr = []; + + if (diff.years === 1) { + arr.push(diff.years + ' year'); + } else if (diff.years && diff.years !== 0) { + arr.push(diff.years + ' years'); + } + + if (diff.months === 1) { + arr.push('1 month'); + } else if (diff.months && diff.months !== 0) { + arr.push(diff.months + ' months'); + } + + return arr.join(', '); + }, + 'diff-ymd': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + let arr = []; + + if (diff.years === 1) { + arr.push(diff.years + ' year'); + } else if (diff.years && diff.years !== 0) { + arr.push(diff.years + ' years'); + } + + if (diff.months === 1) { + arr.push('1 month'); + } else if (diff.months && diff.months !== 0) { + arr.push(diff.months + ' months'); + } + + if (diff.days === 1) { + arr.push('1 day'); + } else if (diff.days && diff.days !== 0) { + arr.push(diff.days + ' days'); + } + + return arr.join(', '); + }, + 'diff-yd': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + let arr = []; + + if (diff.years === 1) { + arr.push(diff.years + ' year'); + } else if (diff.years && diff.years !== 0) { + arr.push(diff.years + ' years'); + } //ergh... + + + diff.days += (diff.months || 0) * 30; + + if (diff.days === 1) { + arr.push('1 day'); + } else if (diff.days && diff.days !== 0) { + arr.push(diff.days + ' days'); + } + + return arr.join(', '); + }, + 'diff-d': tmpl => { + let d = getBoth(tmpl); + let diff = delta(d.from, d.to); + let arr = []; //ergh... + + diff.days += (diff.years || 0) * 365; + diff.days += (diff.months || 0) * 30; + + if (diff.days === 1) { + arr.push('1 day'); + } else if (diff.days && diff.days !== 0) { + arr.push(diff.days + ' days'); + } + + return arr.join(', '); + } + }; + var _parsers = parsers$1; + + const parsers = _parsers; + const parse$9 = toJSON$4; + const lib = _lib$2; + const format = _format; + const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; //date- templates we support + + var dates = { + currentday: () => { + let d = new Date(); + return String(d.getDate()); + }, + currentdayname: () => { + let d = new Date(); + return lib.days[d.getDay()]; + }, + currentmonth: () => { + let d = new Date(); + return months[d.getMonth()]; + }, + currentyear: () => { + let d = new Date(); + return String(d.getFullYear()); + }, + monthyear: () => { + let d = new Date(); + return months[d.getMonth()] + ' ' + d.getFullYear(); + }, + 'monthyear-1': () => { + let d = new Date(); + d.setMonth(d.getMonth() - 1); + return months[d.getMonth()] + ' ' + d.getFullYear(); + }, + 'monthyear+1': () => { + let d = new Date(); + d.setMonth(d.getMonth() + 1); + return months[d.getMonth()] + ' ' + d.getFullYear(); + }, + 'time ago': tmpl => { + let order = ['date', 'fmt']; + let time = parse$9(tmpl, order).date; + return lib.timeSince(time); + }, + //https://en.wikipedia.org/wiki/Template:Birth_date_and_age + 'birth date and age': (tmpl, list) => { + let order = ['year', 'month', 'day']; + let obj = parse$9(tmpl, order); //support 'one property' version + + if (obj.year && /[a-z]/i.test(obj.year)) { + return parsers.natural_date(tmpl, list); + } + + list.push(obj); + obj = format.ymd([obj.year, obj.month, obj.day]); + return format.toText(obj); + }, + 'birth year and age': (tmpl, list) => { + let order = ['birth_year', 'birth_month']; + let obj = parse$9(tmpl, order); //support 'one property' version + + if (obj.death_year && /[a-z]/i.test(obj.death_year)) { + return parsers.natural_date(tmpl, list); + } + + list.push(obj); + let age = new Date().getFullYear() - parseInt(obj.birth_year, 10); + obj = format.ymd([obj.birth_year, obj.birth_month]); + let str = format.toText(obj); + + if (age) { + str += " (age ".concat(age, ")"); + } + + return str; + }, + 'death year and age': (tmpl, list) => { + let order = ['death_year', 'birth_year', 'death_month']; + let obj = parse$9(tmpl, order); //support 'one property' version + + if (obj.death_year && /[a-z]/i.test(obj.death_year)) { + return parsers.natural_date(tmpl, list); + } + + list.push(obj); + obj = format.ymd([obj.death_year, obj.death_month]); + return format.toText(obj); + }, + //https://en.wikipedia.org/wiki/Template:Birth_date_and_age2 + 'birth date and age2': (tmpl, list) => { + let order = ['at_year', 'at_month', 'at_day', 'birth_year', 'birth_month', 'birth_day']; + let obj = parse$9(tmpl, order); + list.push(obj); + obj = format.ymd([obj.birth_year, obj.birth_month, obj.birth_day]); + return format.toText(obj); + }, + //https://en.wikipedia.org/wiki/Template:Birth_based_on_age_as_of_date + 'birth based on age as of date': (tmpl, list) => { + let order = ['age', 'year', 'month', 'day']; + let obj = parse$9(tmpl, order); + list.push(obj); + let age = parseInt(obj.age, 10); + let year = parseInt(obj.year, 10); + let born = year - age; + + if (born && age) { + return "".concat(born, " (age ").concat(obj.age, ")"); + } + + return "(age ".concat(obj.age, ")"); + }, + //https://en.wikipedia.org/wiki/Template:Death_date_and_given_age + 'death date and given age': (tmpl, list) => { + let order = ['year', 'month', 'day', 'age']; + let obj = parse$9(tmpl, order); + list.push(obj); + obj = format.ymd([obj.year, obj.month, obj.day]); + let str = format.toText(obj); + + if (obj.age) { + str += " (age ".concat(obj.age, ")"); + } + + return str; + }, + //sortable dates - + dts: tmpl => { + //remove formatting stuff, ewww + tmpl = tmpl.replace(/\|format=[ymd]+/i, ''); + tmpl = tmpl.replace(/\|abbr=(on|off)/i, ''); + let order = ['year', 'month', 'date', 'bc']; + let obj = parse$9(tmpl, order); + + if (obj.date && obj.month && obj.year) { + //render 'june 5 2018' + if (/[a-z]/.test(obj.month) === true) { + return [obj.month, obj.date, obj.year].join(' '); + } + + return [obj.year, obj.month, obj.date].join('-'); + } + + if (obj.month && obj.year) { + return [obj.year, obj.month].join('-'); + } + + if (obj.year) { + if (obj.year < 0) { + obj.year = Math.abs(obj.year) + ' BC'; + } + + return obj.year; + } + + return ''; + }, + //we can't do timezones, so fake this one a little bit + //https://en.wikipedia.org/wiki/Template:Time + time: () => { + let d = new Date(); + let obj = format.ymd([d.getFullYear(), d.getMonth(), d.getDate()]); + return format.toText(obj); + }, + // https://en.wikipedia.org/wiki/Template:MILLENNIUM + millennium: tmpl => { + let obj = parse$9(tmpl, ['year']); + let year = Number(obj.year); + year = parseInt(year / 1000, 10) + 1; + + if (obj.abbr && obj.abbr === 'y') { + if (year < 0) { + return "".concat(lib.toOrdinal(Math.abs(year)), " BC"); + } + + return "".concat(lib.toOrdinal(year)); + } + + return "".concat(lib.toOrdinal(year), " millennium"); + }, + //date/age/time templates + start: parsers.date, + 'start-date': parsers.natural_date, + birthdeathage: parsers.two_dates, + age: parsers.age, + 'age nts': parsers.age, + 'age in years': parsers['diff-y'], + 'age in years and months': parsers['diff-ym'], + 'age in years, months and days': parsers['diff-ymd'], + 'age in years and days': parsers['diff-yd'], + 'age in days': parsers['diff-d'] // 'birth date and age2': date, + // 'age in years, months, weeks and days': true, + // 'age as of date': true, + + }; + + const parse$8 = toJSON$4; + /** + * converts DMS (decimal-minute-second) geo format to lat/lng format. + * major thank you to https://github.com/gmaclennan/parse-dms and https://github.com/WSDOT-GIS/dms-js 👏 + **/ + + function parseDMS(arr) { + let hemisphere = arr.pop(); + let degrees = Number(arr[0] || 0); + let minutes = Number(arr[1] || 0); + let seconds = Number(arr[2] || 0); + + if (typeof hemisphere !== 'string' || isNaN(degrees)) { + return null; + } + + let sign = 1; + + if (/[SW]/i.test(hemisphere)) { + sign = -1; + } + + return sign * (degrees + minutes / 60 + seconds / 3600); + } + + const round = function (num) { + if (typeof num !== 'number') { + return num; + } + + let places = 100000; + return Math.round(num * places) / places; + }; //these hemispheres mean negative decimals + + + const negative = { + s: true, + w: true + }; + + const findLatLng = function (arr) { + const types = arr.map(s => typeof s).join('|'); //support {{lat|lng}} + + if (arr.length === 2 && types === 'number|number') { + return { + lat: arr[0], + lon: arr[1] + }; + } //support {{dd|N/S|dd|E/W}} + + + if (arr.length === 4 && types === 'number|string|number|string') { + if (negative[arr[1].toLowerCase()]) { + arr[0] *= -1; + } + + if (arr[3].toLowerCase() === 'w') { + arr[2] *= -1; + } + + return { + lat: arr[0], + lon: arr[2] + }; + } //support {{dd|mm|N/S|dd|mm|E/W}} + + + if (arr.length === 6) { + return { + lat: parseDMS(arr.slice(0, 3)), + lon: parseDMS(arr.slice(3)) + }; + } //support {{dd|mm|ss|N/S|dd|mm|ss|E/W}} + + + if (arr.length === 8) { + return { + lat: parseDMS(arr.slice(0, 4)), + lon: parseDMS(arr.slice(4)) + }; + } + + return {}; + }; + + const parseParams = function (obj) { + obj.list = obj.list || []; + obj.list = obj.list.map(str => { + let num = Number(str); + + if (!isNaN(num)) { + return num; + } //these are weird + + + let split = str.split(/:/); + + if (split.length > 1) { + obj.props = obj.props || {}; + obj.props[split[0]] = split.slice(1).join(':'); + return null; + } + + return str; + }); + obj.list = obj.list.filter(s => s !== null); + return obj; + }; + + const parseCoor$1 = function (tmpl) { + let obj = parse$8(tmpl); + obj = parseParams(obj); + let tmp = findLatLng(obj.list); + obj.lat = round(tmp.lat); + obj.lon = round(tmp.lon); + obj.template = 'coord'; + delete obj.list; + return obj; + }; //console.log(parseDms([57, 18, 22, 'N'])); + //console.log(parseDms([4, 27, 32, 'W'])); + + + var _lib$1 = parseCoor$1; // {{Coor title dms|dd|mm|ss|N/S|dd|mm|ss|E/W|template parameters}} + + const parseCoor = _lib$1; + const templates$3 = { + coord: (tmpl, list) => { + let obj = parseCoor(tmpl); + list.push(obj); //display inline, by default + + if (!obj.display || obj.display.indexOf('inline') !== -1) { + return "".concat(obj.lat || '', "\xB0N, ").concat(obj.lon || '', "\xB0W"); + } + + return ''; + } + }; //{{coord|latitude|longitude|coordinate parameters|template parameters}} + //{{coord|dd|N/S|dd|E/W|coordinate parameters|template parameters}} + //{{coord|dd|mm|N/S|dd|mm|E/W|coordinate parameters|template parameters}} + //{{coord|dd|mm|ss|N/S|dd|mm|ss|E/W|coordinate parameters|template parameters}} + + var geo = templates$3; + + const parse$7 = toJSON$4; + + const generic = function (tmpl, list, _parser, alias) { + let obj = parse$7(tmpl); + + if (alias) { + obj.name = obj.template; + obj.template = alias; + } + + list.push(obj); + return ''; + }; // it may seem redundant, + // but we need these templates for our i18n mappings + + + const misc = { + persondata: generic, + taxobox: generic, + citation: generic, + portal: generic, + reflist: generic, + 'cite book': generic, + 'cite journal': generic, + 'cite web': generic, + 'commons cat': generic, + 'election box candidate': generic, + 'election box begin': generic, + main: generic + }; + var misc_1 = misc; + + const parse$6 = toJSON$4; + const codes = { + adx: 'adx', + //https://en.wikipedia.org/wiki/Template:Abu_Dhabi_Securities_Exchange + aim: 'aim', + //https://en.wikipedia.org/wiki/Template:Alternative_Investment_Market + amex: 'amex', + //https://en.wikipedia.org/wiki/Template:NYSE_American + asx: 'asx', + //https://en.wikipedia.org/wiki/Template:Australian_Securities_Exchange + athex: 'athex', + //https://en.wikipedia.org/wiki/Template:Athens_Exchange + b3: 'b3', + //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa (redirects to B3 (stock exchange)) + 'B3 (stock exchange)': 'B3 (stock exchange)', + //https://en.wikipedia.org/wiki/Template:B3_(stock_exchange) + barbadosse: 'barbadosse', + //https://en.wikipedia.org/wiki/Template:Barbados_Stock_Exchange + bbv: 'bbv', + //https://en.wikipedia.org/wiki/Template:La_Paz_Stock_Exchange + bcba: 'bcba', + //https://en.wikipedia.org/wiki/Template:Buenos_Aires_Stock_Exchange + bcs: 'bcs', + //https://en.wikipedia.org/wiki/Template:Santiago_Stock_Exchange + bhse: 'bhse', + //https://en.wikipedia.org/wiki/Template:Bahrain_Bourse + bist: 'bist', + //https://en.wikipedia.org/wiki/Template:Borsa_Istanbul + bit: 'bit', + //https://en.wikipedia.org/wiki/Template:Borsa_Italiana + 'bm&f bovespa': 'b3', + //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa + 'bm&f': 'b3', + //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa + bmad: 'bmad', + //https://en.wikipedia.org/wiki/Template:Bolsa_de_Madrid + bmv: 'bmv', + //https://en.wikipedia.org/wiki/Template:Mexican_Stock_Exchange + 'bombay stock exchange': 'bombay stock exchange', + //https://en.wikipedia.org/wiki/Template:Bombay_Stock_Exchange + 'botswana stock exchange': 'botswana stock exchange', + //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa + bpse: 'bpse', + //https://en.wikipedia.org/wiki/Template:Budapest_Stock_Exchange + bse: 'bse', + //https://en.wikipedia.org/wiki/Template:Bombay_Stock_Exchange + bsx: 'bsx', + //https://en.wikipedia.org/wiki/Template:Bermuda_Stock_Exchange + bvb: 'bvb', + //https://en.wikipedia.org/wiki/Template:Bucharest_Stock_Exchange + bvc: 'bvc', + //https://en.wikipedia.org/wiki/Template:Colombian_Securities_Exchange + bvl: 'bvl', + //https://en.wikipedia.org/wiki/Template:Lima_Stock_Exchange + bvpasa: 'bvpasa', + //https://en.wikipedia.org/wiki/Template:BVPASA + bwse: 'bwse', + //https://en.wikipedia.org/wiki/Template:Botswana_Stock_Exchange + 'canadian securities exchange': 'canadian securities exchange', + //https://en.wikipedia.org/wiki/Template:Canadian_Securities_Exchange + cse: 'cse', + //https://en.wikipedia.org/wiki/Template:Chittagong_Stock_Exchange + darse: 'darse', + //https://en.wikipedia.org/wiki/Template:Dar_es_Salaam_Stock_Exchange + dfm: 'dfm', + //https://en.wikipedia.org/wiki/Template:Dubai_Financial_Market + dse: 'dse', + //https://en.wikipedia.org/wiki/Template:Dhaka_Stock_Exchange + euronext: 'euronext', + //https://en.wikipedia.org/wiki/Template:Euronext + euronextparis: 'euronextparis', + //https://en.wikipedia.org/wiki/Template:EuronextParis + fse: 'fse', + //https://en.wikipedia.org/wiki/Template:Fukuoka_Stock_Exchange + fwb: 'fwb', + //https://en.wikipedia.org/wiki/Template:Frankfurt_Stock_Exchange + gse: 'gse', + //https://en.wikipedia.org/wiki/Template:Ghana_Stock_Exchange + gtsm: 'gtsm', + //https://en.wikipedia.org/wiki/Template:Gre_Tai_Securities_Market + idx: 'idx', + //https://en.wikipedia.org/wiki/Template:Indonesia_Stock_Exchange + ise: 'ise', + //https://en.wikipedia.org/wiki/Template:Irish_Stock_Exchange + iseq: 'iseq', + //https://en.wikipedia.org/wiki/Template:Irish_Stock_Exchange + isin: 'isin', + //https://en.wikipedia.org/wiki/Template:ISIN + jasdaq: 'jasdaq', + //https://en.wikipedia.org/wiki/Template:JASDAQ + jse: 'jse', + //https://en.wikipedia.org/wiki/Template:Johannesburg_Stock_Exchange + kase: 'kase', + //https://en.wikipedia.org/wiki/Template:Kazakhstan_Stock_Exchange + kn: 'kn', + //https://en.wikipedia.org/wiki/Template:Nairobi_Securities_Exchange + krx: 'krx', + //https://en.wikipedia.org/wiki/Template:Korea_Exchange + lse: 'lse', + //https://en.wikipedia.org/wiki/Template:London_Stock_Exchange + luxse: 'luxse', + //https://en.wikipedia.org/wiki/Template:Luxembourg_Stock_Exchange + 'malta stock exchange': 'malta stock exchange', + //https://en.wikipedia.org/wiki/Template:Malta_Stock_Exchange + mai: 'mai', + //https://en.wikipedia.org/wiki/Template:Market_for_Alternative_Investment + mcx: 'mcx', + //https://en.wikipedia.org/wiki/Template:Moscow_Exchange + mutf: 'mutf', + //https://en.wikipedia.org/wiki/Template:Mutual_fund + myx: 'myx', + //https://en.wikipedia.org/wiki/Template:Bursa_Malaysia + nag: 'nag', + //https://en.wikipedia.org/wiki/Template:Nagoya_Stock_Exchange + 'nasdaq dubai': 'nasdaq dubai', + //https://en.wikipedia.org/wiki/Template:NASDAQ_Dubai + nasdaq: 'nasdaq', + //https://en.wikipedia.org/wiki/Template:NASDAQ + neeq: 'neeq', + //https://en.wikipedia.org/wiki/Template:NEEQ + nepse: 'nepse', + //https://en.wikipedia.org/wiki/Template:Nepal_Stock_Exchange + nex: 'nex', + //https://en.wikipedia.org/wiki/Template:TSXV_NEX + nse: 'nse', + //https://en.wikipedia.org/wiki/Template:National_Stock_Exchange_of_India + newconnect: 'newconnect', + //https://en.wikipedia.org/wiki/Template:NewConnect + 'nyse arca': 'nyse arca', + //https://en.wikipedia.org/wiki/Template:NYSE_Arca + nyse: 'nyse', + //https://en.wikipedia.org/wiki/Template:New_York_Stock_Exchange + nzx: 'nzx', + //https://en.wikipedia.org/wiki/Template:New_Zealand_Exchange + 'omx baltic': 'omx baltic', + //https://en.wikipedia.org/wiki/Template:OMX_Baltic + omx: 'omx', + //https://en.wikipedia.org/wiki/Template:OMX + ose: 'ose', + //https://en.wikipedia.org/wiki/Template:Oslo_Stock_Exchange + 'otc expert': 'otc expert', + //https://en.wikipedia.org/wiki/Template:OTC_Expert + 'otc grey': 'otc grey', + //https://en.wikipedia.org/wiki/template:grey_market + 'otc pink': 'otc pink', + //https://en.wikipedia.org/wiki/Template:OTC_Pink + otcqb: 'otcqb', + //https://en.wikipedia.org/wiki/Template:OTCQB + otcqx: 'otcqx', + //https://en.wikipedia.org/wiki/Template:OTCQX + 'pfts ukraine stock exchange': 'pfts ukraine stock exchange', + //https://en.wikipedia.org/wiki/Template:PFTS_Ukraine_Stock_Exchange + 'philippine stock exchange': 'philippine stock exchange', + //https://en.wikipedia.org/wiki/Template:Philippine_Stock_Exchange + prse: 'prse', + //https://en.wikipedia.org/wiki/Template:Prague_Stock_Exchange + psx: 'psx', + //https://en.wikipedia.org/wiki/Template:Pakistan_Stock_Exchange + karse: 'karse', + //https://en.wikipedia.org/w/index.php?title=Template:Karse&redirect=no (redirects to psx) + qe: 'qe', + //https://en.wikipedia.org/wiki/Template:Qatar_Stock_Exchange + 'saudi stock exchange': 'saudi stock exchange', + //https://en.wikipedia.org/wiki/Template:Saudi_Stock_Exchange + sehk: 'sehk', + //https://en.wikipedia.org/wiki/Template:Hong_Kong_Stock_Exchange + 'Stock Exchange of Thailand': 'Stock Exchange of Thailand', + //https://en.wikipedia.org/wiki/Template:Stock_Exchange_of_Thailand (alternative for SET) + set: 'set', + //https://en.wikipedia.org/wiki/Template:Stock_Exchange_of_Thailand + sgx: 'sgx', + //https://en.wikipedia.org/wiki/Template:Singapore_Exchange + sse: 'sse', + //https://en.wikipedia.org/wiki/Template:Shanghai_Stock_Exchange + swx: 'swx', + //https://en.wikipedia.org/wiki/Template:SIX_Swiss_Exchange + szse: 'szse', + //https://en.wikipedia.org/wiki/Template:Shenzhen_Stock_Exchange + tase: 'tase', + //https://en.wikipedia.org/wiki/Template:Tel_Aviv_Stock_Exchange + 'tsx-v': 'tsx-v', + //https://en.wikipedia.org/wiki/Template:TSX_Venture_Exchange + tsx: 'tsx', + //https://en.wikipedia.org/wiki/Template:Toronto_Stock_Exchange + tsxv: 'tsxv', + //https://en.wikipedia.org/wiki/Template:TSX_Venture_Exchange + ttse: 'ttse', + //https://en.wikipedia.org/wiki/Template:Trinidad_and_Tobago_Stock_Exchange + twse: 'twse', + //https://en.wikipedia.org/wiki/Template:Taiwan_Stock_Exchange + tyo: 'tyo', + //https://en.wikipedia.org/wiki/Template:Tokyo_Stock_Exchange + wbag: 'wbag', + //https://en.wikipedia.org/wiki/Template:Wiener_B%C3%B6rse + wse: 'wse', + //https://en.wikipedia.org/wiki/Template:Warsaw_Stock_Exchange + 'zagreb stock exchange': 'zagreb stock exchange', + //https://en.wikipedia.org/wiki/Template:Zagreb_Stock_Exchange + 'zimbabwe stock exchange': 'zimbabwe stock exchange', + //https://en.wikipedia.org/wiki/Template:Zimbabwe_Stock_Exchange + zse: 'zse' //https://en.wikipedia.org/wiki/Template:Zagreb_Stock_Exchange + + }; + + const parseStockExchange = (tmpl, list) => { + let o = parse$6(tmpl, ['ticketnumber', 'code']); + list.push(o); + let code = o.template || ''; + + if (code === '') { + code = o.code; + } + + code = (code || '').toLowerCase(); + let str = codes[code] || ''; + + if (o.ticketnumber) { + str = "".concat(str, ": ").concat(o.ticketnumber); + } + + if (o.code && !codes[o.code.toLowerCase()]) { + str += ' ' + o.code; + } + + return str; + }; + + const exchanges = {}; //the others fit the same pattern.. + + Object.keys(codes).forEach(k => { + exchanges[k] = parseStockExchange; + }); + var stockExchanges = exchanges; + + const parse$5 = toJSON$4; + + const zeroPad = function (num) { + num = String(num); + + if (num.length === 1) { + num = '0' + num; + } + + return num; + }; + + const parseTeam = function (obj, round, team) { + if (obj["rd".concat(round, "-team").concat(zeroPad(team))]) { + team = zeroPad(team); + } + + let score = obj["rd".concat(round, "-score").concat(team)]; + let num = Number(score); + + if (isNaN(num) === false) { + score = num; + } + + return { + team: obj["rd".concat(round, "-team").concat(team)], + score: score, + seed: obj["rd".concat(round, "-seed").concat(team)] + }; + }; // https://en.wikipedia.org/wiki/Category:Tournament_bracket_templates + //these are weird. + + + const playoffBracket$1 = function (tmpl) { + let rounds = []; + let obj = parse$5(tmpl); //try some rounds + + for (let i = 1; i < 7; i += 1) { + let round = []; + + for (let t = 1; t < 16; t += 2) { + let key = "rd".concat(i, "-team"); + + if (obj[key + t] || obj[key + zeroPad(t)]) { + let one = parseTeam(obj, i, t); + let two = parseTeam(obj, i, t + 1); + round.push([one, two]); + } else { + break; + } + } + + if (round.length > 0) { + rounds.push(round); + } + } + + return { + template: 'playoffbracket', + rounds: rounds + }; + }; + + var _lib = playoffBracket$1; + + const parse$4 = toJSON$4; + const flags = flags$2; + const playoffBracket = _lib; + let sports = { + //playoff brackets + '4teambracket': function (tmpl, list) { + let obj = playoffBracket(tmpl); + list.push(obj); + return ''; + }, + player: (tmpl, list) => { + let res = parse$4(tmpl, ['number', 'country', 'name', 'dl']); + list.push(res); + let str = "[[".concat(res.name, "]]"); + + if (res.country) { + let country = (res.country || '').toLowerCase(); + let flag = flags.find(a => country === a[1] || country === a[2]) || []; + + if (flag && flag[0]) { + str = flag[0] + ' ' + str; + } + } + + if (res.number) { + str = res.number + ' ' + str; + } + + return str; + }, + //https://en.wikipedia.org/wiki/Template:Goal + goal: (tmpl, list) => { + let res = parse$4(tmpl); + let obj = { + template: 'goal', + data: [] + }; + let arr = res.list || []; + + for (let i = 0; i < arr.length; i += 2) { + obj.data.push({ + min: arr[i], + note: arr[i + 1] || '' + }); + } + + list.push(obj); //generate a little text summary + + let summary = '⚽ '; + summary += obj.data.map(o => { + let note = o.note; + + if (note) { + note = " (".concat(note, ")"); + } + + return o.min + "'" + note; + }).join(', '); + return summary; + }, + //a transcluded sports module - https://en.m.wikipedia.org/w/index.php?title=Special:WhatLinksHere/Module:Sports_table + // https://en.wikipedia.org/wiki/Template:2020–21_NHL_North_Division_standings + 'sports table': (tmpl, list) => { + let obj = parse$4(tmpl); + let byTeam = {}; + let teams = Object.keys(obj).filter(k => /^team[0-9]/.test(k)).map(k => obj[k].toLowerCase()); + teams.forEach(team => { + byTeam[team] = { + name: obj["name_".concat(team)], + win: Number(obj["win_".concat(team)]) || 0, + loss: Number(obj["loss_".concat(team)]) || 0, + tie: Number(obj["tie_".concat(team)]) || 0, + otloss: Number(obj["otloss_".concat(team)]) || 0, + goals_for: Number(obj["gf_".concat(team)]) || 0, + goals_against: Number(obj["ga_".concat(team)]) || 0 + }; + }); + let res = { + date: obj.update, + header: obj.table_header, + teams: byTeam + }; + list.push(res); + } + }; + var sports_1 = sports; + + var textAndData = Object.assign({}, shorthand, functions, currency, dates, geo, misc_1, stockExchanges, _lib, sports_1, _lib, sports_1); + + const aliases = aliases_1; + let templates$2 = Object.assign({}, textOnly, dataOnly, textAndData); + Object.keys(aliases).forEach(k => { + // if (templates[aliases[k]] === undefined) { + // console.error(`Missing template: '${aliases[k]}'`) + // } + templates$2[k] = templates$2[aliases[k]]; + }); + var custom = templates$2; // console.log(Object.keys(templates).length) + + const ignore = _ignore; + const infobox = _infobox; + const templates$1 = custom; + const toJSON$2 = toJSON$4; + const { + isArray: isArray$2, + isObject + } = helpers$1; + const nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; //this gets all the {{template}} objects and decides how to parse them + + const parseTemplate$1 = function (tmpl, doc) { + let name = tmpl.name; // dont bother with some junk templates + + if (ignore.hasOwnProperty(name) === true) { + return ['']; + } //{{infobox settlement...}} + + + if (infobox.isInfobox(name) === true) { + let obj = toJSON$2(tmpl.body, [], 'raw'); // list.push(infobox.format(obj)) + + return ['', infobox.format(obj)]; + } //cite book, cite arxiv... + + + if (/^cite [a-z]/.test(name) === true) { + let obj = toJSON$2(tmpl.body); + obj.type = obj.template; + obj.template = 'citation'; // list.push(obj) + + return ['', obj]; + } // ok, here we go! + //parse some known templates + + + if (templates$1.hasOwnProperty(name) === true) { + //handle number-syntax + if (typeof templates$1[name] === 'number') { + let obj = toJSON$2(tmpl.body, nums); + let key = String(templates$1[name]); + return [obj[key] || '']; + } //handle string-syntax + + + if (typeof templates$1[name] === 'string') { + return [templates$1[name]]; + } //handle array sytax + + + if (isArray$2(templates$1[name]) === true) { + let obj = toJSON$2(tmpl.body, templates$1[name]); // list.push(obj) + + return ['', obj]; + } //handle object sytax + + + if (isObject(templates$1[name]) === true) { + let obj = toJSON$2(tmpl.body, templates$1[name].props); // list.push(obj) + + return [obj[templates$1[name].out], obj]; + } //handle function syntax + + + if (typeof templates$1[name] === 'function') { + // let json = toJSON(tmpl.body) + //(tmpl, list, alias, doc) + let arr = []; + let txt = templates$1[name](tmpl.body, arr, toJSON$2, null, doc); + return [txt, arr[0]]; + } + } //an unknown template with data, so just keep it. + + + let json = toJSON$2(tmpl.body); + + if (Object.keys(json).length === 0) { + // list.push(json) + json = null; + } //..then remove it + + + return ['', json]; + }; - let first = rows[0]; + var parse$3 = parseTemplate$1; - if (first && first[0] && first[1] && (/^!/.test(first[0]) || /^!/.test(first[1]))) { - headers = first.map(h => { - h = h.replace(/^! */, ''); - h = cleanText(h); - return h; - }); - rows.shift(); - } //try the second row, too (overwrite first-row, if it exists) + const encode = encode$4; //turn an infobox into some nice json + const toJson$1 = function (infobox, options) { + let json = Object.keys(infobox.data).reduce((h, k) => { + if (infobox.data[k]) { + h[k] = infobox.data[k].json(); + } - first = rows[0]; + return h; + }, {}); //support mongo-encoding keys - if (first && first[0] && first[1] && /^!/.test(first[0]) && /^!/.test(first[1])) { - first.forEach((h, i) => { - h = h.replace(/^! */, ''); - h = cleanText(h); + if (options.encode === true) { + json = encode.encodeObj(json); + } - if (Boolean(h) === true) { - headers[i] = h; - } - }); - rows.shift(); - } + return json; + }; - return headers; - }; //turn headers, array into an object + var toJson_1 = toJson$1; + const toJson = toJson_1; + const Image$2 = Image_1; + const { + isArray: isArray$1 + } = helpers$1; + const Sentence = Sentence_1; - const parseRow = function (arr, headers) { - let row = {}; - arr.forEach((str, i) => { - let h = headers[i] || 'col' + (i + 1); - let s = parseSentence$4(str); - s.text(cleanText(s.text())); - row[h] = s; - }); - return row; - }; //should we use the first row as a the headers? - - - const firstRowHeader = function (rows) { - if (rows.length <= 3) { - return []; - } - - let headers = rows[0].slice(0); - headers = headers.map(h => { - h = h.replace(/^! */, ''); - h = parseSentence$4(h).text(); - h = cleanText(h); - h = h.toLowerCase(); - return h; - }); - - for (let i = 0; i < headers.length; i += 1) { - if (headings$1.hasOwnProperty(headers[i])) { - rows.shift(); - return headers; - } - } - - return []; - }; //turn a {|...table string into an array of arrays - - - const parseTable = function (wiki) { - let lines = wiki.replace(/\r/g, '').replace(/\n(\s*[^|!{\s])/g, ' $1') //remove unecessary newlines - .split(/\n/).map(l => l.trim()); - let rows = findRows(lines); - rows = rows.filter(r => r); - - if (rows.length === 0) { - return []; - } //remove non-header span rows - - - rows = removeMidSpans(rows); //support colspan, rowspan... - - rows = handleSpans(rows); //grab the header rows - - let headers = findHeaders(rows); - - if (!headers || headers.length <= 1) { - headers = firstRowHeader(rows); - let want = rows[rows.length - 1] || []; //try the second row - - if (headers.length <= 1 && want.length > 2) { - headers = firstRowHeader(rows.slice(1)); - - if (headers.length > 0) { - rows = rows.slice(2); //remove them - } - } - } //index each column by it's header - - - let table = rows.map(arr => { - return parseRow(arr, headers); - }); - return table; - }; - - var parse$5 = parseTable; - - const toJson$4 = function (tables, options) { - return tables.map(table => { - let row = {}; - Object.keys(table).forEach(k => { - row[k] = table[k].json(); //(they're sentence objects) - }); //encode them, for mongodb - - if (options.encode === true) { - row = encode.encodeObj(row); - } - - return row; - }); - }; - - var toJson_1$2 = toJson$4; - - var toJson$3 = toJson_1$2; - - const defaults$6 = {}; - - const normalize$1 = function (key = '') { - key = key.toLowerCase(); - key = key.replace(/[_-]/g, ' '); - key = key.replace(/\(.*?\)/, ''); - key = key.trim(); - return key; - }; - - const Table = function (data, wiki = '') { - Object.defineProperty(this, 'data', { - enumerable: false, - value: data - }); - Object.defineProperty(this, '_wiki', { - enumerable: false, - value: wiki - }); - }; - - const methods$4 = { - links(n) { - let links = []; - this.data.forEach(r => { - Object.keys(r).forEach(k => { - links = links.concat(r[k].links()); - }); - }); - - if (typeof n === 'string') { - //grab a link like .links('Fortnight') - n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it - - let link = links.find(o => o.page() === n); - return link === undefined ? [] : [link]; - } - - return links; - }, - - get(keys) { - // normalize mappings - let have = this.data[0] || {}; - let mapping = Object.keys(have).reduce((h, k) => { - h[normalize$1(k)] = k; - return h; - }, {}); // string gets a flat-list - - if (typeof keys === 'string') { - let key = normalize$1(keys); - key = mapping[key] || key; - return this.data.map(row => { - return row[key] ? row[key].text() : null; - }); - } // array gets obj-list - - - keys = keys.map(normalize$1).map(k => mapping[k] || k); - return this.data.map(row => { - return keys.reduce((h, k) => { - if (row[k]) { - h[k] = row[k].text(); - } else { - h[k] = ''; - } - - return h; - }, {}); - }); - }, - - keyValue(options) { - let rows = this.json(options); - rows.forEach(row => { - Object.keys(row).forEach(k => { - row[k] = row[k].text; - }); - }); - return rows; - }, - - json(options) { - options = setDefaults(options, defaults$6); - return toJson$3(this.data, options); - }, - - text() { - return ''; - }, - - wikitext() { - return this._wiki || ''; - } - - }; - methods$4.keyvalue = methods$4.keyValue; - methods$4.keyval = methods$4.keyValue; - Object.keys(methods$4).forEach(k => { - Table.prototype[k] = methods$4[k]; - }); - var Table_1 = Table; - - var tableParser = parse$5; - - var require$$8$1 = Table_1; - - const openReg = /^\s*\{\|/; - const closeReg = /^\s*\|\}/; //tables can be recursive, so looky-here. - - const findTables = function (section) { - let list = []; - let wiki = section._wiki; - let lines = wiki.split('\n'); - let stack = []; - - for (let i = 0; i < lines.length; i += 1) { - //start a table - if (openReg.test(lines[i]) === true) { - stack.push(lines[i]); - continue; - } //close a table - - - if (closeReg.test(lines[i]) === true) { - stack[stack.length - 1] += '\n' + lines[i]; - let table = stack.pop(); - list.push(table); - continue; - } //keep-going on one - - - if (stack.length > 0) { - stack[stack.length - 1] += '\n' + lines[i]; - } - } //work-em together for a Table class - - - let tables = []; - list.forEach(str => { - if (str) { - //also re-remove a newline at the end of the table (awkward) - wiki = wiki.replace(str + '\n', ''); - wiki = wiki.replace(str, ''); - let data = tableParser(str); - - if (data && data.length > 0) { - tables.push(new require$$8$1(data, str)); - } - } - }); - - if (tables.length > 0) { - section._tables = tables; - } - - section._wiki = wiki; - }; - - var table = findTables; - - const defaults$5 = { - sentences: true - }; - - const toJson$2 = function (p, options) { - options = setDefaults(options, defaults$5); - let data = {}; - - if (options.sentences === true) { - data.sentences = p.sentences().map(s => s.json(options)); - } - - return data; - }; - - var toJson_1$1 = toJson$2; - - var toJSON$2 = toJson_1$1; - - const defaults$4 = { - sentences: true, - lists: true, - images: true - }; - - const Paragraph = function (data) { - Object.defineProperty(this, 'data', { - enumerable: false, - value: data - }); - }; - - const methods$3 = { - sentences: function () { - return this.data.sentences || []; - }, - references: function () { - return this.data.references; - }, - lists: function () { - return this.data.lists; - }, - - images() { - return this.data.images || []; - }, - - links: function (clue) { - let arr = []; - this.sentences().forEach(s => { - arr = arr.concat(s.links(clue)); - }); - - if (typeof clue === 'string') { - //grab a specific link like .links('Fortnight') - clue = clue.charAt(0).toUpperCase() + clue.substring(1); //titlecase it - - let link = arr.find(o => o.page() === clue); - return link === undefined ? [] : [link]; - } - - return arr || []; - }, - - interwiki() { - let arr = []; - this.sentences().forEach(s => { - arr = arr.concat(s.interwiki()); - }); - return arr || []; - }, - - text: function (options) { - options = setDefaults(options, defaults$4); - let str = this.sentences().map(s => s.text(options)).join(' '); - this.lists().forEach(list => { - str += '\n' + list.text(); - }); - return str; - }, - json: function (options) { - options = setDefaults(options, defaults$4); - return toJSON$2(this, options); - }, - wikitext: function () { - return this.data.wiki; - } - }; - methods$3.citations = methods$3.references; - Object.keys(methods$3).forEach(k => { - Paragraph.prototype[k] = methods$3[k]; - }); // aliases - - const singular$2 = { - sentences: 'sentence', - references: 'reference', - citation: 'citations', - lists: 'list', - images: 'image', - links: 'link' - }; - Object.keys(singular$2).forEach(k => { - let sing = singular$2[k]; - - Paragraph.prototype[sing] = function (clue) { - let arr = this[k](clue); - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr[0]; - }; - }); - var Paragraph_1 = Paragraph; - - const opener = '['; - const closer = ']'; - /** - * - * find all the pairs of '[[...[[..]]...]]' in the text - * used to properly root out recursive template calls, [[.. [[...]] ]] - * basically just adds open tags, and subtracts closing tags - * - * @private - * @param {string} text the text in which is searched in - * @returns {string[]} all the links in the text - */ - - function nested_find$1(text) { - let out = []; - let last = []; - const chars = text.split(''); - let open = 0; - - for (let i = 0; i < chars.length; i++) { - const c = text[i]; //increment open tag - - if (c === opener) { - open += 1; - } //decrement close tag - else if (c === closer) { - open -= 1; - - if (open < 0) { - open = 0; - } - } else if (last.length === 0) { - //If we're not inside of a pair of delimiters, we can discard the current letter. - //The return of this function is only used to extract images. - continue; - } - - last.push(c); - - if (open === 0 && last.length > 0) { - //first, fix botched parse - let open_count = 0; - let close_count = 0; - - for (let j = 0; j < last.length; j++) { - if (last[j] === opener) { - open_count++; - } else if (last[j] === closer) { - close_count++; - } - } //is it botched? - - - if (open_count > close_count) { - last.push(closer); - } //looks good, keep it - - - out.push(last.join('')); - last = []; - } - } - - return out; - } - - var nested_find_1 = nested_find$1; - - var require$$3$3 = Image_1; - - var nested_find = nested_find_1; - - const parseSentence$3 = require$$0$7.fromText; //regexes: - - const isFile = new RegExp('(' + i18n.images.join('|') + '):', 'i'); - let fileNames = `(${i18n.images.join('|')})`; - const file_reg = new RegExp(fileNames + ':(.+?)[\\||\\]]', 'iu'); //style directives for Wikipedia:Extended_image_syntax - - const imgLayouts = { - thumb: true, - thumbnail: true, - border: true, - right: true, - left: true, - center: true, - top: true, - bottom: true, - none: true, - upright: true, - baseline: true, - middle: true, - sub: true, - super: true - }; //images are usually [[image:my_pic.jpg]] - - const oneImage = function (img, doc) { - let m = img.match(file_reg); - - if (m === null || !m[2]) { - return null; - } - - let file = `${m[1]}:${m[2] || ''}`; - file = file.trim(); //titlecase it - - let title = file.charAt(0).toUpperCase() + file.substring(1); //spaces to underscores - - title = title.replace(/ /g, '_'); - - if (title) { - let obj = { - file: file, - lang: doc._lang, - domain: doc._domain, - wiki: img - }; //try to grab other metadata, too - - img = img.replace(/^\[\[/, ''); - img = img.replace(/\]\]$/, ''); //https://en.wikipedia.org/wiki/Wikipedia:Extended_image_syntax - //- [[File:Name|Type|Border|Location|Alignment|Size|link=Link|alt=Alt|lang=Langtag|Caption]] - - let imgData = toJSON$3(img); - let arr = imgData.list || []; //parse-out alt text, if explicitly given - - if (imgData.alt) { - obj.alt = imgData.alt; - } //remove 'thumb' and things - - - arr = arr.filter(str => imgLayouts.hasOwnProperty(str) === false); - - if (arr[arr.length - 1]) { - obj.caption = parseSentence$3(arr[arr.length - 1]); - } - - return new require$$3$3(obj); - } - - return null; - }; - - const parseImages = function (paragraph, doc) { - let wiki = paragraph.wiki; //parse+remove scary '[[ [[]] ]]' stuff - - let matches = nested_find(wiki); - matches.forEach(function (s) { - if (isFile.test(s) === true) { - paragraph.images = paragraph.images || []; - let img = oneImage(s, doc); - - if (img) { - paragraph.images.push(img); - } - - wiki = wiki.replace(s, ''); - } - }); - paragraph.wiki = wiki; - }; - - var image = parseImages; - - const defaults$3 = {}; - - const toText$2 = (list, options) => { - return list.map(s => { - let str = s.text(options); - return ' * ' + str; - }).join('\n'); - }; - - const List = function (data, wiki = '') { - Object.defineProperty(this, 'data', { - enumerable: false, - value: data - }); - Object.defineProperty(this, 'wiki', { - enumerable: false, - value: wiki - }); - }; - - const methods$2 = { - lines() { - return this.data; - }, - - links(clue) { - let links = []; - this.lines().forEach(s => { - links = links.concat(s.links()); - }); - - if (typeof clue === 'string') { - //grab a link like .links('Fortnight') - clue = clue.charAt(0).toUpperCase() + clue.substring(1); //titlecase it - - let link = links.find(o => o.page() === clue); - return link === undefined ? [] : [link]; - } - - return links; - }, - - json(options) { - options = setDefaults(options, defaults$3); - return this.lines().map(s => s.json(options)); - }, - - text() { - return toText$2(this.data); - }, - - wikitext() { - return this.wiki || ''; - } - - }; - Object.keys(methods$2).forEach(k => { - List.prototype[k] = methods$2[k]; - }); - var List_1 = List; - - var require$$6$1 = List_1; - - const parseSentence$2 = require$$0$7.fromText; - const list_reg = /^[#*:;|]+/; - const bullet_reg = /^\*+[^:,|]{4}/; - const number_reg = /^ ?#[^:,|]{4}/; - const has_word = /[a-z_0-9\]}]/i; // does it start with a bullet point or something? - - const isList = function (line) { - return list_reg.test(line) || bullet_reg.test(line) || number_reg.test(line); - }; //make bullets/numbers into human-readable *'s - - - const cleanList = function (list) { - let number = 1; - list = list.filter(l => l); - - for (let i = 0; i < list.length; i++) { - let line = list[i]; //add # numberings formatting - - if (line.match(number_reg)) { - line = line.replace(/^ ?#*/, number + ') '); - line = line + '\n'; - number += 1; - } else if (line.match(list_reg)) { - number = 1; - line = line.replace(list_reg, ''); - } - - list[i] = parseSentence$2(line); - } - - return list; - }; - - const grabList = function (lines, i) { - let sub = []; - - for (let o = i; o < lines.length; o++) { - if (isList(lines[o])) { - sub.push(lines[o]); - } else { - break; - } - } - - sub = sub.filter(a => a && has_word.test(a)); - sub = cleanList(sub); - return sub; - }; - - const parseList = function (paragraph) { - let wiki = paragraph.wiki; - let lines = wiki.split(/\n/g); - let lists = []; - let theRest = []; - - for (let i = 0; i < lines.length; i++) { - if (isList(lines[i])) { - let sub = grabList(lines, i); - - if (sub.length > 0) { - lists.push(sub); - i += sub.length - 1; - } - } else { - theRest.push(lines[i]); - } - } - - paragraph.lists = lists.map(l => new require$$6$1(l, wiki)); - paragraph.wiki = theRest.join('\n'); - }; - - var list$1 = parseList; - - var require$$1$7 = Paragraph_1; - - var require$$1$6 = image; - - var require$$2$5 = list$1; - - const parseSentences = require$$0$7.byParagraph; - const twoNewLines = /\r?\n\r?\n/; - const parse$4 = { - image: require$$1$6, - list: require$$2$5 - }; - - const parseParagraphs = function (section, doc) { - let wiki = section._wiki; - let paragraphs = wiki.split(twoNewLines); //don't create empty paragraphs - - paragraphs = paragraphs.filter(p => p && p.trim().length > 0); - paragraphs = paragraphs.map(str => { - let paragraph = { - wiki: str, - lists: [], - sentences: [], - images: [] - }; //parse the lists - - parse$4.list(paragraph); //parse images - - parse$4.image(paragraph, doc); //parse the sentences - - parseSentences(paragraph); - return new require$$1$7(paragraph); - }); - section._wiki = wiki; - section._paragraphs = paragraphs; - }; - - var _03Paragraph = parseParagraphs; - - const open = '{'; - const close = '}'; //grab all first-level recursions of '{{...}}' - - const findFlat$1 = function (wiki) { - let depth = 0; - let list = []; - let carry = []; - - for (let i = wiki.indexOf(open); i !== -1 && i < wiki.length; depth > 0 ? i++ : i = wiki.indexOf(open, i + 1)) { - let c = wiki[i]; //open it - - if (c === open) { - depth += 1; - } //close it - - - if (depth > 0) { - if (c === close) { - depth -= 1; - - if (depth === 0) { - carry.push(c); - let tmpl = carry.join(''); - carry = []; //last check - - if (/\{\{/.test(tmpl) && /\}\}/.test(tmpl)) { - list.push(tmpl); - } - - continue; - } - } //require two '{{' to open it - - - if (depth === 1 && c !== open && c !== close) { - depth = 0; - carry = []; - continue; - } - - carry.push(c); - } - } - - return list; - }; - - var _02Flat = findFlat$1; - - //templates are usually '{{name|stuff}}' - - const getName$1 = function (tmpl) { - let name = null; //{{name|foo}} - - if (/^\{\{[^\n]+\|/.test(tmpl)) { - name = (tmpl.match(/^\{\{(.+?)\|/) || [])[1]; - } else if (tmpl.indexOf('\n') !== -1) { - // {{name \n... - name = (tmpl.match(/^\{\{(.+)\n/) || [])[1]; - } else { - //{{name here}} - name = (tmpl.match(/^\{\{(.+?)\}\}$/) || [])[1]; - } - - if (name) { - name = name.replace(/:.*/, ''); - name = fmtName(name); - } - - return name || null; - }; - - var _getName = getName$1; - - var findFlat = _02Flat; - - var getName = _getName; - - const hasTemplate = /\{\{/; - - const parseTemplate$2 = function (tmpl) { - // this is some unexplained Lua thing - tmpl = tmpl.replace(/#invoke:/, ''); - return { - body: tmpl, - name: getName(tmpl), - children: [] - }; - }; - - const doEach = function (obj) { - // peel-off top-level - let wiki = obj.body.substr(2); - wiki = wiki.replace(/\}\}$/, ''); // get our child templates - - obj.children = findFlat(wiki); - obj.children = obj.children.map(parseTemplate$2); - - if (obj.children.length === 0) { - return obj; - } // recurse through children - - - obj.children.forEach(ch => { - let inside = ch.body.substr(2); - - if (hasTemplate.test(inside)) { - return doEach(ch); //keep going - } - - return null; - }); - return obj; - }; // return a nested structure of all templates - - - const findTemplates$1 = function (wiki) { - let list = findFlat(wiki); - list = list.map(parseTemplate$2); - list = list.map(doEach); - return list; - }; - - var _01Nested = findTemplates$1; - - //we explicitly ignore these, because they sometimes have resolve some data - const list = [//https://en.wikipedia.org/wiki/category:templates_with_no_visible_output - 'anchor', 'defaultsort', 'use list-defined references', 'void', //https://en.wikipedia.org/wiki/Category:Protection_templates - 'pp', 'pp-move-indef', 'pp-semi-indef', 'pp-vandalism', //https://en.wikipedia.org/wiki/Template:R - 'r', //out-of-scope still - https://en.wikipedia.org/wiki/Template:Tag - '#tag', //https://en.wikipedia.org/wiki/Template:Navboxes - // 'navboxes', - // 'reflist', - // 'ref-list', - 'div col', // 'authority control', - //https://en.wikipedia.org/wiki/Template:Citation_needed - // 'better source', - // 'citation needed', - // 'clarify', - // 'cite quote', - // 'dead link', - // 'by whom', - // 'dubious', - // 'when', - // 'who', - // 'quantify', - // 'refimprove', - // 'weasel inline', - //https://en.wikipedia.org/wiki/Template:End - 'pope list end', 'shipwreck list end', 'starbox end', 'end box', 'end', 's-end']; - const ignore$1 = list.reduce((h, str) => { - h[str] = true; - return h; - }, {}); - var _ignore = ignore$1; - - var _infoboxes = { - 'gnf protein box': true, - 'automatic taxobox': true, - 'chembox ': true, - editnotice: true, - geobox: true, - hybridbox: true, - ichnobox: true, - infraspeciesbox: true, - mycomorphbox: true, - oobox: true, - 'paraphyletic group': true, - speciesbox: true, - subspeciesbox: true, - 'starbox short': true, - taxobox: true, - nhlteamseason: true, - 'asian games bid': true, - 'canadian federal election results': true, - 'dc thomson comic strip': true, - 'daytona 24 races': true, - edencharacter: true, - 'moldova national football team results': true, - samurai: true, - protein: true, - 'sheet authority': true, - 'order-of-approx': true, - 'bacterial labs': true, - 'medical resources': true, - ordination: true, - 'hockey team coach': true, - 'hockey team gm': true, - 'pro hockey team': true, - 'hockey team player': true, - 'hockey team start': true, - mlbbioret: true - }; - _infoboxes.editnotice; - _infoboxes.geobox; - _infoboxes.hybridbox; - _infoboxes.ichnobox; - _infoboxes.infraspeciesbox; - _infoboxes.mycomorphbox; - _infoboxes.oobox; - _infoboxes.speciesbox; - _infoboxes.subspeciesbox; - _infoboxes.taxobox; - _infoboxes.nhlteamseason; - _infoboxes.edencharacter; - _infoboxes.samurai; - _infoboxes.protein; - _infoboxes.ordination; - _infoboxes.mlbbioret; - - var infoboxes = _infoboxes; - - const i18nReg = new RegExp('^(subst.)?(' + i18n.infoboxes.join('|') + ')[: \n]', 'i'); //some looser ones - - const startReg = /^infobox /i; - const endReg = / infobox$/i; - const yearIn = /^year in [A-Z]/i; //some known ones from - //https://en.wikipedia.org/wiki/Wikipedia:List_of_infoboxes - //and https://en.wikipedia.org/wiki/Category:Infobox_templates - - const isInfobox = function (name) { - //known - if (infoboxes.hasOwnProperty(name) === true) { - return true; - } - - if (i18nReg.test(name)) { - return true; - } - - if (startReg.test(name) || endReg.test(name)) { - return true; - } //these are also infoboxes: 'Year in Belarus' - - - if (yearIn.test(name)) { - return true; - } - - return false; - }; //turns template data into good infobox data - - - const fmtInfobox = function (obj = {}) { - let m = obj.template.match(i18nReg); - let type = obj.template; - - if (m && m[0]) { - type = type.replace(m[0], ''); - } - - type = type.trim(); - let infobox = { - template: 'infobox', - type: type, - data: obj - }; - delete infobox.data.template; //already have this. - - delete infobox.data.list; //just in case! - - return infobox; - }; - - var _infobox = { - isInfobox: isInfobox, - format: fmtInfobox - }; - - let aliases$1 = { - imdb: 'imdb name', - 'imdb episodess': 'imdb episode', - localday: 'currentday', - localdayname: 'currentdayname', - localyear: 'currentyear', - 'birth date based on age at death': 'birth based on age as of date', - 'bare anchored list': 'anchored list', - cvt: 'convert', - cricon: 'flagicon', - sfrac: 'frac', - sqrt: 'radic', - 'unreferenced section': 'unreferenced', - redir: 'redirect', - sisterlinks: 'sister project links', - 'main article': 'main' - }; //multiple aliases - - let multi = { - date: ['byline', 'dateline'], - //wikinews - citation: ['cite', 'source', 'source-pr', 'source-science'], - flagcountry: ['cr', 'cr-rt'], - trunc: ['str left', 'str crop'], - percentage: ['pct', 'percentage'], - rnd: ['rndfrac', 'rndnear'], - abbr: ['tooltip', 'abbrv', 'define'], - sfn: ['sfnref', 'harvid', 'harvnb'], - 'birth date and age': ['death date and age', 'bda'], - currentmonth: ['localmonth', 'currentmonthname', 'currentmonthabbrev'], - currency: ['monnaie', 'unité', 'nombre', 'nb', 'iso4217'], - coord: ['coor', 'coor title dms', 'coor title dec', 'coor dms', 'coor dm', 'coor dec'], - 'columns-list': ['cmn', 'col-list', 'columnslist', 'collist'], - nihongo: ['nihongo2', 'nihongo3', 'nihongo-s', 'nihongo foot'], - plainlist: ['flatlist', 'plain list'], - 'winning percentage': ['winpct', 'winperc'], - 'collapsible list': ['nblist', 'nonbulleted list', 'ubl', 'ublist', 'ubt', 'unbullet', 'unbulleted list', 'unbulleted', 'unbulletedlist', 'vunblist'], - 'election box begin': ['election box begin no change', 'election box begin no party', 'election box begin no party no change', 'election box inline begin', 'election box inline begin no change'], - 'election box candidate': ['election box candidate for alliance', 'election box candidate minor party', 'election box candidate no party link no change', 'election box candidate with party link', 'election box candidate with party link coalition 1918', 'election box candidate with party link no change', 'election box inline candidate', 'election box inline candidate no change', 'election box inline candidate with party link', 'election box inline candidate with party link no change', 'election box inline incumbent'], - '4teambracket': ['2teambracket', '4team2elimbracket', '8teambracket', '16teambracket', '32teambracket', '4roundbracket-byes', 'cwsbracket', 'nhlbracket', 'nhlbracket-reseed', '4teambracket-nhl', '4teambracket-ncaa', '4teambracket-mma', '4teambracket-mlb', '16teambracket-two-reseeds', '8teambracket-nhl', '8teambracket-mlb', '8teambracket-ncaa', '8teambracket-afc', '8teambracket-afl', '8teambracket-tennis3', '8teambracket-tennis5', '16teambracket-nhl', '16teambracket-nhl divisional', '16teambracket-nhl-reseed', '16teambracket-nba', '16teambracket-swtc', '16teambracket-afc', '16teambracket-tennis3', '16teambracket-tennis5'], - start: ['end', 'birth', 'death', 'start date', 'end date', 'birth date', 'death date', 'start date and age', 'end date and age', 'dob'], - 'start-date': ['end-date', 'birth-date', 'death-date', 'birth-date and age', 'birth-date and given age', 'death-date and age', 'death-date and given age'], - tl: ['lts', 't', 'tfd links', 'tiw', 'tltt', 'tetl', 'tsetl', 'ti', 'tic', 'tiw', 'tlt', 'ttl', 'twlh', 'tl2', 'tlu', 'demo', 'hatnote', 'xpd', 'para', 'elc', 'xtag', 'mli', 'mlix', '#invoke', 'url' //https://en.wikipedia.org/wiki/Template:URL - ] - }; // - other languages - - // Polish, {{IPAc-pl}} {{IPAc-pl|'|sz|cz|e|ć|i|n}} → [ˈʂt͡ʂɛt͡ɕin] - // Portuguese, {{IPAc-pt}} {{IPAc-pt|p|o|<|r|t|u|'|g|a|l|lang=pt}} and {{IPAc-pt|b|r|a|'|s|i|l|lang=br}} → [puɾtuˈɣaɫ] and [bɾaˈsiw] - - Object.keys(languages).forEach(lang => { - aliases$1['ipa-' + lang] = 'ipa'; - aliases$1['ipac-' + lang] = 'ipac'; - }); // add each alias in - - Object.keys(multi).forEach(k => { - multi[k].forEach(str => { - aliases$1[str] = k; - }); - }); - var aliases_1 = aliases$1; - - var hardcoded = { - '·': '·', - dot: '·', - middot: '·', - '•': ' • ', - ',': ',', - '1/2': '1⁄2', - '1/3': '1⁄3', - '2/3': '2⁄3', - '1/4': '1⁄4', - '3/4': '3⁄4', - '–': '–', - ndash: '–', - 'en dash': '–', - 'spaced ndash': ' – ', - '—': '—', - mdash: '—', - 'em dash': '—', - 'number sign': '#', - ibeam: 'I', - '&': '&', - ';': ';', - ampersand: '&', - snds: ' – ', - snd: ' – ', - '^': ' ', - '!': '|', - '\\': ' /', - '`': '`', - '=': '=', - bracket: '[', - '[': '[', - '*': '*', - asterisk: '*', - 'long dash': '———', - clear: '\n\n', - 'h.': 'ḥ', - profit: '▲', - loss: '▼', - gain: '▲' - }; - hardcoded.dot; - hardcoded.middot; - hardcoded.ndash; - hardcoded.mdash; - hardcoded.ibeam; - hardcoded.ampersand; - hardcoded.snds; - hardcoded.snd; - hardcoded.bracket; - hardcoded.asterisk; - hardcoded.clear; - hardcoded.profit; - hardcoded.loss; - hardcoded.gain; - - let templates$a = { - p1: 0, - p2: 1, - p3: 2, - resize: 1, - //https://en.wikipedia.org/wiki/Template:Resize - lang: 1, - 'rtl-lang': 1, - l: 2, - h: 1, - //https://en.wikipedia.org/wiki/Template:Hover_title - sort: 1 //https://en.wikipedia.org/wiki/Template:Sort - - }; //templates that we simply grab their insides as plaintext - - let zeros = ['defn', 'lino', //https://en.wikipedia.org/wiki/Template:Linum - 'finedetail', //https://en.wikipedia.org/wiki/Template:Finedetail - 'nobold', 'noitalic', 'nocaps', 'vanchor', //https://en.wikipedia.org/wiki/Template:Visible_anchor - 'rnd', 'date', //Explictly-set dates - https://en.wikipedia.org/wiki/Template:Date - 'taste', 'monthname', 'baseball secondary style', 'lang-de', 'nowrap', 'nobr', 'big', 'cquote', 'pull quote', 'small', 'smaller', 'midsize', 'larger', 'big', 'kbd', 'bigger', 'large', 'mono', 'strongbad', 'stronggood', 'huge', 'xt', 'xt2', '!xt', 'xtn', 'xtd', 'dc', 'dcr', 'mxt', '!mxt', 'mxtn', 'mxtd', 'bxt', '!bxt', 'bxtn', 'bxtd', 'delink', //https://en.wikipedia.org/wiki/Template:Delink - 'pre', 'var', 'mvar', 'pre2', 'code']; - zeros.forEach(k => { - templates$a[k] = 0; - }); //https://en.wikipedia.org/wiki/Category:Lang-x_templates - - Object.keys(languages).forEach(k => { - templates$a['lang-' + k] = 0; - }); - var shorthand$1 = templates$a; - - const percentage = function (obj) { - if (!obj.numerator && !obj.denominator) { - return null; - } - - let perc = Number(obj.numerator) / Number(obj.denominator); - perc *= 100; - let dec = Number(obj.decimals); - - if (isNaN(dec)) { - dec = 1; - } - - perc = perc.toFixed(dec); - return Number(perc); - }; - - const toNumber = function (str = '') { - if (typeof str === 'number') { - return str; - } - - str = str.replace(/,/g, ''); - str = str.replace(/−/g, '-'); - let num = Number(str); - - if (isNaN(num)) { - return str; - } - - return num; - }; - - const getLang = function (name) { - //grab the language from the template name - 'ipa-de' - let lang = name.match(/ipac?-(.+)/); - - if (lang !== null) { - if (languages.hasOwnProperty(lang[1]) === true) { - return languages[lang[1]].english_title; - } - - return lang[1]; - } - - return null; - }; - - const titlecase$1 = str => { - return str.charAt(0).toUpperCase() + str.substring(1); - }; - - const sisterProjects = { - wikt: 'wiktionary', - commons: 'commons', - c: 'commons', - commonscat: 'commonscat', - n: 'wikinews', - q: 'wikiquote', - s: 'wikisource', - a: 'wikiauthor', - b: 'wikibooks', - voy: 'wikivoyage', - v: 'wikiversity', - d: 'wikidata', - species: 'wikispecies', - m: 'meta', - mw: 'mediawiki' - }; - var _lib$3 = { - titlecase: titlecase$1, - sisterProjects: sisterProjects, - getLang: getLang, - percentage: percentage, - toNumber: toNumber - }; - - var lib$1 = _lib$3; - - var functions$2 = { - //https://en.wikipedia.org/wiki/Template:Ra - ra: tmpl => { - let obj = toJSON$3(tmpl, ['hours', 'minutes', 'seconds']); - return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); - }, - //https://en.wikipedia.org/wiki/Template:Deg2HMS - deg2hms: tmpl => { - //this template should do the conversion - let obj = toJSON$3(tmpl, ['degrees']); - return (obj.degrees || '') + '°'; - }, - hms2deg: tmpl => { - //this template should do the conversion too - let obj = toJSON$3(tmpl, ['hours', 'minutes', 'seconds']); - return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); - }, - decdeg: tmpl => { - //this template should do the conversion too - let obj = toJSON$3(tmpl, ['deg', 'min', 'sec', 'hem', 'rnd']); - return (obj.deg || obj.degrees) + '°'; - }, - //https://en.wikipedia.org/wiki/Template:Sortname - sortname: tmpl => { - let order = ['first', 'last', 'target', 'sort']; - let obj = toJSON$3(tmpl, order); - let name = `${obj.first || ''} ${obj.last || ''}`; - name = name.trim(); - - if (obj.nolink) { - return obj.target || name; - } - - if (obj.dab) { - name += ` (${obj.dab})`; - - if (obj.target) { - obj.target += ` (${obj.dab})`; - } - } - - if (obj.target) { - return `[[${obj.target}|${name}]]`; - } - - return `[[${name}]]`; - }, - // https://en.wikipedia.org/wiki/Template:First_word - 'first word': tmpl => { - let obj = toJSON$3(tmpl, ['text']); - let str = obj.text; - - if (obj.sep) { - return str.split(obj.sep)[0]; - } - - return str.split(' ')[0]; - }, - trunc: tmpl => { - let order = ['str', 'len']; - let obj = toJSON$3(tmpl, order); - return obj.str.substr(0, obj.len); - }, - 'str mid': tmpl => { - let order = ['str', 'start', 'end']; - let obj = toJSON$3(tmpl, order); - let start = parseInt(obj.start, 10) - 1; - let end = parseInt(obj.end, 10); - return obj.str.substr(start, end); - }, - reign: tmpl => { - let order = ['start', 'end']; - let obj = toJSON$3(tmpl, order); - return `(r. ${obj.start} – ${obj.end})`; - }, - circa: tmpl => { - let obj = toJSON$3(tmpl, ['year']); - return `c. ${obj.year}`; - }, - // https://en.wikipedia.org/wiki/Template:Decade_link - 'decade link': tmpl => { - let obj = toJSON$3(tmpl, ['year']); - return `${obj.year}|${obj.year}s`; - }, - // https://en.wikipedia.org/wiki/Template:Decade - decade: tmpl => { - let obj = toJSON$3(tmpl, ['year']); - let year = Number(obj.year); - year = parseInt(year / 10, 10) * 10; // round to decade - - return `${year}s`; - }, - // https://en.wikipedia.org/wiki/Template:Century - century: tmpl => { - let obj = toJSON$3(tmpl, ['year']); - let year = Number(obj.year); - year = parseInt(year / 100, 10) + 1; - return `${year}`; - }, - //https://en.wikipedia.org/wiki/Template:Radic - radic: tmpl => { - let order = ['after', 'before']; - let obj = toJSON$3(tmpl, order); - return `${obj.before || ''}√${obj.after || ''}`; - }, - 'medical cases chart/row': tmpl => { - // Deprecated template; we keep it. - return tmpl; - }, - //https://en.wikipedia.org/wiki/Template:OldStyleDate - oldstyledate: tmpl => { - let order = ['date', 'year']; - let obj = toJSON$3(tmpl, order); - return obj.year ? obj.date + ' ' + obj.year : obj.date; - }, - //formatting things - https://en.wikipedia.org/wiki/Template:Nobold - braces: tmpl => { - let obj = toJSON$3(tmpl, ['text']); - let attrs = ''; - - if (obj.list) { - attrs = '|' + obj.list.join('|'); - } - - return '{{' + (obj.text || '') + attrs + '}}'; - }, - hlist: tmpl => { - let obj = toJSON$3(tmpl); - obj.list = obj.list || []; - return obj.list.join(' · '); - }, - pagelist: tmpl => { - let arr = toJSON$3(tmpl).list || []; - return arr.join(', '); - }, - //actually rendering these links removes the text. - //https://en.wikipedia.org/wiki/Template:Catlist - catlist: tmpl => { - let arr = toJSON$3(tmpl).list || []; - return arr.join(', '); - }, - //https://en.wikipedia.org/wiki/Template:Br_separated_entries - 'br separated entries': tmpl => { - let arr = toJSON$3(tmpl).list || []; - return arr.join('\n\n'); - }, - 'comma separated entries': tmpl => { - let arr = toJSON$3(tmpl).list || []; - return arr.join(', '); - }, - //https://en.wikipedia.org/wiki/Template:Bare_anchored_list - 'anchored list': tmpl => { - let arr = toJSON$3(tmpl).list || []; - arr = arr.map((str, i) => `${i + 1}. ${str}`); - return arr.join('\n\n'); - }, - 'bulleted list': tmpl => { - let arr = toJSON$3(tmpl).list || []; - arr = arr.filter(f => f); - arr = arr.map(str => '• ' + str); - return arr.join('\n\n'); - }, - //a strange, newline-based list - https://en.wikipedia.org/wiki/Template:Plainlist - plainlist: tmpl => { - tmpl = strip(tmpl); - let arr = tmpl.split('|').slice(1); //remove the title - - arr = arr.join('|').split(/\n ?\* ?/); //split on newline - - arr = arr.filter(s => s); - return arr.join('\n\n'); - }, - //https://en.wikipedia.org/wiki/Template:Term - term: tmpl => { - let obj = toJSON$3(tmpl, ['term']); - return `${obj.term}:`; - }, - linum: tmpl => { - let obj = toJSON$3(tmpl, ['num', 'text']); - return `${obj.num}. ${obj.text}`; - }, - 'block indent': tmpl => { - let obj = toJSON$3(tmpl); - - if (obj['1']) { - return '\n' + obj['1'] + '\n'; - } - - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Lbs - lbs: tmpl => { - let obj = toJSON$3(tmpl, ['text']); - return `[[${obj.text} Lifeboat Station|${obj.text}]]`; - }, - //Foo-class - lbc: tmpl => { - let obj = toJSON$3(tmpl, ['text']); - return `[[${obj.text}-class lifeboat|${obj.text}-class]]`; - }, - lbb: tmpl => { - let obj = toJSON$3(tmpl, ['text']); - return `[[${obj.text}-class lifeboat|${obj.text}]]`; - }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - '#dateformat': tmpl => { - tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON$3(tmpl, ['date', 'format']); - return obj.date; - }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - lc: tmpl => { - tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON$3(tmpl, ['text']); - return (obj.text || '').toLowerCase(); - }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - uc: tmpl => { - tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON$3(tmpl, ['text']); - return (obj.text || '').toUpperCase(); - }, - lcfirst: tmpl => { - tmpl = tmpl.replace(/:/, '|'); - let text = toJSON$3(tmpl, ['text']).text; - - if (!text) { - return ''; - } - - return text[0].toLowerCase() + text.substr(1); - }, - ucfirst: tmpl => { - tmpl = tmpl.replace(/:/, '|'); - let text = toJSON$3(tmpl, ['text']).text; - - if (!text) { - return ''; - } - - return text[0].toUpperCase() + text.substr(1); - }, - padleft: tmpl => { - tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON$3(tmpl, ['text', 'num']); - let text = obj.text || ''; - return text.padStart(obj.num, obj.str || '0'); - }, - padright: tmpl => { - tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON$3(tmpl, ['text', 'num']); - let text = obj.text || ''; - return text.padEnd(obj.num, obj.str || '0'); - }, - //https://en.wikipedia.org/wiki/Template:Abbrlink - abbrlink: tmpl => { - let obj = toJSON$3(tmpl, ['abbr', 'page']); - - if (obj.page) { - return `[[${obj.page}|${obj.abbr}]]`; - } - - return `[[${obj.abbr}]]`; - }, - // https://en.wikipedia.org/wiki/Template:Own - own: tmpl => { - let obj = toJSON$3(tmpl, ['author']); - let str = 'Own work'; - - if (obj.author) { - str += ' by ' + obj.author; - } - - return str; - }, - //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting - formatnum: tmpl => { - tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON$3(tmpl, ['number']); - let str = obj.number || ''; - str = str.replace(/,/g, ''); - let num = Number(str); - return num.toLocaleString() || ''; - }, - //https://en.wikipedia.org/wiki/Template:Frac - frac: tmpl => { - let order = ['a', 'b', 'c']; - let obj = toJSON$3(tmpl, order); - - if (obj.c) { - return `${obj.a} ${obj.b}/${obj.c}`; - } - - if (obj.b) { - return `${obj.a}/${obj.b}`; - } - - return `1/${obj.b}`; - }, - //https://en.wikipedia.org/wiki/Template:Convert#Ranges_of_values - convert: tmpl => { - let order = ['num', 'two', 'three', 'four']; - let obj = toJSON$3(tmpl, order); //todo: support plural units - - if (obj.two === '-' || obj.two === 'to' || obj.two === 'and') { - if (obj.four) { - return `${obj.num} ${obj.two} ${obj.three} ${obj.four}`; - } - - return `${obj.num} ${obj.two} ${obj.three}`; - } - - return `${obj.num} ${obj.two}`; - }, - // Large number of aliases - https://en.wikipedia.org/wiki/Template:Tl - tl: tmpl => { - let order = ['first', 'second']; - let obj = toJSON$3(tmpl, order); - return obj.second || obj.first; - }, - //this one's a little different - won: tmpl => { - let data = toJSON$3(tmpl, ['text']); - return data.place || data.text || lib$1.titlecase(data.template); - }, - //a convulated way to make a xml tag - https://en.wikipedia.org/wiki/Template:Tag - tag: tmpl => { - let obj = toJSON$3(tmpl, ['tag', 'open']); - const ignore = { - span: true, - div: true, - p: true - }; //pair, empty, close, single - - if (!obj.open || obj.open === 'pair') { - //just skip generating spans and things.. - if (ignore[obj.tag]) { - return obj.content || ''; - } - - return `<${obj.tag} ${obj.attribs || ''}>${obj.content || ''}`; - } - - return ''; - }, - //dumb inflector - https://en.wikipedia.org/wiki/Template:Plural - plural: tmpl => { - tmpl = tmpl.replace(/plural:/, 'plural|'); - let order = ['num', 'word']; - let obj = toJSON$3(tmpl, order); - let num = Number(obj.num); - let word = obj.word; - - if (num !== 1) { - if (/.y$/.test(word)) { - word = word.replace(/y$/, 'ies'); - } else { - word += 's'; - } - } - - return num + ' ' + word; - }, - //https://en.wikipedia.org/wiki/Template:DEC - dec: tmpl => { - let obj = toJSON$3(tmpl, ['degrees', 'minutes', 'seconds']); - let str = (obj.degrees || 0) + '°'; - - if (obj.minutes) { - str += obj.minutes + `′`; - } - - if (obj.seconds) { - str += obj.seconds + '″'; - } - - return str; - }, - //https://en.wikipedia.org/wiki/Template:Val - val: tmpl => { - let obj = toJSON$3(tmpl, ['number', 'uncertainty']); - let num = obj.number; - - if (num && Number(num)) { - num = Number(num).toLocaleString(); - } - - let str = num || ''; //prefix/suffix - - if (obj.p) { - str = obj.p + str; - } - - if (obj.s) { - str = obj.s + str; - } //add units, too - - - if (obj.u || obj.ul || obj.upl) { - str = str + ' ' + (obj.u || obj.ul || obj.upl); - } - - return str; - }, - //{{percentage | numerator | denominator | decimals to round to (zero or greater) }} - percentage: tmpl => { - let obj = toJSON$3(tmpl, ['numerator', 'denominator', 'decimals']); - let num = lib$1.percentage(obj); - - if (num === null) { - return ''; - } - - return num + '%'; - }, - // {{Percent-done|done=N|total=N|digits=N}} - 'percent-done': tmpl => { - let obj = toJSON$3(tmpl, ['done', 'total', 'digits']); - let num = lib$1.percentage({ - numerator: obj.done, - denominator: obj.total, - decimals: obj.digits - }); - - if (num === null) { - return ''; - } - - return `${obj.done} (${num}%) done`; - } - }; - functions$2.ra; - functions$2.deg2hms; - functions$2.hms2deg; - functions$2.decdeg; - functions$2.sortname; - functions$2.trunc; - functions$2.reign; - functions$2.circa; - functions$2.decade; - functions$2.century; - functions$2.radic; - functions$2.oldstyledate; - functions$2.braces; - functions$2.hlist; - functions$2.pagelist; - functions$2.catlist; - functions$2.plainlist; - functions$2.term; - functions$2.linum; - functions$2.lbs; - functions$2.lbc; - functions$2.lbb; - functions$2.lc; - functions$2.uc; - functions$2.lcfirst; - functions$2.ucfirst; - functions$2.padleft; - functions$2.padright; - functions$2.abbrlink; - functions$2.own; - functions$2.formatnum; - functions$2.frac; - functions$2.convert; - functions$2.tl; - functions$2.won; - functions$2.tag; - functions$2.plural; - functions$2.dec; - functions$2.val; - functions$2.percentage; - - var flags$1 = [['🇦🇩', 'and', 'andorra'], ['🇦🇪', 'are', 'united arab emirates'], ['🇦🇫', 'afg', 'afghanistan'], ['🇦🇬', 'atg', 'antigua and barbuda'], ['🇦🇮', 'aia', 'anguilla'], ['🇦🇱', 'alb', 'albania'], ['🇦🇲', 'arm', 'armenia'], ['🇦🇴', 'ago', 'angola'], ['🇦🇶', 'ata', 'antarctica'], ['🇦🇷', 'arg', 'argentina'], ['🇦🇸', 'asm', 'american samoa'], ['🇦🇹', 'aut', 'austria'], ['🇦🇺', 'aus', 'australia'], ['🇦🇼', 'abw', 'aruba'], ['🇦🇽', 'ala', 'åland islands'], ['🇦🇿', 'aze', 'azerbaijan'], ['🇧🇦', 'bih', 'bosnia and herzegovina'], ['🇧🇧', 'brb', 'barbados'], ['🇧🇩', 'bgd', 'bangladesh'], ['🇧🇪', 'bel', 'belgium'], ['🇧🇫', 'bfa', 'burkina faso'], ['🇧🇬', 'bgr', 'bulgaria'], ['🇧🇬', 'bul', 'bulgaria'], //dupe - ['🇧🇭', 'bhr', 'bahrain'], ['🇧🇮', 'bdi', 'burundi'], ['🇧🇯', 'ben', 'benin'], ['🇧🇱', 'blm', 'saint barthélemy'], ['🇧🇲', 'bmu', 'bermuda'], ['🇧🇳', 'brn', 'brunei darussalam'], ['🇧🇴', 'bol', 'bolivia'], ['🇧🇶', 'bes', 'bonaire, sint eustatius and saba'], ['🇧🇷', 'bra', 'brazil'], ['🇧🇸', 'bhs', 'bahamas'], ['🇧🇹', 'btn', 'bhutan'], ['🇧🇻', 'bvt', 'bouvet island'], ['🇧🇼', 'bwa', 'botswana'], ['🇧🇾', 'blr', 'belarus'], ['🇧🇿', 'blz', 'belize'], ['🇨🇦', 'can', 'canada'], ['🇨🇨', 'cck', 'cocos (keeling) islands'], ['🇨🇩', 'cod', 'congo'], ['🇨🇫', 'caf', 'central african republic'], ['🇨🇬', 'cog', 'congo'], ['🇨🇭', 'che', 'switzerland'], ['🇨🇮', 'civ', 'côte d\'ivoire'], ['🇨🇰', 'cok', 'cook islands'], ['🇨🇱', 'chl', 'chile'], ['🇨🇲', 'cmr', 'cameroon'], ['🇨🇳', 'chn', 'china'], ['🇨🇴', 'col', 'colombia'], ['🇨🇷', 'cri', 'costa rica'], ['🇨🇺', 'cub', 'cuba'], ['🇨🇻', 'cpv', 'cape verde'], ['🇨🇼', 'cuw', 'curaçao'], ['🇨🇽', 'cxr', 'christmas island'], ['🇨🇾', 'cyp', 'cyprus'], ['🇨🇿', 'cze', 'czech republic'], ['🇩🇪', 'deu', 'germany'], ['🇩🇪', 'ger', 'germany'], //alias - ['🇩🇯', 'dji', 'djibouti'], ['🇩🇰', 'dnk', 'denmark'], ['🇩🇲', 'dma', 'dominica'], ['🇩🇴', 'dom', 'dominican republic'], ['🇩🇿', 'dza', 'algeria'], ['🇪🇨', 'ecu', 'ecuador'], ['🇪🇪', 'est', 'estonia'], ['🇪🇬', 'egy', 'egypt'], ['🇪🇭', 'esh', 'western sahara'], ['🇪🇷', 'eri', 'eritrea'], ['🇪🇸', 'esp', 'spain'], ['🇪🇹', 'eth', 'ethiopia'], ['🇫🇮', 'fin', 'finland'], ['🇫🇯', 'fji', 'fiji'], ['🇫🇰', 'flk', 'falkland islands (malvinas)'], ['🇫🇲', 'fsm', 'micronesia'], ['🇫🇴', 'fro', 'faroe islands'], ['🇫🇷', 'fra', 'france'], ['🇬🇦', 'gab', 'gabon'], ['🇬🇧', 'gbr', 'united kingdom'], ['🇬🇩', 'grd', 'grenada'], //['🇬🇪', 'geo', 'georgia'], - ['🇬🇫', 'guf', 'french guiana'], ['🇬🇬', 'ggy', 'guernsey'], ['🇬🇭', 'gha', 'ghana'], ['🇬🇮', 'gib', 'gibraltar'], ['🇬🇱', 'grl', 'greenland'], ['🇬🇲', 'gmb', 'gambia'], ['🇬🇳', 'gin', 'guinea'], ['🇬🇵', 'glp', 'guadeloupe'], ['🇬🇶', 'gnq', 'equatorial guinea'], ['🇬🇷', 'grc', 'greece'], ['🇬🇸', 'sgs', 'south georgia'], ['🇬🇹', 'gtm', 'guatemala'], ['🇬🇺', 'gum', 'guam'], ['🇬🇼', 'gnb', 'guinea-bissau'], ['🇬🇾', 'guy', 'guyana'], ['🇭🇰', 'hkg', 'hong kong'], ['🇭🇲', 'hmd', 'heard island and mcdonald islands'], ['🇭🇳', 'hnd', 'honduras'], ['🇭🇷', 'hrv', 'croatia'], ['🇭🇹', 'hti', 'haiti'], ['🇭🇺', 'hun', 'hungary'], ['🇮🇩', 'idn', 'indonesia'], ['🇮🇪', 'irl', 'ireland'], ['🇮🇱', 'isr', 'israel'], ['🇮🇲', 'imn', 'isle of man'], ['🇮🇳', 'ind', 'india'], ['🇮🇴', 'iot', 'british indian ocean territory'], ['🇮🇶', 'irq', 'iraq'], ['🇮🇷', 'irn', 'iran'], ['🇮🇸', 'isl', 'iceland'], ['🇮🇹', 'ita', 'italy'], ['🇯🇪', 'jey', 'jersey'], ['🇯🇲', 'jam', 'jamaica'], ['🇯🇴', 'jor', 'jordan'], ['🇯🇵', 'jpn', 'japan'], ['🇰🇪', 'ken', 'kenya'], ['🇰🇬', 'kgz', 'kyrgyzstan'], ['🇰🇭', 'khm', 'cambodia'], ['🇰🇮', 'kir', 'kiribati'], ['🇰🇲', 'com', 'comoros'], ['🇰🇳', 'kna', 'saint kitts and nevis'], ['🇰🇵', 'prk', 'north korea'], ['🇰🇷', 'kor', 'south korea'], ['🇰🇼', 'kwt', 'kuwait'], ['🇰🇾', 'cym', 'cayman islands'], ['🇰🇿', 'kaz', 'kazakhstan'], ['🇱🇦', 'lao', 'lao people\'s democratic republic'], ['🇱🇧', 'lbn', 'lebanon'], ['🇱🇨', 'lca', 'saint lucia'], ['🇱🇮', 'lie', 'liechtenstein'], ['🇱🇰', 'lka', 'sri lanka'], ['🇱🇷', 'lbr', 'liberia'], ['🇱🇸', 'lso', 'lesotho'], ['🇱🇹', 'ltu', 'lithuania'], ['🇱🇺', 'lux', 'luxembourg'], ['🇱🇻', 'lva', 'latvia'], ['🇱🇾', 'lby', 'libya'], ['🇲🇦', 'mar', 'morocco'], ['🇲🇨', 'mco', 'monaco'], ['🇲🇩', 'mda', 'moldova'], ['🇲🇪', 'mne', 'montenegro'], ['🇲🇫', 'maf', 'saint martin (french part)'], ['🇲🇬', 'mdg', 'madagascar'], ['🇲🇭', 'mhl', 'marshall islands'], ['🇲🇰', 'mkd', 'macedonia'], ['🇲🇱', 'mli', 'mali'], ['🇲🇲', 'mmr', 'myanmar'], ['🇲🇳', 'mng', 'mongolia'], ['🇲🇴', 'mac', 'macao'], ['🇲🇵', 'mnp', 'northern mariana islands'], ['🇲🇶', 'mtq', 'martinique'], ['🇲🇷', 'mrt', 'mauritania'], ['🇲🇸', 'msr', 'montserrat'], ['🇲🇹', 'mlt', 'malta'], ['🇲🇺', 'mus', 'mauritius'], ['🇲🇻', 'mdv', 'maldives'], ['🇲🇼', 'mwi', 'malawi'], ['🇲🇽', 'mex', 'mexico'], ['🇲🇾', 'mys', 'malaysia'], ['🇲🇿', 'moz', 'mozambique'], ['🇳🇦', 'nam', 'namibia'], ['🇳🇨', 'ncl', 'new caledonia'], ['🇳🇪', 'ner', 'niger'], ['🇳🇫', 'nfk', 'norfolk island'], ['🇳🇬', 'nga', 'nigeria'], ['🇳🇮', 'nic', 'nicaragua'], ['🇳🇱', 'nld', 'netherlands'], ['🇳🇴', 'nor', 'norway'], ['🇳🇵', 'npl', 'nepal'], ['🇳🇷', 'nru', 'nauru'], ['🇳🇺', 'niu', 'niue'], ['🇳🇿', 'nzl', 'new zealand'], ['🇴🇲', 'omn', 'oman'], ['🇵🇦', 'pan', 'panama'], ['🇵🇪', 'per', 'peru'], ['🇵🇫', 'pyf', 'french polynesia'], ['🇵🇬', 'png', 'papua new guinea'], ['🇵🇭', 'phl', 'philippines'], ['🇵🇰', 'pak', 'pakistan'], ['🇵🇱', 'pol', 'poland'], ['🇵🇲', 'spm', 'saint pierre and miquelon'], ['🇵🇳', 'pcn', 'pitcairn'], ['🇵🇷', 'pri', 'puerto rico'], ['🇵🇸', 'pse', 'palestinian territory'], ['🇵🇹', 'prt', 'portugal'], ['🇵🇼', 'plw', 'palau'], ['🇵🇾', 'pry', 'paraguay'], ['🇶🇦', 'qat', 'qatar'], ['🇷🇪', 'reu', 'réunion'], ['🇷🇴', 'rou', 'romania'], ['🇷🇸', 'srb', 'serbia'], ['🇷🇺', 'rus', 'russia'], ['🇷🇼', 'rwa', 'rwanda'], ['🇸🇦', 'sau', 'saudi arabia'], ['🇸🇧', 'slb', 'solomon islands'], ['🇸🇨', 'syc', 'seychelles'], ['🇸🇩', 'sdn', 'sudan'], ['🇸🇪', 'swe', 'sweden'], ['🇸🇬', 'sgp', 'singapore'], ['🇸🇭', 'shn', 'saint helena, ascension and tristan da cunha'], ['🇸🇮', 'svn', 'slovenia'], ['🇸🇯', 'sjm', 'svalbard and jan mayen'], ['🇸🇰', 'svk', 'slovakia'], ['🇸🇱', 'sle', 'sierra leone'], ['🇸🇲', 'smr', 'san marino'], ['🇸🇳', 'sen', 'senegal'], ['🇸🇴', 'som', 'somalia'], ['🇸🇷', 'sur', 'suriname'], ['🇸🇸', 'ssd', 'south sudan'], ['🇸🇹', 'stp', 'sao tome and principe'], ['🇸🇻', 'slv', 'el salvador'], ['🇸🇽', 'sxm', 'sint maarten (dutch part)'], ['🇸🇾', 'syr', 'syrian arab republic'], ['🇸🇿', 'swz', 'swaziland'], ['🇹🇨', 'tca', 'turks and caicos islands'], ['🇹🇩', 'tcd', 'chad'], ['🇹🇫', 'atf', 'french southern territories'], ['🇹🇬', 'tgo', 'togo'], ['🇹🇭', 'tha', 'thailand'], ['🇹🇯', 'tjk', 'tajikistan'], ['🇹🇰', 'tkl', 'tokelau'], ['🇹🇱', 'tls', 'timor-leste'], ['🇹🇲', 'tkm', 'turkmenistan'], ['🇹🇳', 'tun', 'tunisia'], ['🇹🇴', 'ton', 'tonga'], ['🇹🇷', 'tur', 'turkey'], ['🇹🇹', 'tto', 'trinidad and tobago'], ['🇹🇻', 'tuv', 'tuvalu'], ['🇹🇼', 'twn', 'taiwan'], ['🇹🇿', 'tza', 'tanzania'], ['🇺🇦', 'ukr', 'ukraine'], ['🇺🇬', 'uga', 'uganda'], ['🇺🇲', 'umi', 'united states minor outlying islands'], ['🇺🇸', 'us', 'united states'], //alias - ['🇺🇸', 'usa', 'united states'], ['🇺🇾', 'ury', 'uruguay'], ['🇺🇿', 'uzb', 'uzbekistan'], ['🇻🇦', 'vat', 'vatican city'], ['🇻🇨', 'vct', 'saint vincent and the grenadines'], ['🇻🇪', 'ven', 'venezuela'], ['🇻🇬', 'vgb', 'virgin islands, british'], ['🇻🇮', 'vir', 'virgin islands, u.s.'], ['🇻🇳', 'vnm', 'viet nam'], ['🇻🇺', 'vut', 'vanuatu'], ['🇼🇫', 'wlf', 'wallis and futuna'], ['🇼🇸', 'wsm', 'samoa'], ['🇾🇪', 'yem', 'yemen'], ['🇾🇹', 'myt', 'mayotte'], ['🇿🇦', 'zaf', 'south africa'], ['🇿🇲', 'zmb', 'zambia'], ['🇿🇼 ', 'zwe', 'zimbabwe'], //others (later unicode versions) - ['🇺🇳', 'un', 'united nations'], ['🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿', 'eng', 'england'], ['🏴󠁧󠁢󠁳󠁣󠁴󠁿', 'sct', 'scotland'], ['🏴󠁧󠁢󠁷󠁬󠁳󠁿', 'wal', 'wales'], ['🇪🇺', 'eu', 'european union']]; - - var flags = flags$1; - - let templates$9 = { - //https://en.wikipedia.org/wiki/Template:Flag - // {{flag|USA}} → USA - flag: tmpl => { - let order = ['flag', 'variant']; - let obj = toJSON$3(tmpl, order); - let name = obj.flag || ''; - obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; - let flag = found[0] || ''; - return `${flag} [[${found[2]}|${name}]]`; - }, - // {{flagcountry|USA}} → United States - flagcountry: tmpl => { - let order = ['flag', 'variant']; - let obj = toJSON$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; - let flag = found[0] || ''; - return `${flag} [[${found[2]}]]`; - }, - // (unlinked flag-country) - flagcu: tmpl => { - let order = ['flag', 'variant']; - let obj = toJSON$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; - let flag = found[0] || ''; - return `${flag} ${found[2]}`; - }, - //https://en.wikipedia.org/wiki/Template:Flagicon - // {{flagicon|USA}} → United States - flagicon: tmpl => { - let order = ['flag', 'variant']; - let obj = toJSON$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); - - if (!found) { - return ''; - } - - return `[[${found[2]}|${found[0]}]]`; - }, - //unlinked flagicon - flagdeco: tmpl => { - let order = ['flag', 'variant']; - let obj = toJSON$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; - return found[0] || ''; - }, - //same, but a soccer team - fb: tmpl => { - let order = ['flag', 'variant']; - let obj = toJSON$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); - - if (!found) { - return ''; - } - - return `${found[0]} [[${found[2]} national football team|${found[2]}]]`; - }, - fbicon: tmpl => { - let order = ['flag', 'variant']; - let obj = toJSON$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); - - if (!found) { - return ''; - } - - return ` [[${found[2]} national football team|${found[0]}]]`; - }, - flagathlete: tmpl => { - let order = ['name', 'flag', 'variant']; - let obj = toJSON$3(tmpl, order); - obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); - - if (!found) { - return `[[${obj.name || ''}]]`; - } - - return `${found[0]} [[${obj.name || ''}]] (${found[1].toUpperCase()})`; - } - }; //support {{can}} - - flags.forEach(a => { - templates$9[a[1]] = () => { - return a[0]; - }; - }); - var flags_1 = templates$9; - - const titlecase = lib$1.titlecase; //https://en.wikipedia.org/wiki/Template:Yes - - let templates$8 = {}; - let cells = ['rh', 'rh2', 'yes', 'no', 'maybe', 'eliminated', 'lost', 'safe', 'active', 'site active', 'coming soon', 'good', 'won', 'nom', 'sho', 'longlisted', 'tba', 'success', 'operational', 'failure', 'partial', 'regional', 'maybecheck', 'partial success', 'partial failure', 'okay', 'yes-no', 'some', 'nonpartisan', 'pending', 'unofficial', 'unofficial2', 'usually', 'rarely', 'sometimes', 'any', 'varies', 'black', 'non-album single', 'unreleased', 'unknown', 'perhaps', 'depends', 'included', 'dropped', 'terminated', 'beta', 'table-experimental', 'free', 'proprietary', 'nonfree', 'needs', 'nightly', 'release-candidate', 'planned', 'scheduled', 'incorrect', 'no result', 'cmain', 'calso starring', 'crecurring', 'cguest', 'not yet', 'optional']; - cells.forEach(str => { - templates$8[str] = tmpl => { - let data = toJSON$3(tmpl, ['text']); - return data.text || titlecase(data.template); - }; - }); //these ones have a text result - - let moreCells = [['active fire', 'Active'], ['site active', 'Active'], ['site inactive', 'Inactive'], ['yes2', ''], ['no2', ''], ['ya', '✅'], ['na', '❌'], ['nom', 'Nominated'], ['sho', 'Shortlisted'], ['tba', 'TBA'], ['maybecheck', '✔️'], ['okay', 'Neutral'], ['n/a', 'N/A'], ['sdash', '—'], ['dunno', '?'], ['draw', ''], ['cnone', ''], ['nocontest', '']]; - moreCells.forEach(a => { - templates$8[a[0]] = tmpl => { - let data = toJSON$3(tmpl, ['text']); - return data.text || a[1]; - }; - }); - var tableCell = templates$8; - - var require$$0$6 = hardcoded; - - var require$$1$5 = shorthand$1; - - var require$$2$4 = functions$2; - - var require$$3$2 = flags_1; - - var require$$4$2 = tableCell; - - var textOnly = Object.assign({}, require$$0$6, require$$1$5, require$$2$4, require$$3$2, require$$4$2); - - let templates$7 = {}; // these all have ['id', 'name'] - - let idName = ['goodreads author', 'twitter', 'facebook', 'instagram', 'tumblr', 'pinterest', 'espn nfl', 'espn nhl', 'espn fc', 'hockeydb', 'fifa player', 'worldcat', 'worldcat id', 'nfl player', 'ted speaker', 'playmate']; - idName.forEach(name => { - templates$7[name] = ['id', 'name']; - }); - var idName_1 = templates$7; - - let templates$6 = {}; // these all have ['id', 'title', 'description', 'section'] - - let idTitle = ['imdb title', //https://en.wikipedia.org/wiki/Template:IMDb_title - 'imdb name', 'imdb episode', 'imdb event', 'afi film', 'allmovie title', 'allgame', 'tcmdb title', 'discogs artist', 'discogs label', 'discogs release', 'discogs master', 'librivox author', 'musicbrainz artist', 'musicbrainz label', 'musicbrainz recording', 'musicbrainz release', 'musicbrainz work', 'youtube', 'goodreads book', 'dmoz' //https://en.wikipedia.org/wiki/Template:DMOZ - ]; - idTitle.forEach(name => { - templates$6[name] = ['id', 'title', 'description', 'section']; - }); - var idTitle_1 = templates$6; - - var functions$1 = { - // https://en.wikipedia.org/wiki/Template:IPA - ipa: (tmpl, list) => { - let obj = toJSON$3(tmpl, ['transcription', 'lang', 'audio']); - obj.lang = lib$1.getLang(obj.template); - obj.template = 'ipa'; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:IPAc-en - ipac: (tmpl, list) => { - let obj = toJSON$3(tmpl); - obj.transcription = (obj.list || []).join(','); - delete obj.list; - obj.lang = lib$1.getLang(obj.template); - obj.template = 'ipac'; - list.push(obj); - return ''; - }, - quote: (tmpl, list) => { - let order = ['text', 'author']; - let obj = toJSON$3(tmpl, order); - list.push(obj); //create plaintext version - - if (obj.text) { - let str = `"${obj.text}"`; - - if (obj.author) { - str += '\n\n'; - str += ` - ${obj.author}`; - } - - return str + '\n'; - } - - return ''; - }, - //this one sucks - https://en.wikipedia.org/wiki/Template:GNIS - 'cite gnis': (tmpl, list) => { - let order = ['id', 'name', 'type']; - let obj = toJSON$3(tmpl, order); - obj.type = 'gnis'; - obj.template = 'citation'; - list.push(obj); - return ''; - }, - 'spoken wikipedia': (tmpl, list) => { - let order = ['file', 'date']; - let obj = toJSON$3(tmpl, order); - obj.template = 'audio'; - list.push(obj); - return ''; - }, - //yellow card - yel: (tmpl, list) => { - let obj = toJSON$3(tmpl, ['min']); - list.push(obj); - - if (obj.min) { - return `yellow: ${obj.min || ''}'`; //no yellow-card emoji - } - - return ''; - }, - subon: (tmpl, list) => { - let obj = toJSON$3(tmpl, ['min']); - list.push(obj); - - if (obj.min) { - return `sub on: ${obj.min || ''}'`; //no yellow-card emoji - } - - return ''; - }, - suboff: (tmpl, list) => { - let obj = toJSON$3(tmpl, ['min']); - list.push(obj); - - if (obj.min) { - return `sub off: ${obj.min || ''}'`; //no yellow-card emoji - } - - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Sfn - sfn: (tmpl, list, parser, alias) => { - let order = ['author', 'year', 'location']; - let obj = toJSON$3(tmpl, order); - - if (alias) { - obj.name = obj.template; - obj.teplate = alias; - } - - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Redirect - redirect: (tmpl, list) => { - let data = toJSON$3(tmpl, ['redirect']); - let lines = data.list || []; - let links = []; - - for (let i = 0; i < lines.length; i += 2) { - links.push({ - page: lines[i + 1], - desc: lines[i] - }); - } - - let obj = { - template: 'redirect', - redirect: data.redirect, - links: links - }; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Sister_project_links - 'sister project links': (tmpl, list) => { - let data = toJSON$3(tmpl); //rename 'wd' to 'wikidata' - - let links = {}; - Object.keys(lib$1.sisterProjects).forEach(k => { - if (data.hasOwnProperty(k) === true) { - links[lib$1.sisterProjects[k]] = data[k]; //.text(); - } - }); - let obj = { - template: 'sister project links', - links: links - }; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Subject_bar - 'subject bar': (tmpl, list) => { - let data = toJSON$3(tmpl); - Object.keys(data).forEach(k => { - //rename 'voy' to 'wikivoyage' - if (lib$1.sisterProjects.hasOwnProperty(k)) { - data[lib$1.sisterProjects[k]] = data[k]; - delete data[k]; - } - }); - let obj = { - template: 'subject bar', - links: data - }; - list.push(obj); - return ''; - }, - //amazingly, this one does not obey any known patterns - //https://en.wikipedia.org/wiki/Template:Gallery - gallery: (tmpl, list) => { - let obj = toJSON$3(tmpl); - let images = (obj.list || []).filter(line => /^ *File ?:/.test(line)); - images = images.map(file => { - let img = { - file: file - }; // todo: add lang and domain information - - return new require$$3$3(img).json(); - }); - obj = { - template: 'gallery', - images: images - }; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Sky - sky: (tmpl, list) => { - let obj = toJSON$3(tmpl, ['asc_hours', 'asc_minutes', 'asc_seconds', 'dec_sign', 'dec_degrees', 'dec_minutes', 'dec_seconds', 'distance']); - let template = { - template: 'sky', - ascension: { - hours: obj.asc_hours, - minutes: obj.asc_minutes, - seconds: obj.asc_seconds - }, - declination: { - sign: obj.dec_sign, - degrees: obj.dec_degrees, - minutes: obj.dec_minutes, - seconds: obj.dec_seconds - }, - distance: obj.distance - }; - list.push(template); - return ''; - }, - // Parse https://en.wikipedia.org/wiki/Template:Medical_cases_chart -- see - // https://en.wikipedia.org/wiki/Module:Medical_cases_chart for the original - // parsing code. - 'medical cases chart': (tmpl, list) => { - let order = ['date', 'deathsExpr', 'recoveriesExpr', 'casesExpr', '4thExpr', '5thExpr', 'col1', 'col1Change', 'col2', 'col2Change']; - let obj = toJSON$3(tmpl); - obj.data = obj.data || ''; - let rows = obj.data.split('\n'); // Mimic row parsing in _buildBars in the Lua source, from the following - // line on: - // - // for parameter in mw.text.gsplit(line, ';') do - - let dataArray = rows.map(row => { - let parameters = row.split(';'); - let rowObject = { - options: new Map() - }; - let positionalIndex = 0; - - for (let i = 0; i < parameters.length; i++) { - let parameter = parameters[i].trim(); - - if (parameter.match(/^[a-zA-Z_]/)) { - // Named argument - let [key, value] = parameter.split('='); // At this point, the Lua code evaluates alttot1 and alttot2 values as - // #expr expressions, but we just pass them through. See also: - // https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions##expr - - if (value === undefined) { - value = null; - } - - rowObject.options.set(key, value); - } else { - // Positional argument - // Here again, the Lua code evaluates arguments at index 1 through 5 - // as #expr expressions, but we just pass them through. - if (positionalIndex < order.length) { - rowObject[order[positionalIndex]] = parameter; - } - - positionalIndex++; - } - } - - for (; positionalIndex < order.length; positionalIndex++) { - rowObject[order[positionalIndex]] = null; - } - - return rowObject; - }); - obj.data = dataArray; - list.push(obj); - return ''; - }, - graph: (tmpl, list) => { - let data = toJSON$3(tmpl); - - if (data.x) { - data.x = data.x.split(',').map(str => str.trim()); - } - - if (data.y) { - data.y = data.y.split(',').map(str => str.trim()); - } - - let y = 1; - - while (data['y' + y]) { - data['y' + y] = data['y' + y].split(',').map(str => str.trim()); - y += 1; - } - - list.push(data); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Historical_populations - 'historical populations': (tmpl, list) => { - let data = toJSON$3(tmpl); - data.list = data.list || []; - let years = []; - - for (let i = 0; i < data.list.length; i += 2) { - let num = data.list[i + 1]; - years.push({ - year: data.list[i], - val: Number(num) || num - }); - } - - data.data = years; - delete data.list; - list.push(data); - return ''; - }, - // this one is a handful! - //https://en.wikipedia.org/wiki/Template:Weather_box - 'weather box': (tmpl, list) => { - const hasMonth = /^jan /i; - const isYear = /^year /i; - let obj = toJSON$3(tmpl); - const monthList = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']; - let byMonth = {}; - let properties = Object.keys(obj).filter(k => hasMonth.test(k)); - properties = properties.map(k => k.replace(hasMonth, '')); - properties.forEach(prop => { - byMonth[prop] = []; - monthList.forEach(m => { - let key = `${m} ${prop}`; - - if (obj.hasOwnProperty(key)) { - let num = lib$1.toNumber(obj[key]); - delete obj[key]; - byMonth[prop].push(num); - } - }); - }); //add these to original - - obj.byMonth = byMonth; //collect year-based data - - let byYear = {}; - Object.keys(obj).forEach(k => { - if (isYear.test(k)) { - let prop = k.replace(isYear, ''); - byYear[prop] = obj[k]; - delete obj[k]; - } - }); - obj.byYear = byYear; - list.push(obj); - return ''; - }, - //The 36 parameters are: 12 monthly highs (C), 12 lows (total 24) plus an optional 12 monthly rain/precipitation - //https://en.wikipedia.org/wiki/Template:Weather_box/concise_C - 'weather box/concise c': (tmpl, list) => { - let obj = toJSON$3(tmpl); - obj.list = obj.list.map(s => lib$1.toNumber(s)); - obj.byMonth = { - 'high c': obj.list.slice(0, 12), - 'low c': obj.list.slice(12, 24), - 'rain mm': obj.list.slice(24, 36) - }; - delete obj.list; - obj.template = 'weather box'; - list.push(obj); - return ''; - }, - 'weather box/concise f': (tmpl, list) => { - let obj = toJSON$3(tmpl); - obj.list = obj.list.map(s => lib$1.toNumber(s)); - obj.byMonth = { - 'high f': obj.list.slice(0, 12), - 'low f': obj.list.slice(12, 24), - 'rain inch': obj.list.slice(24, 36) - }; - delete obj.list; - obj.template = 'weather box'; - list.push(obj); - return ''; - }, - //https://en.wikipedia.org/wiki/Template:Climate_chart - 'climate chart': (tmpl, list) => { - let lines = toJSON$3(tmpl).list || []; - let title = lines[0]; - let source = lines[38]; - lines = lines.slice(1); //amazingly, they use '−' symbol here instead of negatives... - - lines = lines.map(str => { - if (str && str[0] === '−') { - str = str.replace(/−/, '-'); - } - - return str; - }); - let months = []; //groups of three, for 12 months - - for (let i = 0; i < 36; i += 3) { - months.push({ - low: lib$1.toNumber(lines[i]), - high: lib$1.toNumber(lines[i + 1]), - precip: lib$1.toNumber(lines[i + 2]) - }); - } - - let obj = { - template: 'climate chart', - data: { - title: title, - source: source, - months: months - } - }; - list.push(obj); - return ''; - } - }; - functions$1.ipa; - functions$1.ipac; - functions$1.quote; - functions$1.yel; - functions$1.subon; - functions$1.suboff; - functions$1.sfn; - functions$1.redirect; - functions$1.gallery; - functions$1.sky; - functions$1.graph; - - var require$$0$5 = idName_1; - - var require$$1$4 = idTitle_1; - - var require$$2$3 = functions$1; - - let templates$5 = { - //https://en.wikipedia.org/wiki/Category:External_link_templates - 'find a grave': ['id', 'name', 'work', 'last', 'first', 'date', 'accessdate'], - congbio: ['id', 'name', 'date'], - 'hollywood walk of fame': ['name'], - 'wide image': ['file', 'width', 'caption'], - audio: ['file', 'text', 'type'], - rp: ['page'], - 'short description': ['description'], - 'coord missing': ['region'], - unreferenced: ['date'], - 'taxon info': ['taxon', 'item'], - //https://en.wikipedia.org/wiki/Template:Taxon_info - 'portuguese name': ['first', 'second', 'suffix'], - // https://en.wikipedia.org/wiki/Template:Portuguese_name - geo: ['lat', 'lon', 'zoom'] //https://en.wikivoyage.org/wiki/Template:Geo - - }; - templates$5 = Object.assign(templates$5, require$$0$5, require$$1$4, require$$2$3); - var dataOnly = templates$5; - - var shorthand = { - mlbplayer: { - props: ['number', 'name', 'il'], - out: 'name' - }, - syntaxhighlight: { - props: [], - out: 'code' - }, - samp: { - props: ['1'], - out: '1' - }, - //https://en.wikipedia.org/wiki/Template:Sub - sub: { - props: ['text'], - out: 'text' - }, - //https://en.wikipedia.org/wiki/Template:Sup - sup: { - props: ['text'], - out: 'text' - }, - //https://en.wikipedia.org/wiki/Template:Chem2 - chem2: { - props: ['equation'], - out: 'equation' - }, - //https://en.wikipedia.org/wiki/Template:Interlanguage_link - ill: { - props: ['text', 'lan1', 'text1', 'lan2', 'text2'], - out: 'text' - }, - //https://en.wikipedia.org/wiki/Template:Abbr - abbr: { - props: ['abbr', 'meaning', 'ipa'], - out: 'abbr' - } // name: { - // props: [], - // out: '', - // }, - - }; - shorthand.mlbplayer; - shorthand.syntaxhighlight; - shorthand.samp; - shorthand.sub; - shorthand.sup; - shorthand.chem2; - shorthand.ill; - shorthand.abbr; - - let templates$4 = { - // https://en.wikipedia.org/wiki/Template:Math - math: (tmpl, list) => { - let obj = toJSON$3(tmpl, ['formula']); - list.push(obj); - return '\n\n' + (obj.formula || '') + '\n\n'; - }, - isbn: (tmpl, list) => { - let order = ['id', 'id2', 'id3']; - let obj = toJSON$3(tmpl, order); - list.push(obj); - return 'ISBN: ' + (obj.id || ''); - }, - //https://en.wikipedia.org/wiki/Template:Based_on - 'based on': (tmpl, list) => { - let obj = toJSON$3(tmpl, ['title', 'author']); - list.push(obj); - return `${obj.title} by ${obj.author || ''}`; - }, - //barrels of oil https://en.wikipedia.org/wiki/Template:Bbl_to_t - 'bbl to t': (tmpl, list) => { - let obj = toJSON$3(tmpl, ['barrels']); - list.push(obj); - - if (obj.barrels === '0') { - return obj.barrels + ' barrel'; - } - - return obj.barrels + ' barrels'; - }, - //minor planet - https://en.wikipedia.org/wiki/Template:MPC - mpc: (tmpl, list) => { - let obj = toJSON$3(tmpl, ['number', 'text']); - list.push(obj); - return `[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ${obj.text || obj.number}]`; - }, - pengoal: (tmpl, list) => { - list.push({ - template: 'pengoal' - }); - return '✅'; - }, - penmiss: (tmpl, list) => { - list.push({ - template: 'penmiss' - }); - return '❌'; - }, - // https://en.wikipedia.org/wiki/Template:Ordered_list - 'ordered list': (tmpl, list) => { - let obj = toJSON$3(tmpl); - list.push(obj); - obj.list = obj.list || []; - let lines = obj.list.map((str, i) => `${i + 1}. ${str}`); - return lines.join('\n\n'); - }, - // https://en.wikipedia.org/wiki/Template:Title_year - 'title year': (tmpl, _list, _alias, _parse, doc) => { - let obj = toJSON$3(tmpl, ['match', 'nomatch', 'page']); - let title = obj.page || doc.title(); - - if (title) { - let m = title.match(/\b[0-9]{4}\b/); //parse the year out of the title's name - - if (m) { - return m[0]; - } - } - - return obj.nomatch || ''; //use default response - }, - // https://en.wikipedia.org/wiki/Template:Title_century - 'title century': (tmpl, _list, _alias, _parse, doc) => { - let obj = toJSON$3(tmpl, ['match', 'nomatch', 'page']); - let title = obj.page || doc.title(); - - if (title) { - let m = title.match(/\b([0-9]+)(st|nd|rd|th)\b/); //parse the century out of the title's name - - if (m) { - return m[1] || ''; - } - } - - return obj.nomatch || ''; //use default response - }, - // https://en.wikipedia.org/wiki/Template:Title_decade - 'title decade': (tmpl, _list, _alias, _parse, doc) => { - let obj = toJSON$3(tmpl, ['match', 'nomatch', 'page']); - let title = obj.page || doc.title(); - - if (title) { - let m = title.match(/\b([0-9]+)s\b/); //parse the decade out of the title's name - - if (m) { - return m[1] || ''; - } - } - - return obj.nomatch || ''; //use default response - }, - //https://en.wikipedia.org/wiki/Template:Nihongo - nihongo: (tmpl, list) => { - let obj = toJSON$3(tmpl, ['english', 'kanji', 'romaji', 'extra']); - list.push(obj); - let str = obj.english || obj.romaji || ''; - - if (obj.kanji) { - str += ` (${obj.kanji})`; - } - - return str; - }, - //https://en.wikipedia.org/wiki/Template:Marriage - //this one creates a template, and an inline response - marriage: (tmpl, list) => { - let data = toJSON$3(tmpl, ['spouse', 'from', 'to', 'end']); - list.push(data); - let str = data.spouse || ''; - - if (data.from) { - if (data.to) { - str += ` (m. ${data.from}-${data.to})`; - } else { - str += ` (m. ${data.from})`; - } - } - - return str; - }, - //'red' card - {{sent off|cards|min1|min2}} - 'sent off': (tmpl, list) => { - let obj = toJSON$3(tmpl, ['cards']); - let result = { - template: 'sent off', - cards: obj.cards, - minutes: obj.list || [] - }; - list.push(result); - let mins = result.minutes.map(m => m + "'").join(', '); - return 'sent off: ' + mins; - }, - transl: (tmpl, list) => { - let obj = toJSON$3(tmpl, ['lang', 'text', 'text2']); // support 3-param - - if (obj.text2) { - obj.iso = obj.text; - obj.text = obj.text2; - delete obj.text2; - } - - list.push(obj); - return obj.text || ''; - }, - //show/hide: https://en.wikipedia.org/wiki/Template:Collapsible_list - 'collapsible list': (tmpl, list) => { - let obj = toJSON$3(tmpl); - list.push(obj); - let str = ''; - - if (obj.title) { - str += `'''${obj.title}'''` + '\n\n'; - } - - if (!obj.list) { - obj.list = []; - - for (let i = 1; i < 10; i += 1) { - if (obj[i]) { - obj.list.push(obj[i]); - delete obj[i]; - } - } - } - - obj.list = obj.list.filter(s => s); - str += obj.list.join('\n\n'); - return str; - }, - //https://en.wikipedia.org/wiki/Template:Columns-list - 'columns-list': (tmpl, list) => { - let arr = toJSON$3(tmpl).list || []; - let str = arr[0] || ''; - let lines = str.split(/\n/).filter(f => f); - lines = lines.map(s => s.replace(/\*/, '')); - list.push({ - template: 'columns-list', - list: lines - }); - lines = lines.map(s => '• ' + s); - return lines.join('\n\n'); - }, - //https://en.wikipedia.org/wiki/Template:Height - {{height|ft=6|in=1}} - height: (tmpl, list) => { - let obj = toJSON$3(tmpl); - list.push(obj); - let result = []; - let units = ['m', 'cm', 'ft', 'in']; //order matters - - units.forEach(unit => { - if (obj.hasOwnProperty(unit) === true) { - result.push(obj[unit] + unit); - } - }); - return result.join(' '); - }, - //https://en.wikipedia.org/wiki/Template:Sic - sic: (tmpl, list) => { - let obj = toJSON$3(tmpl, ['one', 'two', 'three']); - let word = (obj.one || '') + (obj.two || ''); //support '[sic?]' - - if (obj.one === '?') { - word = (obj.two || '') + (obj.three || ''); - } - - list.push({ - template: 'sic', - word: word - }); - - if (obj.nolink === 'y') { - return word; - } - - return `${word} [sic]`; - }, - // - inrconvert: (tmpl, list) => { - let o = toJSON$3(tmpl, ['rupee_value', 'currency_formatting']); - list.push(o); - const mults = { - k: 1000, - m: 1000000, - b: 1000000000, - t: 1000000000000, - l: 100000, - c: 10000000, - lc: 1000000000000 - }; - - if (o.currency_formatting) { - let multiplier = mults[o.currency_formatting] || 1; - o.rupee_value = o.rupee_value * multiplier; - } - - return `inr ${o.rupee_value || ''}`; - }, - //fraction - https://en.wikipedia.org/wiki/Template:Sfrac - frac: (tmpl, list) => { - let order = ['a', 'b', 'c']; - let obj = toJSON$3(tmpl, order); - let data = { - template: 'sfrac' - }; - - if (obj.c) { - data.integer = obj.a; - data.numerator = obj.b; - data.denominator = obj.c; - } else if (obj.b) { - data.numerator = obj.a; - data.denominator = obj.b; - } else { - data.numerator = 1; - data.denominator = obj.a; - } - - list.push(data); - - if (data.integer) { - return `${data.integer} ${data.numerator}⁄${data.denominator}`; - } - - return `${data.numerator}⁄${data.denominator}`; - }, - 'winning percentage': (tmpl, list) => { - let obj = toJSON$3(tmpl, ['wins', 'losses', 'ties']); - list.push(obj); - let wins = Number(obj.wins); - let losses = Number(obj.losses); - let ties = Number(obj.ties) || 0; - let games = wins + losses + ties; - - if (obj.ignore_ties === 'y') { - ties = 0; - } - - if (ties) { - wins += ties / 2; - } - - let num = lib$1.percentage({ - numerator: wins, - denominator: games, - decimals: 1 - }); - - if (num === null) { - return ''; - } - - return `.${num * 10}`; - }, - winlosspct: (tmpl, list) => { - let obj = toJSON$3(tmpl, ['wins', 'losses']); - list.push(obj); - let wins = Number(obj.wins); - let losses = Number(obj.losses); - let num = lib$1.percentage({ - numerator: wins, - denominator: wins + losses, - decimals: 1 - }); - - if (num === null) { - return ''; - } - - num = `.${num * 10}`; - return `${wins || 0} || ${losses || 0} || ${num || '-'}`; - }, - //https://en.wikipedia.org/wiki/Template:Video_game_release - 'video game release': (tmpl, list) => { - let order = ['region', 'date', 'region2', 'date2', 'region3', 'date3', 'region4', 'date4']; - let obj = toJSON$3(tmpl, order); - let template = { - template: 'video game release', - releases: [] - }; - - for (let i = 0; i < order.length; i += 2) { - if (obj[order[i]]) { - template.releases.push({ - region: obj[order[i]], - date: obj[order[i + 1]] - }); - } - } - - list.push(template); - let str = template.releases.map(o => `${o.region}: ${o.date || ''}`).join('\n\n'); - return '\n' + str + '\n'; - }, - // https://en.m.wikipedia.org/wiki/Template:USS - uss: (tmpl, list) => { - let obj = toJSON$3(tmpl, ['name', 'id']); - list.push(obj); - - if (obj.id) { - return `[[USS ${obj.name} (${obj.id})|USS ''${obj.name}'' (${obj.id})]]`; - } - - return `[[USS ${obj.name}|USS ''${obj.name}'']]`; - } - }; - var functions = templates$4; - - const codes$1 = { - '£': 'GB£', - // https://en.wikipedia.org/wiki/Template:GBP - '¥': '¥', - // https://en.wikipedia.org/wiki/Template:JPY - '৳': '৳', - // https://en.wikipedia.org/wiki/Template:BDT - '₩': '₩', - // https://en.wikipedia.org/wiki/Template:SK_won - '€': '€', - // https://en.wikipedia.org/wiki/Template:€ - '₱': '₱', - // https://en.wikipedia.org/wiki/Template:Philippine_peso - '₹': '₹', - // https://en.wikipedia.org/wiki/Template:Indian_Rupee - '₽': '₽', - // https://en.wikipedia.org/wiki/Template:RUB - 'cn¥': 'CN¥', - // https://en.wikipedia.org/wiki/Template:CNY - 'gb£': 'GB£', - // https://en.wikipedia.org/wiki/Template:GBP - 'india rs': '₹', - // https://en.wikipedia.org/wiki/Template:Indian_Rupee - 'indian rupee symbol': '₹', - // https://en.wikipedia.org/wiki/Template:Indian_Rupee - 'indian rupee': '₹', - // https://en.wikipedia.org/wiki/Template:Indian_Rupee - 'indian rupees': '₹', - // https://en.wikipedia.org/wiki/Template:Indian_Rupee - 'philippine peso': '₱', - // https://en.wikipedia.org/wiki/Template:Philippine_peso - 'russian ruble': '₽', - // https://en.wikipedia.org/wiki/Template:Russian_ruble - 'SK won': '₩', - // https://en.wikipedia.org/wiki/Template:SK_won - 'turkish lira': 'TRY', - //https://en.wikipedia.org/wiki/Template:Turkish_lira - a$: 'A$', - // https://en.wikipedia.org/wiki/Template:AUD - au$: 'A$', - //https://en.wikipedia.org/wiki/Template:AUD - aud: 'A$', - //https://en.wikipedia.org/wiki/Template:AUD - bdt: 'BDT', - //https://en.wikipedia.org/wiki/Template:BDT - brl: 'BRL', - //https://en.wikipedia.org/wiki/Template:BRL - ca$: 'CA$', - // https://en.wikipedia.org/wiki/Template:CAD - cad: 'CA$', - // https://en.wikipedia.org/wiki/Template:CAD - chf: 'CHF', - // https://en.wikipedia.org/wiki/Template:CHF - cny: 'CN¥', - // https://en.wikipedia.org/wiki/Template:CNY - czk: 'czk', - // https://en.wikipedia.org/wiki/Template:CZK - dkk: 'dkk', - // https://en.wikipedia.org/wiki/Template:DKK - dkk2: 'dkk', - // https://en.wikipedia.org/wiki/Template:DKK - euro: '€', - // https://en.wikipedia.org/wiki/Template:€ - gbp: 'GB£', - // https://en.wikipedia.org/wiki/Template:GBP - hk$: 'HK$', - // https://en.wikipedia.org/wiki/Template:HKD - hkd: 'HK$', - // https://en.wikipedia.org/wiki/Template:HKD - ils: 'ILS', - // https://en.wikipedia.org/wiki/Template:ILS - inr: '₹', - // https://en.wikipedia.org/wiki/Template:Indian_Rupee - jpy: '¥', - // https://en.wikipedia.org/wiki/Template:JPY - myr: 'MYR', - // https://en.wikipedia.org/wiki/Template:MYR - nis: 'ILS', - // https://en.wikipedia.org/wiki/Template:ILS - nok: 'NOK', - //https://en.wikipedia.org/wiki/Template:NOK - nok2: 'NOK', - //https://en.wikipedia.org/wiki/Template:NOK - nz$: 'NZ$', - //https://en.wikipedia.org/wiki/Template:NZD - nzd: 'NZ$', - //https://en.wikipedia.org/wiki/Template:NZD - peso: 'peso', - //https://en.wikipedia.org/wiki/Template:Peso - pkr: '₨', - // https://en.wikipedia.org/wiki/Template:Pakistani_Rupee - r$: 'BRL', - //https://en.wikipedia.org/wiki/Template:BRL - rmb: 'CN¥', - // https://en.wikipedia.org/wiki/Template:CNY - rub: '₽', - // https://en.wikipedia.org/wiki/Template:RUB - ruble: '₽', - // https://en.wikipedia.org/wiki/Template:Ruble - rupee: '₹', - // https://en.wikipedia.org/wiki/Template:Rupee - s$: 'sgd', - // https://en.wikipedia.org/wiki/Template:SGD - sek: 'SEK', - // https://en.wikipedia.org/wiki/Template:SEK - sek2: 'SEK', - // https://en.wikipedia.org/wiki/Template:SEK - sfr: 'CHF', - // https://en.wikipedia.org/wiki/Template:CHF - sgd: 'sgd', - // https://en.wikipedia.org/wiki/Template:SGD - shekel: 'ILS', - // https://en.wikipedia.org/wiki/Template:ILS - sheqel: 'ILS', - // https://en.wikipedia.org/wiki/Template:ILS - ttd: 'TTD', - //https://en.wikipedia.org/wiki/Template:TTD - us$: 'US$', - // https://en.wikipedia.org/wiki/Template:US$ - usd: 'US$', - // https://en.wikipedia.org/wiki/Template:US$ - yen: '¥', - // https://en.wikipedia.org/wiki/Template:JPY - zar: 'R' //https://en.wikipedia.org/wiki/Template:ZAR - - }; - - const parseCurrency = (tmpl, list) => { - let o = toJSON$3(tmpl, ['amount', 'code']); - list.push(o); - let code = o.template || ''; - - if (code === 'currency') { - code = o.code; - - if (!code) { - o.code = code = 'usd'; //Special case when currency template has no code argument - } - } else if (code === '' || code === 'monnaie' || code === 'unité' || code === 'nombre' || code === 'nb') { - code = o.code; - } - - code = (code || '').toLowerCase(); - - if (code === 'us') { - o.code = code = 'usd'; - } else if (code === 'uk') { - o.code = code = 'gbp'; - } - - let str = `${codes$1[code] || ''}${o.amount || ''}`; //support unknown currencies after the number - like '5 BTC' - - if (o.code && !codes$1[o.code.toLowerCase()]) { - str += ' ' + o.code; - } - - return str; - }; - - let templates$3 = { - currency: parseCurrency - }; //and the others fit the same pattern - - Object.keys(codes$1).forEach(k => { - templates$3[k] = parseCurrency; - }); - var currency = templates$3; - - const toOrdinal = function (i) { - let j = i % 10; - let k = i % 100; - - if (j === 1 && k !== 11) { - return i + 'st'; - } - - if (j === 2 && k !== 12) { - return i + 'nd'; - } - - if (j === 3 && k !== 13) { - return i + 'rd'; - } - - return i + 'th'; - }; //this is allowed to be rough - - - const day = 1000 * 60 * 60 * 24; - const month = day * 30; - const year = day * 365; - - const getEpoch = function (obj) { - return new Date(`${obj.year}-${obj.month || 0}-${obj.date || 1}`).getTime(); - }; //very rough! - - - const delta$1 = function (from, to) { - from = getEpoch(from); - to = getEpoch(to); - let diff = to - from; - let obj = {}; //get years - - let years = Math.floor(diff / year, 10); - - if (years > 0) { - obj.years = years; - diff -= obj.years * year; - } //get months - - - let monthCount = Math.floor(diff / month, 10); - - if (monthCount > 0) { - obj.months = monthCount; - diff -= obj.months * month; - } //get days - - - let days = Math.floor(diff / day, 10); - - if (days > 0) { - obj.days = days; // diff -= (obj.days * day); - } - - return obj; - }; //not all too fancy - used in {{timesince}} - - - const timeSince = function (str) { - let d = new Date(str); - - if (isNaN(d.getTime())) { - return ''; - } - - let now = new Date(); - let delt = now.getTime() - d.getTime(); - let predicate = 'ago'; - - if (delt < 0) { - predicate = 'from now'; - delt = Math.abs(delt); - } //figure out units - - - let hours = delt / 1000 / 60 / 60; - let days = hours / 24; - - if (days < 365) { - return parseInt(days, 10) + ' days ' + predicate; - } - - let years = days / 365; - return parseInt(years, 10) + ' years ' + predicate; - }; - - const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; - var _lib$2 = { - days: days, - timeSince: timeSince, - delta: delta$1, - toOrdinal: toOrdinal - }; - - //assorted parsing methods for date/time templates - const months$1 = [undefined, //1-based months.. :/ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; - const monthName = months$1.reduce((h, str, i) => { - if (i === 0) { - return h; - } - - h[str.toLowerCase()] = i; - return h; - }, {}); //parse year|month|date numbers - - const ymd = function (arr) { - let obj = {}; - let units = ['year', 'month', 'date', 'hour', 'minute', 'second']; //parse each unit in sequence.. - - for (let i = 0; i < units.length; i += 1) { - //skip it - if (!arr[i] && arr[1] !== 0) { - continue; - } - - let num = parseInt(arr[i], 10); - - if (isNaN(num) === false) { - obj[units[i]] = num; //we good. - } else if (units[i] === 'month' && monthName.hasOwnProperty(arr[i])) { - //try for month-name, like 'january - let month = monthName[arr[i]]; - obj[units[i]] = month; - } else { - //we dead. so skip this unit - delete obj[units[i]]; - } - } //try for timezone,too ftw - - - let last = arr[arr.length - 1] || ''; - last = String(last); - - if (last.toLowerCase() === 'z') { - obj.tz = 'UTC'; - } else if (/[+-][0-9]+:[0-9]/.test(last)) { - obj.tz = arr[6]; - } - - return obj; - }; //zero-pad a number - - - const pad = function (num) { - if (num < 10) { - return '0' + num; - } - - return String(num); - }; - - const toText$1 = function (date) { - //eg '1995' - let str = String(date.year || ''); - - if (date.month !== undefined && months$1.hasOwnProperty(date.month) === true) { - if (date.date === undefined) { - //January 1995 - str = `${months$1[date.month]} ${date.year}`; - } else { - //January 5, 1995 - str = `${months$1[date.month]} ${date.date}, ${date.year}`; //add times, if available - - if (date.hour !== undefined && date.minute !== undefined) { - let time = `${pad(date.hour)}:${pad(date.minute)}`; - - if (date.second !== undefined) { - time = time + ':' + pad(date.second); - } - - str = time + ', ' + str; //add timezone, if there, at the end in brackets - } - - if (date.tz) { - str += ` (${date.tz})`; - } - } - } - - return str; - }; - - var _format = { - toText: toText$1, - ymd: ymd - }; // console.log(toText(ymd([2018, 3, 28]))); - - var lib = _lib$2; - - var format = _format; - - const delta = lib.delta; //wrap it up as a template - - const template$1 = function (date) { - return { - template: 'date', - data: date - }; - }; - - const getBoth = function (tmpl) { - tmpl = strip(tmpl); - let arr = tmpl.split('|'); - let from = format.ymd(arr.slice(1, 4)); - let to = arr.slice(4, 7); //assume now, if 'to' is empty - - if (to.length === 0) { - let d = new Date(); - to = [d.getFullYear(), d.getMonth(), d.getDate()]; - } - - to = format.ymd(to); - return { - from: from, - to: to - }; - }; - - const parsers$1 = { - //generic {{date|year|month|date}} template - date: (tmpl, list) => { - let order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'timezone']; - let obj = toJSON$3(tmpl, order); - let data = format.ymd([obj.year, obj.month, obj.date || obj.day]); - obj.text = format.toText(data); //make the replacement string - - if (obj.timezone) { - if (obj.timezone === 'Z') { - obj.timezone = 'UTC'; - } - - obj.text += ` (${obj.timezone})`; - } - - if (obj.hour && obj.minute) { - if (obj.second) { - obj.text = `${obj.hour}:${obj.minute}:${obj.second}, ` + obj.text; - } else { - obj.text = `${obj.hour}:${obj.minute}, ` + obj.text; - } - } - - if (obj.text) { - list.push(template$1(obj)); - } - - return obj.text; - }, - //support parsing of 'February 10, 1992' - natural_date: (tmpl, list) => { - let order = ['text']; - let obj = toJSON$3(tmpl, order); - let str = obj.text || ''; // - just a year - - let date = {}; - - if (/^[0-9]{4}$/.test(str)) { - date.year = parseInt(str, 10); - } else { - //parse the date, using the js date object (for now?) - let txt = str.replace(/[a-z]+\/[a-z]+/i, ''); - txt = txt.replace(/[0-9]+:[0-9]+(am|pm)?/i, ''); - let d = new Date(txt); - - if (isNaN(d.getTime()) === false) { - date.year = d.getFullYear(); - date.month = d.getMonth() + 1; - date.date = d.getDate(); - } - } - - list.push(template$1(date)); - return str.trim(); - }, - //just grab the first value, and assume it's a year - one_year: (tmpl, list) => { - let order = ['year']; - let obj = toJSON$3(tmpl, order); - let year = Number(obj.year); - list.push(template$1({ - year: year - })); - return String(year); - }, - //assume 'y|m|d' | 'y|m|d' // {{BirthDeathAge|B|1976|6|6|1990|8|8}} - two_dates: (tmpl, list) => { - let order = ['b', 'birth_year', 'birth_month', 'birth_date', 'death_year', 'death_month', 'death_date']; - let obj = toJSON$3(tmpl, order); //'b' means show birth-date, otherwise show death-date - - if (obj.b && obj.b.toLowerCase() === 'b') { - let date = format.ymd([obj.birth_year, obj.birth_month, obj.birth_date]); - list.push(template$1(date)); - return format.toText(date); - } - - let date = format.ymd([obj.death_year, obj.death_month, obj.death_date]); - list.push(template$1(date)); - return format.toText(date); - }, - age: tmpl => { - let d = getBoth(tmpl); - let diff = delta(d.from, d.to); - return diff.years || 0; - }, - 'diff-y': tmpl => { - let d = getBoth(tmpl); - let diff = delta(d.from, d.to); - - if (diff.years === 1) { - return diff.years + ' year'; - } - - return (diff.years || 0) + ' years'; - }, - 'diff-ym': tmpl => { - let d = getBoth(tmpl); - let diff = delta(d.from, d.to); - let arr = []; - - if (diff.years === 1) { - arr.push(diff.years + ' year'); - } else if (diff.years && diff.years !== 0) { - arr.push(diff.years + ' years'); - } - - if (diff.months === 1) { - arr.push('1 month'); - } else if (diff.months && diff.months !== 0) { - arr.push(diff.months + ' months'); - } - - return arr.join(', '); - }, - 'diff-ymd': tmpl => { - let d = getBoth(tmpl); - let diff = delta(d.from, d.to); - let arr = []; - - if (diff.years === 1) { - arr.push(diff.years + ' year'); - } else if (diff.years && diff.years !== 0) { - arr.push(diff.years + ' years'); - } - - if (diff.months === 1) { - arr.push('1 month'); - } else if (diff.months && diff.months !== 0) { - arr.push(diff.months + ' months'); - } - - if (diff.days === 1) { - arr.push('1 day'); - } else if (diff.days && diff.days !== 0) { - arr.push(diff.days + ' days'); - } - - return arr.join(', '); - }, - 'diff-yd': tmpl => { - let d = getBoth(tmpl); - let diff = delta(d.from, d.to); - let arr = []; - - if (diff.years === 1) { - arr.push(diff.years + ' year'); - } else if (diff.years && diff.years !== 0) { - arr.push(diff.years + ' years'); - } //ergh... - - - diff.days += (diff.months || 0) * 30; - - if (diff.days === 1) { - arr.push('1 day'); - } else if (diff.days && diff.days !== 0) { - arr.push(diff.days + ' days'); - } - - return arr.join(', '); - }, - 'diff-d': tmpl => { - let d = getBoth(tmpl); - let diff = delta(d.from, d.to); - let arr = []; //ergh... - - diff.days += (diff.years || 0) * 365; - diff.days += (diff.months || 0) * 30; - - if (diff.days === 1) { - arr.push('1 day'); - } else if (diff.days && diff.days !== 0) { - arr.push(diff.days + ' days'); - } - - return arr.join(', '); - } - }; - var _parsers = parsers$1; - - var parsers = _parsers; - - const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; //date- templates we support - - var dates = { - currentday: () => { - let d = new Date(); - return String(d.getDate()); - }, - currentdayname: () => { - let d = new Date(); - return lib.days[d.getDay()]; - }, - currentmonth: () => { - let d = new Date(); - return months[d.getMonth()]; - }, - currentyear: () => { - let d = new Date(); - return String(d.getFullYear()); - }, - monthyear: () => { - let d = new Date(); - return months[d.getMonth()] + ' ' + d.getFullYear(); - }, - 'monthyear-1': () => { - let d = new Date(); - d.setMonth(d.getMonth() - 1); - return months[d.getMonth()] + ' ' + d.getFullYear(); - }, - 'monthyear+1': () => { - let d = new Date(); - d.setMonth(d.getMonth() + 1); - return months[d.getMonth()] + ' ' + d.getFullYear(); - }, - 'time ago': tmpl => { - let order = ['date', 'fmt']; - let time = toJSON$3(tmpl, order).date; - return lib.timeSince(time); - }, - //https://en.wikipedia.org/wiki/Template:Birth_date_and_age - 'birth date and age': (tmpl, list) => { - let order = ['year', 'month', 'day']; - let obj = toJSON$3(tmpl, order); //support 'one property' version - - if (obj.year && /[a-z]/i.test(obj.year)) { - return parsers.natural_date(tmpl, list); - } - - list.push(obj); - obj = format.ymd([obj.year, obj.month, obj.day]); - return format.toText(obj); - }, - 'birth year and age': (tmpl, list) => { - let order = ['birth_year', 'birth_month']; - let obj = toJSON$3(tmpl, order); //support 'one property' version - - if (obj.death_year && /[a-z]/i.test(obj.death_year)) { - return parsers.natural_date(tmpl, list); - } - - list.push(obj); - let age = new Date().getFullYear() - parseInt(obj.birth_year, 10); - obj = format.ymd([obj.birth_year, obj.birth_month]); - let str = format.toText(obj); - - if (age) { - str += ` (age ${age})`; - } - - return str; - }, - 'death year and age': (tmpl, list) => { - let order = ['death_year', 'birth_year', 'death_month']; - let obj = toJSON$3(tmpl, order); //support 'one property' version - - if (obj.death_year && /[a-z]/i.test(obj.death_year)) { - return parsers.natural_date(tmpl, list); - } - - list.push(obj); - obj = format.ymd([obj.death_year, obj.death_month]); - return format.toText(obj); - }, - //https://en.wikipedia.org/wiki/Template:Birth_date_and_age2 - 'birth date and age2': (tmpl, list) => { - let order = ['at_year', 'at_month', 'at_day', 'birth_year', 'birth_month', 'birth_day']; - let obj = toJSON$3(tmpl, order); - list.push(obj); - obj = format.ymd([obj.birth_year, obj.birth_month, obj.birth_day]); - return format.toText(obj); - }, - //https://en.wikipedia.org/wiki/Template:Birth_based_on_age_as_of_date - 'birth based on age as of date': (tmpl, list) => { - let order = ['age', 'year', 'month', 'day']; - let obj = toJSON$3(tmpl, order); - list.push(obj); - let age = parseInt(obj.age, 10); - let year = parseInt(obj.year, 10); - let born = year - age; - - if (born && age) { - return `${born} (age ${obj.age})`; - } - - return `(age ${obj.age})`; - }, - //https://en.wikipedia.org/wiki/Template:Death_date_and_given_age - 'death date and given age': (tmpl, list) => { - let order = ['year', 'month', 'day', 'age']; - let obj = toJSON$3(tmpl, order); - list.push(obj); - obj = format.ymd([obj.year, obj.month, obj.day]); - let str = format.toText(obj); - - if (obj.age) { - str += ` (age ${obj.age})`; - } - - return str; - }, - //sortable dates - - dts: tmpl => { - //remove formatting stuff, ewww - tmpl = tmpl.replace(/\|format=[ymd]+/i, ''); - tmpl = tmpl.replace(/\|abbr=(on|off)/i, ''); - let order = ['year', 'month', 'date', 'bc']; - let obj = toJSON$3(tmpl, order); - - if (obj.date && obj.month && obj.year) { - //render 'june 5 2018' - if (/[a-z]/.test(obj.month) === true) { - return [obj.month, obj.date, obj.year].join(' '); - } - - return [obj.year, obj.month, obj.date].join('-'); - } - - if (obj.month && obj.year) { - return [obj.year, obj.month].join('-'); - } - - if (obj.year) { - if (obj.year < 0) { - obj.year = Math.abs(obj.year) + ' BC'; - } - - return obj.year; - } - - return ''; - }, - //we can't do timezones, so fake this one a little bit - //https://en.wikipedia.org/wiki/Template:Time - time: () => { - let d = new Date(); - let obj = format.ymd([d.getFullYear(), d.getMonth(), d.getDate()]); - return format.toText(obj); - }, - // https://en.wikipedia.org/wiki/Template:MILLENNIUM - millennium: tmpl => { - let obj = toJSON$3(tmpl, ['year']); - let year = Number(obj.year); - year = parseInt(year / 1000, 10) + 1; - - if (obj.abbr && obj.abbr === 'y') { - if (year < 0) { - return `${lib.toOrdinal(Math.abs(year))} BC`; - } - - return `${lib.toOrdinal(year)}`; - } - - return `${lib.toOrdinal(year)} millennium`; - }, - //date/age/time templates - start: parsers.date, - 'start-date': parsers.natural_date, - birthdeathage: parsers.two_dates, - age: parsers.age, - 'age nts': parsers.age, - 'age in years': parsers['diff-y'], - 'age in years and months': parsers['diff-ym'], - 'age in years, months and days': parsers['diff-ymd'], - 'age in years and days': parsers['diff-yd'], - 'age in days': parsers['diff-d'] // 'birth date and age2': date, - // 'age in years, months, weeks and days': true, - // 'age as of date': true, - - }; - dates.currentday; - dates.currentdayname; - dates.currentmonth; - dates.currentyear; - dates.monthyear; - dates.dts; - dates.time; - dates.millennium; - dates.start; - dates.birthdeathage; - dates.age; - - /** - * converts DMS (decimal-minute-second) geo format to lat/lng format. - * major thank you to https://github.com/gmaclennan/parse-dms and https://github.com/WSDOT-GIS/dms-js 👏 - **/ - - function parseDMS(arr) { - let hemisphere = arr.pop(); - let degrees = Number(arr[0] || 0); - let minutes = Number(arr[1] || 0); - let seconds = Number(arr[2] || 0); - - if (typeof hemisphere !== 'string' || isNaN(degrees)) { - return null; - } - - let sign = 1; - - if (/[SW]/i.test(hemisphere)) { - sign = -1; - } - - return sign * (degrees + minutes / 60 + seconds / 3600); - } - - const round = function (num) { - if (typeof num !== 'number') { - return num; - } - - let places = 100000; - return Math.round(num * places) / places; - }; //these hemispheres mean negative decimals - - - const negative = { - s: true, - w: true - }; - - const findLatLng = function (arr) { - const types = arr.map(s => typeof s).join('|'); //support {{lat|lng}} - - if (arr.length === 2 && types === 'number|number') { - return { - lat: arr[0], - lon: arr[1] - }; - } //support {{dd|N/S|dd|E/W}} - - - if (arr.length === 4 && types === 'number|string|number|string') { - if (negative[arr[1].toLowerCase()]) { - arr[0] *= -1; - } - - if (arr[3].toLowerCase() === 'w') { - arr[2] *= -1; - } - - return { - lat: arr[0], - lon: arr[2] - }; - } //support {{dd|mm|N/S|dd|mm|E/W}} - - - if (arr.length === 6) { - return { - lat: parseDMS(arr.slice(0, 3)), - lon: parseDMS(arr.slice(3)) - }; - } //support {{dd|mm|ss|N/S|dd|mm|ss|E/W}} - - - if (arr.length === 8) { - return { - lat: parseDMS(arr.slice(0, 4)), - lon: parseDMS(arr.slice(4)) - }; - } - - return {}; - }; - - const parseParams = function (obj) { - obj.list = obj.list || []; - obj.list = obj.list.map(str => { - let num = Number(str); - - if (!isNaN(num)) { - return num; - } //these are weird - - - let split = str.split(/:/); - - if (split.length > 1) { - obj.props = obj.props || {}; - obj.props[split[0]] = split.slice(1).join(':'); - return null; - } - - return str; - }); - obj.list = obj.list.filter(s => s !== null); - return obj; - }; - - const parseCoor$1 = function (tmpl) { - let obj = toJSON$3(tmpl); - obj = parseParams(obj); - let tmp = findLatLng(obj.list); - obj.lat = round(tmp.lat); - obj.lon = round(tmp.lon); - obj.template = 'coord'; - delete obj.list; - return obj; - }; //console.log(parseDms([57, 18, 22, 'N'])); - //console.log(parseDms([4, 27, 32, 'W'])); - - - var _lib$1 = parseCoor$1; // {{Coor title dms|dd|mm|ss|N/S|dd|mm|ss|E/W|template parameters}} - - var parseCoor = _lib$1; - - const templates$2 = { - coord: (tmpl, list) => { - let obj = parseCoor(tmpl); - list.push(obj); //display inline, by default - - if (!obj.display || obj.display.indexOf('inline') !== -1) { - return `${obj.lat || ''}°N, ${obj.lon || ''}°W`; - } - - return ''; - } - }; //{{coord|latitude|longitude|coordinate parameters|template parameters}} - //{{coord|dd|N/S|dd|E/W|coordinate parameters|template parameters}} - //{{coord|dd|mm|N/S|dd|mm|E/W|coordinate parameters|template parameters}} - //{{coord|dd|mm|ss|N/S|dd|mm|ss|E/W|coordinate parameters|template parameters}} - - var geo = templates$2; - - const generic = function (tmpl, list, _parser, alias) { - let obj = toJSON$3(tmpl); - - if (alias) { - obj.name = obj.template; - obj.template = alias; - } - - list.push(obj); - return ''; - }; // it may seem redundant, - // but we need these templates for our i18n mappings - - - const misc = { - persondata: generic, - taxobox: generic, - citation: generic, - portal: generic, - reflist: generic, - 'cite book': generic, - 'cite journal': generic, - 'cite web': generic, - 'commons cat': generic, - 'election box candidate': generic, - 'election box begin': generic, - main: generic - }; - var misc_1 = misc; - - const codes = { - adx: 'adx', - //https://en.wikipedia.org/wiki/Template:Abu_Dhabi_Securities_Exchange - aim: 'aim', - //https://en.wikipedia.org/wiki/Template:Alternative_Investment_Market - amex: 'amex', - //https://en.wikipedia.org/wiki/Template:NYSE_American - asx: 'asx', - //https://en.wikipedia.org/wiki/Template:Australian_Securities_Exchange - athex: 'athex', - //https://en.wikipedia.org/wiki/Template:Athens_Exchange - b3: 'b3', - //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa (redirects to B3 (stock exchange)) - 'B3 (stock exchange)': 'B3 (stock exchange)', - //https://en.wikipedia.org/wiki/Template:B3_(stock_exchange) - barbadosse: 'barbadosse', - //https://en.wikipedia.org/wiki/Template:Barbados_Stock_Exchange - bbv: 'bbv', - //https://en.wikipedia.org/wiki/Template:La_Paz_Stock_Exchange - bcba: 'bcba', - //https://en.wikipedia.org/wiki/Template:Buenos_Aires_Stock_Exchange - bcs: 'bcs', - //https://en.wikipedia.org/wiki/Template:Santiago_Stock_Exchange - bhse: 'bhse', - //https://en.wikipedia.org/wiki/Template:Bahrain_Bourse - bist: 'bist', - //https://en.wikipedia.org/wiki/Template:Borsa_Istanbul - bit: 'bit', - //https://en.wikipedia.org/wiki/Template:Borsa_Italiana - 'bm&f bovespa': 'b3', - //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa - 'bm&f': 'b3', - //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa - bmad: 'bmad', - //https://en.wikipedia.org/wiki/Template:Bolsa_de_Madrid - bmv: 'bmv', - //https://en.wikipedia.org/wiki/Template:Mexican_Stock_Exchange - 'bombay stock exchange': 'bombay stock exchange', - //https://en.wikipedia.org/wiki/Template:Bombay_Stock_Exchange - 'botswana stock exchange': 'botswana stock exchange', - //https://en.wikipedia.org/wiki/Template:BM%26F_Bovespa - bpse: 'bpse', - //https://en.wikipedia.org/wiki/Template:Budapest_Stock_Exchange - bse: 'bse', - //https://en.wikipedia.org/wiki/Template:Bombay_Stock_Exchange - bsx: 'bsx', - //https://en.wikipedia.org/wiki/Template:Bermuda_Stock_Exchange - bvb: 'bvb', - //https://en.wikipedia.org/wiki/Template:Bucharest_Stock_Exchange - bvc: 'bvc', - //https://en.wikipedia.org/wiki/Template:Colombian_Securities_Exchange - bvl: 'bvl', - //https://en.wikipedia.org/wiki/Template:Lima_Stock_Exchange - bvpasa: 'bvpasa', - //https://en.wikipedia.org/wiki/Template:BVPASA - bwse: 'bwse', - //https://en.wikipedia.org/wiki/Template:Botswana_Stock_Exchange - 'canadian securities exchange': 'canadian securities exchange', - //https://en.wikipedia.org/wiki/Template:Canadian_Securities_Exchange - cse: 'cse', - //https://en.wikipedia.org/wiki/Template:Chittagong_Stock_Exchange - darse: 'darse', - //https://en.wikipedia.org/wiki/Template:Dar_es_Salaam_Stock_Exchange - dfm: 'dfm', - //https://en.wikipedia.org/wiki/Template:Dubai_Financial_Market - dse: 'dse', - //https://en.wikipedia.org/wiki/Template:Dhaka_Stock_Exchange - euronext: 'euronext', - //https://en.wikipedia.org/wiki/Template:Euronext - euronextparis: 'euronextparis', - //https://en.wikipedia.org/wiki/Template:EuronextParis - fse: 'fse', - //https://en.wikipedia.org/wiki/Template:Fukuoka_Stock_Exchange - fwb: 'fwb', - //https://en.wikipedia.org/wiki/Template:Frankfurt_Stock_Exchange - gse: 'gse', - //https://en.wikipedia.org/wiki/Template:Ghana_Stock_Exchange - gtsm: 'gtsm', - //https://en.wikipedia.org/wiki/Template:Gre_Tai_Securities_Market - idx: 'idx', - //https://en.wikipedia.org/wiki/Template:Indonesia_Stock_Exchange - ise: 'ise', - //https://en.wikipedia.org/wiki/Template:Irish_Stock_Exchange - iseq: 'iseq', - //https://en.wikipedia.org/wiki/Template:Irish_Stock_Exchange - isin: 'isin', - //https://en.wikipedia.org/wiki/Template:ISIN - jasdaq: 'jasdaq', - //https://en.wikipedia.org/wiki/Template:JASDAQ - jse: 'jse', - //https://en.wikipedia.org/wiki/Template:Johannesburg_Stock_Exchange - kase: 'kase', - //https://en.wikipedia.org/wiki/Template:Kazakhstan_Stock_Exchange - kn: 'kn', - //https://en.wikipedia.org/wiki/Template:Nairobi_Securities_Exchange - krx: 'krx', - //https://en.wikipedia.org/wiki/Template:Korea_Exchange - lse: 'lse', - //https://en.wikipedia.org/wiki/Template:London_Stock_Exchange - luxse: 'luxse', - //https://en.wikipedia.org/wiki/Template:Luxembourg_Stock_Exchange - 'malta stock exchange': 'malta stock exchange', - //https://en.wikipedia.org/wiki/Template:Malta_Stock_Exchange - mai: 'mai', - //https://en.wikipedia.org/wiki/Template:Market_for_Alternative_Investment - mcx: 'mcx', - //https://en.wikipedia.org/wiki/Template:Moscow_Exchange - mutf: 'mutf', - //https://en.wikipedia.org/wiki/Template:Mutual_fund - myx: 'myx', - //https://en.wikipedia.org/wiki/Template:Bursa_Malaysia - nag: 'nag', - //https://en.wikipedia.org/wiki/Template:Nagoya_Stock_Exchange - 'nasdaq dubai': 'nasdaq dubai', - //https://en.wikipedia.org/wiki/Template:NASDAQ_Dubai - nasdaq: 'nasdaq', - //https://en.wikipedia.org/wiki/Template:NASDAQ - neeq: 'neeq', - //https://en.wikipedia.org/wiki/Template:NEEQ - nepse: 'nepse', - //https://en.wikipedia.org/wiki/Template:Nepal_Stock_Exchange - nex: 'nex', - //https://en.wikipedia.org/wiki/Template:TSXV_NEX - nse: 'nse', - //https://en.wikipedia.org/wiki/Template:National_Stock_Exchange_of_India - newconnect: 'newconnect', - //https://en.wikipedia.org/wiki/Template:NewConnect - 'nyse arca': 'nyse arca', - //https://en.wikipedia.org/wiki/Template:NYSE_Arca - nyse: 'nyse', - //https://en.wikipedia.org/wiki/Template:New_York_Stock_Exchange - nzx: 'nzx', - //https://en.wikipedia.org/wiki/Template:New_Zealand_Exchange - 'omx baltic': 'omx baltic', - //https://en.wikipedia.org/wiki/Template:OMX_Baltic - omx: 'omx', - //https://en.wikipedia.org/wiki/Template:OMX - ose: 'ose', - //https://en.wikipedia.org/wiki/Template:Oslo_Stock_Exchange - 'otc expert': 'otc expert', - //https://en.wikipedia.org/wiki/Template:OTC_Expert - 'otc grey': 'otc grey', - //https://en.wikipedia.org/wiki/template:grey_market - 'otc pink': 'otc pink', - //https://en.wikipedia.org/wiki/Template:OTC_Pink - otcqb: 'otcqb', - //https://en.wikipedia.org/wiki/Template:OTCQB - otcqx: 'otcqx', - //https://en.wikipedia.org/wiki/Template:OTCQX - 'pfts ukraine stock exchange': 'pfts ukraine stock exchange', - //https://en.wikipedia.org/wiki/Template:PFTS_Ukraine_Stock_Exchange - 'philippine stock exchange': 'philippine stock exchange', - //https://en.wikipedia.org/wiki/Template:Philippine_Stock_Exchange - prse: 'prse', - //https://en.wikipedia.org/wiki/Template:Prague_Stock_Exchange - psx: 'psx', - //https://en.wikipedia.org/wiki/Template:Pakistan_Stock_Exchange - karse: 'karse', - //https://en.wikipedia.org/w/index.php?title=Template:Karse&redirect=no (redirects to psx) - qe: 'qe', - //https://en.wikipedia.org/wiki/Template:Qatar_Stock_Exchange - 'saudi stock exchange': 'saudi stock exchange', - //https://en.wikipedia.org/wiki/Template:Saudi_Stock_Exchange - sehk: 'sehk', - //https://en.wikipedia.org/wiki/Template:Hong_Kong_Stock_Exchange - 'Stock Exchange of Thailand': 'Stock Exchange of Thailand', - //https://en.wikipedia.org/wiki/Template:Stock_Exchange_of_Thailand (alternative for SET) - set: 'set', - //https://en.wikipedia.org/wiki/Template:Stock_Exchange_of_Thailand - sgx: 'sgx', - //https://en.wikipedia.org/wiki/Template:Singapore_Exchange - sse: 'sse', - //https://en.wikipedia.org/wiki/Template:Shanghai_Stock_Exchange - swx: 'swx', - //https://en.wikipedia.org/wiki/Template:SIX_Swiss_Exchange - szse: 'szse', - //https://en.wikipedia.org/wiki/Template:Shenzhen_Stock_Exchange - tase: 'tase', - //https://en.wikipedia.org/wiki/Template:Tel_Aviv_Stock_Exchange - 'tsx-v': 'tsx-v', - //https://en.wikipedia.org/wiki/Template:TSX_Venture_Exchange - tsx: 'tsx', - //https://en.wikipedia.org/wiki/Template:Toronto_Stock_Exchange - tsxv: 'tsxv', - //https://en.wikipedia.org/wiki/Template:TSX_Venture_Exchange - ttse: 'ttse', - //https://en.wikipedia.org/wiki/Template:Trinidad_and_Tobago_Stock_Exchange - twse: 'twse', - //https://en.wikipedia.org/wiki/Template:Taiwan_Stock_Exchange - tyo: 'tyo', - //https://en.wikipedia.org/wiki/Template:Tokyo_Stock_Exchange - wbag: 'wbag', - //https://en.wikipedia.org/wiki/Template:Wiener_B%C3%B6rse - wse: 'wse', - //https://en.wikipedia.org/wiki/Template:Warsaw_Stock_Exchange - 'zagreb stock exchange': 'zagreb stock exchange', - //https://en.wikipedia.org/wiki/Template:Zagreb_Stock_Exchange - 'zimbabwe stock exchange': 'zimbabwe stock exchange', - //https://en.wikipedia.org/wiki/Template:Zimbabwe_Stock_Exchange - zse: 'zse' //https://en.wikipedia.org/wiki/Template:Zagreb_Stock_Exchange - - }; - - const parseStockExchange = (tmpl, list) => { - let o = toJSON$3(tmpl, ['ticketnumber', 'code']); - list.push(o); - let code = o.template || ''; - - if (code === '') { - code = o.code; - } - - code = (code || '').toLowerCase(); - let str = codes[code] || ''; - - if (o.ticketnumber) { - str = `${str}: ${o.ticketnumber}`; - } - - if (o.code && !codes[o.code.toLowerCase()]) { - str += ' ' + o.code; - } - - return str; - }; - - const exchanges = {}; //the others fit the same pattern.. - - Object.keys(codes).forEach(k => { - exchanges[k] = parseStockExchange; - }); - var stockExchanges = exchanges; - - const zeroPad = function (num) { - num = String(num); - - if (num.length === 1) { - num = '0' + num; - } - - return num; - }; - - const parseTeam = function (obj, round, team) { - if (obj[`rd${round}-team${zeroPad(team)}`]) { - team = zeroPad(team); - } - - let score = obj[`rd${round}-score${team}`]; - let num = Number(score); - - if (isNaN(num) === false) { - score = num; - } - - return { - team: obj[`rd${round}-team${team}`], - score: score, - seed: obj[`rd${round}-seed${team}`] - }; - }; // https://en.wikipedia.org/wiki/Category:Tournament_bracket_templates - //these are weird. - - - const playoffBracket = function (tmpl) { - let rounds = []; - let obj = toJSON$3(tmpl); //try some rounds - - for (let i = 1; i < 7; i += 1) { - let round = []; - - for (let t = 1; t < 16; t += 2) { - let key = `rd${i}-team`; - - if (obj[key + t] || obj[key + zeroPad(t)]) { - let one = parseTeam(obj, i, t); - let two = parseTeam(obj, i, t + 1); - round.push([one, two]); - } else { - break; - } - } - - if (round.length > 0) { - rounds.push(round); - } - } - - return { - template: 'playoffbracket', - rounds: rounds - }; - }; - - var _lib = playoffBracket; - - var require$$7 = _lib; - - let sports = { - //playoff brackets - '4teambracket': function (tmpl, list) { - let obj = require$$7(tmpl); - list.push(obj); - return ''; - }, - player: (tmpl, list) => { - let res = toJSON$3(tmpl, ['number', 'country', 'name', 'dl']); - list.push(res); - let str = `[[${res.name}]]`; - - if (res.country) { - let country = (res.country || '').toLowerCase(); - let flag = flags.find(a => country === a[1] || country === a[2]) || []; - - if (flag && flag[0]) { - str = flag[0] + ' ' + str; - } - } - - if (res.number) { - str = res.number + ' ' + str; - } - - return str; - }, - //https://en.wikipedia.org/wiki/Template:Goal - goal: (tmpl, list) => { - let res = toJSON$3(tmpl); - let obj = { - template: 'goal', - data: [] - }; - let arr = res.list || []; - - for (let i = 0; i < arr.length; i += 2) { - obj.data.push({ - min: arr[i], - note: arr[i + 1] || '' - }); - } - - list.push(obj); //generate a little text summary - - let summary = '⚽ '; - summary += obj.data.map(o => { - let note = o.note; - - if (note) { - note = ` (${note})`; - } - - return o.min + "'" + note; - }).join(', '); - return summary; - }, - //a transcluded sports module - https://en.m.wikipedia.org/w/index.php?title=Special:WhatLinksHere/Module:Sports_table - // https://en.wikipedia.org/wiki/Template:2020–21_NHL_North_Division_standings - 'sports table': (tmpl, list) => { - let obj = toJSON$3(tmpl); - let byTeam = {}; - let teams = Object.keys(obj).filter(k => /^team[0-9]/.test(k)).map(k => obj[k].toLowerCase()); - teams.forEach(team => { - byTeam[team] = { - name: obj[`name_${team}`], - win: Number(obj[`win_${team}`]) || 0, - loss: Number(obj[`loss_${team}`]) || 0, - tie: Number(obj[`tie_${team}`]) || 0, - otloss: Number(obj[`otloss_${team}`]) || 0, - goals_for: Number(obj[`gf_${team}`]) || 0, - goals_against: Number(obj[`ga_${team}`]) || 0 - }; - }); - let res = { - date: obj.update, - header: obj.table_header, - teams: byTeam - }; - list.push(res); - } - }; - var sports_1 = sports; - - var require$$0$4 = shorthand; - - var require$$1$3 = functions; - - var require$$2$2 = currency; - - var require$$3$1 = dates; - - var require$$4$1 = geo; - - var require$$5$1 = misc_1; - - var require$$6 = stockExchanges; - - var require$$8 = sports_1; - - var textAndData = Object.assign({}, require$$0$4, require$$1$3, require$$2$2, require$$3$1, require$$4$1, require$$5$1, require$$6, require$$7, require$$8, require$$7, require$$8); - - var aliases = aliases_1; - - var require$$0$3 = textOnly; - - var require$$1$2 = dataOnly; - - var require$$2$1 = textAndData; - - let templates$1 = Object.assign({}, require$$0$3, require$$1$2, require$$2$1); - Object.keys(aliases).forEach(k => { - // if (templates[aliases[k]] === undefined) { - // console.error(`Missing template: '${aliases[k]}'`) - // } - templates$1[k] = templates$1[aliases[k]]; - }); - var custom = templates$1; // console.log(Object.keys(templates).length) - - var ignore = _ignore; - - var infobox = _infobox; - - var templates = custom; - - const { - isArray: isArray$2, - isObject - } = require$$0$9; - const nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; //this gets all the {{template}} objects and decides how to parse them - - const parseTemplate$1 = function (tmpl, doc) { - let name = tmpl.name; // dont bother with some junk templates - - if (ignore.hasOwnProperty(name) === true) { - return ['']; - } //{{infobox settlement...}} - - - if (infobox.isInfobox(name) === true) { - let obj = toJSON$3(tmpl.body, [], 'raw'); // list.push(infobox.format(obj)) - - return ['', infobox.format(obj)]; - } //cite book, cite arxiv... - - - if (/^cite [a-z]/.test(name) === true) { - let obj = toJSON$3(tmpl.body); - obj.type = obj.template; - obj.template = 'citation'; // list.push(obj) - - return ['', obj]; - } // ok, here we go! - //parse some known templates - - - if (templates.hasOwnProperty(name) === true) { - //handle number-syntax - if (typeof templates[name] === 'number') { - let obj = toJSON$3(tmpl.body, nums); - let key = String(templates[name]); - return [obj[key] || '']; - } //handle string-syntax - - - if (typeof templates[name] === 'string') { - return [templates[name]]; - } //handle array sytax - - - if (isArray$2(templates[name]) === true) { - let obj = toJSON$3(tmpl.body, templates[name]); // list.push(obj) - - return ['', obj]; - } //handle object sytax - - - if (isObject(templates[name]) === true) { - let obj = toJSON$3(tmpl.body, templates[name].props); // list.push(obj) - - return [obj[templates[name].out], obj]; - } //handle function syntax - - - if (typeof templates[name] === 'function') { - // let json = toJSON(tmpl.body) - //(tmpl, list, alias, doc) - let arr = []; - let txt = templates[name](tmpl.body, arr, toJSON$3, null, doc); - return [txt, arr[0]]; - } - } //an unknown template with data, so just keep it. - - - let json = toJSON$3(tmpl.body); - - if (Object.keys(json).length === 0) { - // list.push(json) - json = null; - } //..then remove it - - - return ['', json]; - }; - - var parse$3 = parseTemplate$1; - - const toJson$1 = function (infobox, options) { - let json = Object.keys(infobox.data).reduce((h, k) => { - if (infobox.data[k]) { - h[k] = infobox.data[k].json(); - } - - return h; - }, {}); //support mongo-encoding keys - - if (options.encode === true) { - json = encode.encodeObj(json); - } - - return json; - }; - - var toJson_1 = toJson$1; - - var toJson = toJson_1; - - const { - isArray: isArray$1 - } = require$$0$9; - - const normalize = (str = '') => { - str = str.toLowerCase(); - str = str.replace(/[-_]/g, ' '); - return str.trim(); - }; //a formal key-value data table about a topic - - - const Infobox = function (obj, wiki) { - this._type = obj.type; - this.domain = obj.domain; - Object.defineProperty(this, 'data', { - enumerable: false, - value: obj.data - }); - Object.defineProperty(this, 'wiki', { - enumerable: false, - value: wiki - }); - }; - - const methods$1 = { - type: function () { - return this._type; - }, - links: function (n) { - let arr = []; - Object.keys(this.data).forEach(k => { - this.data[k].links().forEach(l => arr.push(l)); - }); - - if (typeof n === 'string') { - //grab a link like .links('Fortnight') - n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it - - let link = arr.find(o => o.page() === n); - return link === undefined ? [] : [link]; - } - - return arr; - }, - image: function () { - let s = this.data.image || this.data.image2 || this.data.logo || this.data.image_skyline || this.data.image_flag; - - if (!s) { - return null; - } - - let obj = s.json(); - obj.file = obj.text; - obj.text = ''; - obj.domain = this.domain; // add domain information for image - - return new require$$3$3(obj); - }, - get: function (keys) { - let allKeys = Object.keys(this.data); - - if (typeof keys === 'string') { - let key = normalize(keys); - - for (let i = 0; i < allKeys.length; i += 1) { - let tmp = normalize(allKeys[i]); - - if (key === tmp) { - return this.data[allKeys[i]]; - } - } - - return new require$$2$6(); - } - - if (isArray$1(keys)) { - // support array-input - keys = keys.map(normalize); - return keys.map(k => { - for (let i = 0; i < allKeys.length; i += 1) { - let tmp = normalize(allKeys[i]); - - if (k === tmp) { - return this.data[allKeys[i]]; - } - } - - return new require$$2$6(); - }); - } - - return new require$$2$6(); - }, - text: function () { - return ''; - }, - json: function (options) { - options = options || {}; - return toJson(this, options); - }, - wikitext: function () { - return this.wiki || ''; - }, - keyValue: function () { - return Object.keys(this.data).reduce((h, k) => { - if (this.data[k]) { - h[k] = this.data[k].text(); - } - - return h; - }, {}); - } - }; //aliases - - Object.keys(methods$1).forEach(k => { - Infobox.prototype[k] = methods$1[k]; - }); - Infobox.prototype.data = Infobox.prototype.keyValue; - Infobox.prototype.template = Infobox.prototype.type; - Infobox.prototype.images = Infobox.prototype.image; - var Infobox_1 = Infobox; - - const toText = require$$0$7.fromText; - const methods = { - text: function () { - let str = this._text || ''; - return toText(str).text(); - }, - json: function () { - return this.data || {}; - }, - wikitext: function () { - return this.wiki || ''; - } - }; - - const Template = function (data, text = '', wiki = '') { - Object.defineProperty(this, 'data', { - enumerable: false, - value: data - }); - Object.defineProperty(this, '_text', { - enumerable: false, - value: text - }); - Object.defineProperty(this, 'wiki', { - enumerable: false, - value: wiki - }); - }; - - Object.keys(methods).forEach(k => { - Template.prototype[k] = methods[k]; - }); - var Template_1 = Template; - - var require$$4 = Infobox_1; - - var require$$9 = Template_1; - - const isCitation = /^(cite |citation)/i; - const referenceTypes = { - citation: true, - refn: true, - harvnb: true, - source: true //wikinews - - }; // split Infoboxes from templates and references - - const sortOut$1 = function (list, domain) { - let res = { - infoboxes: [], - templates: [], - references: [] - }; //remove references and infoboxes from our list - - list.forEach(obj => { - let json = obj.json; - let kind = json.template || json.type || json.name; // is it a Reference? - - if (referenceTypes[kind] === true || isCitation.test(kind) === true) { - res.references.push(new require$$7$1(json, obj.wiki)); - return; - } // is it an Infobox? - - - if (json.template === 'infobox' && json.subbox !== 'yes') { - json.domain = domain; //infoboxes need this for images, i guess - - json.data = json.data || {}; //validate it a little - - res.infoboxes.push(new require$$4(json, obj.wiki)); - return; - } // otherwise, it's just a template - - - res.templates.push(new require$$9(json, obj.text, obj.wiki)); - }); - return res; - }; - - var sortOut_1 = sortOut$1; - - var findTemplates = _01Nested; - - var parseTemplate = parse$3; - - var sortOut = sortOut_1; - - const allTemplates = function (wiki, doc) { - let list = []; //nested data-structure of templates - - let nested = findTemplates(wiki); //recursive template-parser - - const parseNested = function (obj, parent) { - obj.parent = parent; //do tail-first recursion - - if (obj.children && obj.children.length > 0) { - obj.children.forEach(ch => parseNested(ch, obj)); - } //parse template into json, return replacement wikitext - - - let [text, json] = parseTemplate(obj, doc); - obj.wiki = text; - - if (json) { - list.push({ - name: obj.name, - wiki: obj.body, - text: text, - json: json - }); - } //remove the text from every parent - - - const removeIt = function (node, body, out) { - if (node.parent) { - node.parent.body = node.parent.body.replace(body, out); - removeIt(node.parent, body, out); - } - }; - - removeIt(obj, obj.body, obj.wiki); - wiki = wiki.replace(obj.body, obj.wiki); - }; //kick it off - - - nested.forEach(node => parseNested(node, null)); //remove the templates from our wiki text - - nested.forEach(node => { - wiki = wiki.replace(node.body, node.wiki); - }); - return { - list: list, - wiki: wiki - }; - }; //find + parse all templates in the section - - - const process = function (section, doc) { - // find+parse them all - let { - list, - wiki - } = allTemplates(section._wiki, doc); // split-out references and infoboxes - - let domain = doc ? doc._domain : null; - let { - infoboxes, - references, - templates - } = sortOut(list, domain); //sort-out the templates we decide to keep - - section._infoboxes = section._infoboxes || []; - section._references = section._references || []; - section._templates = section._templates || []; - section._infoboxes = section._infoboxes.concat(infoboxes); - section._references = section._references.concat(references); - section._templates = section._templates.concat(templates); - section._wiki = wiki; - }; - - var template = process; - - const parseSentence$1 = require$$0$7.fromText; //okay, is a xml-tag, with newline-separated data, somehow pivoted by '|'... - //all deities help us. truly -> https://en.wikipedia.org/wiki/Help:Gallery_tag - //- not to be confused with https://en.wikipedia.org/wiki/Template:Gallery... - - /** - * - * @private - * @param {object} catcher - * @param {Document} doc - * @param {Section} section - */ - - const parseGallery$1 = function (catcher, doc, section) { - catcher.text = catcher.text.replace(/]*)>([\s\S]+)<\/gallery>/g, (_, attrs, inside) => { - let images = inside.split(/\n/g); - images = images.filter(str => str && str.trim() !== ''); //parse the line, which has an image and sometimes a caption - - images = images.map(str => { - let arr = str.split(/\|/); - let obj = { - file: arr[0].trim(), - lang: doc.lang(), - domain: doc.domain() - }; - let img = new require$$3$3(obj).json(); - let caption = arr.slice(1).join('|'); - - if (caption !== '') { - img.caption = parseSentence$1(caption); - } - - return img; - }); //add it to our templates list - - if (images.length > 0) { - catcher.templates.push({ - template: 'gallery', - images: images, - pos: section.title - }); - } //return empty string to remove the template from the wiki text - - - return ''; - }); - }; - - var gallery = parseGallery$1; - - var require$$3 = template; - - /** - * parses out the `Election_box` template from the wiki text - * - * this is a non-traditional template, for some reason - * https://en.wikipedia.org/wiki/Template:Election_box - * - * @private - * @param {object} catcher an object to provide and catch data - */ - - const parseElection$1 = function (catcher) { - catcher.text = catcher.text.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi, tmpl => { - let data = { - _wiki: tmpl, - _templates: [] - }; //put it through our full template parser.. - - require$$3(data); //okay, pull it apart into something sensible.. - - let templates = data._templates.map(t => t.json()); - - let start = templates.find(t => t.template === 'election box') || {}; - let candidates = templates.filter(t => t.template === 'election box candidate'); - let summary = templates.find(t => t.template === 'election box gain' || t.template === 'election box hold') || {}; - - if (candidates.length > 0 || summary) { - catcher.templates.push({ - template: 'election box', - title: start.title, - candidates: candidates, - summary: summary.data - }); - } //return empty string to remove the template from the wiki text - - - return ''; - }); - }; - - var election = parseElection$1; - - const keys = { - coach: ['team', 'year', 'g', 'w', 'l', 'w-l%', 'finish', 'pg', 'pw', 'pl', 'pw-l%'], - player: ['year', 'team', 'gp', 'gs', 'mpg', 'fg%', '3p%', 'ft%', 'rpg', 'apg', 'spg', 'bpg', 'ppg'], - roster: ['player', 'gp', 'gs', 'mpg', 'fg%', '3fg%', 'ft%', 'rpg', 'apg', 'spg', 'bpg', 'ppg'] - }; - /** - * https://en.wikipedia.org/wiki/Template:NBA_player_statistics_start - * - * @private - * @param {object} catcher - */ - - const parseNBA$1 = function (catcher) { - catcher.text = catcher.text.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi, (tmpl, name) => { - tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); - tmpl = tmpl.replace(/\{\{s-end\}\}/, ''); - name = name.toLowerCase().trim(); - let headers = '! ' + keys[name].join(' !! '); - let table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - let rows = tableParser(table); - rows = rows.map(row => { - Object.keys(row).forEach(k => { - row[k] = row[k].text(); - }); - return row; - }); - catcher.templates.push({ - template: 'NBA ' + name + ' statistics', - data: rows - }); //return empty string to remove the template from the wiki text - - return ''; - }); - }; - - var nba = parseNBA$1; - - //this is pretty nuts - - const whichHeadings = function (tmpl) { - let headings = ['#', 'date', 'opponent', 'score', 'win', 'loss', 'save', 'attendance', 'record']; - - if (/\|stadium=y/i.test(tmpl) === true) { - headings.splice(7, 0, 'stadium'); //save, stadium, attendance - } - - if (/\|time=y/i.test(tmpl) === true) { - headings.splice(7, 0, 'time'); //save, time, stadium, attendance - } - - if (/\|box=y/i.test(tmpl) === true) { - headings.push('box'); //record, box - } - - return headings; - }; - /** - * - * @private - * @param {object} catcher - */ - - - const parseMlb$1 = function (catcher) { - catcher.text = catcher.text.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi, tmpl => { - let headings = whichHeadings(tmpl); - tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); - tmpl = tmpl.replace(/\{\{mlb game log (section|month) end\}\}/i, ''); - let headers = '! ' + headings.join(' !! '); - let table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - let rows = tableParser(table); - rows = rows.map(row => { - Object.keys(row).forEach(k => { - row[k] = row[k].text(); - }); - return row; - }); - catcher.templates.push({ - template: 'mlb game log section', - data: rows - }); //return empty string to remove the template from the wiki text - - return ''; - }); - }; - - var mlb = parseMlb$1; - - let headings = ['res', 'record', 'opponent', 'method', 'event', 'date', 'round', 'time', 'location', 'notes']; - /** - * - * https://en.wikipedia.org/wiki/Template:MMA_record_start - * - * @private - * @param {object} catcher - */ - - const parseMMA$1 = function (catcher) { - catcher.text = catcher.text.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi, tmpl => { - tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); - tmpl = tmpl.replace(/\{\{end\}\}/i, ''); - let headers = '! ' + headings.join(' !! '); - let table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - let rows = tableParser(table); - rows = rows.map(row => { - Object.keys(row).forEach(k => { - row[k] = row[k].text(); - }); - return row; - }); - catcher.templates.push({ - template: 'mma record start', - data: rows - }); //return empty string to remove the template from the wiki text - - return ''; - }); - }; - - var mma = parseMMA$1; - - const parseSentence = require$$0$7.fromText; - /** - * try to parse out the math and chem templates - * - * xml y=mx+b support - * https://en.wikipedia.org/wiki/Help:Displaying_a_formula - * - * @private - * @param {object} catcher - */ - - const parseMath$1 = function (catcher) { - catcher.text = catcher.text.replace(/]*)>([\s\S]+)<\/math>/g, (_, attrs, inside) => { - //clean it up a little? - let formula = parseSentence(inside).text(); - catcher.templates.push({ - template: 'math', - formula: formula, - raw: inside - }); //should we at least try to render it in plaintext? :/ - - if (formula && formula.length < 12) { - return formula; - } //return empty string to remove the template from the wiki text - - - return ''; - }); //try chemistry version too - - catcher.text = catcher.text.replace(/]*)>([\s\S]+?)<\/chem>/g, (_, attrs, inside) => { - catcher.templates.push({ - template: 'chem', - data: inside - }); //return empty string to remove the template from the wiki text - - return ''; - }); - }; - - var math = parseMath$1; - - var parseGallery = gallery; - - var parseElection = election; - - var parseNBA = nba; - - var parseMlb = mlb; - - var parseMMA = mma; - - var parseMath = math; - - /** - * parses out non standard templates - * - * Most templates are '{{template}}', - * but then, some are '' others are {{start}}...{{end}} - * -> the templates here are of the second type. - * - * @private - * @param {Section} section - * @param {Document} doc - * @returns {Object} wikitext - */ - - const xmlTemplates = function (section, doc) { - const res = { - templates: [], - text: section._wiki - }; - parseElection(res); - parseGallery(res, doc, section); - parseMath(res); - parseMlb(res); - parseMMA(res); - parseNBA(res); // turn them into Template objects - - res.templates = res.templates.map(obj => new require$$9(obj)); - return res; - }; - - var startToEnd = xmlTemplates; - - var toJSON$1 = toJson$6; - - var require$$0$2 = heading; - - var require$$1$1 = table; - - var require$$2 = _03Paragraph; - - var require$$5 = startToEnd; - - const parse$2 = { - heading: require$$0$2, - table: require$$1$1, - paragraphs: require$$2, - templates: require$$3, - references: require$$4$3, - startEndTemplates: require$$5 - }; - const defaults$2 = { - tables: true, - references: true, - paragraphs: true, - templates: true, - infoboxes: true - }; - /** - * the Section class represents the different sections of the article. - * we look for the == title == syntax and split and parse the sections from there - * - * @class - */ - - class Section { - /** - * the stuff between headings - 'History' section for example - * - * @param {object} data the data already gathered about the section - * @param {Document} doc the document that this section belongs to - */ - constructor(data, doc) { - let props = { - doc: doc, - title: data.title || '', - depth: data.depth, - wiki: data.wiki || '', - templates: [], - tables: [], - infoboxes: [], - references: [], - paragraphs: [] - }; - Object.keys(props).forEach(k => { - Object.defineProperty(this, '_' + k, { - enumerable: false, - writable: true, - value: props[k] - }); - }); //parse-out ' and {{start}}...{{end}} templates - - const startEndTemplates = parse$2.startEndTemplates(this, doc); - this._wiki = startEndTemplates.text; - this._templates = this._templates.concat(startEndTemplates.templates); //parse-out the tags - - parse$2.references(this); //parse-out all {{templates}} - - parse$2.templates(this, doc); //parse the tables - - parse$2.table(this); //now parse all double-newlines - - parse$2.paragraphs(this, doc); - } - /** - * returns the title of a section. if no title is available then it returns empty string - * - * @returns {string} the title of the section - */ - - - title() { - return this._title || ''; - } - /** - * returns the index of the current section in the document - * - * @returns {number | null} the index of the current section in the document - */ - - - index() { - if (!this._doc) { - return null; - } - - let index = this._doc.sections().indexOf(this); - - if (index === -1) { - return null; - } - - return index; - } - /** - * returns the depth (or indentation) of the section - * aka how many levels deep is this section located - * - * @returns {number} the depth of the section - */ - - - depth() { - return this._depth; - } - /** - * returns the depth (or indentation) of the section - * aka how many levels deep is this section located - * - * @returns {number} the depth of the section - */ - - - indentation() { - return this.depth(); - } - /** - * returns all sentences in the section - * if an clue is provided then it returns the sentence at clue-th index - * - * @returns {object | object[]} all sentences in an array or the clue-th sentence - */ - - - sentences() { - return this.paragraphs().reduce((list, p) => { - return list.concat(p.sentences()); - }, []); - } - /** - * returns all paragraphs in the section - * if an clue is provided then it returns the paragraph at clue-th index - * - * @returns {object | object[]} all paragraphs in an array or the clue-th paragraph - */ - - - paragraphs() { - return this._paragraphs || []; - } - /** - * returns all links in the section - * if an clue is provided and it is a number then it returns the link at clue-th index - * if an clue is provided and it is a string then it returns the link at the that content - * - * @param {number| string} [clue] the clue for selecting the link - * @returns {object | object[]} all links in an array or the clue-th link or the link with the content of clue - */ - - - links(clue) { - let arr = []; - this.infoboxes().forEach(templ => { - arr.push(templ.links()); - }); - this.sentences().forEach(s => { - arr.push(s.links()); - }); - this.tables().forEach(t => { - arr.push(t.links()); - }); - this.lists().forEach(list => { - arr.push(list.links()); - }); - arr = arr.reduce((acc, val) => acc.concat(val), []) //flatten the array - .filter(val => val !== undefined); //filter out all the undefined from the flattened empty arrays - - if (typeof clue === 'string') { - let link = arr.find(o => o.page().toLowerCase() === clue.toLowerCase()); - return link === undefined ? [] : [link]; - } - - return arr; - } - /** - * returns all tables in the section - * if an clue is provided then it returns the table at clue-th index - * - * @returns {object | object[]} all tables in an array or the clue-th infobox - */ - - - tables() { - return this._tables || []; - } - /** - * returns all templates in the section - * if an clue is provided and clue is a number then it returns the template at clue-th index - * if an clue is provided and clue is a string then it returns all template with that name - * - * @param {number|string} [clue] the clue for selecting the template - * @returns {object | object[]} all templates in an array or the clue-th template or all template name `clue` - */ - - - templates(clue) { - let arr = this._templates || []; // arr = arr.map((t) => t.json()) - - if (typeof clue === 'string') { - clue = clue.toLowerCase(); - return arr.filter(o => o.data.template === clue || o.data.name === clue); - } - - return arr; - } - /** - * returns all infoboxes in the section - * if an clue is provided then it returns the infobox at clue-th index - * - * @param {number|string} [clue] the clue for selecting the infobox - * @returns {object | object[]} all infoboxes in an array or the clue-th infobox - */ - - - infoboxes(clue) { - let arr = this._infoboxes || []; - - if (typeof clue === 'string') { - clue = clue.replace(/^infobox /i, ''); - clue = clue.trim().toLowerCase(); - return arr.filter(info => info._type === clue); - } - - return arr; - } - /** - * returns all lists in the section - * if an clue is provided then it returns the list at clue-th index - * - * @returns {object | object[]} all lists in an array or the clue-th list - */ - - - coordinates() { - let arr = [...this.templates('coord'), ...this.templates('coor')]; - return arr.map(tmpl => tmpl.json()); - } - /** - * returns all lists in the section - * if an clue is provided then it returns the list at clue-th index - * - * @returns {object | object[]} all lists in an array or the clue-th list - */ - - - lists() { - let arr = []; - this.paragraphs().forEach(p => { - arr = arr.concat(p.lists()); - }); - return arr; - } - /** - * returns all interwiki links in the section - * if an clue is provided then it returns the interwiki link at clue-th index - * - * @returns {object | object[]} all interwiki links in an array or the clue-th interwiki link - */ - - - interwiki() { - let arr = []; - this.paragraphs().forEach(p => { - arr = arr.concat(p.interwiki()); - }); - return arr; - } - /** - * returns all images in the section - * if an clue is provided then it returns the image at clue-th index - * - * @returns {Image | Image[]} all images in an array or the clue-th image - */ - - - images() { - let arr = []; - this.paragraphs().forEach(p => { - arr = arr.concat(p.images()); - }); - return arr; - } - /** - * returns all references in the section - * if an clue is provided then it returns the reference at clue-th index - * - * @returns {object | object[]} all references in an array or the clue-th reference - */ - - - references() { - return this._references || []; - } //transformations - - /** - * Removes the section from the document - * - * @returns {null|Document} the document without this section. or null if there is no document - */ - - - remove() { - if (!this._doc) { - return null; - } - - let bads = {}; - bads[this.title()] = true; //remove children too - - this.children().forEach(sec => bads[sec.title()] = true); - - let sections = this._doc.sections(); - - sections = sections.filter(sec => bads.hasOwnProperty(sec.title()) !== true); - sections = sections.filter(sec => bads.hasOwnProperty(sec.title()) !== true); - this._doc._sections = sections; - return this._doc; - } //move-around sections like in jquery - - /** - * returns the next sibling of this section - * if it can find one then it returns null - * - * @returns {Section|null} the next sibling - */ - - - nextSibling() { - //if this section is not part of a document then we can go to the next part of the document - if (!this._doc) { - return null; - } //first we get the a list of sections and our own position in this list - - - let sections = this._doc.sections(); - - let index = this.index() || 0; //then we look trough the list looking for the next sibling - //aka we look the next item at the same depth as us - //so we start the loop at the next section in the list and go till the length of the list - - for (let i = index + 1; i < sections.length; i++) { - //if the depth is smaller then the current depth then there is no next sibling - //aka the depth of the section at position i a level higher then this section then this section is the last section at this depth - if (sections[i].depth() < this.depth()) { - return null; - } //if the section has the same depth as the current section then it is the next sibling - - - if (sections[i].depth() === this.depth()) { - return sections[i]; - } - } //if the loop has no results then there is no next sibling and we are at the end of the file - - - return null; - } - /** - * returns the next sibling of this section - * if it can find one then it returns null - * - * @returns {Section|null} the next sibling - */ - - - next() { - return this.nextSibling(); - } - /** - * returns the previous section - * - * @returns {Section|null} the previous section - */ - - - lastSibling() { - if (!this._doc) { - return null; - } - - let sections = this._doc.sections(); - - let index = this.index() || 0; - return sections[index - 1] || null; - } - /** - * returns the previous section - * - * @returns {Section|null} the previous section - */ - - - last() { - return this.lastSibling(); - } - /** - * returns the previous section - * - * @returns {Section|null} the previous section - */ - - - previousSibling() { - return this.lastSibling(); - } - /** - * returns the previous section - * - * @returns {Section|null} the previous section - */ - - - previous() { - return this.lastSibling(); - } - /** - * returns all the children of a section - * - * If the clue is a string then it will return the child with that exact title - * Else if the clue is a number then it returns the child at that index - * Else it returns all the children - * - * @param {number | string} [clue] A title of a section or a index of a wanted section - * @returns {Section | Section[] | null} A section or a array of sections - */ - - - children(clue) { - if (!this._doc) { - return null; - } - - let sections = this._doc.sections(); - - let index = this.index() || 0; - let children = []; //(immediately preceding sections with higher depth) - - if (sections[index + 1] && sections[index + 1].depth() > this.depth()) { - for (let i = index + 1; i < sections.length; i += 1) { - if (sections[i].depth() > this.depth()) { - children.push(sections[i]); - } else { - break; - } - } - } - - if (typeof clue === 'string') { - return children.find(s => s.title().toLowerCase() === clue.toLowerCase()); - } - - return children; - } - /** - * returns all the children of a section - * - * If the clue is a string then it will return the child with that exact title - * Else if the clue is a number then it returns the child at that index - * Else it returns all the children - * - * @param {number | string} [clue] A title of a section or a index of a wanted section - * @returns {Section | Section[] | null} A section or a array of sections - */ - - - sections(clue) { - return this.children(clue); - } - /** - * returns all the parent of a section - * - * @returns {Section | null} A section that is the parent of a section - */ - - - parent() { - if (!this._doc) { - return null; - } - - let sections = this._doc.sections(); - - let index = this.index() || 0; - - for (let i = index; i >= 0; i -= 1) { - if (sections[i] && sections[i].depth() < this.depth()) { - return sections[i]; - } - } - - return null; - } //outputs - - /** - * returns a plaintext version of the section - * - * @param {object} options options for the text transformation - * @returns {string} the section in text - */ - - - text(options) { - options = setDefaults(options, defaults$2); - return this.paragraphs().map(p => p.text(options)).join('\n\n'); - } - /** - * returns original wiki markup - * - * @returns {string} the original markup - */ - - - wikitext() { - return this._wiki; - } - /** - * returns a json version of the section - * - * @param {object} options keys to include in the resulting json - * @returns {object} the section in json - */ - - - json(options) { - options = setDefaults(options, defaults$2); - return toJSON$1(this, options); - } - - } - - Section.prototype.citations = Section.prototype.references; // aliases - - const singular$1 = { - sentences: 'sentence', - paragraphs: 'paragraph', - links: 'link', - tables: 'table', - templates: 'template', - infoboxes: 'infobox', - coordinates: 'coordinate', - lists: 'list', - images: 'image', - references: 'reference', - citations: 'citation' - }; - Object.keys(singular$1).forEach(k => { - let sing = singular$1[k]; - - Section.prototype[sing] = function (clue) { - let arr = this[k](clue); - - if (typeof clue === 'number') { - return arr[clue]; - } - - return arr[0] || null; - }; - }); - var Section_1 = Section; - - var require$$0$1 = Section_1; - - const isReference = new RegExp('^(' + i18n.references.join('|') + '):?', 'i'); - const section_reg = /(?:\n|^)(={2,5}.{1,200}?={2,5})/g; //interpret ==heading== lines - - const parse$1 = { - heading: require$$0$2 - }; - /** - * filters out the reference section and empty sections and - * - * @param {Section[]} sections - * @returns {Section[]} all the section - */ - - const removeReferenceSection = function (sections) { - return sections.filter((s, i) => { - if (isReference.test(s.title()) === true) { - if (s.paragraphs().length > 0) { - return true; - } //does it have some wacky templates? - - - if (s.templates().length > 0) { - return true; - } //what it has children? awkward - - - if (sections[i + 1] && sections[i + 1].depth() > s.depth()) { - sections[i + 1]._depth -= 1; //move it up a level?... - } - - return false; - } - - return true; - }); - }; - /** - * this function splits the wiki texts on '=' and puts every part in a Section Object - * it also pre processes the section text for the Section object - * then it filters out the reference section - * - * @private - * @param {Document} doc the document that contains the wiki text - * @returns {Section[]} the sections that are parsed out - */ - - - const parseSections = function (doc) { - let sections = []; - - let splits = doc._wiki.split(section_reg); - - for (let i = 0; i < splits.length; i += 2) { - let heading = splits[i - 1] || ''; - let wiki = splits[i] || ''; - - if (wiki === '' && heading === '') { - //usually an empty 'intro' section - continue; - } - - let data = { - title: '', - depth: null, - wiki: wiki - }; //figure-out title and depth - - parse$1.heading(data, heading); - sections.push(new require$$0$1(data, doc)); - } //remove empty references section - - - return removeReferenceSection(sections); - }; - - var _02Section = parseSections; - - const cat_reg = new RegExp('\\[\\[:?(' + i18n.categories.join('|') + '):(.{2,178}?)]](w{0,10})', 'gi'); - const cat_remove_reg = new RegExp('^\\[\\[:?(' + i18n.categories.join('|') + '):', 'gi'); - - const parse_categories = function (wiki) { - const categories = []; - let tmp = wiki.match(cat_reg); //regular links - - if (tmp) { - tmp.forEach(function (c) { - c = c.replace(cat_remove_reg, ''); - c = c.replace(/\|?[ *]?\]\]$/, ''); //parse fancy ones.. - - c = c.replace(/\|.*/, ''); //everything after the '|' is metadata - - if (c && !c.match(/[[\]]/)) { - categories.push(c.trim()); - } - }); - } - - const newWiki = wiki.replace(cat_reg, ''); - return [categories, newWiki]; - }; - - var categories = parse_categories; - - var sectionMap = _sectionMap; - - var toJSON = toJson$9; - - var isDisambig = isDisambig_1; - - var redirects = redirects$1; - - var preProcess = preProcess_1; - - var require$$0 = _02Section; - - var require$$1 = categories; - - const parse = { - section: require$$0, - categories: require$$1 - }; - const defaults$1 = { - tables: true, - lists: true, - paragraphs: true - }; - /** - * The document class is the main entry point of wtf_wikipedia. - * this class represents an article of wikipedia. - * from here you can go to the infoboxes or paragraphs - * - * @class - */ - - class Document$1 { - /** - * The constructor for the document class - * This function starts parsing the wiki text and sets the options in the class - * - * @param {string} [wiki] The wiki text - * @param {object} [options] The options for the parser - */ - constructor(wiki, options) { - options = options || {}; - let props = { - pageID: options.pageID || options.id || null, - namespace: options.namespace || options.ns || null, - lang: options.lang || options.language || null, - domain: options.domain || null, - title: options.title || null, - type: 'page', - redirectTo: null, - wikidata: options.wikidata || null, - wiki: wiki || '', - categories: [], - sections: [], - coordinates: [] - }; // this._missing_templates = {} //for stats+debugging purposes - - Object.keys(props).forEach(k => { - Object.defineProperty(this, '_' + k, { - enumerable: false, - writable: true, - value: props[k] - }); - }); //detect if page is just redirect, and return it - - if (redirects.isRedirect(this._wiki) === true) { - this._type = 'redirect'; - this._redirectTo = redirects.parse(this._wiki); - const [categories, newWiki] = parse.categories(this._wiki); - this._categories = categories; - this._wiki = newWiki; - return; - } //give ourselves a little head-start - - - this._wiki = preProcess(this._wiki); //pull-out [[category:whatevers]] - - const [categories, newWiki] = parse.categories(this._wiki); - this._categories = categories; - this._wiki = newWiki; //parse all the headings, and their texts/sentences - - this._sections = parse.section(this); - } - /** - * Getter and setter for the tile. - * If string is given then this function is a setter and sets the variable and returns the set value - * If the string is not given then it will check if the title is available - * If it is available it returns the title. - * Else it will look if the first sentence contains a bolded phrase and assumes that's the title and returns it - * - * @param {string} [str] The title that will be set - * @returns {null|string} The title found or given - */ - - - title(str) { - //use like a setter - if (str !== undefined) { - this._title = str; - return str; - } //if we have it already - - - if (this._title) { - return this._title; - } //guess the title of this page from first sentence bolding - - - let guess = null; - let sen = this.sentence(); - - if (sen) { - guess = sen.bold(); - } - - return guess; - } - /** - * If an pageID is given then it sets the pageID and returns the given pageID - * Else if the pageID is already set it returns the pageID - * - * @param {number} [id] The pageID that will be set - * @returns {number|null} The given or found pageID - */ - - - pageID(id) { - if (id !== undefined) { - this._pageID = id; - } - - return this._pageID || null; - } - /** - * If an WikidataID is given then it sets the WikidataID and returns the given WikidataID - * Else if the WikidataID is already set it returns the WikidataID - * - * @param {string} [id] The WikidataID that will be set - * @returns {string|null} The given or found WikidataID - */ - - - wikidata(id) { - if (id !== undefined) { - this._wikidata = id; - } - - return this._wikidata || null; - } - /** - * If an domain is given then it sets the domain and returns the given domain - * Else if the domain is already set it returns the domain - * - * @param {string} [str] The domain that will be set - * @returns {string|null} The given or found domain - */ - - - domain(str) { - if (str !== undefined) { - this._domain = str; - } - - return this._domain || null; - } - /** - * If an language is given then it sets the language and returns the given language - * Else if the language is already set it returns the language - * - * @param {string} [lang] The language that will be set - * @returns {string|null} The given or found language - */ - - - language(lang) { - if (lang !== undefined) { - this._lang = lang; - } - - return this._lang || null; - } - /** - * Gets the url of the page - * If the language or domain is not available we substitute 'en' and 'wikipedia.org' - * Then we use the template of `https://${lang}.${domain}/wiki/${title}` to make the url - * - * @returns {string|null} The url of the page - */ - - - url() { - let title = this.title(); - - if (!title) { - return null; - } - - let lang = this.language() || 'en'; - let domain = this.domain() || 'wikipedia.org'; //replace blank to underscore - - title = title.replace(/ /g, '_'); - title = encodeURIComponent(title); - return `https://${lang}.${domain}/wiki/${title}`; - } - /** - * If an namespace is given then it sets the namespace and returns the given namespace - * Else if the namespace is already set it returns the namespace - * - * @param {string} [ns] The namespace that will be set - * @returns {string|null} The given or found namespace - */ - - - namespace(ns) { - if (ns !== undefined) { - this._namespace = ns; - } - - return this._namespace || null; - } - /** - * Returns if the page is a redirect - * - * @returns {boolean} Is the page a redirect - */ - - - isRedirect() { - return this._type === 'redirect'; - } - /** - * Returns information about the page this page redirects to - * - * @returns {null|object} The redirected page - */ - - - redirectTo() { - return this._redirectTo; - } - /** - * This function finds out if a page is a disambiguation page - * - * @returns {boolean} Whether the page is a disambiguation page - */ - - - isDisambiguation() { - return isDisambig(this); - } - /** - * If a clue is available return the category at that index - * Else return all categories - * - * @returns {string | string[]} The category at the provided index or all categories - */ - - - categories(clue) { - let arr = this._categories || []; - - if (typeof clue === 'number') { - return [arr[clue]]; - } - - return arr; - } - /** - * returns the sections of the document - * - * If the clue is a string then it will return the section with that exact title - * Else if the clue is a number then it returns the section at that index - * Else it returns all the sections - * - * @param {number | string} [clue] A title of a section or a index of a wanted section - * @returns {object | object[]} A section or a array of sections - */ - - - sections(clue) { - let arr = this._sections || []; - arr.forEach(sec => { - // link-up parent and child - sec._doc = this; - }); //grab a specific section, by its title - - if (typeof clue === 'string') { - let str = clue.toLowerCase().trim(); - return arr.filter(s => { - return s.title().toLowerCase() === str; - }); - } else if (typeof clue === 'number') { - return [arr[clue]]; - } - - return arr; - } - /** - * Returns the paragraphs in the document - * - * If the clue is a number then it returns the paragraph at that index - * Else it returns all paragraphs in an array - * @param {number | string} [clue] given index of a paragraph - * @returns {object | object[]} the selected paragraph or an array of all paragraphs - */ - - - paragraphs(clue) { - let arr = []; - this.sections().forEach(s => { - arr = arr.concat(s.paragraphs()); - }); - - if (typeof clue === 'number') { - return [arr[clue]]; - } - - return arr; - } - /** - * if no clue is provided, it compiles an array of sentences in the wiki text. - * if the clue is provided it return the sentence at the provided index - * @param {number | string} [clue] given index of a sentence - * @returns {object[]|object} an array of sentences or a single sentence - */ - - - sentences(clue) { - let arr = []; - this.sections().forEach(sec => { - arr = arr.concat(sec.sentences()); - }); - - if (typeof clue === 'number') { - return [arr[clue]]; - } - - return arr; - } - /** - * This function search the whole page, including the infobox and image gallery templates for images - * and then returns them in an array if no clue is provided. - * if an clue is profieded then it returns the image at the clue-th index - * - * @returns {Image[]|Image} a single image or an array of images - */ - - - images(clue) { - let arr = sectionMap(this, 'images', null); //grab image from infobox, first - - this.infoboxes().forEach(info => { - let img = info.image(); - - if (img) { - arr.unshift(img); //put it at the top - } - }); //look for 'gallery' templates, too - - this.templates().forEach(obj => { - if (obj.data.template === 'gallery') { - obj.data.images = obj.data.images || []; - obj.data.images.forEach(img => { - if (!(img instanceof require$$3$3)) { - img.language = this.language(); - img.domain = this.domain(); - img = new require$$3$3(img); - } - - arr.push(img); - }); - } - }); - - if (typeof clue === 'number') { - return [arr[clue]]; - } - - return arr; - } - /** - * Return all links or if a clue is provided only the link at that index - * - * @param {number} [clue] the index of the wanted link - * @returns {string[]|string} all the links or the selected link - */ - - - links(clue) { - return sectionMap(this, 'links', clue); - } - /** - * Return all inter wiki links or if a clue is provided only the inter wiki link at that index - * - * @param {number} [clue] the index of the wanted inter wiki link - * @returns {string[]|string} all the inter wiki links or the selected inter wiki link - */ - - - interwiki(clue) { - return sectionMap(this, 'interwiki', clue); - } - /** - * If a clue is available return the list at that index - * Else return all lists - * - * @param {number} [clue] The index of the wanted list - * @returns {object | object[]} The list at the provided index or all lists - */ - - - lists(clue) { - return sectionMap(this, 'lists', clue); - } - /** - * If a clue is available return the tables at that index - * Else return all tables - * - * @param {number} [clue] The index of the wanted table - * @returns {object | object[]} The table at the provided index or all tables - */ - - - tables(clue) { - return sectionMap(this, 'tables', clue); - } - /** - * If a clue is available return the template at that index - * Else return all templates - * - * @param {number} [clue] The index of the wanted template - * @returns {object | object[]} The category at the provided index or all categories - */ - - - templates(clue) { - return sectionMap(this, 'templates', clue); - } - /** - * If a clue is available return the references at that index - * Else return all references - * - * @param {number} [clue] The index of the wanted references - * @returns {object | object[]} The category at the provided index or all references - */ - - - references(clue) { - return sectionMap(this, 'references', clue); - } - /** - * Returns the 0th or clue-th reference - * - * @param {number} [clue] The index of the wanted reference - * @returns {object|string|number} The reference at the provided index - */ - - - citations(clue) { - return this.references(clue); - } - /** - * finds and returns all coordinates - * or if an clue is given, the coordinate at the index - * - * @param {number} [clue] the index of the coordinate returned - * @returns {object[]|object|null} if a clue is given, the coordinate of null, else an array of coordinates - */ - - - coordinates(clue) { - return sectionMap(this, 'coordinates', clue); - } - /** - * If clue is unidentified then it returns all infoboxes - * If clue is a number then it returns the infobox at that index - * It always sorts the infoboxes by size - * - * @param {number} [clue] the index of the infobox you want to select - * @returns {object | object[]} the selected infobox or an array of infoboxes - */ - - - infoboxes(clue) { - let arr = sectionMap(this, 'infoboxes', clue); //sort them by biggest-first - - arr = arr.sort((a, b) => { - if (Object.keys(a.data).length > Object.keys(b.data).length) { - return -1; - } - - return 1; - }); - return arr; - } - /** - * return a plain text version of the wiki article - * - * @param {object} [options] the options for the parser - * @returns {string} the plain text version of the article - */ - - - text(options) { - options = setDefaults(options, defaults$1); //nah, skip these. - - if (this.isRedirect() === true) { - return ''; - } - - let arr = this.sections().map(sec => sec.text(options)); - return arr.join('\n\n'); - } - /** - * return a json version of the Document class - * - * @param {object} [options] options for the rendering - * @returns {object} this document as json - */ - - - json(options) { - options = setDefaults(options, defaults$1); - return toJSON(this, options); - } - /** - * return original wiki markup - * - * @returns {string} markup text - */ - - - wikitext() { - return this._wiki || ''; - } - /** - * prints the title of every section - * - * @returns {Document} the document itself - */ - - - debug() { - console.log('\n'); - this.sections().forEach(sec => { - let indent = ' - '; - - for (let i = 0; i < sec.depth(); i += 1) { - indent = ' -' + indent; - } - - console.log(indent + (sec.title() || '(Intro)')); - }); - return this; - } - - } // aliases - - - const singular = { - categories: 'category', - sections: 'section', - paragraphs: 'paragraph', - sentences: 'sentence', - images: 'image', - links: 'link', - // interwiki - lists: 'list', - tables: 'table', - templates: 'template', - references: 'reference', - citations: 'citation', - coordinates: 'coordinate', - infoboxes: 'infobox' - }; - Object.keys(singular).forEach(k => { - let sing = singular[k]; - - Document$1.prototype[sing] = function (clue) { - let arr = this[k](clue); - return arr[0] || null; - }; - }); - Document$1.prototype.lang = Document$1.prototype.language; - Document$1.prototype.ns = Document$1.prototype.namespace; - Document$1.prototype.plaintext = Document$1.prototype.text; - Document$1.prototype.isDisambig = Document$1.prototype.isDisambiguation; - Document$1.prototype.citations = Document$1.prototype.references; - Document$1.prototype.redirectsTo = Document$1.prototype.redirectTo; - Document$1.prototype.redirect = Document$1.prototype.redirectTo; - Document$1.prototype.redirects = Document$1.prototype.redirectTo; - var Document_1 = Document$1; - - var Document = Document_1; - - const { - isArray - } = require$$0$9; - /** - * this function puts all responses into proper Document objects - * - * @private - * @param {Array} res - * @param {string | number | Array | Array} title - * @returns {null| Document | Document[]} null if there are no results or Document if there is one responses and Document array if there are multiple responses - */ - - const parseDoc$1 = function (res, title) { - // filter out undefined - res = res.filter(o => o); // put all the responses into Document formats - - let docs = res.map(o => { - return new Document(o.wiki, o.meta); - }); // if the list is empty than there are no results - - if (docs.length === 0) { - return null; - } // if there is only one response then we can get it out of the array - - - if (!isArray(title) && docs.length === 1) { - return docs[0]; - } - - return docs; - }; - - var parseDoc_1 = parseDoc$1; - - /** - * factory for header options - * - * @private - * @param {object} options - * @returns {object} the generated options - */ - const makeHeaders$1 = function (options) { - let agent = options.userAgent || options['User-Agent'] || options['Api-User-Agent'] || 'User of the wtf_wikipedia library'; - let origin; - - if (options.noOrigin) { - origin = ''; - } else { - origin = options.origin || options.Origin || '*'; - } - - return { - method: 'GET', - headers: { - 'Content-Type': 'application/json', - 'Api-User-Agent': agent, - 'User-Agent': agent, - Origin: origin, - 'Accept-Encoding': 'gzip' - }, - redirect: 'follow' - }; - }; - - var _headers = makeHeaders$1; - - var unfetch = browser; - - var parseUrl = parseUrl_1; - - var makeUrl = makeUrl_1; - - var getResult = getResult_1; - - var parseDoc = parseDoc_1; - - var makeHeaders = _headers; - - const isUrl = /^https?:\/\//; - /** - * @typedef fetchDefaults - * @property {string | undefined} [path] - * @property {string | undefined} [wiki] - * @property {string | undefined} [domain] - * @property {boolean | undefined} [follow_redirects] - * @property {string | undefined} [lang] - * @property {string | number | Array | Array | undefined} [title] - * @property {string | undefined} [Api-User-Agent] - */ - - /** - * @type {fetchDefaults} - */ - - const defaults = { - lang: 'en', - wiki: 'wikipedia', - domain: undefined, - follow_redirects: true, - path: 'api.php' //some 3rd party sites use a weird path - - }; - /** - * @callback fetchCallback - * @param {Object} error - * @param {(null | Document | Document[])} response - */ - - /** - * fetches the page from the wiki and returns a Promise with the parsed wiki text - * - * @param {string | number | Array | Array} title the title, PageID, URL or an array of all three of the page(s) you want to fetch - * @param {fetchDefaults} [options] the options for the fetch or the language of the wiki for the article - * @param {fetchCallback} [callback] the callback function for the call - * @returns {Promise} either null if the pages is not found, Document if you asked for one result, and a array of Documents if you asked for multiple pages - */ - - const fetch$2 = function (title, options, callback) { - // support lang as 2nd param - if (typeof options === 'string') { - options = { - lang: options - }; - } - - options = { ...defaults, - ...options - }; - options.title = title; //parse url input - - if (typeof title === 'string' && isUrl.test(title)) { - options = { ...options, - ...parseUrl(title) - }; - } - - const url = makeUrl(options); - const headers = makeHeaders(options); - return unfetch(url, headers).then(res => res.json()).then(res => { - let data = getResult(res, options); - data = parseDoc(data, title); - - if (callback) { - callback(null, data); - } - - return data; - }).catch(e => { - console.error(e); - - if (callback) { - callback(e, null); - } - - return null; - }); - }; - - var _fetch = fetch$2; - - var _version = '9.0.1'; - - /** - * use the native client-side fetch function - * - * @private - * @param {string} url the url that well be fetched - * @param {RequestInit} opts the options for fetch - * @returns {Promise} the response from fetch - */ - - const request = function (url, opts) { - return unfetch(url, opts).then(function (res) { - return res.json(); - }); - }; - - var fetch$1 = request; - - var fetch = _fetch; - - var version = _version; - - var require$$10 = fetch$1; - - const wtf = function (wiki, options) { - return new Document(wiki, options); - }; //export classes for plugin development - - - const models = { - Doc: Document, - Section: require$$0$1, - Paragraph: require$$1$7, - Sentence: require$$2$6, - Image: require$$3$3, - Infobox: require$$4, - Link: require$$5$2, - List: require$$6$1, - Reference: require$$7$1, - Table: require$$8$1, - Template: require$$9, - http: require$$10, - wtf: wtf - }; - - wtf.fetch = function (title, options, cb) { - return fetch(title, options, cb); - }; - - wtf.extend = function (fn) { - fn(models, templates, infoboxes); - return this; - }; - - wtf.plugin = wtf.extend; - wtf.version = version; - var src = wtf; - - return src; - -}))); + const normalize = function () { + let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + str = str.toLowerCase(); + str = str.replace(/[-_]/g, ' '); + return str.trim(); + }; //a formal key-value data table about a topic + + + const Infobox$1 = function (obj, wiki) { + this._type = obj.type; + this.domain = obj.domain; + Object.defineProperty(this, 'data', { + enumerable: false, + value: obj.data + }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); + }; + + const methods$1 = { + type: function () { + return this._type; + }, + links: function (n) { + let arr = []; + Object.keys(this.data).forEach(k => { + this.data[k].links().forEach(l => arr.push(l)); + }); + + if (typeof n === 'string') { + //grab a link like .links('Fortnight') + n = n.charAt(0).toUpperCase() + n.substring(1); //titlecase it + + let link = arr.find(o => o.page() === n); + return link === undefined ? [] : [link]; + } + + return arr; + }, + image: function () { + let s = this.data.image || this.data.image2 || this.data.logo || this.data.image_skyline || this.data.image_flag; + + if (!s) { + return null; + } + + let obj = s.json(); + obj.file = obj.text; + obj.text = ''; + obj.domain = this.domain; // add domain information for image + + return new Image$2(obj); + }, + get: function (keys) { + let allKeys = Object.keys(this.data); + + if (typeof keys === 'string') { + let key = normalize(keys); + + for (let i = 0; i < allKeys.length; i += 1) { + let tmp = normalize(allKeys[i]); + + if (key === tmp) { + return this.data[allKeys[i]]; + } + } + + return new Sentence(); + } + + if (isArray$1(keys)) { + // support array-input + keys = keys.map(normalize); + return keys.map(k => { + for (let i = 0; i < allKeys.length; i += 1) { + let tmp = normalize(allKeys[i]); + + if (k === tmp) { + return this.data[allKeys[i]]; + } + } + + return new Sentence(); + }); + } + + return new Sentence(); + }, + text: function () { + return ''; + }, + json: function (options) { + options = options || {}; + return toJson(this, options); + }, + wikitext: function () { + return this.wiki || ''; + }, + keyValue: function () { + return Object.keys(this.data).reduce((h, k) => { + if (this.data[k]) { + h[k] = this.data[k].text(); + } + + return h; + }, {}); + } + }; //aliases + + Object.keys(methods$1).forEach(k => { + Infobox$1.prototype[k] = methods$1[k]; + }); + Infobox$1.prototype.data = Infobox$1.prototype.keyValue; + Infobox$1.prototype.template = Infobox$1.prototype.type; + Infobox$1.prototype.images = Infobox$1.prototype.image; + var Infobox_1 = Infobox$1; + + const toText = _04Sentence.fromText; + const methods = { + text: function () { + let str = this._text || ''; + return toText(str).text(); + }, + json: function () { + return this.data || {}; + }, + wikitext: function () { + return this.wiki || ''; + } + }; + + const Template$2 = function (data) { + let text = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + let wiki = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; + Object.defineProperty(this, 'data', { + enumerable: false, + value: data + }); + Object.defineProperty(this, '_text', { + enumerable: false, + value: text + }); + Object.defineProperty(this, 'wiki', { + enumerable: false, + value: wiki + }); + }; + + Object.keys(methods).forEach(k => { + Template$2.prototype[k] = methods[k]; + }); + var Template_1 = Template$2; + + const Infobox = Infobox_1; + const Reference = Reference_1; + const Template$1 = Template_1; + const isCitation = /^(cite |citation)/i; + const referenceTypes = { + citation: true, + refn: true, + harvnb: true, + source: true //wikinews + + }; // split Infoboxes from templates and references + + const sortOut$1 = function (list, domain) { + let res = { + infoboxes: [], + templates: [], + references: [] + }; //remove references and infoboxes from our list + + list.forEach(obj => { + let json = obj.json; + let kind = json.template || json.type || json.name; // is it a Reference? + + if (referenceTypes[kind] === true || isCitation.test(kind) === true) { + res.references.push(new Reference(json, obj.wiki)); + return; + } // is it an Infobox? + + + if (json.template === 'infobox' && json.subbox !== 'yes') { + json.domain = domain; //infoboxes need this for images, i guess + + json.data = json.data || {}; //validate it a little + + res.infoboxes.push(new Infobox(json, obj.wiki)); + return; + } // otherwise, it's just a template + + + res.templates.push(new Template$1(json, obj.text, obj.wiki)); + }); + return res; + }; + + var sortOut_1 = sortOut$1; + + const findTemplates = _01Nested; + const parseTemplate = parse$3; + const sortOut = sortOut_1; // return a flat list of all {{templates}} + + const allTemplates = function (wiki, doc) { + let list = []; //nested data-structure of templates + + let nested = findTemplates(wiki); //recursive template-parser + + const parseNested = function (obj, parent) { + obj.parent = parent; //do tail-first recursion + + if (obj.children && obj.children.length > 0) { + obj.children.forEach(ch => parseNested(ch, obj)); + } //parse template into json, return replacement wikitext + + + let [text, json] = parseTemplate(obj, doc); + obj.wiki = text; + + if (json) { + list.push({ + name: obj.name, + wiki: obj.body, + text: text, + json: json + }); + } //remove the text from every parent + + + const removeIt = function (node, body, out) { + if (node.parent) { + node.parent.body = node.parent.body.replace(body, out); + removeIt(node.parent, body, out); + } + }; + + removeIt(obj, obj.body, obj.wiki); + wiki = wiki.replace(obj.body, obj.wiki); + }; //kick it off + + + nested.forEach(node => parseNested(node, null)); //remove the templates from our wiki text + + nested.forEach(node => { + wiki = wiki.replace(node.body, node.wiki); + }); + return { + list: list, + wiki: wiki + }; + }; //find + parse all templates in the section + + + const process = function (section, doc) { + // find+parse them all + let { + list, + wiki + } = allTemplates(section._wiki, doc); // split-out references and infoboxes + + let domain = doc ? doc._domain : null; + let { + infoboxes, + references, + templates + } = sortOut(list, domain); //sort-out the templates we decide to keep + + section._infoboxes = section._infoboxes || []; + section._references = section._references || []; + section._templates = section._templates || []; + section._infoboxes = section._infoboxes.concat(infoboxes); + section._references = section._references.concat(references); + section._templates = section._templates.concat(templates); + section._wiki = wiki; + }; + + var template = process; + + const parseSentence$1 = _04Sentence.fromText; + const Image$1 = Image_1; //okay, is a xml-tag, with newline-separated data, somehow pivoted by '|'... + //all deities help us. truly -> https://en.wikipedia.org/wiki/Help:Gallery_tag + //- not to be confused with https://en.wikipedia.org/wiki/Template:Gallery... + + /** + * + * @private + * @param {object} catcher + * @param {Document} doc + * @param {Section} section + */ + + const parseGallery$1 = function (catcher, doc, section) { + catcher.text = catcher.text.replace(/]*)>([\s\S]+)<\/gallery>/g, (_, attrs, inside) => { + let images = inside.split(/\n/g); + images = images.filter(str => str && str.trim() !== ''); //parse the line, which has an image and sometimes a caption + + images = images.map(str => { + let arr = str.split(/\|/); + let obj = { + file: arr[0].trim(), + lang: doc.lang(), + domain: doc.domain() + }; + let img = new Image$1(obj).json(); + let caption = arr.slice(1).join('|'); + + if (caption !== '') { + img.caption = parseSentence$1(caption); + } + + return img; + }); //add it to our templates list + + if (images.length > 0) { + catcher.templates.push({ + template: 'gallery', + images: images, + pos: section.title + }); + } //return empty string to remove the template from the wiki text + + + return ''; + }); + }; + + var gallery = parseGallery$1; + + const parseTemplates = template; + /** + * parses out the `Election_box` template from the wiki text + * + * this is a non-traditional template, for some reason + * https://en.wikipedia.org/wiki/Template:Election_box + * + * @private + * @param {object} catcher an object to provide and catch data + */ + + const parseElection$1 = function (catcher) { + catcher.text = catcher.text.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi, tmpl => { + let data = { + _wiki: tmpl, + _templates: [] + }; //put it through our full template parser.. + + parseTemplates(data); //okay, pull it apart into something sensible.. + + let templates = data._templates.map(t => t.json()); + + let start = templates.find(t => t.template === 'election box') || {}; + let candidates = templates.filter(t => t.template === 'election box candidate'); + let summary = templates.find(t => t.template === 'election box gain' || t.template === 'election box hold') || {}; + + if (candidates.length > 0 || summary) { + catcher.templates.push({ + template: 'election box', + title: start.title, + candidates: candidates, + summary: summary.data + }); + } //return empty string to remove the template from the wiki text + + + return ''; + }); + }; + + var election = parseElection$1; + + const tableParser$2 = parse$i; + const keys = { + coach: ['team', 'year', 'g', 'w', 'l', 'w-l%', 'finish', 'pg', 'pw', 'pl', 'pw-l%'], + player: ['year', 'team', 'gp', 'gs', 'mpg', 'fg%', '3p%', 'ft%', 'rpg', 'apg', 'spg', 'bpg', 'ppg'], + roster: ['player', 'gp', 'gs', 'mpg', 'fg%', '3fg%', 'ft%', 'rpg', 'apg', 'spg', 'bpg', 'ppg'] + }; + /** + * https://en.wikipedia.org/wiki/Template:NBA_player_statistics_start + * + * @private + * @param {object} catcher + */ + + const parseNBA$1 = function (catcher) { + catcher.text = catcher.text.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi, (tmpl, name) => { + tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); + tmpl = tmpl.replace(/\{\{s-end\}\}/, ''); + name = name.toLowerCase().trim(); + let headers = '! ' + keys[name].join(' !! '); + let table = '{|\n' + headers + '\n' + tmpl + '\n|}'; + let rows = tableParser$2(table); + rows = rows.map(row => { + Object.keys(row).forEach(k => { + row[k] = row[k].text(); + }); + return row; + }); + catcher.templates.push({ + template: 'NBA ' + name + ' statistics', + data: rows + }); //return empty string to remove the template from the wiki text + + return ''; + }); + }; + + var nba = parseNBA$1; + + const tableParser$1 = parse$i; //https://en.wikipedia.org/wiki/Template:MLB_game_log_section + //this is pretty nuts + + const whichHeadings = function (tmpl) { + let headings = ['#', 'date', 'opponent', 'score', 'win', 'loss', 'save', 'attendance', 'record']; + + if (/\|stadium=y/i.test(tmpl) === true) { + headings.splice(7, 0, 'stadium'); //save, stadium, attendance + } + + if (/\|time=y/i.test(tmpl) === true) { + headings.splice(7, 0, 'time'); //save, time, stadium, attendance + } + + if (/\|box=y/i.test(tmpl) === true) { + headings.push('box'); //record, box + } + + return headings; + }; + /** + * + * @private + * @param {object} catcher + */ + + + const parseMlb$1 = function (catcher) { + catcher.text = catcher.text.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi, tmpl => { + let headings = whichHeadings(tmpl); + tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); + tmpl = tmpl.replace(/\{\{mlb game log (section|month) end\}\}/i, ''); + let headers = '! ' + headings.join(' !! '); + let table = '{|\n' + headers + '\n' + tmpl + '\n|}'; + let rows = tableParser$1(table); + rows = rows.map(row => { + Object.keys(row).forEach(k => { + row[k] = row[k].text(); + }); + return row; + }); + catcher.templates.push({ + template: 'mlb game log section', + data: rows + }); //return empty string to remove the template from the wiki text + + return ''; + }); + }; + + var mlb = parseMlb$1; + + const tableParser = parse$i; + let headings = ['res', 'record', 'opponent', 'method', 'event', 'date', 'round', 'time', 'location', 'notes']; + /** + * + * https://en.wikipedia.org/wiki/Template:MMA_record_start + * + * @private + * @param {object} catcher + */ + + const parseMMA$1 = function (catcher) { + catcher.text = catcher.text.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi, tmpl => { + tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); + tmpl = tmpl.replace(/\{\{end\}\}/i, ''); + let headers = '! ' + headings.join(' !! '); + let table = '{|\n' + headers + '\n' + tmpl + '\n|}'; + let rows = tableParser(table); + rows = rows.map(row => { + Object.keys(row).forEach(k => { + row[k] = row[k].text(); + }); + return row; + }); + catcher.templates.push({ + template: 'mma record start', + data: rows + }); //return empty string to remove the template from the wiki text + + return ''; + }); + }; + + var mma = parseMMA$1; + + const parseSentence = _04Sentence.fromText; + /** + * try to parse out the math and chem templates + * + * xml y=mx+b support + * https://en.wikipedia.org/wiki/Help:Displaying_a_formula + * + * @private + * @param {object} catcher + */ + + const parseMath$1 = function (catcher) { + catcher.text = catcher.text.replace(/]*)>([\s\S]+)<\/math>/g, (_, attrs, inside) => { + //clean it up a little? + let formula = parseSentence(inside).text(); + catcher.templates.push({ + template: 'math', + formula: formula, + raw: inside + }); //should we at least try to render it in plaintext? :/ + + if (formula && formula.length < 12) { + return formula; + } //return empty string to remove the template from the wiki text + + + return ''; + }); //try chemistry version too + + catcher.text = catcher.text.replace(/]*)>([\s\S]+?)<\/chem>/g, (_, attrs, inside) => { + catcher.templates.push({ + template: 'chem', + data: inside + }); //return empty string to remove the template from the wiki text + + return ''; + }); + }; + + var math = parseMath$1; + + const parseGallery = gallery; + const parseElection = election; + const parseNBA = nba; + const parseMlb = mlb; + const parseMMA = mma; + const parseMath = math; + const Template = Template_1; + /** + * parses out non standard templates + * + * Most templates are '{{template}}', + * but then, some are '' others are {{start}}...{{end}} + * -> the templates here are of the second type. + * + * @private + * @param {Section} section + * @param {Document} doc + * @returns {Object} wikitext + */ + + const xmlTemplates = function (section, doc) { + const res = { + templates: [], + text: section._wiki + }; + parseElection(res); + parseGallery(res, doc, section); + parseMath(res); + parseMlb(res); + parseMMA(res); + parseNBA(res); // turn them into Template objects + + res.templates = res.templates.map(obj => new Template(obj)); + return res; + }; + + var startToEnd = xmlTemplates; + + const toJSON$1 = toJson$6; + const setDefaults$1 = setDefaults_1; + const parse$2 = { + heading: heading, + table: table, + paragraphs: _03Paragraph, + templates: template, + references: reference, + startEndTemplates: startToEnd + }; + const defaults$2 = { + tables: true, + references: true, + paragraphs: true, + templates: true, + infoboxes: true + }; + /** + * the Section class represents the different sections of the article. + * we look for the == title == syntax and split and parse the sections from there + * + * @class + */ + + class Section$1 { + /** + * the stuff between headings - 'History' section for example + * + * @param {object} data the data already gathered about the section + * @param {Document} doc the document that this section belongs to + */ + constructor(data, doc) { + let props = { + doc: doc, + title: data.title || '', + depth: data.depth, + wiki: data.wiki || '', + templates: [], + tables: [], + infoboxes: [], + references: [], + paragraphs: [] + }; + Object.keys(props).forEach(k => { + Object.defineProperty(this, '_' + k, { + enumerable: false, + writable: true, + value: props[k] + }); + }); //parse-out ' and {{start}}...{{end}} templates + + const startEndTemplates = parse$2.startEndTemplates(this, doc); + this._wiki = startEndTemplates.text; + this._templates = this._templates.concat(startEndTemplates.templates); //parse-out the tags + + parse$2.references(this); //parse-out all {{templates}} + + parse$2.templates(this, doc); //parse the tables + + parse$2.table(this); //now parse all double-newlines + + parse$2.paragraphs(this, doc); + } + /** + * returns the title of a section. if no title is available then it returns empty string + * + * @returns {string} the title of the section + */ + + + title() { + return this._title || ''; + } + /** + * returns the index of the current section in the document + * + * @returns {number | null} the index of the current section in the document + */ + + + index() { + if (!this._doc) { + return null; + } + + let index = this._doc.sections().indexOf(this); + + if (index === -1) { + return null; + } + + return index; + } + /** + * returns the depth (or indentation) of the section + * aka how many levels deep is this section located + * + * @returns {number} the depth of the section + */ + + + depth() { + return this._depth; + } + /** + * returns the depth (or indentation) of the section + * aka how many levels deep is this section located + * + * @returns {number} the depth of the section + */ + + + indentation() { + return this.depth(); + } + /** + * returns all sentences in the section + * if an clue is provided then it returns the sentence at clue-th index + * + * @returns {object | object[]} all sentences in an array or the clue-th sentence + */ + + + sentences() { + return this.paragraphs().reduce((list, p) => { + return list.concat(p.sentences()); + }, []); + } + /** + * returns all paragraphs in the section + * if an clue is provided then it returns the paragraph at clue-th index + * + * @returns {object | object[]} all paragraphs in an array or the clue-th paragraph + */ + + + paragraphs() { + return this._paragraphs || []; + } + /** + * returns all links in the section + * if an clue is provided and it is a number then it returns the link at clue-th index + * if an clue is provided and it is a string then it returns the link at the that content + * + * @param {number| string} [clue] the clue for selecting the link + * @returns {object | object[]} all links in an array or the clue-th link or the link with the content of clue + */ + + + links(clue) { + let arr = []; + this.infoboxes().forEach(templ => { + arr.push(templ.links()); + }); + this.sentences().forEach(s => { + arr.push(s.links()); + }); + this.tables().forEach(t => { + arr.push(t.links()); + }); + this.lists().forEach(list => { + arr.push(list.links()); + }); + arr = arr.reduce((acc, val) => acc.concat(val), []) //flatten the array + .filter(val => val !== undefined); //filter out all the undefined from the flattened empty arrays + + if (typeof clue === 'string') { + let link = arr.find(o => o.page().toLowerCase() === clue.toLowerCase()); + return link === undefined ? [] : [link]; + } + + return arr; + } + /** + * returns all tables in the section + * if an clue is provided then it returns the table at clue-th index + * + * @returns {object | object[]} all tables in an array or the clue-th infobox + */ + + + tables() { + return this._tables || []; + } + /** + * returns all templates in the section + * if an clue is provided and clue is a number then it returns the template at clue-th index + * if an clue is provided and clue is a string then it returns all template with that name + * + * @param {number|string} [clue] the clue for selecting the template + * @returns {object | object[]} all templates in an array or the clue-th template or all template name `clue` + */ + + + templates(clue) { + let arr = this._templates || []; // arr = arr.map((t) => t.json()) + + if (typeof clue === 'string') { + clue = clue.toLowerCase(); + return arr.filter(o => o.data.template === clue || o.data.name === clue); + } + + return arr; + } + /** + * returns all infoboxes in the section + * if an clue is provided then it returns the infobox at clue-th index + * + * @param {number|string} [clue] the clue for selecting the infobox + * @returns {object | object[]} all infoboxes in an array or the clue-th infobox + */ + + + infoboxes(clue) { + let arr = this._infoboxes || []; + + if (typeof clue === 'string') { + clue = clue.replace(/^infobox /i, ''); + clue = clue.trim().toLowerCase(); + return arr.filter(info => info._type === clue); + } + + return arr; + } + /** + * returns all lists in the section + * if an clue is provided then it returns the list at clue-th index + * + * @returns {object | object[]} all lists in an array or the clue-th list + */ + + + coordinates() { + let arr = [...this.templates('coord'), ...this.templates('coor')]; + return arr.map(tmpl => tmpl.json()); + } + /** + * returns all lists in the section + * if an clue is provided then it returns the list at clue-th index + * + * @returns {object | object[]} all lists in an array or the clue-th list + */ + + + lists() { + let arr = []; + this.paragraphs().forEach(p => { + arr = arr.concat(p.lists()); + }); + return arr; + } + /** + * returns all interwiki links in the section + * if an clue is provided then it returns the interwiki link at clue-th index + * + * @returns {object | object[]} all interwiki links in an array or the clue-th interwiki link + */ + + + interwiki() { + let arr = []; + this.paragraphs().forEach(p => { + arr = arr.concat(p.interwiki()); + }); + return arr; + } + /** + * returns all images in the section + * if an clue is provided then it returns the image at clue-th index + * + * @returns {Image | Image[]} all images in an array or the clue-th image + */ + + + images() { + let arr = []; + this.paragraphs().forEach(p => { + arr = arr.concat(p.images()); + }); + return arr; + } + /** + * returns all references in the section + * if an clue is provided then it returns the reference at clue-th index + * + * @returns {object | object[]} all references in an array or the clue-th reference + */ + + + references() { + return this._references || []; + } //transformations + + /** + * Removes the section from the document + * + * @returns {null|Document} the document without this section. or null if there is no document + */ + + + remove() { + if (!this._doc) { + return null; + } + + let bads = {}; + bads[this.title()] = true; //remove children too + + this.children().forEach(sec => bads[sec.title()] = true); + + let sections = this._doc.sections(); + + sections = sections.filter(sec => bads.hasOwnProperty(sec.title()) !== true); + sections = sections.filter(sec => bads.hasOwnProperty(sec.title()) !== true); + this._doc._sections = sections; + return this._doc; + } //move-around sections like in jquery + + /** + * returns the next sibling of this section + * if it can find one then it returns null + * + * @returns {Section|null} the next sibling + */ + + + nextSibling() { + //if this section is not part of a document then we can go to the next part of the document + if (!this._doc) { + return null; + } //first we get the a list of sections and our own position in this list + + + let sections = this._doc.sections(); + + let index = this.index() || 0; //then we look trough the list looking for the next sibling + //aka we look the next item at the same depth as us + //so we start the loop at the next section in the list and go till the length of the list + + for (let i = index + 1; i < sections.length; i++) { + //if the depth is smaller then the current depth then there is no next sibling + //aka the depth of the section at position i a level higher then this section then this section is the last section at this depth + if (sections[i].depth() < this.depth()) { + return null; + } //if the section has the same depth as the current section then it is the next sibling + + + if (sections[i].depth() === this.depth()) { + return sections[i]; + } + } //if the loop has no results then there is no next sibling and we are at the end of the file + + + return null; + } + /** + * returns the next sibling of this section + * if it can find one then it returns null + * + * @returns {Section|null} the next sibling + */ + + + next() { + return this.nextSibling(); + } + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ + + + lastSibling() { + if (!this._doc) { + return null; + } + + let sections = this._doc.sections(); + + let index = this.index() || 0; + return sections[index - 1] || null; + } + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ + + + last() { + return this.lastSibling(); + } + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ + + + previousSibling() { + return this.lastSibling(); + } + /** + * returns the previous section + * + * @returns {Section|null} the previous section + */ + + + previous() { + return this.lastSibling(); + } + /** + * returns all the children of a section + * + * If the clue is a string then it will return the child with that exact title + * Else if the clue is a number then it returns the child at that index + * Else it returns all the children + * + * @param {number | string} [clue] A title of a section or a index of a wanted section + * @returns {Section | Section[] | null} A section or a array of sections + */ + + + children(clue) { + if (!this._doc) { + return null; + } + + let sections = this._doc.sections(); + + let index = this.index() || 0; + let children = []; //(immediately preceding sections with higher depth) + + if (sections[index + 1] && sections[index + 1].depth() > this.depth()) { + for (let i = index + 1; i < sections.length; i += 1) { + if (sections[i].depth() > this.depth()) { + children.push(sections[i]); + } else { + break; + } + } + } + + if (typeof clue === 'string') { + return children.find(s => s.title().toLowerCase() === clue.toLowerCase()); + } + + return children; + } + /** + * returns all the children of a section + * + * If the clue is a string then it will return the child with that exact title + * Else if the clue is a number then it returns the child at that index + * Else it returns all the children + * + * @param {number | string} [clue] A title of a section or a index of a wanted section + * @returns {Section | Section[] | null} A section or a array of sections + */ + + + sections(clue) { + return this.children(clue); + } + /** + * returns all the parent of a section + * + * @returns {Section | null} A section that is the parent of a section + */ + + + parent() { + if (!this._doc) { + return null; + } + + let sections = this._doc.sections(); + + let index = this.index() || 0; + + for (let i = index; i >= 0; i -= 1) { + if (sections[i] && sections[i].depth() < this.depth()) { + return sections[i]; + } + } + + return null; + } //outputs + + /** + * returns a plaintext version of the section + * + * @param {object} options options for the text transformation + * @returns {string} the section in text + */ + + + text(options) { + options = setDefaults$1(options, defaults$2); + return this.paragraphs().map(p => p.text(options)).join('\n\n'); + } + /** + * returns original wiki markup + * + * @returns {string} the original markup + */ + + + wikitext() { + return this._wiki; + } + /** + * returns a json version of the section + * + * @param {object} options keys to include in the resulting json + * @returns {object} the section in json + */ + + + json(options) { + options = setDefaults$1(options, defaults$2); + return toJSON$1(this, options); + } + + } + + Section$1.prototype.citations = Section$1.prototype.references; // aliases + + const singular$1 = { + sentences: 'sentence', + paragraphs: 'paragraph', + links: 'link', + tables: 'table', + templates: 'template', + infoboxes: 'infobox', + coordinates: 'coordinate', + lists: 'list', + images: 'image', + references: 'reference', + citations: 'citation' + }; + Object.keys(singular$1).forEach(k => { + let sing = singular$1[k]; + + Section$1.prototype[sing] = function (clue) { + let arr = this[k](clue); + + if (typeof clue === 'number') { + return arr[clue]; + } + + return arr[0] || null; + }; + }); + var Section_1 = Section$1; + + const Section = Section_1; + const i18n$1 = i18n$6; + const isReference = new RegExp('^(' + i18n$1.references.join('|') + '):?', 'i'); + const section_reg = /(?:\n|^)(={2,5}.{1,200}?={2,5})/g; //interpret ==heading== lines + + const parse$1 = { + heading: heading + }; + /** + * filters out the reference section and empty sections and + * + * @param {Section[]} sections + * @returns {Section[]} all the section + */ + + const removeReferenceSection = function (sections) { + return sections.filter((s, i) => { + if (isReference.test(s.title()) === true) { + if (s.paragraphs().length > 0) { + return true; + } //does it have some wacky templates? + + + if (s.templates().length > 0) { + return true; + } //what it has children? awkward + + + if (sections[i + 1] && sections[i + 1].depth() > s.depth()) { + sections[i + 1]._depth -= 1; //move it up a level?... + } + + return false; + } + + return true; + }); + }; + /** + * this function splits the wiki texts on '=' and puts every part in a Section Object + * it also pre processes the section text for the Section object + * then it filters out the reference section + * + * @private + * @param {Document} doc the document that contains the wiki text + * @returns {Section[]} the sections that are parsed out + */ + + + const parseSections = function (doc) { + let sections = []; + + let splits = doc._wiki.split(section_reg); + + for (let i = 0; i < splits.length; i += 2) { + let heading = splits[i - 1] || ''; + let wiki = splits[i] || ''; + + if (wiki === '' && heading === '') { + //usually an empty 'intro' section + continue; + } + + let data = { + title: '', + depth: null, + wiki: wiki + }; //figure-out title and depth + + parse$1.heading(data, heading); + sections.push(new Section(data, doc)); + } //remove empty references section + + + return removeReferenceSection(sections); + }; + + var _02Section = parseSections; + + const i18n = i18n$6; + const cat_reg = new RegExp('\\[\\[:?(' + i18n.categories.join('|') + '):(.{2,178}?)]](w{0,10})', 'gi'); + const cat_remove_reg = new RegExp('^\\[\\[:?(' + i18n.categories.join('|') + '):', 'gi'); + + const parse_categories = function (wiki) { + const categories = []; + let tmp = wiki.match(cat_reg); //regular links + + if (tmp) { + tmp.forEach(function (c) { + c = c.replace(cat_remove_reg, ''); + c = c.replace(/\|?[ *]?\]\]$/, ''); //parse fancy ones.. + + c = c.replace(/\|.*/, ''); //everything after the '|' is metadata + + if (c && !c.match(/[[\]]/)) { + categories.push(c.trim()); + } + }); + } + + const newWiki = wiki.replace(cat_reg, ''); + return [categories, newWiki]; + }; + + var categories = parse_categories; + + const sectionMap = _sectionMap; + const toJSON = toJson$9; + const isDisambig = isDisambig_1; + const setDefaults = setDefaults_1; + const Image = Image_1; + const redirects = redirects$1; + const preProcess = preProcess_1; + const parse = { + section: _02Section, + categories: categories + }; + const defaults$1 = { + tables: true, + lists: true, + paragraphs: true + }; + /** + * The document class is the main entry point of wtf_wikipedia. + * this class represents an article of wikipedia. + * from here you can go to the infoboxes or paragraphs + * + * @class + */ + + class Document$2 { + /** + * The constructor for the document class + * This function starts parsing the wiki text and sets the options in the class + * + * @param {string} [wiki] The wiki text + * @param {object} [options] The options for the parser + */ + constructor(wiki, options) { + options = options || {}; + let props = { + pageID: options.pageID || options.id || null, + namespace: options.namespace || options.ns || null, + lang: options.lang || options.language || null, + domain: options.domain || null, + title: options.title || null, + type: 'page', + redirectTo: null, + wikidata: options.wikidata || null, + wiki: wiki || '', + categories: [], + sections: [], + coordinates: [] + }; // this._missing_templates = {} //for stats+debugging purposes + + Object.keys(props).forEach(k => { + Object.defineProperty(this, '_' + k, { + enumerable: false, + writable: true, + value: props[k] + }); + }); //detect if page is just redirect, and return it + + if (redirects.isRedirect(this._wiki) === true) { + this._type = 'redirect'; + this._redirectTo = redirects.parse(this._wiki); + const [categories, newWiki] = parse.categories(this._wiki); + this._categories = categories; + this._wiki = newWiki; + return; + } //give ourselves a little head-start + + + this._wiki = preProcess(this._wiki); //pull-out [[category:whatevers]] + + const [categories, newWiki] = parse.categories(this._wiki); + this._categories = categories; + this._wiki = newWiki; //parse all the headings, and their texts/sentences + + this._sections = parse.section(this); + } + /** + * Getter and setter for the tile. + * If string is given then this function is a setter and sets the variable and returns the set value + * If the string is not given then it will check if the title is available + * If it is available it returns the title. + * Else it will look if the first sentence contains a bolded phrase and assumes that's the title and returns it + * + * @param {string} [str] The title that will be set + * @returns {null|string} The title found or given + */ + + + title(str) { + //use like a setter + if (str !== undefined) { + this._title = str; + return str; + } //if we have it already + + + if (this._title) { + return this._title; + } //guess the title of this page from first sentence bolding + + + let guess = null; + let sen = this.sentence(); + + if (sen) { + guess = sen.bold(); + } + + return guess; + } + /** + * If an pageID is given then it sets the pageID and returns the given pageID + * Else if the pageID is already set it returns the pageID + * + * @param {number} [id] The pageID that will be set + * @returns {number|null} The given or found pageID + */ + + + pageID(id) { + if (id !== undefined) { + this._pageID = id; + } + + return this._pageID || null; + } + /** + * If an WikidataID is given then it sets the WikidataID and returns the given WikidataID + * Else if the WikidataID is already set it returns the WikidataID + * + * @param {string} [id] The WikidataID that will be set + * @returns {string|null} The given or found WikidataID + */ + + + wikidata(id) { + if (id !== undefined) { + this._wikidata = id; + } + + return this._wikidata || null; + } + /** + * If an domain is given then it sets the domain and returns the given domain + * Else if the domain is already set it returns the domain + * + * @param {string} [str] The domain that will be set + * @returns {string|null} The given or found domain + */ + + + domain(str) { + if (str !== undefined) { + this._domain = str; + } + + return this._domain || null; + } + /** + * If an language is given then it sets the language and returns the given language + * Else if the language is already set it returns the language + * + * @param {string} [lang] The language that will be set + * @returns {string|null} The given or found language + */ + + + language(lang) { + if (lang !== undefined) { + this._lang = lang; + } + + return this._lang || null; + } + /** + * Gets the url of the page + * If the language or domain is not available we substitute 'en' and 'wikipedia.org' + * Then we use the template of `https://${lang}.${domain}/wiki/${title}` to make the url + * + * @returns {string|null} The url of the page + */ + + + url() { + let title = this.title(); + + if (!title) { + return null; + } + + let lang = this.language() || 'en'; + let domain = this.domain() || 'wikipedia.org'; //replace blank to underscore + + title = title.replace(/ /g, '_'); + title = encodeURIComponent(title); + return "https://".concat(lang, ".").concat(domain, "/wiki/").concat(title); + } + /** + * If an namespace is given then it sets the namespace and returns the given namespace + * Else if the namespace is already set it returns the namespace + * + * @param {string} [ns] The namespace that will be set + * @returns {string|null} The given or found namespace + */ + + + namespace(ns) { + if (ns !== undefined) { + this._namespace = ns; + } + + return this._namespace || null; + } + /** + * Returns if the page is a redirect + * + * @returns {boolean} Is the page a redirect + */ + + + isRedirect() { + return this._type === 'redirect'; + } + /** + * Returns information about the page this page redirects to + * + * @returns {null|object} The redirected page + */ + + + redirectTo() { + return this._redirectTo; + } + /** + * This function finds out if a page is a disambiguation page + * + * @returns {boolean} Whether the page is a disambiguation page + */ + + + isDisambiguation() { + return isDisambig(this); + } + /** + * If a clue is available return the category at that index + * Else return all categories + * + * @returns {string | string[]} The category at the provided index or all categories + */ + + + categories(clue) { + let arr = this._categories || []; + + if (typeof clue === 'number') { + return [arr[clue]]; + } + + return arr; + } + /** + * returns the sections of the document + * + * If the clue is a string then it will return the section with that exact title + * Else if the clue is a number then it returns the section at that index + * Else it returns all the sections + * + * @param {number | string} [clue] A title of a section or a index of a wanted section + * @returns {object | object[]} A section or a array of sections + */ + + + sections(clue) { + let arr = this._sections || []; + arr.forEach(sec => { + // link-up parent and child + sec._doc = this; + }); //grab a specific section, by its title + + if (typeof clue === 'string') { + let str = clue.toLowerCase().trim(); + return arr.filter(s => { + return s.title().toLowerCase() === str; + }); + } else if (typeof clue === 'number') { + return [arr[clue]]; + } + + return arr; + } + /** + * Returns the paragraphs in the document + * + * If the clue is a number then it returns the paragraph at that index + * Else it returns all paragraphs in an array + * @param {number | string} [clue] given index of a paragraph + * @returns {object | object[]} the selected paragraph or an array of all paragraphs + */ + + + paragraphs(clue) { + let arr = []; + this.sections().forEach(s => { + arr = arr.concat(s.paragraphs()); + }); + + if (typeof clue === 'number') { + return [arr[clue]]; + } + + return arr; + } + /** + * if no clue is provided, it compiles an array of sentences in the wiki text. + * if the clue is provided it return the sentence at the provided index + * @param {number | string} [clue] given index of a sentence + * @returns {object[]|object} an array of sentences or a single sentence + */ + + + sentences(clue) { + let arr = []; + this.sections().forEach(sec => { + arr = arr.concat(sec.sentences()); + }); + + if (typeof clue === 'number') { + return [arr[clue]]; + } + + return arr; + } + /** + * This function search the whole page, including the infobox and image gallery templates for images + * and then returns them in an array if no clue is provided. + * if an clue is profieded then it returns the image at the clue-th index + * + * @returns {Image[]|Image} a single image or an array of images + */ + + + images(clue) { + let arr = sectionMap(this, 'images', null); //grab image from infobox, first + + this.infoboxes().forEach(info => { + let img = info.image(); + + if (img) { + arr.unshift(img); //put it at the top + } + }); //look for 'gallery' templates, too + + this.templates().forEach(obj => { + if (obj.data.template === 'gallery') { + obj.data.images = obj.data.images || []; + obj.data.images.forEach(img => { + if (!(img instanceof Image)) { + img.language = this.language(); + img.domain = this.domain(); + img = new Image(img); + } + + arr.push(img); + }); + } + }); + + if (typeof clue === 'number') { + return [arr[clue]]; + } + + return arr; + } + /** + * Return all links or if a clue is provided only the link at that index + * + * @param {number} [clue] the index of the wanted link + * @returns {string[]|string} all the links or the selected link + */ + + + links(clue) { + return sectionMap(this, 'links', clue); + } + /** + * Return all inter wiki links or if a clue is provided only the inter wiki link at that index + * + * @param {number} [clue] the index of the wanted inter wiki link + * @returns {string[]|string} all the inter wiki links or the selected inter wiki link + */ + + + interwiki(clue) { + return sectionMap(this, 'interwiki', clue); + } + /** + * If a clue is available return the list at that index + * Else return all lists + * + * @param {number} [clue] The index of the wanted list + * @returns {object | object[]} The list at the provided index or all lists + */ + + + lists(clue) { + return sectionMap(this, 'lists', clue); + } + /** + * If a clue is available return the tables at that index + * Else return all tables + * + * @param {number} [clue] The index of the wanted table + * @returns {object | object[]} The table at the provided index or all tables + */ + + + tables(clue) { + return sectionMap(this, 'tables', clue); + } + /** + * If a clue is available return the template at that index + * Else return all templates + * + * @param {number} [clue] The index of the wanted template + * @returns {object | object[]} The category at the provided index or all categories + */ + + + templates(clue) { + return sectionMap(this, 'templates', clue); + } + /** + * If a clue is available return the references at that index + * Else return all references + * + * @param {number} [clue] The index of the wanted references + * @returns {object | object[]} The category at the provided index or all references + */ + + + references(clue) { + return sectionMap(this, 'references', clue); + } + /** + * Returns the 0th or clue-th reference + * + * @param {number} [clue] The index of the wanted reference + * @returns {object|string|number} The reference at the provided index + */ + + + citations(clue) { + return this.references(clue); + } + /** + * finds and returns all coordinates + * or if an clue is given, the coordinate at the index + * + * @param {number} [clue] the index of the coordinate returned + * @returns {object[]|object|null} if a clue is given, the coordinate of null, else an array of coordinates + */ + + + coordinates(clue) { + return sectionMap(this, 'coordinates', clue); + } + /** + * If clue is unidentified then it returns all infoboxes + * If clue is a number then it returns the infobox at that index + * It always sorts the infoboxes by size + * + * @param {number} [clue] the index of the infobox you want to select + * @returns {object | object[]} the selected infobox or an array of infoboxes + */ + + + infoboxes(clue) { + let arr = sectionMap(this, 'infoboxes', clue); //sort them by biggest-first + + arr = arr.sort((a, b) => { + if (Object.keys(a.data).length > Object.keys(b.data).length) { + return -1; + } + + return 1; + }); + return arr; + } + /** + * return a plain text version of the wiki article + * + * @param {object} [options] the options for the parser + * @returns {string} the plain text version of the article + */ + + + text(options) { + options = setDefaults(options, defaults$1); //nah, skip these. + + if (this.isRedirect() === true) { + return ''; + } + + let arr = this.sections().map(sec => sec.text(options)); + return arr.join('\n\n'); + } + /** + * return a json version of the Document class + * + * @param {object} [options] options for the rendering + * @returns {object} this document as json + */ + + + json(options) { + options = setDefaults(options, defaults$1); + return toJSON(this, options); + } + /** + * return original wiki markup + * + * @returns {string} markup text + */ + + + wikitext() { + return this._wiki || ''; + } + /** + * prints the title of every section + * + * @returns {Document} the document itself + */ + + + debug() { + console.log('\n'); + this.sections().forEach(sec => { + let indent = ' - '; + + for (let i = 0; i < sec.depth(); i += 1) { + indent = ' -' + indent; + } + + console.log(indent + (sec.title() || '(Intro)')); + }); + return this; + } + + } // aliases + + + const singular = { + categories: 'category', + sections: 'section', + paragraphs: 'paragraph', + sentences: 'sentence', + images: 'image', + links: 'link', + // interwiki + lists: 'list', + tables: 'table', + templates: 'template', + references: 'reference', + citations: 'citation', + coordinates: 'coordinate', + infoboxes: 'infobox' + }; + Object.keys(singular).forEach(k => { + let sing = singular[k]; + + Document$2.prototype[sing] = function (clue) { + let arr = this[k](clue); + return arr[0] || null; + }; + }); + Document$2.prototype.lang = Document$2.prototype.language; + Document$2.prototype.ns = Document$2.prototype.namespace; + Document$2.prototype.plaintext = Document$2.prototype.text; + Document$2.prototype.isDisambig = Document$2.prototype.isDisambiguation; + Document$2.prototype.citations = Document$2.prototype.references; + Document$2.prototype.redirectsTo = Document$2.prototype.redirectTo; + Document$2.prototype.redirect = Document$2.prototype.redirectTo; + Document$2.prototype.redirects = Document$2.prototype.redirectTo; + var Document_1 = Document$2; + + const Document$1 = Document_1; + const { + isArray + } = helpers$1; + /** + * this function puts all responses into proper Document objects + * + * @private + * @param {Array} res + * @param {string | number | Array | Array} title + * @returns {null| Document | Document[]} null if there are no results or Document if there is one responses and Document array if there are multiple responses + */ + + const parseDoc$1 = function (res, title) { + // filter out undefined + res = res.filter(o => o); // put all the responses into Document formats + + let docs = res.map(o => { + return new Document$1(o.wiki, o.meta); + }); // if the list is empty than there are no results + + if (docs.length === 0) { + return null; + } // if there is only one response then we can get it out of the array + + + if (!isArray(title) && docs.length === 1) { + return docs[0]; + } + + return docs; + }; + + var parseDoc_1 = parseDoc$1; + + /** + * factory for header options + * + * @private + * @param {object} options + * @returns {object} the generated options + */ + + const makeHeaders$1 = function (options) { + let agent = options.userAgent || options['User-Agent'] || options['Api-User-Agent'] || 'User of the wtf_wikipedia library'; + let origin; + + if (options.noOrigin) { + origin = ''; + } else { + origin = options.origin || options.Origin || '*'; + } + + return { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + 'Api-User-Agent': agent, + 'User-Agent': agent, + Origin: origin, + 'Accept-Encoding': 'gzip' + }, + redirect: 'follow' + }; + }; + + var _headers = makeHeaders$1; + + const unfetch$1 = browser; + const parseUrl = parseUrl_1; + const makeUrl = makeUrl_1; + const getResult = getResult_1; + const parseDoc = parseDoc_1; + const makeHeaders = _headers; + const isUrl = /^https?:\/\//; + /** + * @typedef fetchDefaults + * @property {string | undefined} [path] + * @property {string | undefined} [wiki] + * @property {string | undefined} [domain] + * @property {boolean | undefined} [follow_redirects] + * @property {string | undefined} [lang] + * @property {string | number | Array | Array | undefined} [title] + * @property {string | undefined} [Api-User-Agent] + */ + + /** + * @type {fetchDefaults} + */ + + const defaults = { + lang: 'en', + wiki: 'wikipedia', + domain: undefined, + follow_redirects: true, + path: 'api.php' //some 3rd party sites use a weird path + + }; + /** + * @callback fetchCallback + * @param {Object} error + * @param {(null | Document | Document[])} response + */ + + /** + * fetches the page from the wiki and returns a Promise with the parsed wiki text + * + * @param {string | number | Array | Array} title the title, PageID, URL or an array of all three of the page(s) you want to fetch + * @param {fetchDefaults} [options] the options for the fetch or the language of the wiki for the article + * @param {fetchCallback} [callback] the callback function for the call + * @returns {Promise} either null if the pages is not found, Document if you asked for one result, and a array of Documents if you asked for multiple pages + */ + + const fetch$2 = function (title, options, callback) { + // support lang as 2nd param + if (typeof options === 'string') { + options = { + lang: options + }; + } + + options = { ...defaults, + ...options + }; + options.title = title; //parse url input + + if (typeof title === 'string' && isUrl.test(title)) { + options = { ...options, + ...parseUrl(title) + }; + } + + const url = makeUrl(options); + const headers = makeHeaders(options); + return unfetch$1(url, headers).then(res => res.json()).then(res => { + let data = getResult(res, options); + data = parseDoc(data, title); + + if (callback) { + callback(null, data); + } + + return data; + }).catch(e => { + console.error(e); + + if (callback) { + callback(e, null); + } + + return null; + }); + }; + + var _fetch = fetch$2; + + var _version = '9.0.2'; + + const unfetch = browser; + /** + * use the native client-side fetch function + * + * @private + * @param {string} url the url that well be fetched + * @param {RequestInit} opts the options for fetch + * @returns {Promise} the response from fetch + */ + + const request = function (url, opts) { + return unfetch(url, opts).then(function (res) { + return res.json(); + }); + }; + + var fetch$1 = request; + + const fetch = _fetch; + const version = _version; + const Document = Document_1; //the main 'factory' exported method + + const wtf = function (wiki, options) { + return new Document(wiki, options); + }; //export classes for plugin development + + + const models = { + Doc: Document_1, + Section: Section_1, + Paragraph: Paragraph_1, + Sentence: Sentence_1, + Image: Image_1, + Infobox: Infobox_1, + Link: Link_1, + List: List_1, + Reference: Reference_1, + Table: Table_1, + Template: Template_1, + http: fetch$1, + wtf: wtf + }; + let templates = custom; + let infoboxes = _infoboxes; + + wtf.fetch = function (title, options, cb) { + return fetch(title, options, cb); + }; + + wtf.extend = function (fn) { + fn(models, templates, infoboxes); + return this; + }; + + wtf.plugin = wtf.extend; + wtf.version = version; + var src = wtf; + + return src; + +})); diff --git a/builds/wtf_wikipedia-client.min.js b/builds/wtf_wikipedia-client.min.js index 82ed00a9..8252e17e 100644 --- a/builds/wtf_wikipedia-client.min.js +++ b/builds/wtf_wikipedia-client.min.js @@ -1 +1 @@ -!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).wtf=t()}(this,(function(){"use strict";var e=Object.freeze({__proto__:null,default:function(e,t){return t=t||{},new Promise((function(i,a){var n=new XMLHttpRequest,r=[],o=[],s={},l=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:l,headers:{keys:function(){return r},entries:function(){return o},get:function(e){return s[e.toLowerCase()]},has:function(e){return e.toLowerCase()in s}}}};for(var c in n.open(t.method||"get",e,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(e,t,i){r.push(t=t.toLowerCase()),o.push([t,i]),s[t]=s[t]?s[t]+","+i:i})),i(l())},n.onerror=a,n.withCredentials="include"==t.credentials,t.headers)n.setRequestHeader(c,t.headers[c]);n.send(t.body||null)}))}});var t,i=(t=e)&&t.default||t,a=self.fetch||(self.fetch=i.default||i);var n=function(e){let t=new URL(e),i=t.pathname.replace(/^\/(wiki\/)?/,"");return i=decodeURIComponent(i),{domain:t.host,title:i}};var r={capitalise:function(e){return e&&"string"==typeof e?e.charAt(0).toUpperCase()+e.slice(1):""},trim_whitespace:function(e){return e&&"string"==typeof e?e=(e=(e=(e=e.replace(/^\s+/,"")).replace(/\s+$/,"")).replace(/ {2}/," ")).replace(/\s, /,", "):""},isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},isObject:function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)}};const{isArray:o}=r,s=/(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/,l={action:"query",prop:"revisions|pageprops",rvprop:"content",maxlag:5,rvslots:"main",origin:"*",format:"json",redirects:"true"},c=e=>e.replace(/ /g,"_").trim();var u=function(e){let t=Object.assign({},l),i="";if(e.domain){let t=s.test(e.domain)?"w/api.php":e.path;i=`https://${e.domain}/${t}?`}else{if(!e.lang||!e.wiki)return"";i=`https://${e.lang}.${e.wiki}.org/w/api.php?`}e.follow_redirects||delete t.redirects;let a=e.title;if("number"==typeof a)t.pageids=a;else if("string"==typeof a)t.titles=c(a);else if(void 0!==a&&o(a)&&"number"==typeof a[0])t.pageids=a.join("|");else{if(void 0===a||!0!==o(a)||"string"!=typeof a[0])return"";t.titles=a.map(c).join("|")}return`${i}${n=t,Object.entries(n).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&")}`;var n};var p=function(e,t={}){return Object.keys(e.query.pages).map(i=>{let a=e.query.pages[i]||{};if(a.hasOwnProperty("missing")||a.hasOwnProperty("invalid"))return null;let n=a.revisions[0]["*"];!n&&a.revisions[0].slots&&(n=a.revisions[0].slots.main["*"]),a.pageprops=a.pageprops||{};let r=t.domain;return!r&&t.wiki&&(r=t.wiki+".org"),{wiki:n,meta:Object.assign({},t,{title:a.title,pageID:a.pageid,namespace:a.ns,domain:r,wikidata:a.pageprops.wikibase_item,description:a.pageprops["wikibase-shortdesc"]})}})};var m=function(e,t,i){let a=[];return e.sections().forEach(e=>{let n=[];n="string"==typeof i?e[t](i):e[t](),n.forEach(e=>{a.push(e)})}),"number"==typeof i?void 0===a[i]?[]:[a[i]]:a};var d=function(e,t){return Object.assign({},t,e)};const h={title:!0,sections:!0,pageID:!0,categories:!0};var g=function(e,t){let i={};return(t=d(t,h)).title&&(i.title=e.title()),t.pageID&&(i.pageID=e.pageID()),t.categories&&(i.categories=e.categories()),t.sections&&(i.sections=e.sections().map(e=>e.json(t))),!0===e.isRedirect()&&(i.isRedirect=!0,i.redirectTo=e.redirectTo(),i.sections=[]),t.coordinates&&(i.coordinates=e.coordinates()),t.infoboxes&&(i.infoboxes=e.infoboxes().map(e=>e.json(t))),t.images&&(i.images=e.images().map(e=>e.json(t))),t.plaintext&&(i.plaintext=e.text(t)),(t.citations||t.references)&&(i.references=e.references()),i};let f=" disambiguation";var k={categories:["category","abdeeling","bólkur","catagóir","categori","categoria","categoria","categoría","categorîa","categorìa","catégorie","categorie","catègorie","category","categuria","catigurìa","class","ẹ̀ka","flocc","flocc","flokkur","grup","jamii","kaarangay","kateggoría","kategooria","kategori","kategorî","kategoria","kategória","kategorie","kategoriija","kategorija","kategorio","kategoriya","kategoriýa","kategoriye","kategory","kategorya","kateqoriya","katiguriya","klad","luokka","ñemohenda","roinn","ronney","rummad","setensele","sokajy","sumut","thể","turkum","категорија","категория","категорія","катэгорыя","төркем","קטגוריה","تصنيف","تۈر","رده","श्रेणी","श्रेणी","বিষয়শ্রেণী","หมวดหมู่","분류","분류","分类"],disambig_templates:["dab","disamb","disambig","disambiguation","aðgreining","aimai","ałtsʼáʼáztiin","anlam ayrımı","anlam ayrımı","apartigilo","argipen","begriepskloorenge","begriffsklärung","begriffsklärung","begriffsklärung","begriffsklearung","bisongidila","bkl","bokokani","caddayn","clerheans","cudakirin","čvor","db","desambig","desambigación","desambiguação","desambiguació","desambiguación","desambiguáncia","desambiguasion","desambiguassiù","desambigui","dezambiguizare","dəqiqləşdirmə","disambigua","disambigua","disambigua","disambìgua","disambigua","disambiguasi","disambiguasi","discretiva","disheñvelout","disingkek","dixanbigua","dixebra","diżambigwazzjoni","doorverwijspagina","dp","dp","dubbelsinnig","dudalipen","dv","egyért","fleiri týdningar","fleirtyding","flertydig","förgrening","gì-ngiê","giklaro","gwahaniaethu","homonimo","homónimos","homonymie","huaʻōlelo puana like","idirdhealú","khu-pia̍t","kthjellim","kujekesa","maana","maneo bin","mehrdüdig begreep","menm non","muardüüdag artiikel","neibetsjuttings","nozīmju atdalīšana","nuorodinis","nyahkekaburan","omonimeye","omonimia","page dé frouque","paglilinaw","panangilawlawag","pansayod","pejy mitovy anarana","peker","razdvojba","razločitev","razvrstavanje","reddaghey","rozcestník","rozlišovacia stránka","sclerir noziun","selvendyssivu","soilleireachadh","suzmunski","täpsustuslehekülg","täsmennyssivu","telplänov","tlahtolmelahuacatlaliztli","trang định hướng","ujednoznacznienie","verdudeliking","wěcejwóznamowosć","wjacezmyslnosć","zambiguaçon","zeimeibu škiršona","αποσαφήνιση","айрық","аҵакырацәа","вишезначна одредница","ибҳомзудоӣ","кёб магъаналы","күп мәгънәләр","күп мәғәнәлелек","мъногосъмꙑслиѥ","неадназначнасць","неадназначнасьць","неоднозначность","олон удхатай","појаснување","пояснение","са шумуд манавал","салаа утгатай","суолталар","текмаанисиздик","цо магіна гуреб","чеперушка","чолхалла","шуко ончыктымаш-влак","მრავალმნიშვნელოვანი","բազմիմաստութիւն","բազմիմաստություն","באדייטן","פירושונים","ابهام‌زدایی","توضيح","توضيح","دقیقلشدیرمه","ڕوونکردنەوە","سلجهائپ","ضد ابہام","گجگجی بیری","نامبهمېدنه","መንታ","अस्पष्टता","बहुअर्थी","बहुविकल्पी शब्द","দ্ব্যর্থতা নিরসন","ਗੁੰਝਲ-ਖੋਲ੍ਹ","સંદિગ્ધ શીર્ષક","பக்கவழி நெறிப்படுத்தல்","అయోమయ నివృత్తి","ದ್ವಂದ್ವ ನಿವಾರಣೆ","വിവക്ഷകൾ","වක්‍රෝත්ති","แก้ความกำกวม","သံတူကြောင်းကွဲ","ណែនាំ","동음이의","扤清楚","搞清楚","曖昧さ回避","消歧义","釋義","gestion dj'omònim","sut'ichana qillqa"],disambig_titles:["disambiguation","homonymie","توضيح","desambiguação","Begriffsklärung","disambigua","曖昧さ回避","消歧義","搞清楚","значения","ابهام‌زدایی","د ابہام","동음이의","dubbelsinnig","այլ կիրառումներ","ujednoznacznienie"],images:["file","image","चित्र","archivo","attēls","berkas","bestand","datei","dosiero","dosya","fájl","fasciculus","fichier","fil","fitxategi","fitxer","gambar","imagem","imej","immagine","larawan","lêer","plik","restr","slika","wêne","wobraz","выява","податотека","слика","файл","სურათი","պատկեր","קובץ","پرونده","دوتنه","ملف","وێنە","चित्र","ไฟล์","파일","ファイル"],infoboxes:["infobox","anfo","anuāmapa","bilgi kutusu","bilgi","bilgiquti","boaty","boestkelaouiñ","bosca","capsa","diehtokássa","faktamall","ficha","generalni","gwybodlen3","info","infobokis","infoboks","infochascha","infokašćik","infokast","infokutija","infolentelė","infopolje","informkesto","infoskreine","infotaula","inligtingskas","inligtingskas3","inligtingskas4","kishtey","kotak","tertcita","tietolaatikko","yerleşim bilgi kutusu","ynfoboks","πλαίσιο","акарточка","аҥа","инфобокс","инфокутија","инфокутия","інфобокс","канадский","картка","карточка","карточка2","карточкарус","картуш","қуттӣ","ინფოდაფა","տեղեկաքարտ","אינפאקעסטל","תבנית","بطاقة","ڄاڻخانو","خانہ","لغة","ज्ञानसन्दूक","তথ্যছক","ਜਾਣਕਾਰੀਡੱਬਾ","సమాచారపెట్టె","තොරතුරුකොටුව","กล่องข้อมูล","ប្រអប់ព័ត៌មាន","정보상자","明細"],redirects:["adkas","aýdaw","doorverwijzing","ohjaus","patrz","přesměruj","redirección","redireccion","redirección","redirecionamento","redirect","redirection","redirection","rinvia","tilvísun","uudelleenohjaus","weiterleitung","weiterleitung","yönlendi̇r","yönlendirme","yönlendi̇rme","ανακατευθυνση","айдау","перанакіраваньне","перенаправлення","пренасочување","преусмери","преусмјери","تغییر_مسیر","تغییرمسیر","تغییرمسیر","เปลี่ยนทาง","ប្តូរទីតាំងទៅ","転送","重定向"],references:["references","reference","einzelnachweise","referencias","références","notes et références","脚注","referenser","bronnen","примечания"]},b=["dab","dab","disamb","disambig","geodis","hndis","setindex","ship index","split dab","sport index","wp disambig","disambiguation cleanup","airport"+f,"biology"+f,"call sign"+f,"caselaw"+f,"chinese title"+f,"genus"+f,"hospital"+f,"lake index","letter"+f,"letter-number combination"+f,"mathematical"+f,"military unit"+f,"mountainindex","number"+f,"phonetics"+f,"place name"+f,"portal"+f,"road"+f,"school"+f,"species latin name abbreviation"+f,"species latin name"+f,"station"+f,"synagogue"+f,"taxonomic authority"+f,"taxonomy"+f].reduce((e,t)=>(e[t]=!0,e),{});const w=new RegExp(". \\(("+k.disambig_titles.join("|")+")\\)$","i"),y=k.disambig_templates.reduce((e,t)=>(e[t]=!0,e),{}),$=function(e){if(!e)return!1;let t=e.text();return!(null===t||!t[0]||!0!==/. may (also)? refer to\b/i.test(t))};var x=function(e){if(e.templates().map(e=>e.json()).find(e=>b.hasOwnProperty(e.template)||y.hasOwnProperty(e.template)))return!0;let t=e.title();return!(!t||!0!==w.test(t))||(!0===$(e.sentence(0))||!0===$(e.sentence(1)))};const v={caption:!0,alt:!0,links:!0,thumb:!0,url:!0};var j=function(e,t){t=d(t,v);let i={file:e.file()};return!1!==t.thumb&&(i.thumb=e.thumbnail()),!1!==t.url&&(i.url=e.url()),!1!==t.caption&&e.data.caption&&(i.caption=e.caption(),!1!==t.links&&e.data.caption.links()&&(i.links=e.links())),!1!==t.alt&&e.data.alt&&(i.alt=e.alt()),i};const _=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},z={file(){return this.data.file||""},alt(){let e=this.data.alt||this.data.file||"";return e=e.replace(/^(file|image):/i,""),e=e.replace(/\.(jpg|jpeg|png|gif|svg)/i,""),e.replace(/_/g," ")},caption(){return this.data.caption?this.data.caption.text():""},links(){return this.data.caption?this.data.caption.links():[]},url(){let e=function(e){let t=function(e){let t=e.replace(/^(image|file?):/i,"");return t=t.charAt(0).toUpperCase()+t.substring(1),t=t.trim().replace(/ /g,"_"),t}(e);return t=encodeURIComponent(t),t}(this.file());return`https://${this.data.domain||"wikipedia.org"}/wiki/Special:Redirect/file/${e}`},thumbnail(e){return e=e||300,this.url()+"?width="+e},format(){let e=this.file().split(".");return e[e.length-1]?e[e.length-1].toLowerCase():null},json:function(e){return j(this,e=e||{})},text:function(){return""},wikitext:function(){return this.data.wiki||""}};Object.keys(z).forEach(e=>{_.prototype[e]=z[e]}),_.prototype.src=_.prototype.url,_.prototype.thumb=_.prototype.thumbnail;var O=_,E={aa:"Afar",ab:"Аҧсуа",af:"Afrikaans",ak:"Akana",als:"Alemannisch",am:"አማርኛ",an:"Aragonés",ang:"Englisc",ar:"العربية",arc:"ܣܘܪܬ",as:"অসমীয়া",ast:"Asturianu",av:"Авар",ay:"Aymar",az:"Azərbaycanca",ba:"Башҡорт",bar:"Boarisch","bat-smg":"Žemaitėška",bcl:"Bikol",be:"Беларуская","be-x-old":"ltr",bg:"Български",bh:"भोजपुरी",bi:"Bislama",bm:"Bamanankan",bn:"বাংলা",bo:"བོད་ཡིག",bpy:"ltr",br:"Brezhoneg",bs:"Bosanski",bug:"ᨅᨔ",bxr:"ltr",ca:"Català",cdo:"Chinese",ce:"Нохчийн",ceb:"Sinugboanong",ch:"Chamoru",cho:"Choctaw",chr:"ᏣᎳᎩ",chy:"Tsetsêhestâhese",co:"Corsu",cr:"Nehiyaw",cs:"Česky",csb:"Kaszëbsczi",cu:"Slavonic",cv:"Чăваш",cy:"Cymraeg",da:"Dansk",de:"Deutsch",diq:"Zazaki",dsb:"ltr",dv:"ދިވެހިބަސް",dz:"ཇོང་ཁ",ee:"Ɛʋɛ",far:"فارسی",el:"Ελληνικά",en:"English",eo:"Esperanto",es:"Español",et:"Eesti",eu:"Euskara",ext:"Estremeñu",ff:"Fulfulde",fi:"Suomi","fiu-vro":"Võro",fj:"Na",fo:"Føroyskt",fr:"Français",frp:"Arpitan",fur:"Furlan",fy:"ltr",ga:"Gaeilge",gan:"ltr",gd:"ltr",gil:"Taetae",gl:"Galego",gn:"Avañe'ẽ",got:"gutisk",gu:"ગુજરાતી",gv:"Gaelg",ha:"هَوُسَ",hak:"ltr",haw:"Hawai`i",he:"עברית",hi:"हिन्दी",ho:"ltr",hr:"Hrvatski",ht:"Krèyol",hu:"Magyar",hy:"Հայերեն",hz:"Otsiherero",ia:"Interlingua",id:"Bahasa",ie:"Interlingue",ig:"Igbo",ii:"ltr",ik:"Iñupiak",ilo:"Ilokano",io:"Ido",is:"Íslenska",it:"Italiano",iu:"ᐃᓄᒃᑎᑐᑦ",ja:"日本語",jbo:"Lojban",jv:"Basa",ka:"ქართული",kg:"KiKongo",ki:"Gĩkũyũ",kj:"Kuanyama",kk:"Қазақша",kl:"Kalaallisut",km:"ភាសាខ្មែរ",kn:"ಕನ್ನಡ",khw:"کھوار",ko:"한국어",kr:"Kanuri",ks:"कश्मीरी",ksh:"Ripoarisch",ku:"Kurdî",kv:"Коми",kw:"Kernewek",ky:"Kırgızca",la:"Latina",lad:"Dzhudezmo",lan:"Leb",lb:"Lëtzebuergesch",lg:"Luganda",li:"Limburgs",lij:"Líguru",lmo:"Lumbaart",ln:"Lingála",lo:"ລາວ",lt:"Lietuvių",lv:"Latviešu","map-bms":"Basa",mg:"Malagasy",man:"官話",mh:"Kajin",mi:"Māori",min:"Minangkabau",mk:"Македонски",ml:"മലയാളം",mn:"Монгол",mo:"Moldovenească",mr:"मराठी",ms:"Bahasa",mt:"bil-Malti",mus:"Muskogee",my:"Myanmasa",na:"Dorerin",nah:"Nahuatl",nap:"Nnapulitano",nd:"ltr",nds:"Plattdüütsch","nds-nl":"Saxon",ne:"नेपाली",new:"नेपालभाषा",ng:"Oshiwambo",nl:"Nederlands",nn:"ltr",no:"Norsk",nr:"ltr",nso:"ltr",nrm:"Nouormand",nv:"Diné",ny:"Chi-Chewa",oc:"Occitan",oj:"ᐊᓂᔑᓈᐯᒧᐎᓐ",om:"Oromoo",or:"ଓଡ଼ିଆ",os:"Иронау",pa:"ਪੰਜਾਬੀ",pag:"Pangasinan",pam:"Kapampangan",pap:"Papiamentu",pdc:"ltr",pi:"Pāli",pih:"Norfuk",pl:"Polski",pms:"Piemontèis",ps:"پښتو",pt:"Português",qu:"Runa",rm:"ltr",rmy:"Romani",rn:"Kirundi",ro:"Română","roa-rup":"Armâneashti",ru:"Русский",rw:"Kinyarwandi",sa:"संस्कृतम्",sc:"Sardu",scn:"Sicilianu",sco:"Scots",sd:"सिनधि",se:"ltr",sg:"Sängö",sh:"Srpskohrvatski",si:"සිංහල",simple:"ltr",sk:"Slovenčina",sl:"Slovenščina",sm:"Gagana",sn:"chiShona",so:"Soomaaliga",sq:"Shqip",sr:"Српски",ss:"SiSwati",st:"ltr",su:"Basa",sv:"Svenska",sw:"Kiswahili",ta:"தமிழ்",te:"తెలుగు",tet:"Tetun",tg:"Тоҷикӣ",th:"ไทย",ti:"ትግርኛ",tk:"Туркмен",tl:"Tagalog",tlh:"tlhIngan-Hol",tn:"Setswana",to:"Lea",tpi:"ltr",tr:"Türkçe",ts:"Xitsonga",tt:"Tatarça",tum:"chiTumbuka",tw:"Twi",ty:"Reo",udm:"Удмурт",ug:"Uyƣurqə",uk:"Українська",ur:"اردو",uz:"Ўзбек",ve:"Tshivenḓa",vi:"Việtnam",vec:"Vèneto",vls:"ltr",vo:"Volapük",wa:"Walon",war:"Winaray",wo:"Wollof",xal:"Хальмг",xh:"isiXhosa",yi:"ייִדיש",yo:"Yorùbá",za:"Cuengh",zh:"中文","zh-classical":"ltr","zh-min-nan":"Bân-lâm-gú","zh-yue":"粵語",zu:"isiZulu"};const S=".wikipedia.org/wiki/$1",C=".wikimedia.org/wiki/$1",N="www.";var q={acronym:N+"acronymfinder.com/$1.html",advisory:"advisory"+C,advogato:N+"advogato.org/$1",aew:"wiki.arabeyes.org/$1",appropedia:N+"appropedia.org/$1",aquariumwiki:N+"theaquariumwiki.com/$1",arborwiki:"localwiki.org/ann-arbor/$1",arxiv:"arxiv.org/abs/$1",atmwiki:N+"otterstedt.de/wiki/index.php/$1",baden:N+"stadtwiki-baden-baden.de/wiki/$1/",battlestarwiki:"en.battlestarwiki.org/wiki/$1",bcnbio:"historiapolitica.bcn.cl/resenas_parlamentarias/wiki/$1",beacha:N+"beachapedia.org/$1",betawiki:"translatewiki.net/wiki/$1",bibcode:"adsabs.harvard.edu/abs/$1",bibliowiki:"wikilivres.org/wiki/$1",bluwiki:"bluwiki.com/go/$1",blw:"britainloves"+S,botwiki:"botwiki.sno.cc/wiki/$1",boxrec:N+"boxrec.com/media/index.php?$1",brickwiki:N+"brickwiki.info/wiki/$1",bugzilla:"bugzilla.wikimedia.org/show_bug.cgi?id=$1",bulba:"bulbapedia.bulbagarden.net/wiki/$1",c:"commons"+C,c2:"c2.com/cgi/wiki?$1",c2find:"c2.com/cgi/wiki?FindPage&value=$1",cache:N+"google.com/search?q=cache:$1","ĉej":"esperanto.blahus.cz/cxej/vikio/index.php/$1",cellwiki:"cell.wikia.com/wiki/$1",centralwikia:"community.wikia.com/wiki/$1",chej:"esperanto.blahus.cz/cxej/vikio/index.php/$1",choralwiki:N+"cpdl.org/wiki/index.php/$1",citizendium:"en.citizendium.org/wiki/$1",ckwiss:N+"ck-wissen.de/ckwiki/index.php?title=$1",comixpedia:N+"comixpedia.org/index.php?title=$1",commons:"commons"+C,communityscheme:"community.schemewiki.org/?c=s&key=$1",communitywiki:"communitywiki.org/$1",comune:"rete.comuni-italiani.it/wiki/$1",creativecommons:"creativecommons.org/licenses/$1",creativecommonswiki:"wiki.creativecommons.org/$1",cxej:"esperanto.blahus.cz/cxej/vikio/index.php/$1",dcc:N+"dccwiki.com/$1",dcdatabase:"dc.wikia.com/$1",dcma:"christian-morgenstern.de/dcma/index.php?title=$1",debian:"wiki.debian.org/$1",delicious:N+"delicious.com/tag/$1",devmo:"developer.mozilla.org/en/docs/$1",dictionary:N+"dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1",dict:N+"dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1",disinfopedia:"sourcewatch.org/index.php/$1",distributedproofreaders:N+"pgdp.net/wiki/$1",distributedproofreadersca:N+"pgdpcanada.net/wiki/index.php/$1",dmoz:"curlie.org/$1",dmozs:"curlie.org/search?q=$1",doi:"doi.org/$1",donate:"donate"+C,doom_wiki:"doom.wikia.com/wiki/$1",download:"releases.wikimedia.org/$1",dbdump:"dumps.wikimedia.org/$1/latest/",dpd:"lema.rae.es/dpd/?key=$1",drae:"dle.rae.es/?w=$1",dreamhost:"wiki.dreamhost.com/index.php/$1",drumcorpswiki:N+"drumcorpswiki.com/index.php/$1",dwjwiki:N+"suberic.net/cgi-bin/dwj/wiki.cgi?$1","eĉei":N+"ikso.net/cgi-bin/wiki.pl?$1",ecoreality:N+"EcoReality.org/wiki/$1",ecxei:N+"ikso.net/cgi-bin/wiki.pl?$1",elibre:"enciclopedia.us.es/index.php/$1",emacswiki:N+"emacswiki.org/emacs?$1",encyc:"encyc.org/wiki/$1",energiewiki:N+"netzwerk-energieberater.de/wiki/index.php/$1",englyphwiki:"en.glyphwiki.org/wiki/$1",enkol:"enkol.pl/$1",eokulturcentro:"esperanto.toulouse.free.fr/nova/wikini/wakka.php?wiki=$1",esolang:"esolangs.org/wiki/$1",etherpad:"etherpad.wikimedia.org/$1",ethnologue:N+"ethnologue.com/language/$1",ethnologuefamily:N+"ethnologue.com/show_family.asp?subid=$1",evowiki:"wiki.cotch.net/index.php/$1",exotica:N+"exotica.org.uk/wiki/$1",fanimutationwiki:"wiki.animutationportal.com/index.php/$1",fedora:"fedoraproject.org/wiki/$1",finalfantasy:"finalfantasy.wikia.com/wiki/$1",finnix:N+"finnix.org/$1",flickruser:N+"flickr.com/people/$1",flickrphoto:N+"flickr.com/photo.gne?id=$1",floralwiki:N+"floralwiki.co.uk/wiki/$1",foldoc:"foldoc.org/$1",foundation:"foundation"+C,foundationsite:"wikimediafoundation.org/$1",foxwiki:"fox.wikis.com/wc.dll?Wiki~$1",freebio:"freebiology.org/wiki/$1",freebsdman:N+"FreeBSD.org/cgi/man.cgi?apropos=1&query=$1",freeculturewiki:"wiki.freeculture.org/index.php/$1",freedomdefined:"freedomdefined.org/$1",freefeel:"freefeel.org/wiki/$1",freekiwiki:"wiki.freegeek.org/index.php/$1",freesoft:"directory.fsf.org/wiki/$1",ganfyd:"ganfyd.org/index.php?title=$1",gardenology:N+"gardenology.org/wiki/$1",gausswiki:"gauss.ffii.org/$1",gentoo:"wiki.gentoo.org/wiki/$1",genwiki:"wiki.genealogy.net/index.php/$1",gerrit:"gerrit.wikimedia.org/r/$1",git:"gerrit.wikimedia.org/g/$1",google:N+"google.com/search?q=$1",googledefine:N+"google.com/search?q=define:$1",googlegroups:"groups.google.com/groups?q=$1",guildwarswiki:"wiki.guildwars.com/wiki/$1",guildwiki:"guildwars.wikia.com/wiki/$1",guc:"tools.wmflabs.org/guc/?user=$1",gucprefix:"tools.wmflabs.org/guc/?isPrefixPattern=1&src=rc&user=$1",gutenberg:N+"gutenberg.org/etext/$1",gutenbergwiki:N+"gutenberg.org/wiki/$1",hackerspaces:"hackerspaces.org/wiki/$1",h2wiki:"halowiki.net/p/$1",hammondwiki:N+"dairiki.org/HammondWiki/index.php3?$1",hdl:"hdl.handle.net/$1",heraldik:"heraldik-wiki.de/wiki/$1",heroeswiki:"heroeswiki.com/$1",horizonlabs:"horizon.wikimedia.org/$1",hrwiki:N+"hrwiki.org/index.php/$1",hrfwiki:"fanstuff.hrwiki.org/index.php/$1",hupwiki:"wiki.hup.hu/index.php/$1",iarchive:"archive.org/details/$1",imdbname:N+"imdb.com/name/nm$1/",imdbtitle:N+"imdb.com/title/tt$1/",imdbcompany:N+"imdb.com/company/co$1/",imdbcharacter:N+"imdb.com/character/ch$1/",incubator:"incubator"+C,infosecpedia:"infosecpedia.org/wiki/$1",infosphere:"theinfosphere.org/$1","iso639-3":"iso639-3.sil.org/code/$1",issn:N+"worldcat.org/issn/$1",iuridictum:"iuridictum.pecina.cz/w/$1",jaglyphwiki:"glyphwiki.org/wiki/$1",jefo:"esperanto-jeunes.org/wiki/$1",jerseydatabase:"jerseydatabase.com/wiki.php?id=$1",jira:"jira.toolserver.org/browse/$1",jspwiki:N+"ecyrd.com/JSPWiki/Wiki.jsp?page=$1",jstor:N+"jstor.org/journals/$1",kamelo:"kamelopedia.mormo.org/index.php/$1",karlsruhe:"ka.stadtwiki.net/$1",kinowiki:"kino.skripov.com/index.php/$1",komicawiki:"wiki.komica.org/?$1",kontuwiki:"kontu.wiki/$1",wikitech:"wikitech"+C,libreplanet:"libreplanet.org/wiki/$1",linguistlist:"linguistlist.org/forms/langs/LLDescription.cfm?code=$1",linuxwiki:N+"linuxwiki.de/$1",linuxwikide:N+"linuxwiki.de/$1",liswiki:"liswiki.org/wiki/$1",literateprograms:"en.literateprograms.org/$1",livepedia:N+"livepedia.gr/index.php?title=$1",localwiki:"localwiki.org/$1",lojban:"mw.lojban.org/papri/$1",lostpedia:"lostpedia.wikia.com/wiki/$1",lqwiki:"wiki.linuxquestions.org/wiki/$1",luxo:"tools.wmflabs.org/guc/?user=$1",mail:"lists.wikimedia.org/mailman/listinfo/$1",mailarchive:"lists.wikimedia.org/pipermail/$1",mariowiki:N+"mariowiki.com/$1",marveldatabase:N+"marveldatabase.com/wiki/index.php/$1",meatball:"meatballwiki.org/wiki/$1",mw:N+"mediawiki.org/wiki/$1",mediazilla:"bugzilla.wikimedia.org/$1",memoryalpha:"memory-alpha.fandom.com/wiki/$1",metawiki:"meta"+C,metawikimedia:"meta"+C,metawikipedia:"meta"+C,mineralienatlas:N+"mineralienatlas.de/lexikon/index.php/$1",moinmoin:"moinmo.in/$1",monstropedia:N+"monstropedia.org/?title=$1",mosapedia:"mosapedia.de/wiki/index.php/$1",mozcom:"mozilla.wikia.com/wiki/$1",mozillawiki:"wiki.mozilla.org/$1",mozillazinekb:"kb.mozillazine.org/$1",musicbrainz:"musicbrainz.org/doc/$1",mediawikiwiki:N+"mediawiki.org/wiki/$1",mwod:N+"merriam-webster.com/dictionary/$1",mwot:N+"merriam-webster.com/thesaurus/$1",nkcells:N+"nkcells.info/index.php?title=$1",nara:"catalog.archives.gov/id/$1",nosmoke:"no-smok.net/nsmk/$1",nost:"nostalgia."+S,nostalgia:"nostalgia."+S,oeis:"oeis.org/$1",oldwikisource:"wikisource.org/wiki/$1",olpc:"wiki.laptop.org/go/$1",omegawiki:N+"omegawiki.org/Expression:$1",onelook:N+"onelook.com/?ls=b&w=$1",openlibrary:"openlibrary.org/$1",openstreetmap:"wiki.openstreetmap.org/wiki/$1",openwetware:"openwetware.org/wiki/$1",opera7wiki:"operawiki.info/$1",organicdesign:N+"organicdesign.co.nz/$1",orthodoxwiki:"orthodoxwiki.org/$1",osmwiki:"wiki.openstreetmap.org/wiki/$1",otrs:"ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketID=$1",otrswiki:"otrs-wiki"+C,ourmedia:N+"socialtext.net/ourmedia/index.cgi?$1",outreach:"outreach"+C,outreachwiki:"outreach"+C,owasp:N+"owasp.org/index.php/$1",panawiki:"wiki.alairelibre.net/index.php?title=$1",patwiki:"gauss.ffii.org/$1",personaltelco:"personaltelco.net/wiki/$1",petscan:"petscan.wmflabs.org/?psid=$1",phab:"phabricator.wikimedia.org/$1",phabricator:"phabricator.wikimedia.org/$1",phwiki:N+"pocketheaven.com/ph/wiki/index.php?title=$1",phpwiki:"phpwiki.sourceforge.net/phpwiki/index.php?$1",planetmath:"planetmath.org/node/$1",pmeg:N+"bertilow.com/pmeg/$1",pmid:N+"ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract",pokewiki:"pokewiki.de/$1","pokéwiki":"pokewiki.de/$1",policy:"policy.wikimedia.org/$1",proofwiki:N+"proofwiki.org/wiki/$1",pyrev:N+"mediawiki.org/wiki/Special:Code/pywikipedia/$1",pythoninfo:"wiki.python.org/moin/$1",pythonwiki:N+"pythonwiki.de/$1",pywiki:"c2.com/cgi/wiki?$1",psycle:"psycle.sourceforge.net/wiki/$1",quality:"quality"+C,quarry:"quarry.wmflabs.org/$1",regiowiki:"regiowiki.at/wiki/$1",rev:N+"mediawiki.org/wiki/Special:Code/MediaWiki/$1",revo:"purl.org/NET/voko/revo/art/$1.html",rfc:"tools.ietf.org/html/rfc$1",rheinneckar:"rhein-neckar-wiki.de/$1",robowiki:"robowiki.net/?$1",rodovid:"en.rodovid.org/wk/$1",reuterswiki:"glossary.reuters.com/index.php/$1",rowiki:"wiki.rennkuckuck.de/index.php/$1",rt:"rt.wikimedia.org/Ticket/Display.html?id=$1",s23wiki:"s23.org/wiki/$1",scholar:"scholar.google.com/scholar?q=$1",schoolswp:"schools-"+S,scores:"imslp.org/wiki/$1",scoutwiki:"en.scoutwiki.org/$1",scramble:N+"scramble.nl/wiki/index.php?title=$1",seapig:N+"seapig.org/$1",seattlewiki:"seattle.wikia.com/wiki/$1",slwiki:"wiki.secondlife.com/wiki/$1","semantic-mw":N+"semantic-mediawiki.org/wiki/$1",senseislibrary:"senseis.xmp.net/?$1",sharemap:"sharemap.org/$1",silcode:N+"sil.org/iso639-3/documentation.asp?id=$1",slashdot:"slashdot.org/article.pl?sid=$1",sourceforge:"sourceforge.net/$1",spcom:"spcom"+C,species:"species"+C,squeak:"wiki.squeak.org/squeak/$1",stats:"stats.wikimedia.org/$1",stewardry:"tools.wmflabs.org/meta/stewardry/?wiki=$1",strategy:"strategy"+C,strategywiki:"strategywiki.org/wiki/$1",sulutil:"meta.wikimedia.org/wiki/Special:CentralAuth/$1",swtrain:"train.spottingworld.com/$1",svn:"svn.wikimedia.org/viewvc/mediawiki/$1?view=log",swinbrain:"swinbrain.ict.swin.edu.au/wiki/$1",tabwiki:N+"tabwiki.com/index.php/$1",tclerswiki:"wiki.tcl.tk/$1",technorati:N+"technorati.com/search/$1",tenwiki:"ten."+S,testwiki:"test."+S,testwikidata:"test.wikidata.org/wiki/$1",test2wiki:"test2."+S,tfwiki:"tfwiki.net/wiki/$1",thelemapedia:N+"thelemapedia.org/index.php/$1",theopedia:N+"theopedia.com/$1",thinkwiki:N+"thinkwiki.org/wiki/$1",ticket:"ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketNumber=$1",tmbw:"tmbw.net/wiki/$1",tmnet:N+"technomanifestos.net/?$1",tmwiki:N+"EasyTopicMaps.com/?page=$1",toolforge:"tools.wmflabs.org/$1",toollabs:"tools.wmflabs.org/$1",tools:"toolserver.org/$1",tswiki:N+"mediawiki.org/wiki/Toolserver:$1",translatewiki:"translatewiki.net/wiki/$1",tviv:"tviv.org/wiki/$1",tvtropes:N+"tvtropes.org/pmwiki/pmwiki.php/Main/$1",twiki:"twiki.org/cgi-bin/view/$1",tyvawiki:N+"tyvawiki.org/wiki/$1",umap:"umap.openstreetmap.fr/$1",uncyclopedia:"en.uncyclopedia.co/wiki/$1",unihan:N+"unicode.org/cgi-bin/GetUnihanData.pl?codepoint=$1",unreal:"wiki.beyondunreal.com/wiki/$1",urbandict:N+"urbandictionary.com/define.php?term=$1",usej:N+"tejo.org/usej/$1",usemod:N+"usemod.com/cgi-bin/wiki.pl?$1",usability:"usability"+C,utrs:"utrs.wmflabs.org/appeal.php?id=$1",vikidia:"fr.vikidia.org/wiki/$1",vlos:"tusach.thuvienkhoahoc.com/wiki/$1",vkol:"kol.coldfront.net/thekolwiki/index.php/$1",voipinfo:N+"voip-info.org/wiki/view/$1",votewiki:"vote"+C,werelate:N+"werelate.org/wiki/$1",wg:"wg-en."+S,wikia:N+"wikia.com/wiki/w:c:$1",wikiasite:N+"wikia.com/wiki/w:c:$1",wikiapiary:"wikiapiary.com/wiki/$1",wikibooks:"en.wikibooks.org/wiki/$1",wikichristian:N+"wikichristian.org/index.php?title=$1",wikicities:N+"wikia.com/wiki/w:$1",wikicity:N+"wikia.com/wiki/w:c:$1",wikiconference:"wikiconference.org/wiki/$1",wikidata:N+"wikidata.org/wiki/$1",wikif1:N+"wikif1.org/$1",wikifur:"en.wikifur.com/wiki/$1",wikihow:N+"wikihow.com/$1",wikiindex:"wikiindex.org/$1",wikilemon:"wiki.illemonati.com/$1",wikilivres:"wikilivres.org/wiki/$1",wikilivresru:"wikilivres.ru/$1","wikimac-de":"apfelwiki.de/wiki/Main/$1",wikimedia:"foundation"+C,wikinews:"en.wikinews.org/wiki/$1",wikinfo:"wikinfo.org/w/index.php/$1",wikinvest:"meta.wikimedia.org/wiki/Interwiki_map/discontinued#Wikinvest",wikiotics:"wikiotics.org/$1",wikipapers:"wikipapers.referata.com/wiki/$1",wikipedia:"en."+S,wikipediawikipedia:"en.wikipedia.org/wiki/Wikipedia:$1",wikiquote:"en.wikiquote.org/wiki/$1",wikisophia:"wikisophia.org/index.php?title=$1",wikisource:"en.wikisource.org/wiki/$1",wikispecies:"species"+C,wikispot:"wikispot.org/?action=gotowikipage&v=$1",wikiskripta:N+"wikiskripta.eu/index.php/$1",labsconsole:"wikitech"+C,wikiti:"wikiti.denglend.net/index.php?title=$1",wikiversity:"en.wikiversity.org/wiki/$1",wikivoyage:"en.wikivoyage.org/wiki/$1",betawikiversity:"beta.wikiversity.org/wiki/$1",wikiwikiweb:"c2.com/cgi/wiki?$1",wiktionary:"en.wiktionary.org/wiki/$1",wipipedia:"wipipedia.org/index.php/$1",wlug:N+"wlug.org.nz/$1",wmam:"am"+C,wmar:N+"wikimedia.org.ar/wiki/$1",wmat:"mitglieder.wikimedia.at/$1",wmau:"wikimedia.org.au/wiki/$1",wmbd:"bd"+C,wmbe:"be"+C,wmbr:"br"+C,wmca:"ca"+C,wmch:N+"wikimedia.ch/$1",wmcl:N+"wikimediachile.cl/index.php?title=$1",wmcn:"cn"+C,wmco:"co"+C,wmcz:N+"wikimedia.cz/web/$1",wmdc:"wikimediadc.org/wiki/$1",securewikidc:"secure.wikidc.org/$1",wmde:"wikimedia.de/wiki/$1",wmdk:"dk"+C,wmee:"ee"+C,wmec:"ec"+C,wmes:N+"wikimedia.es/wiki/$1",wmet:"ee"+C,wmfdashboard:"outreachdashboard.wmflabs.org/$1",wmfi:"fi"+C,wmfr:"wikimedia.fr/$1",wmge:"ge"+C,wmhi:"hi"+C,wmhk:"meta.wikimedia.org/wiki/Wikimedia_Hong_Kong",wmhu:"wikimedia.hu/wiki/$1",wmid:"id"+C,wmil:N+"wikimedia.org.il/$1",wmin:"wiki.wikimedia.in/$1",wmit:"wiki.wikimedia.it/wiki/$1",wmke:"meta.wikimedia.org/wiki/Wikimedia_Kenya",wmmk:"mk"+C,wmmx:"mx"+C,wmnl:"nl"+C,wmnyc:"nyc"+C,wmno:"no"+C,"wmpa-us":"pa-us"+C,wmph:"meta.wikimedia.org/wiki/Wikimedia_Philippines",wmpl:"pl"+C,wmpt:"pt"+C,wmpunjabi:"punjabi"+C,wmromd:"romd"+C,wmrs:"rs"+C,wmru:"ru"+C,wmse:"se"+C,wmsk:"wikimedia.sk/$1",wmtr:"tr"+C,wmtw:"wikimedia.tw/wiki/index.php5/$1",wmua:"ua"+C,wmuk:"wikimedia.org.uk/wiki/$1",wmve:"wikimedia.org.ve/wiki/$1",wmza:"wikimedia.org.za/wiki/$1",wm2005:"wikimania2005"+C,wm2006:"wikimania2006"+C,wm2007:"wikimania2007"+C,wm2008:"wikimania2008"+C,wm2009:"wikimania2009"+C,wm2010:"wikimania2010"+C,wm2011:"wikimania2011"+C,wm2012:"wikimania2012"+C,wm2013:"wikimania2013"+C,wm2014:"wikimania2014"+C,wm2015:"wikimania2015"+C,wm2016:"wikimania2016"+C,wm2017:"wikimania2017"+C,wm2018:"wikimania2018"+C,wmania:"wikimania"+C,wikimania:"wikimania"+C,wmteam:"wikimaniateam"+C,wmf:"foundation"+C,wmfblog:"blog.wikimedia.org/$1",wmdeblog:"blog.wikimedia.de/$1",wookieepedia:"starwars.wikia.com/wiki/$1",wowwiki:N+"wowwiki.com/$1",wqy:"wqy.sourceforge.net/cgi-bin/index.cgi?$1",wurmpedia:"wurmpedia.com/index.php/$1",viaf:"viaf.org/viaf/$1",zrhwiki:N+"zrhwiki.ch/wiki/$1",zum:"wiki.zum.de/$1",zwiki:N+"zwiki.org/$1",m:"meta"+C,meta:"meta"+C,sep11:"sep11."+S,d:N+"wikidata.org/wiki/$1",minnan:"zh-min-nan."+S,nb:"no."+S,"zh-cfr":"zh-min-nan."+S,"zh-cn":"zh."+S,"zh-tw":"zh."+S,nan:"zh-min-nan."+S,vro:"fiu-vro."+S,cmn:"zh."+S,lzh:"zh-classical."+S,rup:"roa-rup."+S,gsw:"als."+S,"be-tarask":"be-x-old."+S,sgs:"bat-smg."+S,egl:"eml."+S,w:"en."+S,wikt:"en.wiktionary.org/wiki/$1",q:"en.wikiquote.org/wiki/$1",b:"en.wikibooks.org/wiki/$1",n:"en.wikinews.org/wiki/$1",s:"en.wikisource.org/wiki/$1",chapter:"en"+C,v:"en.wikiversity.org/wiki/$1",voy:"en.wikivoyage.org/wiki/$1"},T=E,L=q;Object.keys(T).forEach(e=>{L[e]=e+".wikipedia.org/wiki/$1"});var P=function(e){let t=e.page||"";if(-1!==t.indexOf(":")){let i=t.match(/^(.*):(.*)/);if(null===i)return e;let a=i[1]||"";if(a=a.toLowerCase(),-1!==a.indexOf(":")){let[,t,i]=a.match(/^:?(.*):(.*)/);if(L.hasOwnProperty(t)&&!1===T.hasOwnProperty(i))return e;e.wiki={wiki:t,lang:i}}else{if(!1===L.hasOwnProperty(a))return e;e.wiki=a}e.page=i[2]}return e};const A=/^:?(category|catégorie|kategorie|categoría|categoria|categorie|kategoria|تصنيف|image|file|fichier|datei|media):/i,D=/\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]| ]{4,1500})([| ].*?)?\]/g,I=/\[\[(.{0,160}?)\]\]([a-z]+)?/gi;var M=function(e){let t=[];if(t=function(e,t){return t.replace(D,(function(t,i,a,n){return n=n||"",e.push({type:"external",site:i+a,text:n.trim(),raw:t}),n})),e}(t,e),t=function(e,t){return t.replace(I,(function(t,i,a){let n=null,r=i;if(i.match(/\|/)&&(r=(i=i.replace(/\[\[(.{2,100}?)\]\](\w{0,10})/g,"$1$2")).replace(/(.{2,100})\|.{0,200}/,"$1"),n=i.replace(/.{2,100}?\|/,""),null===n&&r.match(/\|$/)&&(r=r.replace(/\|$/,""),n=r)),r.match(A))return i;let o={page:r,raw:t};return o.page=o.page.replace(/#(.*)/,(e,t)=>(o.anchor=t,"")),o=P(o),o.wiki&&(o.type="interwiki"),null!==n&&n!==o.page&&(o.text=n),a&&(o.text=o.text||o.page,o.text+=a.trim()),o.page&&!1===/^[A-Z]/.test(o.page)&&(o.text||(o.text=o.page),o.page=o.page),e.push(o),i})),e}(t,e),0!==t.length)return t};const R=new RegExp("^[ \n\t]*?#("+k.redirects.join("|")+") *?(\\[\\[.{2,180}?\\]\\])","i");var U={isRedirect:function(e){return!(!e||e.length>500)&&R.test(e)},parse:function(e){let t=e.match(R);if(t&&t[2]){return(M(t[2])||[])[0]}return{}}};const B=["table","code","score","data","categorytree","charinsert","hiero","imagemap","inputbox","nowiki","poem","references","source","syntaxhighlight","timeline"],F=`< ?(${B.join("|")}) ?[^>]{0,200}?>`,K=`< ?/ ?(${B.join("|")}) ?>`,W=new RegExp(`${F}[\\s\\S]+?${K}`,"gi");var Z=function(e){return(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(W," ")).replace(/ ?< ?(span|div|table|data) [a-zA-Z0-9=%.\-#:;'" ]{2,100}\/? ?> ?/g," ")).replace(/ ?< ?(ref) [a-zA-Z0-9=" ]{2,100}\/ ?> ?/g," ")).replace(/(.*?)<\/i>/g,"''$1''")).replace(/(.*?)<\/b>/g,"'''$1'''")).replace(/(.*?)<\/sub>/g,"{{sub|$1}}")).replace(/(.*?)<\/sup>/g,"{{sup|$1}}")).replace(/ ?<[ /]?(p|sub|sup|span|nowiki|div|table|br|tr|td|th|pre|pre2|hr)[ /]?> ?/g," ")).replace(/ ?<[ /]?(abbr|bdi|bdo|blockquote|cite|del|dfn|em|ins|kbd|mark|q|s|small)[ /]?> ?/g," ")).replace(/ ?<[ /]?h[0-9][ /]?> ?/g," ")).replace(/ ?< ?br ?\/> ?/g,"\n")).trim()};var H=function(e){return e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(//g,"")).replace(/__(NOTOC|NOEDITSECTION|FORCETOC|TOC)__/gi,"")).replace(/~{2,3}/g,"")).replace(/\r/g,"")).replace(/\u3002/g,". ")).replace(/----/g,"")).replace(/\{\{\}\}/g," – ")).replace(/\{\{\\\}\}/g," / ")).replace(/ /g," "),e=(e=(e=Z(e)).replace(/\([,;: ]+\)/g,"")).replace(/\{\{(baseball|basketball) (primary|secondary) (style|color).*?\}\}/i,"")};const Y=/[\\.$]/,G=function(e){return"string"!=typeof e&&(e=""),e=(e=(e=e.replace(/\\/g,"\\\\")).replace(/^\$/,"\\u0024")).replace(/\./g,"\\u002e")};var V={encodeObj:function(e={}){let t=Object.keys(e);for(let i=0;ie.json(t));a.length>0&&(i.paragraphs=a)}if(!0===t.images){let a=e.images().map(e=>e.json(t));a.length>0&&(i.images=a)}if(!0===t.tables){let a=e.tables().map(e=>e.json(t));a.length>0&&(i.tables=a)}if(!0===t.templates){let a=e.templates().map(e=>e.json());a.length>0&&(i.templates=a,!0===t.encode&&i.templates.forEach(e=>V.encodeObj(e)))}if(!0===t.infoboxes){let a=e.infoboxes().map(e=>e.json(t));a.length>0&&(i.infoboxes=a)}if(!0===t.lists){let a=e.lists().map(e=>e.json(t));a.length>0&&(i.lists=a)}if(!0===t.references||!0===t.citations){let a=e.references().map(e=>e.json(t));a.length>0&&(i.references=a)}return!0===t.sentences&&(i.sentences=e.sentences().map(e=>e.json(t))),i};const Q={type:"internal"},ee=function(e){e=e||{},e=Object.assign({},Q,e),Object.defineProperty(this,"data",{enumerable:!1,value:e})},te={text:function(e){void 0!==e&&(this.data.text=e);let t=this.data.text||this.data.page||"";return t=t.replace(/'{2,}/g,""),t},json:function(){let e={text:this.data.text,type:this.type()};"internal"===e.type?e.page=this.page():"interwiki"===e.type?e.wiki=this.wiki():e.site=this.site();let t=this.anchor();return t&&(e.anchor=t),e},wikitext:function(){return this.data.raw||""},page:function(e){return void 0!==e&&(this.data.page=e),this.data.page},anchor:function(e){return void 0!==e&&(this.data.anchor=e),this.data.anchor||""},wiki:function(e){return void 0!==e&&(this.data.wiki=e),this.data.wiki},type:function(e){return void 0!==e&&(this.data.type=e),this.data.type},site:function(e){return void 0!==e&&(this.data.site=e),this.data.site},href:function(){let e=this.type();if("external"===e)return this.site();let t=this.page();t=t.replace(/ /g,"_"),t=encodeURIComponent(t);let i="";if("interwiki"===e){let e=this.wiki();i="https://en.wikipedia.org/wiki/$1",L.hasOwnProperty(e)&&(i="http://"+L[this.wiki()]),i=i.replace(/\$1/g,t)}else i="./"+this.page();return this.anchor()&&(i+="#"+this.anchor()),i}};Object.keys(te).forEach(e=>{ee.prototype[e]=te[e]});var ie=ee;var ae=function(e){let t=e.text,i=M(t)||[];e.links=i.map(e=>(t=t.replace(e.raw,e.text||e.page||""),new ie(e))),t=t.replace(/\[\[File:(.{2,80}?)\|([^\]]+)\]\](\w{0,5})/g,"$1"),e.text=t};var ne=function(e){let t=[],i=[],a=e.text||"";return a=a.replace(/'''''(.{0,200}?)'''''/g,(e,a)=>(t.push(a),i.push(a),a)),a=a.replace(/''''(.{0,200}?)''''/g,(e,i)=>(t.push(`'${i}'`),`'${i}'`)),a=a.replace(/'''(.{0,200}?)'''/g,(e,i)=>(t.push(i),i)),a=a.replace(/''(.{0,200}?)''/g,(e,t)=>(i.push(t),t)),e.text=a,t.length>0&&(e.fmt=e.fmt||{},e.fmt.bold=t),i.length>0&&(e.fmt=e.fmt||{},e.fmt.italic=i),e};const re=/^[0-9,.]+$/,oe={text:!0,links:!0,formatting:!0,numbers:!0};var se=function(e,t){t=d(t,oe);let i={},a=e.text();if(!0===t.text&&(i.text=a),!0===t.numbers&&re.test(a)){let e=Number(a.replace(/,/g,""));!1===isNaN(e)&&(i.number=e)}return t.links&&e.links().length>0&&(i.links=e.links().map(e=>e.json())),t.formatting&&e.data.fmt&&(i.formatting=e.data.fmt),i};const le=function(e={}){Object.defineProperty(this,"data",{enumerable:!1,value:e})},ce={links:function(e){let t=this.data.links||[];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page===e);return void 0===i?[]:[i]}return t},interwiki:function(){return this.links().filter(e=>void 0!==e.wiki)},bolds:function(){return this.data&&this.data.fmt&&this.data.fmt.bold&&this.data.fmt.bold||[]},italics:function(){return this.data&&this.data.fmt&&this.data.fmt.italic&&this.data.fmt.italic||[]},text:function(e){return void 0!==e&&"string"==typeof e&&(this.data.text=e),this.data.text||""},json:function(e){return se(this,e)},wikitext:function(){return this.data.wiki||""},isEmpty:function(){return""===this.data.text}};Object.keys(ce).forEach(e=>{le.prototype[e]=ce[e]});const ue={links:"link",bolds:"bold",italics:"italic"};Object.keys(ue).forEach(e=>{le.prototype[ue[e]]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]}}),le.prototype.plaintext=le.prototype.text;var pe=le;const me=["ad","adj","adm","adv","al","alta","approx","apr","apt","arc","ariz","assn","asst","atty","aug","ave","ba","bc","bl","bldg","blvd","brig","bros","ca","cal","calif","capt","cca","cg","cl","cm","cmdr","co","col","colo","comdr","conn","corp","cpl","cres","ct","cyn","dak","dec","def","dept","det","dg","dist","dl","dm","dr","ea","eg","eng","esp","esq","est","etc","ex","exp","feb","fem","fig","fl oz","fl","fla","fm","fr","ft","fy","ga","gal","gb","gen","gov","hg","hon","hr","hrs","hwy","hz","ia","ida","ie","inc","inf","jan","jd","jr","jul","jun","kan","kans","kb","kg","km","kmph","lat","lb","lit","llb","lm","lng","lt","ltd","lx","ma","maj","mar","masc","mb","md","messrs","mg","mi","min","minn","misc","mister","ml","mlle","mm","mme","mph","mps","mr","mrs","ms","mstr","mt","neb","nebr","nee","no","nov","oct","okla","ont","op","ord","oz","pa","pd","penn","penna","phd","pl","pp","pref","prob","prof","pron","ps","psa","pseud","pt","pvt","qt","que","rb","rd","rep","reps","res","rev","sask","sec","sen","sens","sep","sept","sfc","sgt","sir","situ","sq ft","sq","sr","ss","st","supt","surg","tb","tbl","tbsp","tce","td","tel","temp","tenn","tex","tsp","univ","usafa","ut","va","vb","ver","vet","vitro","vivo","vol","vs","vt","wis","wisc","wr","wy","wyo","yb","µg"].concat("[^]][^]]"),de=new RegExp("(^| |')("+me.join("|")+")[.!?] ?$","i"),he=/[ .'][A-Z].? *?$/i,ge=/\.{3,} +?$/,fe=/ c\.\s$/,ke=/\p{Letter}/iu;var be=ae,we=ne,ye=pe,$e=function(e){let t=[],i=[];if(!e||"string"!=typeof e||0===e.trim().length)return t;let a=function(e){let t=e.split(/(\n+)/);return t=t.filter(e=>e.match(/\S/)),t=t.map((function(e){return e.split(/(\S.+?[.!?]"?)(?=\s|$)/g)})),function(e){let t=[];return e.forEach((function(e){t=t.concat(e)})),t}(t)}(e);for(let e=0;ei.length)return!1;const a=e.match(/"/g);return!(a&&a.length%2!=0&&e.length<900)}(n))?i[e+1]=i[e]+(i[e+1]||""):i[e]&&i[e].length>0&&(t.push(i[e]),i[e]="");var n;return 0===t.length?[e]:t};function xe(e){let t={wiki:e,text:e};var i;return be(t),t.text=(i=(i=(i=t.text).replace(/\([,;: ]*\)/g,"")).replace(/\( *(; ?)+/g,"("),(i=r.trim_whitespace(i)).replace(/ +\.$/,".")),t=we(t),new ye(t)}const ve=/^[\p{Letter}0-9._\- '()]+=/iu,je={template:!0,list:!0,prototype:!0};const _e={classname:!0,style:!0,align:!0,margin:!0,left:!0,break:!0,boxsize:!0,framestyle:!0,item_style:!0,collapsible:!0,list_style_type:!0,"list-style-type":!0,colwidth:!0};var ze=function(e){return e=(e=e.replace(/^\{\{/,"")).replace(/\}\}$/,"")},Oe=function(e){return e=(e=(e=(e||"").trim()).toLowerCase()).replace(/_/g," ")},Ee={fromText:xe,byParagraph:function(e){let t=$e(e.wiki);t=t.map(xe),t[0]&&t[0].text()&&":"===t[0].text()[0]&&(t=t.slice(1)),e.sentences=t}},Se=function(e){let t=e.split(/\n?\|/);t.forEach((e,i)=>{null!==e&&(/\[\[[^\]]+$/.test(e)||/\{\{[^}]+$/.test(e)||e.split("{{").length!==e.split("}}").length||e.split("[[").length!==e.split("]]").length)&&(t[i+1]=t[i]+"|"+t[i+1],t[i]=null)}),t=t.filter(e=>null!==e),t=t.map(e=>(e||"").trim());for(let e=t.length-1;e>=0;e-=1){""===t[e]&&t.pop();break}return t},Ce=function(e,t){let i=0;return e.reduce((e,a="")=>{if(a=a.trim(),!0===ve.test(a)){let t=function(e){let t=e.split("="),i=t[0]||"";i=i.toLowerCase().trim();let a=t.slice(1).join("=");return je.hasOwnProperty(i)&&(i="_"+i),{key:i,val:a.trim()}}(a);if(t.key)return e[t.key]=t.val,e}if(t&&t[i]){e[t[i]]=a}else e.list=e.list||[],e.list.push(a);return i+=1,e},{})},Ne=function(e){return Object.keys(e).forEach(t=>{!0===_e[t.toLowerCase()]&&delete e[t],null!==e[t]&&""!==e[t]||delete e[t]}),e};const qe=Ee.fromText,Te=function(e,t){let i=qe(e);return"json"===t?i.json():"raw"===t?i:i.text()};var Le=function(e,t=[],i){e=ze(e||"");let a=Se(e),n=a.shift(),r=Ce(a,t);return r=Ne(r),r[1]&&t[0]&&!1===r.hasOwnProperty(t[0])&&(r[t[0]]=r[1],delete r[1]),Object.keys(r).forEach(e=>{r[e]="list"!==e?Te(r[e],i):r[e].map(e=>Te(e,i))}),n&&(r.template=Oe(n)),r};const Pe=function(e,t){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},Ae={title:function(){let e=this.data;return e.title||e.encyclopedia||e.author||""},links:function(e){let t=[];if("number"==typeof e)return t[e];if("number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t||[]},text:function(){return""},wikitext:function(){return this.wiki||""},json:function(e={}){let t=this.data||{};return!0===e.encode&&(t=Object.assign({},t),t=V.encodeObj(t)),t}};Object.keys(Ae).forEach(e=>{Pe.prototype[e]=Ae[e]});var De=Le,Ie=Pe;const Me=Ee.fromText,Re=function(e){return/^ *\{\{ *(cite|citation)/i.test(e)&&/\}\} *$/.test(e)&&!1===/citation needed/i.test(e)},Ue=function(e){let t=De(e);return t.type=t.template.replace(/cite /,""),t.template="citation",t},Be=function(e){return{template:"citation",type:"inline",data:{},inline:Me(e)||{}}};var Fe=function(e){let t=[],i=e._wiki;i=i.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,a){if(Re(a)){let n=Ue(a);n&&t.push({json:n,wiki:e}),i=i.replace(a,"")}else t.push({json:Be(a),wiki:e});return" "})),i=i.replace(/ ?]{0,200}?\/> ?/gi," "),i=i.replace(/ ?]{0,200}>([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,a){if(Re(a)){let e=Ue(a);e&&t.push({json:e,wiki:a}),i=i.replace(a,"")}else t.push({json:Be(a),wiki:e});return" "})),i=i.replace(/ ?<[ /]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ /]?> ?/g," "),e._references=t.map(e=>new Ie(e.json,e.wiki)),e._wiki=i};const{trim_whitespace:Ke}=r,We=Ee.fromText,Ze=/^(={1,5})(.{1,200}?)={1,5}$/;var He=function(e,t){let i=t.match(Ze);if(!i)return e.title="",e.depth=0,e;let a=i[2]||"";a=We(a).text(),a=a.replace(/\{\{.+?\}\}/,"");let n={_wiki:a};Fe(n),a=n._wiki,a=Ke(a);let r=0;return i[1]&&(r=i[1].length-2),e.title=a,e.depth=r,e};const Ye=/.*rowspan *= *["']?([0-9]+)["']?[ |]*/,Ge=/.*colspan *= *["']?([0-9]+)["']?[ |]*/;var Ve=function(e){let t=[],i=[];e=function(e){return e=e.filter(e=>e&&!0!==/^\|\+/.test(e)),!0===/^\{\|/.test(e[0])&&e.shift(),!0===/^\|\}/.test(e[e.length-1])&&e.pop(),!0===/^\|-/.test(e[0])&&e.shift(),e}(e);for(let a=0;a0&&(t.push(i),i=[]):(n=n.split(/(?:\|\||!!)/),!n[0]&&n[1]&&n.shift(),n.forEach(e=>{e=(e=e.replace(/^\| */,"")).trim(),i.push(e)}))}return i.length>0&&t.push(i),t},Je=function(e){return e=function(e){return e.forEach((t,i)=>{t.forEach((a,n)=>{let r=a.match(Ye);if(null!==r){let o=parseInt(r[1],10);a=a.replace(Ye,""),t[n]=a;for(let t=i+1;t{e.forEach((t,i)=>{let a=t.match(Ge);if(null!==a){let n=parseInt(a[1],10);e[i]=t.replace(Ge,"");for(let t=1;te.length>0)}(e))};const Xe=Ee.fromText,Qe=/^!/,et={name:!0,age:!0,born:!0,date:!0,year:!0,city:!0,country:!0,population:!0,count:!0,number:!0},tt=function(e){return(e=Xe(e).text()).match(/\|/)&&(e=e.replace(/.+\| ?/,"")),e=(e=(e=e.replace(/style=['"].*?["']/,"")).replace(/^!/,"")).trim()},it=function(e){if(e.length<=3)return[];let t=e[0].slice(0);t=t.map(e=>(e=e.replace(/^! */,""),e=Xe(e).text(),e=(e=tt(e)).toLowerCase()));for(let i=0;ie.trim()),i=Ve(t);if(i=i.filter(e=>e),0===i.length)return[];i=function(e){return e.filter(e=>1!==e.length||!e[0]||!Qe.test(e[0])||!1!==/rowspan/i.test(e[0]))}(i),i=Je(i);let a=function(e=[]){let t=[];var i;(i=(i=e[0])||[]).length-i.filter(e=>e).length>3&&e.shift();let a=e[0];return a&&a[0]&&a[1]&&(/^!/.test(a[0])||/^!/.test(a[1]))&&(t=a.map(e=>(e=e.replace(/^! */,""),tt(e))),e.shift()),a=e[0],a&&a[0]&&a[1]&&/^!/.test(a[0])&&/^!/.test(a[1])&&(a.forEach((e,i)=>{e=e.replace(/^! */,""),e=tt(e),!0===Boolean(e)&&(t[i]=e)}),e.shift()),t}(i);if(!a||a.length<=1){a=it(i);let e=i[i.length-1]||[];a.length<=1&&e.length>2&&(a=it(i.slice(1)),a.length>0&&(i=i.slice(2)))}return i.map(e=>function(e,t){let i={};return e.forEach((e,a)=>{let n=t[a]||"col"+(a+1),r=Xe(e);r.text(tt(r.text())),i[n]=r}),i}(e,a))};var nt=function(e,t){return e.map(e=>{let i={};return Object.keys(e).forEach(t=>{i[t]=e[t].json()}),!0===t.encode&&(i=V.encodeObj(i)),i})};const rt={},ot=function(e=""){return e=(e=(e=(e=e.toLowerCase()).replace(/[_-]/g," ")).replace(/\(.*?\)/,"")).trim()},st=function(e,t=""){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"_wiki",{enumerable:!1,value:t})},lt={links(e){let t=[];if(this.data.forEach(e=>{Object.keys(e).forEach(i=>{t=t.concat(e[i].links())})}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},get(e){let t=this.data[0]||{},i=Object.keys(t).reduce((e,t)=>(e[ot(t)]=t,e),{});if("string"==typeof e){let t=ot(e);return t=i[t]||t,this.data.map(e=>e[t]?e[t].text():null)}return e=e.map(ot).map(e=>i[e]||e),this.data.map(t=>e.reduce((e,i)=>(t[i]?e[i]=t[i].text():e[i]="",e),{}))},keyValue(e){let t=this.json(e);return t.forEach(e=>{Object.keys(e).forEach(t=>{e[t]=e[t].text})}),t},json(e){return e=d(e,rt),nt(this.data,e)},text:()=>"",wikitext(){return this._wiki||""}};lt.keyvalue=lt.keyValue,lt.keyval=lt.keyValue,Object.keys(lt).forEach(e=>{st.prototype[e]=lt[e]});var ct=at,ut=st;const pt=/^\s*\{\|/,mt=/^\s*\|\}/;var dt=function(e){let t=[],i=e._wiki,a=i.split("\n"),n=[];for(let e=0;e0&&(n[n.length-1]+="\n"+a[e]);else{n[n.length-1]+="\n"+a[e];let i=n.pop();t.push(i)}else n.push(a[e]);let r=[];t.forEach(e=>{if(e){i=i.replace(e+"\n",""),i=i.replace(e,"");let t=ct(e);t&&t.length>0&&r.push(new ut(t,e))}}),r.length>0&&(e._tables=r),e._wiki=i};const ht={sentences:!0};var gt=function(e,t){let i={};return!0===(t=d(t,ht)).sentences&&(i.sentences=e.sentences().map(e=>e.json(t))),i};const ft={sentences:!0,lists:!0,images:!0},kt=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},bt={sentences:function(){return this.data.sentences||[]},references:function(){return this.data.references},lists:function(){return this.data.lists},images(){return this.data.images||[]},links:function(e){let t=[];if(this.sentences().forEach(i=>{t=t.concat(i.links(e))}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t||[]},interwiki(){let e=[];return this.sentences().forEach(t=>{e=e.concat(t.interwiki())}),e||[]},text:function(e){e=d(e,ft);let t=this.sentences().map(t=>t.text(e)).join(" ");return this.lists().forEach(e=>{t+="\n"+e.text()}),t},json:function(e){return e=d(e,ft),gt(this,e)},wikitext:function(){return this.data.wiki}};bt.citations=bt.references,Object.keys(bt).forEach(e=>{kt.prototype[e]=bt[e]});const wt={sentences:"sentence",references:"reference",citation:"citations",lists:"list",images:"image",links:"link"};Object.keys(wt).forEach(e=>{kt.prototype[wt[e]]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]}});var yt=kt;var $t=O,xt=function(e){let t=[],i=[];const a=e.split("");let n=0;for(let r=0;r0){let e=0,a=0;for(let t=0;ta&&i.push("]"),t.push(i.join("")),i=[]}}return t};const vt=Ee.fromText,jt=new RegExp("("+k.images.join("|")+"):","i");let _t=`(${k.images.join("|")})`;const zt=new RegExp(_t+":(.+?)[\\||\\]]","iu"),Ot={thumb:!0,thumbnail:!0,border:!0,right:!0,left:!0,center:!0,top:!0,bottom:!0,none:!0,upright:!0,baseline:!0,middle:!0,sub:!0,super:!0};var Et=function(e,t){let i=e.wiki;xt(i).forEach((function(a){if(!0===jt.test(a)){e.images=e.images||[];let n=function(e,t){let i=e.match(zt);if(null===i||!i[2])return null;let a=`${i[1]}:${i[2]||""}`;a=a.trim();let n=a.charAt(0).toUpperCase()+a.substring(1);if(n=n.replace(/ /g,"_"),n){let i={file:a,lang:t._lang,domain:t._domain,wiki:e};e=(e=e.replace(/^\[\[/,"")).replace(/\]\]$/,"");let n=De(e),r=n.list||[];return n.alt&&(i.alt=n.alt),r=r.filter(e=>!1===Ot.hasOwnProperty(e)),r[r.length-1]&&(i.caption=vt(r[r.length-1])),new $t(i)}return null}(a,t);n&&e.images.push(n),i=i.replace(a,"")}})),e.wiki=i};const St={},Ct=function(e,t=""){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},Nt={lines(){return this.data},links(e){let t=[];if(this.lines().forEach(e=>{t=t.concat(e.links())}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},json(e){return e=d(e,St),this.lines().map(t=>t.json(e))},text(){return((e,t)=>e.map(e=>" * "+e.text(t)).join("\n"))(this.data)},wikitext(){return this.wiki||""}};Object.keys(Nt).forEach(e=>{Ct.prototype[e]=Nt[e]});var qt=Ct;const Tt=Ee.fromText,Lt=/^[#*:;|]+/,Pt=/^\*+[^:,|]{4}/,At=/^ ?#[^:,|]{4}/,Dt=/[a-z_0-9\]}]/i,It=function(e){return Lt.test(e)||Pt.test(e)||At.test(e)},Mt=function(e,t){let i=[];for(let a=t;ae&&Dt.test(e)),i=function(e){let t=1;e=e.filter(e=>e);for(let i=0;i0&&(a.push(t),e+=t.length-1)}else n.push(i[e]);e.lists=a.map(e=>new qt(e,t)),e.wiki=n.join("\n")}};var Kt=function(e,t){let i=e._wiki,a=i.split(Bt);a=a.filter(e=>e&&e.trim().length>0),a=a.map(e=>{let i={wiki:e,lists:[],sentences:[],images:[]};return Ft.list(i),Ft.image(i,t),Ut(i),new Rt(i)}),e._wiki=i,e._paragraphs=a};const Wt="{";var Zt=function(e){let t=0,i=[],a=[];for(let n=e.indexOf(Wt);-1!==n&&n0?n++:n=e.indexOf(Wt,n+1)){let r=e[n];if(r===Wt&&(t+=1),t>0){if("}"===r&&(t-=1,0===t)){a.push(r);let e=a.join("");a=[],/\{\{/.test(e)&&/\}\}/.test(e)&&i.push(e);continue}if(1===t&&r!==Wt&&"}"!==r){t=0,a=[];continue}a.push(r)}}return i},Ht=function(e){let t=null;return t=/^\{\{[^\n]+\|/.test(e)?(e.match(/^\{\{(.+?)\|/)||[])[1]:-1!==e.indexOf("\n")?(e.match(/^\{\{(.+)\n/)||[])[1]:(e.match(/^\{\{(.+?)\}\}$/)||[])[1],t&&(t=t.replace(/:.*/,""),t=Oe(t)),t||null};const Yt=/\{\{/,Gt=function(e){return{body:e=e.replace(/#invoke:/,""),name:Ht(e),children:[]}},Vt=function(e){let t=e.body.substr(2);return t=t.replace(/\}\}$/,""),e.children=Zt(t),e.children=e.children.map(Gt),0===e.children.length||e.children.forEach(e=>{let t=e.body.substr(2);return Yt.test(t)?Vt(e):null}),e};var Jt=function(e){let t=Zt(e);return t=t.map(Gt),t=t.map(Vt),t};var Xt=["anchor","defaultsort","use list-defined references","void","pp","pp-move-indef","pp-semi-indef","pp-vandalism","r","#tag","div col","pope list end","shipwreck list end","starbox end","end box","end","s-end"].reduce((e,t)=>(e[t]=!0,e),{}),Qt={"gnf protein box":!0,"automatic taxobox":!0,"chembox ":!0,editnotice:!0,geobox:!0,hybridbox:!0,ichnobox:!0,infraspeciesbox:!0,mycomorphbox:!0,oobox:!0,"paraphyletic group":!0,speciesbox:!0,subspeciesbox:!0,"starbox short":!0,taxobox:!0,nhlteamseason:!0,"asian games bid":!0,"canadian federal election results":!0,"dc thomson comic strip":!0,"daytona 24 races":!0,edencharacter:!0,"moldova national football team results":!0,samurai:!0,protein:!0,"sheet authority":!0,"order-of-approx":!0,"bacterial labs":!0,"medical resources":!0,ordination:!0,"hockey team coach":!0,"hockey team gm":!0,"pro hockey team":!0,"hockey team player":!0,"hockey team start":!0,mlbbioret:!0},ei=Qt;const ti=new RegExp("^(subst.)?("+k.infoboxes.join("|")+")[: \n]","i"),ii=/^infobox /i,ai=/ infobox$/i,ni=/^year in [A-Z]/i;var ri={isInfobox:function(e){return!0===ei.hasOwnProperty(e)||(!!ti.test(e)||(!(!ii.test(e)&&!ai.test(e))||!!ni.test(e)))},format:function(e={}){let t=e.template.match(ti),i=e.template;t&&t[0]&&(i=i.replace(t[0],"")),i=i.trim();let a={template:"infobox",type:i,data:e};return delete a.data.template,delete a.data.list,a}};let oi={imdb:"imdb name","imdb episodess":"imdb episode",localday:"currentday",localdayname:"currentdayname",localyear:"currentyear","birth date based on age at death":"birth based on age as of date","bare anchored list":"anchored list",cvt:"convert",cricon:"flagicon",sfrac:"frac",sqrt:"radic","unreferenced section":"unreferenced",redir:"redirect",sisterlinks:"sister project links","main article":"main"},si={date:["byline","dateline"],citation:["cite","source","source-pr","source-science"],flagcountry:["cr","cr-rt"],trunc:["str left","str crop"],percentage:["pct","percentage"],rnd:["rndfrac","rndnear"],abbr:["tooltip","abbrv","define"],sfn:["sfnref","harvid","harvnb"],"birth date and age":["death date and age","bda"],currentmonth:["localmonth","currentmonthname","currentmonthabbrev"],currency:["monnaie","unité","nombre","nb","iso4217"],coord:["coor","coor title dms","coor title dec","coor dms","coor dm","coor dec"],"columns-list":["cmn","col-list","columnslist","collist"],nihongo:["nihongo2","nihongo3","nihongo-s","nihongo foot"],plainlist:["flatlist","plain list"],"winning percentage":["winpct","winperc"],"collapsible list":["nblist","nonbulleted list","ubl","ublist","ubt","unbullet","unbulleted list","unbulleted","unbulletedlist","vunblist"],"election box begin":["election box begin no change","election box begin no party","election box begin no party no change","election box inline begin","election box inline begin no change"],"election box candidate":["election box candidate for alliance","election box candidate minor party","election box candidate no party link no change","election box candidate with party link","election box candidate with party link coalition 1918","election box candidate with party link no change","election box inline candidate","election box inline candidate no change","election box inline candidate with party link","election box inline candidate with party link no change","election box inline incumbent"],"4teambracket":["2teambracket","4team2elimbracket","8teambracket","16teambracket","32teambracket","4roundbracket-byes","cwsbracket","nhlbracket","nhlbracket-reseed","4teambracket-nhl","4teambracket-ncaa","4teambracket-mma","4teambracket-mlb","16teambracket-two-reseeds","8teambracket-nhl","8teambracket-mlb","8teambracket-ncaa","8teambracket-afc","8teambracket-afl","8teambracket-tennis3","8teambracket-tennis5","16teambracket-nhl","16teambracket-nhl divisional","16teambracket-nhl-reseed","16teambracket-nba","16teambracket-swtc","16teambracket-afc","16teambracket-tennis3","16teambracket-tennis5"],start:["end","birth","death","start date","end date","birth date","death date","start date and age","end date and age","dob"],"start-date":["end-date","birth-date","death-date","birth-date and age","birth-date and given age","death-date and age","death-date and given age"],tl:["lts","t","tfd links","tiw","tltt","tetl","tsetl","ti","tic","tiw","tlt","ttl","twlh","tl2","tlu","demo","hatnote","xpd","para","elc","xtag","mli","mlix","#invoke","url"]};Object.keys(T).forEach(e=>{oi["ipa-"+e]="ipa",oi["ipac-"+e]="ipac"}),Object.keys(si).forEach(e=>{si[e].forEach(t=>{oi[t]=e})});var li=oi,ci={"·":"·",dot:"·",middot:"·","•":" • ",",":",","1/2":"1⁄2","1/3":"1⁄3","2/3":"2⁄3","1/4":"1⁄4","3/4":"3⁄4","–":"–",ndash:"–","en dash":"–","spaced ndash":" – ","—":"—",mdash:"—","em dash":"—","number sign":"#",ibeam:"I","&":"&",";":";",ampersand:"&",snds:" – ",snd:" – ","^":" ","!":"|","\\":" /","`":"`","=":"=",bracket:"[","[":"[","*":"*",asterisk:"*","long dash":"———",clear:"\n\n","h.":"ḥ",profit:"▲",loss:"▼",gain:"▲"};let ui={p1:0,p2:1,p3:2,resize:1,lang:1,"rtl-lang":1,l:2,h:1,sort:1};["defn","lino","finedetail","nobold","noitalic","nocaps","vanchor","rnd","date","taste","monthname","baseball secondary style","lang-de","nowrap","nobr","big","cquote","pull quote","small","smaller","midsize","larger","big","kbd","bigger","large","mono","strongbad","stronggood","huge","xt","xt2","!xt","xtn","xtd","dc","dcr","mxt","!mxt","mxtn","mxtd","bxt","!bxt","bxtn","bxtd","delink","pre","var","mvar","pre2","code"].forEach(e=>{ui[e]=0}),Object.keys(T).forEach(e=>{ui["lang-"+e]=0});var pi=ui;var mi={titlecase:e=>e.charAt(0).toUpperCase()+e.substring(1),sisterProjects:{wikt:"wiktionary",commons:"commons",c:"commons",commonscat:"commonscat",n:"wikinews",q:"wikiquote",s:"wikisource",a:"wikiauthor",b:"wikibooks",voy:"wikivoyage",v:"wikiversity",d:"wikidata",species:"wikispecies",m:"meta",mw:"mediawiki"},getLang:function(e){let t=e.match(/ipac?-(.+)/);return null!==t?!0===T.hasOwnProperty(t[1])?T[t[1]].english_title:t[1]:null},percentage:function(e){if(!e.numerator&&!e.denominator)return null;let t=Number(e.numerator)/Number(e.denominator);t*=100;let i=Number(e.decimals);return isNaN(i)&&(i=1),t=t.toFixed(i),Number(t)},toNumber:function(e=""){if("number"==typeof e)return e;e=(e=e.replace(/,/g,"")).replace(/−/g,"-");let t=Number(e);return isNaN(t)?e:t}},di={ra:e=>{let t=De(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},deg2hms:e=>(De(e,["degrees"]).degrees||"")+"°",hms2deg:e=>{let t=De(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},decdeg:e=>{let t=De(e,["deg","min","sec","hem","rnd"]);return(t.deg||t.degrees)+"°"},sortname:e=>{let t=De(e,["first","last","target","sort"]),i=`${t.first||""} ${t.last||""}`;return i=i.trim(),t.nolink?t.target||i:(t.dab&&(i+=` (${t.dab})`,t.target&&(t.target+=` (${t.dab})`)),t.target?`[[${t.target}|${i}]]`:`[[${i}]]`)},"first word":e=>{let t=De(e,["text"]),i=t.text;return t.sep?i.split(t.sep)[0]:i.split(" ")[0]},trunc:e=>{let t=De(e,["str","len"]);return t.str.substr(0,t.len)},"str mid":e=>{let t=De(e,["str","start","end"]),i=parseInt(t.start,10)-1,a=parseInt(t.end,10);return t.str.substr(i,a)},reign:e=>{let t=De(e,["start","end"]);return`(r. ${t.start} – ${t.end})`},circa:e=>"c. "+De(e,["year"]).year,"decade link":e=>{let t=De(e,["year"]);return`${t.year}|${t.year}s`},decade:e=>{let t=De(e,["year"]),i=Number(t.year);return i=10*parseInt(i/10,10),i+"s"},century:e=>{let t=De(e,["year"]),i=Number(t.year);return i=parseInt(i/100,10)+1,""+i},radic:e=>{let t=De(e,["after","before"]);return`${t.before||""}√${t.after||""}`},"medical cases chart/row":e=>e,oldstyledate:e=>{let t=De(e,["date","year"]);return t.year?t.date+" "+t.year:t.date},braces:e=>{let t=De(e,["text"]),i="";return t.list&&(i="|"+t.list.join("|")),"{{"+(t.text||"")+i+"}}"},hlist:e=>{let t=De(e);return t.list=t.list||[],t.list.join(" · ")},pagelist:e=>(De(e).list||[]).join(", "),catlist:e=>(De(e).list||[]).join(", "),"br separated entries":e=>(De(e).list||[]).join("\n\n"),"comma separated entries":e=>(De(e).list||[]).join(", "),"anchored list":e=>{let t=De(e).list||[];return t=t.map((e,t)=>`${t+1}. ${e}`),t.join("\n\n")},"bulleted list":e=>{let t=De(e).list||[];return t=t.filter(e=>e),t=t.map(e=>"• "+e),t.join("\n\n")},plainlist:e=>{let t=(e=ze(e)).split("|").slice(1);return t=t.join("|").split(/\n ?\* ?/),t=t.filter(e=>e),t.join("\n\n")},term:e=>De(e,["term"]).term+":",linum:e=>{let t=De(e,["num","text"]);return`${t.num}. ${t.text}`},"block indent":e=>{let t=De(e);return t[1]?"\n"+t[1]+"\n":""},lbs:e=>{let t=De(e,["text"]);return`[[${t.text} Lifeboat Station|${t.text}]]`},lbc:e=>{let t=De(e,["text"]);return`[[${t.text}-class lifeboat|${t.text}-class]]`},lbb:e=>{let t=De(e,["text"]);return`[[${t.text}-class lifeboat|${t.text}]]`},"#dateformat":e=>(e=e.replace(/:/,"|"),De(e,["date","format"]).date),lc:e=>(e=e.replace(/:/,"|"),(De(e,["text"]).text||"").toLowerCase()),uc:e=>(e=e.replace(/:/,"|"),(De(e,["text"]).text||"").toUpperCase()),lcfirst:e=>{e=e.replace(/:/,"|");let t=De(e,["text"]).text;return t?t[0].toLowerCase()+t.substr(1):""},ucfirst:e=>{e=e.replace(/:/,"|");let t=De(e,["text"]).text;return t?t[0].toUpperCase()+t.substr(1):""},padleft:e=>{e=e.replace(/:/,"|");let t=De(e,["text","num"]);return(t.text||"").padStart(t.num,t.str||"0")},padright:e=>{e=e.replace(/:/,"|");let t=De(e,["text","num"]);return(t.text||"").padEnd(t.num,t.str||"0")},abbrlink:e=>{let t=De(e,["abbr","page"]);return t.page?`[[${t.page}|${t.abbr}]]`:`[[${t.abbr}]]`},own:e=>{let t=De(e,["author"]),i="Own work";return t.author&&(i+=" by "+t.author),i},formatnum:e=>{e=e.replace(/:/,"|");let t=De(e,["number"]).number||"";return t=t.replace(/,/g,""),Number(t).toLocaleString()||""},frac:e=>{let t=De(e,["a","b","c"]);return t.c?`${t.a} ${t.b}/${t.c}`:t.b?`${t.a}/${t.b}`:"1/"+t.b},convert:e=>{let t=De(e,["num","two","three","four"]);return"-"===t.two||"to"===t.two||"and"===t.two?t.four?`${t.num} ${t.two} ${t.three} ${t.four}`:`${t.num} ${t.two} ${t.three}`:`${t.num} ${t.two}`},tl:e=>{let t=De(e,["first","second"]);return t.second||t.first},won:e=>{let t=De(e,["text"]);return t.place||t.text||mi.titlecase(t.template)},tag:e=>{let t=De(e,["tag","open"]);const i={span:!0,div:!0,p:!0};return t.open&&"pair"!==t.open?"":i[t.tag]?t.content||"":`<${t.tag} ${t.attribs||""}>${t.content||""}`},plural:e=>{e=e.replace(/plural:/,"plural|");let t=De(e,["num","word"]),i=Number(t.num),a=t.word;return 1!==i&&(/.y$/.test(a)?a=a.replace(/y$/,"ies"):a+="s"),i+" "+a},dec:e=>{let t=De(e,["degrees","minutes","seconds"]),i=(t.degrees||0)+"°";return t.minutes&&(i+=t.minutes+"′"),t.seconds&&(i+=t.seconds+"″"),i},val:e=>{let t=De(e,["number","uncertainty"]),i=t.number;i&&Number(i)&&(i=Number(i).toLocaleString());let a=i||"";return t.p&&(a=t.p+a),t.s&&(a=t.s+a),(t.u||t.ul||t.upl)&&(a=a+" "+(t.u||t.ul||t.upl)),a},percentage:e=>{let t=De(e,["numerator","denominator","decimals"]),i=mi.percentage(t);return null===i?"":i+"%"},"percent-done":e=>{let t=De(e,["done","total","digits"]),i=mi.percentage({numerator:t.done,denominator:t.total,decimals:t.digits});return null===i?"":`${t.done} (${i}%) done`}},hi=[["🇦🇩","and","andorra"],["🇦🇪","are","united arab emirates"],["🇦🇫","afg","afghanistan"],["🇦🇬","atg","antigua and barbuda"],["🇦🇮","aia","anguilla"],["🇦🇱","alb","albania"],["🇦🇲","arm","armenia"],["🇦🇴","ago","angola"],["🇦🇶","ata","antarctica"],["🇦🇷","arg","argentina"],["🇦🇸","asm","american samoa"],["🇦🇹","aut","austria"],["🇦🇺","aus","australia"],["🇦🇼","abw","aruba"],["🇦🇽","ala","åland islands"],["🇦🇿","aze","azerbaijan"],["🇧🇦","bih","bosnia and herzegovina"],["🇧🇧","brb","barbados"],["🇧🇩","bgd","bangladesh"],["🇧🇪","bel","belgium"],["🇧🇫","bfa","burkina faso"],["🇧🇬","bgr","bulgaria"],["🇧🇬","bul","bulgaria"],["🇧🇭","bhr","bahrain"],["🇧🇮","bdi","burundi"],["🇧🇯","ben","benin"],["🇧🇱","blm","saint barthélemy"],["🇧🇲","bmu","bermuda"],["🇧🇳","brn","brunei darussalam"],["🇧🇴","bol","bolivia"],["🇧🇶","bes","bonaire, sint eustatius and saba"],["🇧🇷","bra","brazil"],["🇧🇸","bhs","bahamas"],["🇧🇹","btn","bhutan"],["🇧🇻","bvt","bouvet island"],["🇧🇼","bwa","botswana"],["🇧🇾","blr","belarus"],["🇧🇿","blz","belize"],["🇨🇦","can","canada"],["🇨🇨","cck","cocos (keeling) islands"],["🇨🇩","cod","congo"],["🇨🇫","caf","central african republic"],["🇨🇬","cog","congo"],["🇨🇭","che","switzerland"],["🇨🇮","civ","côte d'ivoire"],["🇨🇰","cok","cook islands"],["🇨🇱","chl","chile"],["🇨🇲","cmr","cameroon"],["🇨🇳","chn","china"],["🇨🇴","col","colombia"],["🇨🇷","cri","costa rica"],["🇨🇺","cub","cuba"],["🇨🇻","cpv","cape verde"],["🇨🇼","cuw","curaçao"],["🇨🇽","cxr","christmas island"],["🇨🇾","cyp","cyprus"],["🇨🇿","cze","czech republic"],["🇩🇪","deu","germany"],["🇩🇪","ger","germany"],["🇩🇯","dji","djibouti"],["🇩🇰","dnk","denmark"],["🇩🇲","dma","dominica"],["🇩🇴","dom","dominican republic"],["🇩🇿","dza","algeria"],["🇪🇨","ecu","ecuador"],["🇪🇪","est","estonia"],["🇪🇬","egy","egypt"],["🇪🇭","esh","western sahara"],["🇪🇷","eri","eritrea"],["🇪🇸","esp","spain"],["🇪🇹","eth","ethiopia"],["🇫🇮","fin","finland"],["🇫🇯","fji","fiji"],["🇫🇰","flk","falkland islands (malvinas)"],["🇫🇲","fsm","micronesia"],["🇫🇴","fro","faroe islands"],["🇫🇷","fra","france"],["🇬🇦","gab","gabon"],["🇬🇧","gbr","united kingdom"],["🇬🇩","grd","grenada"],["🇬🇫","guf","french guiana"],["🇬🇬","ggy","guernsey"],["🇬🇭","gha","ghana"],["🇬🇮","gib","gibraltar"],["🇬🇱","grl","greenland"],["🇬🇲","gmb","gambia"],["🇬🇳","gin","guinea"],["🇬🇵","glp","guadeloupe"],["🇬🇶","gnq","equatorial guinea"],["🇬🇷","grc","greece"],["🇬🇸","sgs","south georgia"],["🇬🇹","gtm","guatemala"],["🇬🇺","gum","guam"],["🇬🇼","gnb","guinea-bissau"],["🇬🇾","guy","guyana"],["🇭🇰","hkg","hong kong"],["🇭🇲","hmd","heard island and mcdonald islands"],["🇭🇳","hnd","honduras"],["🇭🇷","hrv","croatia"],["🇭🇹","hti","haiti"],["🇭🇺","hun","hungary"],["🇮🇩","idn","indonesia"],["🇮🇪","irl","ireland"],["🇮🇱","isr","israel"],["🇮🇲","imn","isle of man"],["🇮🇳","ind","india"],["🇮🇴","iot","british indian ocean territory"],["🇮🇶","irq","iraq"],["🇮🇷","irn","iran"],["🇮🇸","isl","iceland"],["🇮🇹","ita","italy"],["🇯🇪","jey","jersey"],["🇯🇲","jam","jamaica"],["🇯🇴","jor","jordan"],["🇯🇵","jpn","japan"],["🇰🇪","ken","kenya"],["🇰🇬","kgz","kyrgyzstan"],["🇰🇭","khm","cambodia"],["🇰🇮","kir","kiribati"],["🇰🇲","com","comoros"],["🇰🇳","kna","saint kitts and nevis"],["🇰🇵","prk","north korea"],["🇰🇷","kor","south korea"],["🇰🇼","kwt","kuwait"],["🇰🇾","cym","cayman islands"],["🇰🇿","kaz","kazakhstan"],["🇱🇦","lao","lao people's democratic republic"],["🇱🇧","lbn","lebanon"],["🇱🇨","lca","saint lucia"],["🇱🇮","lie","liechtenstein"],["🇱🇰","lka","sri lanka"],["🇱🇷","lbr","liberia"],["🇱🇸","lso","lesotho"],["🇱🇹","ltu","lithuania"],["🇱🇺","lux","luxembourg"],["🇱🇻","lva","latvia"],["🇱🇾","lby","libya"],["🇲🇦","mar","morocco"],["🇲🇨","mco","monaco"],["🇲🇩","mda","moldova"],["🇲🇪","mne","montenegro"],["🇲🇫","maf","saint martin (french part)"],["🇲🇬","mdg","madagascar"],["🇲🇭","mhl","marshall islands"],["🇲🇰","mkd","macedonia"],["🇲🇱","mli","mali"],["🇲🇲","mmr","myanmar"],["🇲🇳","mng","mongolia"],["🇲🇴","mac","macao"],["🇲🇵","mnp","northern mariana islands"],["🇲🇶","mtq","martinique"],["🇲🇷","mrt","mauritania"],["🇲🇸","msr","montserrat"],["🇲🇹","mlt","malta"],["🇲🇺","mus","mauritius"],["🇲🇻","mdv","maldives"],["🇲🇼","mwi","malawi"],["🇲🇽","mex","mexico"],["🇲🇾","mys","malaysia"],["🇲🇿","moz","mozambique"],["🇳🇦","nam","namibia"],["🇳🇨","ncl","new caledonia"],["🇳🇪","ner","niger"],["🇳🇫","nfk","norfolk island"],["🇳🇬","nga","nigeria"],["🇳🇮","nic","nicaragua"],["🇳🇱","nld","netherlands"],["🇳🇴","nor","norway"],["🇳🇵","npl","nepal"],["🇳🇷","nru","nauru"],["🇳🇺","niu","niue"],["🇳🇿","nzl","new zealand"],["🇴🇲","omn","oman"],["🇵🇦","pan","panama"],["🇵🇪","per","peru"],["🇵🇫","pyf","french polynesia"],["🇵🇬","png","papua new guinea"],["🇵🇭","phl","philippines"],["🇵🇰","pak","pakistan"],["🇵🇱","pol","poland"],["🇵🇲","spm","saint pierre and miquelon"],["🇵🇳","pcn","pitcairn"],["🇵🇷","pri","puerto rico"],["🇵🇸","pse","palestinian territory"],["🇵🇹","prt","portugal"],["🇵🇼","plw","palau"],["🇵🇾","pry","paraguay"],["🇶🇦","qat","qatar"],["🇷🇪","reu","réunion"],["🇷🇴","rou","romania"],["🇷🇸","srb","serbia"],["🇷🇺","rus","russia"],["🇷🇼","rwa","rwanda"],["🇸🇦","sau","saudi arabia"],["🇸🇧","slb","solomon islands"],["🇸🇨","syc","seychelles"],["🇸🇩","sdn","sudan"],["🇸🇪","swe","sweden"],["🇸🇬","sgp","singapore"],["🇸🇭","shn","saint helena, ascension and tristan da cunha"],["🇸🇮","svn","slovenia"],["🇸🇯","sjm","svalbard and jan mayen"],["🇸🇰","svk","slovakia"],["🇸🇱","sle","sierra leone"],["🇸🇲","smr","san marino"],["🇸🇳","sen","senegal"],["🇸🇴","som","somalia"],["🇸🇷","sur","suriname"],["🇸🇸","ssd","south sudan"],["🇸🇹","stp","sao tome and principe"],["🇸🇻","slv","el salvador"],["🇸🇽","sxm","sint maarten (dutch part)"],["🇸🇾","syr","syrian arab republic"],["🇸🇿","swz","swaziland"],["🇹🇨","tca","turks and caicos islands"],["🇹🇩","tcd","chad"],["🇹🇫","atf","french southern territories"],["🇹🇬","tgo","togo"],["🇹🇭","tha","thailand"],["🇹🇯","tjk","tajikistan"],["🇹🇰","tkl","tokelau"],["🇹🇱","tls","timor-leste"],["🇹🇲","tkm","turkmenistan"],["🇹🇳","tun","tunisia"],["🇹🇴","ton","tonga"],["🇹🇷","tur","turkey"],["🇹🇹","tto","trinidad and tobago"],["🇹🇻","tuv","tuvalu"],["🇹🇼","twn","taiwan"],["🇹🇿","tza","tanzania"],["🇺🇦","ukr","ukraine"],["🇺🇬","uga","uganda"],["🇺🇲","umi","united states minor outlying islands"],["🇺🇸","us","united states"],["🇺🇸","usa","united states"],["🇺🇾","ury","uruguay"],["🇺🇿","uzb","uzbekistan"],["🇻🇦","vat","vatican city"],["🇻🇨","vct","saint vincent and the grenadines"],["🇻🇪","ven","venezuela"],["🇻🇬","vgb","virgin islands, british"],["🇻🇮","vir","virgin islands, u.s."],["🇻🇳","vnm","viet nam"],["🇻🇺","vut","vanuatu"],["🇼🇫","wlf","wallis and futuna"],["🇼🇸","wsm","samoa"],["🇾🇪","yem","yemen"],["🇾🇹","myt","mayotte"],["🇿🇦","zaf","south africa"],["🇿🇲","zmb","zambia"],["🇿🇼 ","zwe","zimbabwe"],["🇺🇳","un","united nations"],["🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿","eng","england"],["🏴󠁧󠁢󠁳󠁣󠁴󠁿","sct","scotland"],["🏴󠁧󠁢󠁷󠁬󠁳󠁿","wal","wales"],["🇪🇺","eu","european union"]];let gi={flag:e=>{let t=De(e,["flag","variant"]),i=t.flag||"";t.flag=(t.flag||"").toLowerCase();let a=hi.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${a[0]||""} [[${a[2]}|${i}]]`},flagcountry:e=>{let t=De(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=hi.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${i[0]||""} [[${i[2]}]]`},flagcu:e=>{let t=De(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=hi.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${i[0]||""} ${i[2]}`},flagicon:e=>{let t=De(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=hi.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`[[${i[2]}|${i[0]}]]`:""},flagdeco:e=>{let t=De(e,["flag","variant"]);return t.flag=(t.flag||"").toLowerCase(),(hi.find(e=>t.flag===e[1]||t.flag===e[2])||[])[0]||""},fb:e=>{let t=De(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=hi.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`${i[0]} [[${i[2]} national football team|${i[2]}]]`:""},fbicon:e=>{let t=De(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=hi.find(e=>t.flag===e[1]||t.flag===e[2]);return i?` [[${i[2]} national football team|${i[0]}]]`:""},flagathlete:e=>{let t=De(e,["name","flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=hi.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`${i[0]} [[${t.name||""}]] (${i[1].toUpperCase()})`:`[[${t.name||""}]]`}};hi.forEach(e=>{gi[e[1]]=()=>e[0]});var fi=gi;const ki=mi.titlecase;let bi={};["rh","rh2","yes","no","maybe","eliminated","lost","safe","active","site active","coming soon","good","won","nom","sho","longlisted","tba","success","operational","failure","partial","regional","maybecheck","partial success","partial failure","okay","yes-no","some","nonpartisan","pending","unofficial","unofficial2","usually","rarely","sometimes","any","varies","black","non-album single","unreleased","unknown","perhaps","depends","included","dropped","terminated","beta","table-experimental","free","proprietary","nonfree","needs","nightly","release-candidate","planned","scheduled","incorrect","no result","cmain","calso starring","crecurring","cguest","not yet","optional"].forEach(e=>{bi[e]=e=>{let t=De(e,["text"]);return t.text||ki(t.template)}});[["active fire","Active"],["site active","Active"],["site inactive","Inactive"],["yes2",""],["no2",""],["ya","✅"],["na","❌"],["nom","Nominated"],["sho","Shortlisted"],["tba","TBA"],["maybecheck","✔️"],["okay","Neutral"],["n/a","N/A"],["sdash","—"],["dunno","?"],["draw",""],["cnone",""],["nocontest",""]].forEach(e=>{bi[e[0]]=t=>De(t,["text"]).text||e[1]});var wi=ci,yi=pi,$i=di,xi=fi,vi=bi,ji=Object.assign({},wi,yi,$i,xi,vi);let _i={};["goodreads author","twitter","facebook","instagram","tumblr","pinterest","espn nfl","espn nhl","espn fc","hockeydb","fifa player","worldcat","worldcat id","nfl player","ted speaker","playmate"].forEach(e=>{_i[e]=["id","name"]});var zi=_i;let Oi={};["imdb title","imdb name","imdb episode","imdb event","afi film","allmovie title","allgame","tcmdb title","discogs artist","discogs label","discogs release","discogs master","librivox author","musicbrainz artist","musicbrainz label","musicbrainz recording","musicbrainz release","musicbrainz work","youtube","goodreads book","dmoz"].forEach(e=>{Oi[e]=["id","title","description","section"]});var Ei={ipa:(e,t)=>{let i=De(e,["transcription","lang","audio"]);return i.lang=mi.getLang(i.template),i.template="ipa",t.push(i),""},ipac:(e,t)=>{let i=De(e);return i.transcription=(i.list||[]).join(","),delete i.list,i.lang=mi.getLang(i.template),i.template="ipac",t.push(i),""},quote:(e,t)=>{let i=De(e,["text","author"]);if(t.push(i),i.text){let e=`"${i.text}"`;return i.author&&(e+="\n\n",e+=" - "+i.author),e+"\n"}return""},"cite gnis":(e,t)=>{let i=De(e,["id","name","type"]);return i.type="gnis",i.template="citation",t.push(i),""},"spoken wikipedia":(e,t)=>{let i=De(e,["file","date"]);return i.template="audio",t.push(i),""},yel:(e,t)=>{let i=De(e,["min"]);return t.push(i),i.min?`yellow: ${i.min||""}'`:""},subon:(e,t)=>{let i=De(e,["min"]);return t.push(i),i.min?`sub on: ${i.min||""}'`:""},suboff:(e,t)=>{let i=De(e,["min"]);return t.push(i),i.min?`sub off: ${i.min||""}'`:""},sfn:(e,t,i,a)=>{let n=De(e,["author","year","location"]);return a&&(n.name=n.template,n.teplate=a),t.push(n),""},redirect:(e,t)=>{let i=De(e,["redirect"]),a=i.list||[],n=[];for(let e=0;e{let i=De(e),a={};Object.keys(mi.sisterProjects).forEach(e=>{!0===i.hasOwnProperty(e)&&(a[mi.sisterProjects[e]]=i[e])});let n={template:"sister project links",links:a};return t.push(n),""},"subject bar":(e,t)=>{let i=De(e);Object.keys(i).forEach(e=>{mi.sisterProjects.hasOwnProperty(e)&&(i[mi.sisterProjects[e]]=i[e],delete i[e])});let a={template:"subject bar",links:i};return t.push(a),""},gallery:(e,t)=>{let i=De(e),a=(i.list||[]).filter(e=>/^ *File ?:/.test(e));return a=a.map(e=>new $t({file:e}).json()),i={template:"gallery",images:a},t.push(i),""},sky:(e,t)=>{let i=De(e,["asc_hours","asc_minutes","asc_seconds","dec_sign","dec_degrees","dec_minutes","dec_seconds","distance"]),a={template:"sky",ascension:{hours:i.asc_hours,minutes:i.asc_minutes,seconds:i.asc_seconds},declination:{sign:i.dec_sign,degrees:i.dec_degrees,minutes:i.dec_minutes,seconds:i.dec_seconds},distance:i.distance};return t.push(a),""},"medical cases chart":(e,t)=>{let i=["date","deathsExpr","recoveriesExpr","casesExpr","4thExpr","5thExpr","col1","col1Change","col2","col2Change"],a=De(e);a.data=a.data||"";let n=a.data.split("\n").map(e=>{let t=e.split(";"),a={options:new Map},n=0;for(let e=0;e{let i=De(e);i.x&&(i.x=i.x.split(",").map(e=>e.trim())),i.y&&(i.y=i.y.split(",").map(e=>e.trim()));let a=1;for(;i["y"+a];)i["y"+a]=i["y"+a].split(",").map(e=>e.trim()),a+=1;return t.push(i),""},"historical populations":(e,t)=>{let i=De(e);i.list=i.list||[];let a=[];for(let e=0;e{const i=/^jan /i,a=/^year /i;let n=De(e);const r=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"];let o={},s=Object.keys(n).filter(e=>i.test(e));s=s.map(e=>e.replace(i,"")),s.forEach(e=>{o[e]=[],r.forEach(t=>{let i=`${t} ${e}`;if(n.hasOwnProperty(i)){let t=mi.toNumber(n[i]);delete n[i],o[e].push(t)}})}),n.byMonth=o;let l={};return Object.keys(n).forEach(e=>{if(a.test(e)){let t=e.replace(a,"");l[t]=n[e],delete n[e]}}),n.byYear=l,t.push(n),""},"weather box/concise c":(e,t)=>{let i=De(e);return i.list=i.list.map(e=>mi.toNumber(e)),i.byMonth={"high c":i.list.slice(0,12),"low c":i.list.slice(12,24),"rain mm":i.list.slice(24,36)},delete i.list,i.template="weather box",t.push(i),""},"weather box/concise f":(e,t)=>{let i=De(e);return i.list=i.list.map(e=>mi.toNumber(e)),i.byMonth={"high f":i.list.slice(0,12),"low f":i.list.slice(12,24),"rain inch":i.list.slice(24,36)},delete i.list,i.template="weather box",t.push(i),""},"climate chart":(e,t)=>{let i=De(e).list||[],a=i[0],n=i[38];i=i.slice(1),i=i.map(e=>(e&&"−"===e[0]&&(e=e.replace(/−/,"-")),e));let r=[];for(let e=0;e<36;e+=3)r.push({low:mi.toNumber(i[e]),high:mi.toNumber(i[e+1]),precip:mi.toNumber(i[e+2])});let o={template:"climate chart",data:{title:a,source:n,months:r}};return t.push(o),""}},Si=zi,Ci=Oi,Ni=Ei;let qi={"find a grave":["id","name","work","last","first","date","accessdate"],congbio:["id","name","date"],"hollywood walk of fame":["name"],"wide image":["file","width","caption"],audio:["file","text","type"],rp:["page"],"short description":["description"],"coord missing":["region"],unreferenced:["date"],"taxon info":["taxon","item"],"portuguese name":["first","second","suffix"],geo:["lat","lon","zoom"]};qi=Object.assign(qi,Si,Ci,Ni);var Ti=qi,Li={mlbplayer:{props:["number","name","il"],out:"name"},syntaxhighlight:{props:[],out:"code"},samp:{props:["1"],out:"1"},sub:{props:["text"],out:"text"},sup:{props:["text"],out:"text"},chem2:{props:["equation"],out:"equation"},ill:{props:["text","lan1","text1","lan2","text2"],out:"text"},abbr:{props:["abbr","meaning","ipa"],out:"abbr"}};var Pi={math:(e,t)=>{let i=De(e,["formula"]);return t.push(i),"\n\n"+(i.formula||"")+"\n\n"},isbn:(e,t)=>{let i=De(e,["id","id2","id3"]);return t.push(i),"ISBN: "+(i.id||"")},"based on":(e,t)=>{let i=De(e,["title","author"]);return t.push(i),`${i.title} by ${i.author||""}`},"bbl to t":(e,t)=>{let i=De(e,["barrels"]);return t.push(i),"0"===i.barrels?i.barrels+" barrel":i.barrels+" barrels"},mpc:(e,t)=>{let i=De(e,["number","text"]);return t.push(i),`[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ${i.text||i.number}]`},pengoal:(e,t)=>(t.push({template:"pengoal"}),"✅"),penmiss:(e,t)=>(t.push({template:"penmiss"}),"❌"),"ordered list":(e,t)=>{let i=De(e);return t.push(i),i.list=i.list||[],i.list.map((e,t)=>`${t+1}. ${e}`).join("\n\n")},"title year":(e,t,i,a,n)=>{let r=De(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b[0-9]{4}\b/);if(e)return e[0]}return r.nomatch||""},"title century":(e,t,i,a,n)=>{let r=De(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b([0-9]+)(st|nd|rd|th)\b/);if(e)return e[1]||""}return r.nomatch||""},"title decade":(e,t,i,a,n)=>{let r=De(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b([0-9]+)s\b/);if(e)return e[1]||""}return r.nomatch||""},nihongo:(e,t)=>{let i=De(e,["english","kanji","romaji","extra"]);t.push(i);let a=i.english||i.romaji||"";return i.kanji&&(a+=` (${i.kanji})`),a},marriage:(e,t)=>{let i=De(e,["spouse","from","to","end"]);t.push(i);let a=i.spouse||"";return i.from&&(i.to?a+=` (m. ${i.from}-${i.to})`:a+=` (m. ${i.from})`),a},"sent off":(e,t)=>{let i=De(e,["cards"]),a={template:"sent off",cards:i.cards,minutes:i.list||[]};return t.push(a),"sent off: "+a.minutes.map(e=>e+"'").join(", ")},transl:(e,t)=>{let i=De(e,["lang","text","text2"]);return i.text2&&(i.iso=i.text,i.text=i.text2,delete i.text2),t.push(i),i.text||""},"collapsible list":(e,t)=>{let i=De(e);t.push(i);let a="";if(i.title&&(a+=`'''${i.title}'''\n\n`),!i.list){i.list=[];for(let e=1;e<10;e+=1)i[e]&&(i.list.push(i[e]),delete i[e])}return i.list=i.list.filter(e=>e),a+=i.list.join("\n\n"),a},"columns-list":(e,t)=>{let i=((De(e).list||[])[0]||"").split(/\n/).filter(e=>e);return i=i.map(e=>e.replace(/\*/,"")),t.push({template:"columns-list",list:i}),i=i.map(e=>"• "+e),i.join("\n\n")},height:(e,t)=>{let i=De(e);t.push(i);let a=[];return["m","cm","ft","in"].forEach(e=>{!0===i.hasOwnProperty(e)&&a.push(i[e]+e)}),a.join(" ")},sic:(e,t)=>{let i=De(e,["one","two","three"]),a=(i.one||"")+(i.two||"");return"?"===i.one&&(a=(i.two||"")+(i.three||"")),t.push({template:"sic",word:a}),"y"===i.nolink?a:a+" [sic]"},inrconvert:(e,t)=>{let i=De(e,["rupee_value","currency_formatting"]);t.push(i);const a={k:1e3,m:1e6,b:1e9,t:1e12,l:1e5,c:1e7,lc:1e12};if(i.currency_formatting){let e=a[i.currency_formatting]||1;i.rupee_value=i.rupee_value*e}return"inr "+(i.rupee_value||"")},frac:(e,t)=>{let i=De(e,["a","b","c"]),a={template:"sfrac"};return i.c?(a.integer=i.a,a.numerator=i.b,a.denominator=i.c):i.b?(a.numerator=i.a,a.denominator=i.b):(a.numerator=1,a.denominator=i.a),t.push(a),a.integer?`${a.integer} ${a.numerator}⁄${a.denominator}`:`${a.numerator}⁄${a.denominator}`},"winning percentage":(e,t)=>{let i=De(e,["wins","losses","ties"]);t.push(i);let a=Number(i.wins),n=Number(i.losses),r=Number(i.ties)||0,o=a+n+r;"y"===i.ignore_ties&&(r=0),r&&(a+=r/2);let s=mi.percentage({numerator:a,denominator:o,decimals:1});return null===s?"":"."+10*s},winlosspct:(e,t)=>{let i=De(e,["wins","losses"]);t.push(i);let a=Number(i.wins),n=Number(i.losses),r=mi.percentage({numerator:a,denominator:a+n,decimals:1});return null===r?"":(r="."+10*r,`${a||0} || ${n||0} || ${r||"-"}`)},"video game release":(e,t)=>{let i=["region","date","region2","date2","region3","date3","region4","date4"],a=De(e,i),n={template:"video game release",releases:[]};for(let e=0;e`${e.region}: ${e.date||""}`).join("\n\n")+"\n"},uss:(e,t)=>{let i=De(e,["name","id"]);return t.push(i),i.id?`[[USS ${i.name} (${i.id})|USS ''${i.name}'' (${i.id})]]`:`[[USS ${i.name}|USS ''${i.name}'']]`}};const Ai={"£":"GB£","¥":"¥","৳":"৳","₩":"₩","€":"€","₱":"₱","₹":"₹","₽":"₽","cn¥":"CN¥","gb£":"GB£","india rs":"₹","indian rupee symbol":"₹","indian rupee":"₹","indian rupees":"₹","philippine peso":"₱","russian ruble":"₽","SK won":"₩","turkish lira":"TRY",a$:"A$",au$:"A$",aud:"A$",bdt:"BDT",brl:"BRL",ca$:"CA$",cad:"CA$",chf:"CHF",cny:"CN¥",czk:"czk",dkk:"dkk",dkk2:"dkk",euro:"€",gbp:"GB£",hk$:"HK$",hkd:"HK$",ils:"ILS",inr:"₹",jpy:"¥",myr:"MYR",nis:"ILS",nok:"NOK",nok2:"NOK",nz$:"NZ$",nzd:"NZ$",peso:"peso",pkr:"₨",r$:"BRL",rmb:"CN¥",rub:"₽",ruble:"₽",rupee:"₹",s$:"sgd",sek:"SEK",sek2:"SEK",sfr:"CHF",sgd:"sgd",shekel:"ILS",sheqel:"ILS",ttd:"TTD",us$:"US$",usd:"US$",yen:"¥",zar:"R"},Di=(e,t)=>{let i=De(e,["amount","code"]);t.push(i);let a=i.template||"";"currency"===a?(a=i.code,a||(i.code=a="usd")):""!==a&&"monnaie"!==a&&"unité"!==a&&"nombre"!==a&&"nb"!==a||(a=i.code),a=(a||"").toLowerCase(),"us"===a?i.code=a="usd":"uk"===a&&(i.code=a="gbp");let n=`${Ai[a]||""}${i.amount||""}`;return i.code&&!Ai[i.code.toLowerCase()]&&(n+=" "+i.code),n};let Ii={currency:Di};Object.keys(Ai).forEach(e=>{Ii[e]=Di});var Mi=Ii;const Ri=864e5,Ui=30*Ri,Bi=365*Ri,Fi=function(e){return new Date(`${e.year}-${e.month||0}-${e.date||1}`).getTime()};var Ki={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],timeSince:function(e){let t=new Date(e);if(isNaN(t.getTime()))return"";let i=(new Date).getTime()-t.getTime(),a="ago";i<0&&(a="from now",i=Math.abs(i));let n=i/1e3/60/60/24;return n<365?parseInt(n,10)+" days "+a:parseInt(n/365,10)+" years "+a},delta:function(e,t){e=Fi(e);let i=(t=Fi(t))-e,a={},n=Math.floor(i/Bi,10);n>0&&(a.years=n,i-=a.years*Bi);let r=Math.floor(i/Ui,10);r>0&&(a.months=r,i-=a.months*Ui);let o=Math.floor(i/Ri,10);return o>0&&(a.days=o),a},toOrdinal:function(e){let t=e%10,i=e%100;return 1===t&&11!==i?e+"st":2===t&&12!==i?e+"nd":3===t&&13!==i?e+"rd":e+"th"}};const Wi=[void 0,"January","February","March","April","May","June","July","August","September","October","November","December"],Zi=Wi.reduce((e,t,i)=>(0===i||(e[t.toLowerCase()]=i),e),{}),Hi=function(e){return e<10?"0"+e:String(e)};var Yi=Ki,Gi={toText:function(e){let t=String(e.year||"");if(void 0!==e.month&&!0===Wi.hasOwnProperty(e.month))if(void 0===e.date)t=`${Wi[e.month]} ${e.year}`;else{if(t=`${Wi[e.month]} ${e.date}, ${e.year}`,void 0!==e.hour&&void 0!==e.minute){let i=`${Hi(e.hour)}:${Hi(e.minute)}`;void 0!==e.second&&(i=i+":"+Hi(e.second)),t=i+", "+t}e.tz&&(t+=` (${e.tz})`)}return t},ymd:function(e){let t={},i=["year","month","date","hour","minute","second"];for(let a=0;a{let i=De(e,["year","month","date","hour","minute","second","timezone"]),a=Gi.ymd([i.year,i.month,i.date||i.day]);return i.text=Gi.toText(a),i.timezone&&("Z"===i.timezone&&(i.timezone="UTC"),i.text+=` (${i.timezone})`),i.hour&&i.minute&&(i.second?i.text=`${i.hour}:${i.minute}:${i.second}, `+i.text:i.text=`${i.hour}:${i.minute}, `+i.text),i.text&&t.push(Ji(i)),i.text},natural_date:(e,t)=>{let i=De(e,["text"]).text||"",a={};if(/^[0-9]{4}$/.test(i))a.year=parseInt(i,10);else{let e=i.replace(/[a-z]+\/[a-z]+/i,"");e=e.replace(/[0-9]+:[0-9]+(am|pm)?/i,"");let t=new Date(e);!1===isNaN(t.getTime())&&(a.year=t.getFullYear(),a.month=t.getMonth()+1,a.date=t.getDate())}return t.push(Ji(a)),i.trim()},one_year:(e,t)=>{let i=De(e,["year"]),a=Number(i.year);return t.push(Ji({year:a})),String(a)},two_dates:(e,t)=>{let i=De(e,["b","birth_year","birth_month","birth_date","death_year","death_month","death_date"]);if(i.b&&"b"===i.b.toLowerCase()){let e=Gi.ymd([i.birth_year,i.birth_month,i.birth_date]);return t.push(Ji(e)),Gi.toText(e)}let a=Gi.ymd([i.death_year,i.death_month,i.death_date]);return t.push(Ji(a)),Gi.toText(a)},age:e=>{let t=Xi(e);return Vi(t.from,t.to).years||0},"diff-y":e=>{let t=Xi(e),i=Vi(t.from,t.to);return 1===i.years?i.years+" year":(i.years||0)+" years"},"diff-ym":e=>{let t=Xi(e),i=Vi(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),1===i.months?a.push("1 month"):i.months&&0!==i.months&&a.push(i.months+" months"),a.join(", ")},"diff-ymd":e=>{let t=Xi(e),i=Vi(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),1===i.months?a.push("1 month"):i.months&&0!==i.months&&a.push(i.months+" months"),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")},"diff-yd":e=>{let t=Xi(e),i=Vi(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),i.days+=30*(i.months||0),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")},"diff-d":e=>{let t=Xi(e),i=Vi(t.from,t.to),a=[];return i.days+=365*(i.years||0),i.days+=30*(i.months||0),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")}};const ea=["January","February","March","April","May","June","July","August","September","October","November","December"];var ta={currentday:()=>{let e=new Date;return String(e.getDate())},currentdayname:()=>{let e=new Date;return Yi.days[e.getDay()]},currentmonth:()=>{let e=new Date;return ea[e.getMonth()]},currentyear:()=>{let e=new Date;return String(e.getFullYear())},monthyear:()=>{let e=new Date;return ea[e.getMonth()]+" "+e.getFullYear()},"monthyear-1":()=>{let e=new Date;return e.setMonth(e.getMonth()-1),ea[e.getMonth()]+" "+e.getFullYear()},"monthyear+1":()=>{let e=new Date;return e.setMonth(e.getMonth()+1),ea[e.getMonth()]+" "+e.getFullYear()},"time ago":e=>{let t=De(e,["date","fmt"]).date;return Yi.timeSince(t)},"birth date and age":(e,t)=>{let i=De(e,["year","month","day"]);return i.year&&/[a-z]/i.test(i.year)?Qi.natural_date(e,t):(t.push(i),i=Gi.ymd([i.year,i.month,i.day]),Gi.toText(i))},"birth year and age":(e,t)=>{let i=De(e,["birth_year","birth_month"]);if(i.death_year&&/[a-z]/i.test(i.death_year))return Qi.natural_date(e,t);t.push(i);let a=(new Date).getFullYear()-parseInt(i.birth_year,10);i=Gi.ymd([i.birth_year,i.birth_month]);let n=Gi.toText(i);return a&&(n+=` (age ${a})`),n},"death year and age":(e,t)=>{let i=De(e,["death_year","birth_year","death_month"]);return i.death_year&&/[a-z]/i.test(i.death_year)?Qi.natural_date(e,t):(t.push(i),i=Gi.ymd([i.death_year,i.death_month]),Gi.toText(i))},"birth date and age2":(e,t)=>{let i=De(e,["at_year","at_month","at_day","birth_year","birth_month","birth_day"]);return t.push(i),i=Gi.ymd([i.birth_year,i.birth_month,i.birth_day]),Gi.toText(i)},"birth based on age as of date":(e,t)=>{let i=De(e,["age","year","month","day"]);t.push(i);let a=parseInt(i.age,10),n=parseInt(i.year,10)-a;return n&&a?`${n} (age ${i.age})`:`(age ${i.age})`},"death date and given age":(e,t)=>{let i=De(e,["year","month","day","age"]);t.push(i),i=Gi.ymd([i.year,i.month,i.day]);let a=Gi.toText(i);return i.age&&(a+=` (age ${i.age})`),a},dts:e=>{e=(e=e.replace(/\|format=[ymd]+/i,"")).replace(/\|abbr=(on|off)/i,"");let t=De(e,["year","month","date","bc"]);return t.date&&t.month&&t.year?!0===/[a-z]/.test(t.month)?[t.month,t.date,t.year].join(" "):[t.year,t.month,t.date].join("-"):t.month&&t.year?[t.year,t.month].join("-"):t.year?(t.year<0&&(t.year=Math.abs(t.year)+" BC"),t.year):""},time:()=>{let e=new Date,t=Gi.ymd([e.getFullYear(),e.getMonth(),e.getDate()]);return Gi.toText(t)},millennium:e=>{let t=De(e,["year"]),i=Number(t.year);return i=parseInt(i/1e3,10)+1,t.abbr&&"y"===t.abbr?i<0?Yi.toOrdinal(Math.abs(i))+" BC":""+Yi.toOrdinal(i):Yi.toOrdinal(i)+" millennium"},start:Qi.date,"start-date":Qi.natural_date,birthdeathage:Qi.two_dates,age:Qi.age,"age nts":Qi.age,"age in years":Qi["diff-y"],"age in years and months":Qi["diff-ym"],"age in years, months and days":Qi["diff-ymd"],"age in years and days":Qi["diff-yd"],"age in days":Qi["diff-d"]};function ia(e){let t=e.pop(),i=Number(e[0]||0),a=Number(e[1]||0),n=Number(e[2]||0);if("string"!=typeof t||isNaN(i))return null;let r=1;return/[SW]/i.test(t)&&(r=-1),r*(i+a/60+n/3600)}const aa=function(e){if("number"!=typeof e)return e;let t=1e5;return Math.round(e*t)/t},na={s:!0,w:!0};var ra=function(e){let t=De(e);t=function(e){return e.list=e.list||[],e.list=e.list.map(t=>{let i=Number(t);if(!isNaN(i))return i;let a=t.split(/:/);return a.length>1?(e.props=e.props||{},e.props[a[0]]=a.slice(1).join(":"),null):t}),e.list=e.list.filter(e=>null!==e),e}(t);let i=function(e){const t=e.map(e=>typeof e).join("|");return 2===e.length&&"number|number"===t?{lat:e[0],lon:e[1]}:4===e.length&&"number|string|number|string"===t?(na[e[1].toLowerCase()]&&(e[0]*=-1),"w"===e[3].toLowerCase()&&(e[2]*=-1),{lat:e[0],lon:e[2]}):6===e.length?{lat:ia(e.slice(0,3)),lon:ia(e.slice(3))}:8===e.length?{lat:ia(e.slice(0,4)),lon:ia(e.slice(4))}:{}}(t.list);return t.lat=aa(i.lat),t.lon=aa(i.lon),t.template="coord",delete t.list,t};var oa={coord:(e,t)=>{let i=ra(e);return t.push(i),i.display&&-1===i.display.indexOf("inline")?"":`${i.lat||""}°N, ${i.lon||""}°W`}};const sa=function(e,t,i,a){let n=De(e);return a&&(n.name=n.template,n.template=a),t.push(n),""};var la={persondata:sa,taxobox:sa,citation:sa,portal:sa,reflist:sa,"cite book":sa,"cite journal":sa,"cite web":sa,"commons cat":sa,"election box candidate":sa,"election box begin":sa,main:sa};const ca={adx:"adx",aim:"aim",amex:"amex",asx:"asx",athex:"athex",b3:"b3","B3 (stock exchange)":"B3 (stock exchange)",barbadosse:"barbadosse",bbv:"bbv",bcba:"bcba",bcs:"bcs",bhse:"bhse",bist:"bist",bit:"bit","bm&f bovespa":"b3","bm&f":"b3",bmad:"bmad",bmv:"bmv","bombay stock exchange":"bombay stock exchange","botswana stock exchange":"botswana stock exchange",bpse:"bpse",bse:"bse",bsx:"bsx",bvb:"bvb",bvc:"bvc",bvl:"bvl",bvpasa:"bvpasa",bwse:"bwse","canadian securities exchange":"canadian securities exchange",cse:"cse",darse:"darse",dfm:"dfm",dse:"dse",euronext:"euronext",euronextparis:"euronextparis",fse:"fse",fwb:"fwb",gse:"gse",gtsm:"gtsm",idx:"idx",ise:"ise",iseq:"iseq",isin:"isin",jasdaq:"jasdaq",jse:"jse",kase:"kase",kn:"kn",krx:"krx",lse:"lse",luxse:"luxse","malta stock exchange":"malta stock exchange",mai:"mai",mcx:"mcx",mutf:"mutf",myx:"myx",nag:"nag","nasdaq dubai":"nasdaq dubai",nasdaq:"nasdaq",neeq:"neeq",nepse:"nepse",nex:"nex",nse:"nse",newconnect:"newconnect","nyse arca":"nyse arca",nyse:"nyse",nzx:"nzx","omx baltic":"omx baltic",omx:"omx",ose:"ose","otc expert":"otc expert","otc grey":"otc grey","otc pink":"otc pink",otcqb:"otcqb",otcqx:"otcqx","pfts ukraine stock exchange":"pfts ukraine stock exchange","philippine stock exchange":"philippine stock exchange",prse:"prse",psx:"psx",karse:"karse",qe:"qe","saudi stock exchange":"saudi stock exchange",sehk:"sehk","Stock Exchange of Thailand":"Stock Exchange of Thailand",set:"set",sgx:"sgx",sse:"sse",swx:"swx",szse:"szse",tase:"tase","tsx-v":"tsx-v",tsx:"tsx",tsxv:"tsxv",ttse:"ttse",twse:"twse",tyo:"tyo",wbag:"wbag",wse:"wse","zagreb stock exchange":"zagreb stock exchange","zimbabwe stock exchange":"zimbabwe stock exchange",zse:"zse"},ua=(e,t)=>{let i=De(e,["ticketnumber","code"]);t.push(i);let a=i.template||"";""===a&&(a=i.code),a=(a||"").toLowerCase();let n=ca[a]||"";return i.ticketnumber&&(n=`${n}: ${i.ticketnumber}`),i.code&&!ca[i.code.toLowerCase()]&&(n+=" "+i.code),n},pa={};Object.keys(ca).forEach(e=>{pa[e]=ua});const ma=function(e){return 1===(e=String(e)).length&&(e="0"+e),e},da=function(e,t,i){e[`rd${t}-team${ma(i)}`]&&(i=ma(i));let a=e[`rd${t}-score${i}`],n=Number(a);return!1===isNaN(n)&&(a=n),{team:e[`rd${t}-team${i}`],score:a,seed:e[`rd${t}-seed${i}`]}};var ha=function(e){let t=[],i=De(e);for(let e=1;e<7;e+=1){let a=[];for(let t=1;t<16;t+=2){let n=`rd${e}-team`;if(!i[n+t]&&!i[n+ma(t)])break;{let n=da(i,e,t),r=da(i,e,t+1);a.push([n,r])}}a.length>0&&t.push(a)}return{template:"playoffbracket",rounds:t}};var ga=Li,fa=Pi,ka=Mi,ba=ta,wa=oa,ya=la,$a=pa,xa={"4teambracket":function(e,t){let i=ha(e);return t.push(i),""},player:(e,t)=>{let i=De(e,["number","country","name","dl"]);t.push(i);let a=`[[${i.name}]]`;if(i.country){let e=(i.country||"").toLowerCase(),t=hi.find(t=>e===t[1]||e===t[2])||[];t&&t[0]&&(a=t[0]+" "+a)}return i.number&&(a=i.number+" "+a),a},goal:(e,t)=>{let i={template:"goal",data:[]},a=De(e).list||[];for(let e=0;e{let t=e.note;return t&&(t=` (${t})`),e.min+"'"+t}).join(", "),n},"sports table":(e,t)=>{let i=De(e),a={};Object.keys(i).filter(e=>/^team[0-9]/.test(e)).map(e=>i[e].toLowerCase()).forEach(e=>{a[e]={name:i["name_"+e],win:Number(i["win_"+e])||0,loss:Number(i["loss_"+e])||0,tie:Number(i["tie_"+e])||0,otloss:Number(i["otloss_"+e])||0,goals_for:Number(i["gf_"+e])||0,goals_against:Number(i["ga_"+e])||0}});let n={date:i.update,header:i.table_header,teams:a};t.push(n)}},va=Object.assign({},ga,fa,ka,ba,wa,ya,$a,ha,xa,ha,xa),ja=li,_a=ji,za=Ti,Oa=va;let Ea=Object.assign({},_a,za,Oa);Object.keys(ja).forEach(e=>{Ea[e]=Ea[ja[e]]});var Sa=Xt,Ca=ri,Na=Ea;const{isArray:qa,isObject:Ta}=r,La=["0","1","2","3","4","5","6","7","8","9"];var Pa=function(e,t){let i=e.name;if(!0===Sa.hasOwnProperty(i))return[""];if(!0===Ca.isInfobox(i)){let t=De(e.body,[],"raw");return["",Ca.format(t)]}if(!0===/^cite [a-z]/.test(i)){let t=De(e.body);return t.type=t.template,t.template="citation",["",t]}if(!0===Na.hasOwnProperty(i)){if("number"==typeof Na[i]){return[De(e.body,La)[String(Na[i])]||""]}if("string"==typeof Na[i])return[Na[i]];if(!0===qa(Na[i])){return["",De(e.body,Na[i])]}if(!0===Ta(Na[i])){let t=De(e.body,Na[i].props);return[t[Na[i].out],t]}if("function"==typeof Na[i]){let a=[];return[Na[i](e.body,a,De,null,t),a[0]]}}let a=De(e.body);return 0===Object.keys(a).length&&(a=null),["",a]};var Aa=function(e,t){let i=Object.keys(e.data).reduce((t,i)=>(e.data[i]&&(t[i]=e.data[i].json()),t),{});return!0===t.encode&&(i=V.encodeObj(i)),i};const{isArray:Da}=r,Ia=(e="")=>(e=(e=e.toLowerCase()).replace(/[-_]/g," ")).trim(),Ma=function(e,t){this._type=e.type,this.domain=e.domain,Object.defineProperty(this,"data",{enumerable:!1,value:e.data}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},Ra={type:function(){return this._type},links:function(e){let t=[];if(Object.keys(this.data).forEach(e=>{this.data[e].links().forEach(e=>t.push(e))}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},image:function(){let e=this.data.image||this.data.image2||this.data.logo||this.data.image_skyline||this.data.image_flag;if(!e)return null;let t=e.json();return t.file=t.text,t.text="",t.domain=this.domain,new $t(t)},get:function(e){let t=Object.keys(this.data);if("string"==typeof e){let i=Ia(e);for(let e=0;e{for(let i=0;i(this.data[t]&&(e[t]=this.data[t].text()),e),{})}};Object.keys(Ra).forEach(e=>{Ma.prototype[e]=Ra[e]}),Ma.prototype.data=Ma.prototype.keyValue,Ma.prototype.template=Ma.prototype.type,Ma.prototype.images=Ma.prototype.image;var Ua=Ma;const Ba=Ee.fromText,Fa={text:function(){let e=this._text||"";return Ba(e).text()},json:function(){return this.data||{}},wikitext:function(){return this.wiki||""}},Ka=function(e,t="",i=""){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"_text",{enumerable:!1,value:t}),Object.defineProperty(this,"wiki",{enumerable:!1,value:i})};Object.keys(Fa).forEach(e=>{Ka.prototype[e]=Fa[e]});var Wa=Ua,Za=Ka;const Ha=/^(cite |citation)/i,Ya={citation:!0,refn:!0,harvnb:!0,source:!0};var Ga=Jt,Va=Pa,Ja=function(e,t){let i={infoboxes:[],templates:[],references:[]};return e.forEach(e=>{let a=e.json,n=a.template||a.type||a.name;if(!0!==Ya[n]&&!0!==Ha.test(n))return"infobox"===a.template&&"yes"!==a.subbox?(a.domain=t,a.data=a.data||{},void i.infoboxes.push(new Wa(a,e.wiki))):void i.templates.push(new Za(a,e.text,e.wiki));i.references.push(new Ie(a,e.wiki))}),i};const Xa=Ee.fromText;var Qa=function(e,t){let{list:i,wiki:a}=function(e,t){let i=[],a=Ga(e);const n=function(a,r){a.parent=r,a.children&&a.children.length>0&&a.children.forEach(e=>n(e,a));let[o,s]=Va(a,t);a.wiki=o,s&&i.push({name:a.name,wiki:a.body,text:o,json:s});const l=function(e,t,i){e.parent&&(e.parent.body=e.parent.body.replace(t,i),l(e.parent,t,i))};l(a,a.body,a.wiki),e=e.replace(a.body,a.wiki)};return a.forEach(e=>n(e,null)),a.forEach(t=>{e=e.replace(t.body,t.wiki)}),{list:i,wiki:e}}(e._wiki,t),n=t?t._domain:null,{infoboxes:r,references:o,templates:s}=Ja(i,n);e._infoboxes=e._infoboxes||[],e._references=e._references||[],e._templates=e._templates||[],e._infoboxes=e._infoboxes.concat(r),e._references=e._references.concat(o),e._templates=e._templates.concat(s),e._wiki=a};const en={coach:["team","year","g","w","l","w-l%","finish","pg","pw","pl","pw-l%"],player:["year","team","gp","gs","mpg","fg%","3p%","ft%","rpg","apg","spg","bpg","ppg"],roster:["player","gp","gs","mpg","fg%","3fg%","ft%","rpg","apg","spg","bpg","ppg"]};var tn=function(e){e.text=e.text.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi,t=>{let i=function(e){let t=["#","date","opponent","score","win","loss","save","attendance","record"];return!0===/\|stadium=y/i.test(e)&&t.splice(7,0,"stadium"),!0===/\|time=y/i.test(e)&&t.splice(7,0,"time"),!0===/\|box=y/i.test(e)&&t.push("box"),t}(t);t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{mlb game log (section|month) end\}\}/i,"");let a="! "+i.join(" !! "),n=ct("{|\n"+a+"\n"+t+"\n|}");return n=n.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"mlb game log section",data:n}),""})};let an=["res","record","opponent","method","event","date","round","time","location","notes"];const nn=Ee.fromText;var rn=function(e,t,i){e.text=e.text.replace(/]*)>([\s\S]+)<\/gallery>/g,(a,n,r)=>{let o=r.split(/\n/g);return o=o.filter(e=>e&&""!==e.trim()),o=o.map(e=>{let i=e.split(/\|/),a={file:i[0].trim(),lang:t.lang(),domain:t.domain()},n=new $t(a).json(),r=i.slice(1).join("|");return""!==r&&(n.caption=Xa(r)),n}),o.length>0&&e.templates.push({template:"gallery",images:o,pos:i.title}),""})},on=function(e){e.text=e.text.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi,t=>{let i={_wiki:t,_templates:[]};Qa(i);let a=i._templates.map(e=>e.json()),n=a.find(e=>"election box"===e.template)||{},r=a.filter(e=>"election box candidate"===e.template),o=a.find(e=>"election box gain"===e.template||"election box hold"===e.template)||{};return(r.length>0||o)&&e.templates.push({template:"election box",title:n.title,candidates:r,summary:o.data}),""})},sn=function(e){e.text=e.text.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi,(t,i)=>{t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{s-end\}\}/,""),i=i.toLowerCase().trim();let a="! "+en[i].join(" !! "),n=ct("{|\n"+a+"\n"+t+"\n|}");return n=n.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"NBA "+i+" statistics",data:n}),""})},ln=tn,cn=function(e){e.text=e.text.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi,t=>{t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{end\}\}/i,"");let i="! "+an.join(" !! "),a=ct("{|\n"+i+"\n"+t+"\n|}");return a=a.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"mma record start",data:a}),""})},un=function(e){e.text=e.text.replace(/]*)>([\s\S]+)<\/math>/g,(t,i,a)=>{let n=nn(a).text();return e.templates.push({template:"math",formula:n,raw:a}),n&&n.length<12?n:""}),e.text=e.text.replace(/]*)>([\s\S]+?)<\/chem>/g,(t,i,a)=>(e.templates.push({template:"chem",data:a}),""))};var pn=X,mn=He;const dn={heading:mn,table:dt,paragraphs:Kt,templates:Qa,references:Fe,startEndTemplates:function(e,t){const i={templates:[],text:e._wiki};return on(i),rn(i,t,e),un(i),ln(i),cn(i),sn(i),i.templates=i.templates.map(e=>new Za(e)),i}},hn={tables:!0,references:!0,paragraphs:!0,templates:!0,infoboxes:!0};class gn{constructor(e,t){let i={doc:t,title:e.title||"",depth:e.depth,wiki:e.wiki||"",templates:[],tables:[],infoboxes:[],references:[],paragraphs:[]};Object.keys(i).forEach(e=>{Object.defineProperty(this,"_"+e,{enumerable:!1,writable:!0,value:i[e]})});const a=dn.startEndTemplates(this,t);this._wiki=a.text,this._templates=this._templates.concat(a.templates),dn.references(this),dn.templates(this,t),dn.table(this),dn.paragraphs(this,t)}title(){return this._title||""}index(){if(!this._doc)return null;let e=this._doc.sections().indexOf(this);return-1===e?null:e}depth(){return this._depth}indentation(){return this.depth()}sentences(){return this.paragraphs().reduce((e,t)=>e.concat(t.sentences()),[])}paragraphs(){return this._paragraphs||[]}links(e){let t=[];if(this.infoboxes().forEach(e=>{t.push(e.links())}),this.sentences().forEach(e=>{t.push(e.links())}),this.tables().forEach(e=>{t.push(e.links())}),this.lists().forEach(e=>{t.push(e.links())}),t=t.reduce((e,t)=>e.concat(t),[]).filter(e=>void 0!==e),"string"==typeof e){let i=t.find(t=>t.page().toLowerCase()===e.toLowerCase());return void 0===i?[]:[i]}return t}tables(){return this._tables||[]}templates(e){let t=this._templates||[];return"string"==typeof e?(e=e.toLowerCase(),t.filter(t=>t.data.template===e||t.data.name===e)):t}infoboxes(e){let t=this._infoboxes||[];return"string"==typeof e?(e=(e=e.replace(/^infobox /i,"")).trim().toLowerCase(),t.filter(t=>t._type===e)):t}coordinates(){return[...this.templates("coord"),...this.templates("coor")].map(e=>e.json())}lists(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.lists())}),e}interwiki(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.interwiki())}),e}images(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.images())}),e}references(){return this._references||[]}remove(){if(!this._doc)return null;let e={};e[this.title()]=!0,this.children().forEach(t=>e[t.title()]=!0);let t=this._doc.sections();return t=t.filter(t=>!0!==e.hasOwnProperty(t.title())),t=t.filter(t=>!0!==e.hasOwnProperty(t.title())),this._doc._sections=t,this._doc}nextSibling(){if(!this._doc)return null;let e=this._doc.sections();for(let t=(this.index()||0)+1;tthis.depth())for(let e=i+1;ethis.depth();e+=1)a.push(t[e]);return"string"==typeof e?a.find(t=>t.title().toLowerCase()===e.toLowerCase()):a}sections(e){return this.children(e)}parent(){if(!this._doc)return null;let e=this._doc.sections();for(let t=this.index()||0;t>=0;t-=1)if(e[t]&&e[t].depth()t.text(e)).join("\n\n")}wikitext(){return this._wiki}json(e){return e=d(e,hn),pn(this,e)}}gn.prototype.citations=gn.prototype.references;const fn={sentences:"sentence",paragraphs:"paragraph",links:"link",tables:"table",templates:"template",infoboxes:"infobox",coordinates:"coordinate",lists:"list",images:"image",references:"reference",citations:"citation"};Object.keys(fn).forEach(e=>{let t=fn[e];gn.prototype[t]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]||null}});var kn=gn;const bn=new RegExp("^("+k.references.join("|")+"):?","i"),wn=/(?:\n|^)(={2,5}.{1,200}?={2,5})/g,yn={heading:mn};var $n=function(e){let t=[],i=e._wiki.split(wn);for(let a=0;a!0!==bn.test(t.title())||t.paragraphs().length>0||t.templates().length>0||(e[i+1]&&e[i+1].depth()>t.depth()&&(e[i+1]._depth-=1),!1))}(t)};const xn=new RegExp("\\[\\[:?("+k.categories.join("|")+"):(.{2,178}?)]](w{0,10})","gi"),vn=new RegExp("^\\[\\[:?("+k.categories.join("|")+"):","gi");var jn=m,_n=g,zn=x,On=U,En=H;const Sn={section:$n,categories:function(e){const t=[];let i=e.match(xn);i&&i.forEach((function(e){(e=(e=(e=e.replace(vn,"")).replace(/\|?[ *]?\]\]$/,"")).replace(/\|.*/,""))&&!e.match(/[[\]]/)&&t.push(e.trim())}));const a=e.replace(xn,"");return[t,a]}},Cn={tables:!0,lists:!0,paragraphs:!0};class Nn{constructor(e,t){let i={pageID:(t=t||{}).pageID||t.id||null,namespace:t.namespace||t.ns||null,lang:t.lang||t.language||null,domain:t.domain||null,title:t.title||null,type:"page",redirectTo:null,wikidata:t.wikidata||null,wiki:e||"",categories:[],sections:[],coordinates:[]};if(Object.keys(i).forEach(e=>{Object.defineProperty(this,"_"+e,{enumerable:!1,writable:!0,value:i[e]})}),!0===On.isRedirect(this._wiki)){this._type="redirect",this._redirectTo=On.parse(this._wiki);const[e,t]=Sn.categories(this._wiki);return this._categories=e,void(this._wiki=t)}this._wiki=En(this._wiki);const[a,n]=Sn.categories(this._wiki);this._categories=a,this._wiki=n,this._sections=Sn.section(this)}title(e){if(void 0!==e)return this._title=e,e;if(this._title)return this._title;let t=null,i=this.sentence();return i&&(t=i.bold()),t}pageID(e){return void 0!==e&&(this._pageID=e),this._pageID||null}wikidata(e){return void 0!==e&&(this._wikidata=e),this._wikidata||null}domain(e){return void 0!==e&&(this._domain=e),this._domain||null}language(e){return void 0!==e&&(this._lang=e),this._lang||null}url(){let e=this.title();if(!e)return null;let t=this.language()||"en",i=this.domain()||"wikipedia.org";return e=e.replace(/ /g,"_"),e=encodeURIComponent(e),`https://${t}.${i}/wiki/${e}`}namespace(e){return void 0!==e&&(this._namespace=e),this._namespace||null}isRedirect(){return"redirect"===this._type}redirectTo(){return this._redirectTo}isDisambiguation(){return zn(this)}categories(e){let t=this._categories||[];return"number"==typeof e?[t[e]]:t}sections(e){let t=this._sections||[];if(t.forEach(e=>{e._doc=this}),"string"==typeof e){let i=e.toLowerCase().trim();return t.filter(e=>e.title().toLowerCase()===i)}return"number"==typeof e?[t[e]]:t}paragraphs(e){let t=[];return this.sections().forEach(e=>{t=t.concat(e.paragraphs())}),"number"==typeof e?[t[e]]:t}sentences(e){let t=[];return this.sections().forEach(e=>{t=t.concat(e.sentences())}),"number"==typeof e?[t[e]]:t}images(e){let t=jn(this,"images",null);return this.infoboxes().forEach(e=>{let i=e.image();i&&t.unshift(i)}),this.templates().forEach(e=>{"gallery"===e.data.template&&(e.data.images=e.data.images||[],e.data.images.forEach(e=>{e instanceof $t||(e.language=this.language(),e.domain=this.domain(),e=new $t(e)),t.push(e)}))}),"number"==typeof e?[t[e]]:t}links(e){return jn(this,"links",e)}interwiki(e){return jn(this,"interwiki",e)}lists(e){return jn(this,"lists",e)}tables(e){return jn(this,"tables",e)}templates(e){return jn(this,"templates",e)}references(e){return jn(this,"references",e)}citations(e){return this.references(e)}coordinates(e){return jn(this,"coordinates",e)}infoboxes(e){let t=jn(this,"infoboxes",e);return t=t.sort((e,t)=>Object.keys(e.data).length>Object.keys(t.data).length?-1:1),t}text(e){if(e=d(e,Cn),!0===this.isRedirect())return"";return this.sections().map(t=>t.text(e)).join("\n\n")}json(e){return e=d(e,Cn),_n(this,e)}wikitext(){return this._wiki||""}debug(){return console.log("\n"),this.sections().forEach(e=>{let t=" - ";for(let i=0;i{let t=qn[e];Nn.prototype[t]=function(t){return this[e](t)[0]||null}}),Nn.prototype.lang=Nn.prototype.language,Nn.prototype.ns=Nn.prototype.namespace,Nn.prototype.plaintext=Nn.prototype.text,Nn.prototype.isDisambig=Nn.prototype.isDisambiguation,Nn.prototype.citations=Nn.prototype.references,Nn.prototype.redirectsTo=Nn.prototype.redirectTo,Nn.prototype.redirect=Nn.prototype.redirectTo,Nn.prototype.redirects=Nn.prototype.redirectTo;var Tn=Nn;const{isArray:Ln}=r;var Pn=a,An=n,Dn=u,In=p,Mn=function(e,t){let i=(e=e.filter(e=>e)).map(e=>new Tn(e.wiki,e.meta));return 0===i.length?null:Ln(t)||1!==i.length?i:i[0]},Rn=function(e){let t,i=e.userAgent||e["User-Agent"]||e["Api-User-Agent"]||"User of the wtf_wikipedia library";return t=e.noOrigin?"":e.origin||e.Origin||"*",{method:"GET",headers:{"Content-Type":"application/json","Api-User-Agent":i,"User-Agent":i,Origin:t,"Accept-Encoding":"gzip"},redirect:"follow"}};const Un=/^https?:\/\//,Bn={lang:"en",wiki:"wikipedia",domain:void 0,follow_redirects:!0,path:"api.php"};var Fn=function(e,t,i){"string"==typeof t&&(t={lang:t}),(t={...Bn,...t}).title=e,"string"==typeof e&&Un.test(e)&&(t={...t,...An(e)});const a=Dn(t),n=Rn(t);return Pn(a,n).then(e=>e.json()).then(a=>{let n=In(a,t);return n=Mn(n,e),i&&i(null,n),n}).catch(e=>(console.error(e),i&&i(e,null),null))};const Kn=function(e,t){return new Tn(e,t)},Wn={Doc:Tn,Section:kn,Paragraph:Rt,Sentence:ye,Image:$t,Infobox:Wa,Link:ie,List:qt,Reference:Ie,Table:ut,Template:Za,http:function(e,t){return Pn(e,t).then((function(e){return e.json()}))},wtf:Kn};return Kn.fetch=function(e,t,i){return Fn(e,t,i)},Kn.plugin=Kn.extend=function(e){return e(Wn,Na,ei),this},Kn.version="9.0.1",Kn})); +!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).wtf=t()}(this,(function(){"use strict";function e(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(i){var a=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,a.get?a:{enumerable:!0,get:function(){return e[i]}})})),t}var t=e(Object.freeze({__proto__:null,default:function(e,t){return t=t||{},new Promise((function(i,a){var n=new XMLHttpRequest,r=[],o=[],s={},l=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:l,headers:{keys:function(){return r},entries:function(){return o},get:function(e){return s[e.toLowerCase()]},has:function(e){return e.toLowerCase()in s}}}};for(var c in n.open(t.method||"get",e,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(e,t,i){r.push(t=t.toLowerCase()),o.push([t,i]),s[t]=s[t]?s[t]+","+i:i})),i(l())},n.onerror=a,n.withCredentials="include"==t.credentials,t.headers)n.setRequestHeader(c,t.headers[c]);n.send(t.body||null)}))}})),i=self.fetch||(self.fetch=t.default||t);var a=function(e){let t=new URL(e),i=t.pathname.replace(/^\/(wiki\/)?/,"");return i=decodeURIComponent(i),{domain:t.host,title:i}};var n={capitalise:function(e){return e&&"string"==typeof e?e.charAt(0).toUpperCase()+e.slice(1):""},trim_whitespace:function(e){return e&&"string"==typeof e?e=(e=(e=(e=e.replace(/^\s+/,"")).replace(/\s+$/,"")).replace(/ {2}/," ")).replace(/\s, /,", "):""},isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},isObject:function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)}};const{isArray:r}=n,o=/(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/,s={action:"query",prop:"revisions|pageprops",rvprop:"content",maxlag:5,rvslots:"main",origin:"*",format:"json",redirects:"true"},l=e=>e.replace(/ /g,"_").trim();var c=function(e){let t=Object.assign({},s),i="";if(e.domain){let t=o.test(e.domain)?"w/api.php":e.path;i="https://".concat(e.domain,"/").concat(t,"?")}else{if(!e.lang||!e.wiki)return"";i="https://".concat(e.lang,".").concat(e.wiki,".org/w/api.php?")}e.follow_redirects||delete t.redirects;let a=e.title;if("number"==typeof a)t.pageids=a;else if("string"==typeof a)t.titles=l(a);else if(void 0!==a&&r(a)&&"number"==typeof a[0])t.pageids=a.join("|");else{if(void 0===a||!0!==r(a)||"string"!=typeof a[0])return"";t.titles=a.map(l).join("|")}return"".concat(i).concat((n=t,Object.entries(n).map((e=>{let[t,i]=e;return"".concat(encodeURIComponent(t),"=").concat(encodeURIComponent(i))})).join("&")));var n};var u=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=Object.keys(e.query.pages);return i.map((i=>{let a=e.query.pages[i]||{};if(a.hasOwnProperty("missing")||a.hasOwnProperty("invalid"))return null;let n=a.revisions[0]["*"];!n&&a.revisions[0].slots&&(n=a.revisions[0].slots.main["*"]),a.pageprops=a.pageprops||{};let r=t.domain;return!r&&t.wiki&&(r="".concat(t.wiki,".org")),{wiki:n,meta:Object.assign({},t,{title:a.title,pageID:a.pageid,namespace:a.ns,domain:r,wikidata:a.pageprops.wikibase_item,description:a.pageprops["wikibase-shortdesc"]})}}))};var p=function(e,t,i){let a=[];return e.sections().forEach((e=>{let n=[];n="string"==typeof i?e[t](i):e[t](),n.forEach((e=>{a.push(e)}))})),"number"==typeof i?void 0===a[i]?[]:[a[i]]:a};var d=function(e,t){return Object.assign({},t,e)};const m=d,h={title:!0,sections:!0,pageID:!0,categories:!0};var g=function(e,t){let i={};return(t=m(t,h)).title&&(i.title=e.title()),t.pageID&&(i.pageID=e.pageID()),t.categories&&(i.categories=e.categories()),t.sections&&(i.sections=e.sections().map((e=>e.json(t)))),!0===e.isRedirect()&&(i.isRedirect=!0,i.redirectTo=e.redirectTo(),i.sections=[]),t.coordinates&&(i.coordinates=e.coordinates()),t.infoboxes&&(i.infoboxes=e.infoboxes().map((e=>e.json(t)))),t.images&&(i.images=e.images().map((e=>e.json(t)))),t.plaintext&&(i.plaintext=e.text(t)),(t.citations||t.references)&&(i.references=e.references()),i},f={categories:["category","abdeeling","bólkur","catagóir","categori","categoria","categoria","categoría","categorîa","categorìa","catégorie","categorie","catègorie","category","categuria","catigurìa","class","ẹ̀ka","flocc","flocc","flokkur","grup","jamii","kaarangay","kateggoría","kategooria","kategori","kategorî","kategoria","kategória","kategorie","kategoriija","kategorija","kategorio","kategoriya","kategoriýa","kategoriye","kategory","kategorya","kateqoriya","katiguriya","klad","luokka","ñemohenda","roinn","ronney","rummad","setensele","sokajy","sumut","thể","turkum","категорија","категория","категорія","катэгорыя","төркем","קטגוריה","تصنيف","تۈر","رده","श्रेणी","श्रेणी","বিষয়শ্রেণী","หมวดหมู่","분류","분류","分类"],disambig_templates:["dab","disamb","disambig","disambiguation","aðgreining","aimai","ałtsʼáʼáztiin","anlam ayrımı","anlam ayrımı","apartigilo","argipen","begriepskloorenge","begriffsklärung","begriffsklärung","begriffsklärung","begriffsklearung","bisongidila","bkl","bokokani","caddayn","clerheans","cudakirin","čvor","db","desambig","desambigación","desambiguação","desambiguació","desambiguación","desambiguáncia","desambiguasion","desambiguassiù","desambigui","dezambiguizare","dəqiqləşdirmə","disambigua","disambigua","disambigua","disambìgua","disambigua","disambiguasi","disambiguasi","discretiva","disheñvelout","disingkek","dixanbigua","dixebra","diżambigwazzjoni","doorverwijspagina","dp","dp","dubbelsinnig","dudalipen","dv","egyért","fleiri týdningar","fleirtyding","flertydig","förgrening","gì-ngiê","giklaro","gwahaniaethu","homonimo","homónimos","homonymie","huaʻōlelo puana like","idirdhealú","khu-pia̍t","kthjellim","kujekesa","maana","maneo bin","mehrdüdig begreep","menm non","muardüüdag artiikel","neibetsjuttings","nozīmju atdalīšana","nuorodinis","nyahkekaburan","omonimeye","omonimia","page dé frouque","paglilinaw","panangilawlawag","pansayod","pejy mitovy anarana","peker","razdvojba","razločitev","razvrstavanje","reddaghey","rozcestník","rozlišovacia stránka","sclerir noziun","selvendyssivu","soilleireachadh","suzmunski","täpsustuslehekülg","täsmennyssivu","telplänov","tlahtolmelahuacatlaliztli","trang định hướng","ujednoznacznienie","verdudeliking","wěcejwóznamowosć","wjacezmyslnosć","zambiguaçon","zeimeibu škiršona","αποσαφήνιση","айрық","аҵакырацәа","вишезначна одредница","ибҳомзудоӣ","кёб магъаналы","күп мәгънәләр","күп мәғәнәлелек","мъногосъмꙑслиѥ","неадназначнасць","неадназначнасьць","неоднозначность","олон удхатай","појаснување","пояснение","са шумуд манавал","салаа утгатай","суолталар","текмаанисиздик","цо магіна гуреб","чеперушка","чолхалла","шуко ончыктымаш-влак","მრავალმნიშვნელოვანი","բազմիմաստութիւն","բազմիմաստություն","באדייטן","פירושונים","ابهام‌زدایی","توضيح","توضيح","دقیقلشدیرمه","ڕوونکردنەوە","سلجهائپ","ضد ابہام","گجگجی بیری","نامبهمېدنه","መንታ","अस्पष्टता","बहुअर्थी","बहुविकल्पी शब्द","দ্ব্যর্থতা নিরসন","ਗੁੰਝਲ-ਖੋਲ੍ਹ","સંદિગ્ધ શીર્ષક","பக்கவழி நெறிப்படுத்தல்","అయోమయ నివృత్తి","ದ್ವಂದ್ವ ನಿವಾರಣೆ","വിവക്ഷകൾ","වක්‍රෝත්ති","แก้ความกำกวม","သံတူကြောင်းကွဲ","ណែនាំ","동음이의","扤清楚","搞清楚","曖昧さ回避","消歧义","釋義","gestion dj'omònim","sut'ichana qillqa"],disambig_titles:["disambiguation","homonymie","توضيح","desambiguação","Begriffsklärung","disambigua","曖昧さ回避","消歧義","搞清楚","значения","ابهام‌زدایی","د ابہام","동음이의","dubbelsinnig","այլ կիրառումներ","ujednoznacznienie"],images:["file","image","चित्र","archivo","attēls","berkas","bestand","datei","dosiero","dosya","fájl","fasciculus","fichier","fil","fitxategi","fitxer","gambar","imagem","imej","immagine","larawan","lêer","plik","restr","slika","wêne","wobraz","выява","податотека","слика","файл","სურათი","պատկեր","קובץ","پرونده","دوتنه","ملف","وێنە","चित्र","ไฟล์","파일","ファイル"],infoboxes:["infobox","anfo","anuāmapa","bilgi kutusu","bilgi","bilgiquti","boaty","boestkelaouiñ","bosca","capsa","diehtokássa","faktamall","ficha","generalni","gwybodlen3","info","infobokis","infoboks","infochascha","infokašćik","infokast","infokutija","infolentelė","infopolje","informkesto","infoskreine","infotaula","inligtingskas","inligtingskas3","inligtingskas4","kishtey","kotak","tertcita","tietolaatikko","yerleşim bilgi kutusu","ynfoboks","πλαίσιο","акарточка","аҥа","инфобокс","инфокутија","инфокутия","інфобокс","канадский","картка","карточка","карточка2","карточкарус","картуш","қуттӣ","ინფოდაფა","տեղեկաքարտ","אינפאקעסטל","תבנית","بطاقة","ڄاڻخانو","خانہ","لغة","ज्ञानसन्दूक","তথ্যছক","ਜਾਣਕਾਰੀਡੱਬਾ","సమాచారపెట్టె","තොරතුරුකොටුව","กล่องข้อมูล","ប្រអប់ព័ត៌មាន","정보상자","明細"],redirects:["adkas","aýdaw","doorverwijzing","ohjaus","patrz","přesměruj","redirección","redireccion","redirección","redirecionamento","redirect","redirection","redirection","rinvia","tilvísun","uudelleenohjaus","weiterleitung","weiterleitung","yönlendi̇r","yönlendirme","yönlendi̇rme","ανακατευθυνση","айдау","перанакіраваньне","перенаправлення","пренасочување","преусмери","преусмјери","تغییر_مسیر","تغییرمسیر","تغییرمسیر","เปลี่ยนทาง","ប្តូរទីតាំងទៅ","転送","重定向"],references:["references","reference","einzelnachweise","referencias","références","notes et références","脚注","referenser","bronnen","примечания"]};let k=" disambiguation";const b=f,w=["dab","dab","disamb","disambig","geodis","hndis","setindex","ship index","split dab","sport index","wp disambig","disambiguation cleanup","airport"+k,"biology"+k,"call sign"+k,"caselaw"+k,"chinese title"+k,"genus"+k,"hospital"+k,"lake index","letter"+k,"letter-number combination"+k,"mathematical"+k,"military unit"+k,"mountainindex","number"+k,"phonetics"+k,"place name"+k,"portal"+k,"road"+k,"school"+k,"species latin name abbreviation"+k,"species latin name"+k,"station"+k,"synagogue"+k,"taxonomic authority"+k,"taxonomy"+k].reduce(((e,t)=>(e[t]=!0,e)),{}),y=new RegExp(". \\(("+b.disambig_titles.join("|")+")\\)$","i"),x=b.disambig_templates.reduce(((e,t)=>(e[t]=!0,e)),{}),v=function(e){if(!e)return!1;let t=e.text();return!(null===t||!t[0]||!0!==/. may (also)? refer to\b/i.test(t))};var $=function(e){if(e.templates().map((e=>e.json())).find((e=>w.hasOwnProperty(e.template)||x.hasOwnProperty(e.template))))return!0;let t=e.title();return!(!t||!0!==y.test(t))||(!0===v(e.sentence(0))||!0===v(e.sentence(1)))};const j=d,_={caption:!0,alt:!0,links:!0,thumb:!0,url:!0};const z=function(e,t){t=j(t,_);let i={file:e.file()};return!1!==t.thumb&&(i.thumb=e.thumbnail()),!1!==t.url&&(i.url=e.url()),!1!==t.caption&&e.data.caption&&(i.caption=e.caption(),!1!==t.links&&e.data.caption.links()&&(i.links=e.links())),!1!==t.alt&&e.data.alt&&(i.alt=e.alt()),i},O=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},E={file(){return this.data.file||""},alt(){let e=this.data.alt||this.data.file||"";return e=e.replace(/^(file|image):/i,""),e=e.replace(/\.(jpg|jpeg|png|gif|svg)/i,""),e.replace(/_/g," ")},caption(){return this.data.caption?this.data.caption.text():""},links(){return this.data.caption?this.data.caption.links():[]},url(){let e=function(e){let t=function(e){let t=e.replace(/^(image|file?):/i,"");return t=t.charAt(0).toUpperCase()+t.substring(1),t=t.trim().replace(/ /g,"_"),t}(e);return t=encodeURIComponent(t),t}(this.file()),t=this.data.domain||"wikipedia.org";return"https://".concat(t,"/").concat("wiki/Special:Redirect/file","/").concat(e)},thumbnail(e){return e=e||300,this.url()+"?width="+e},format(){let e=this.file().split(".");return e[e.length-1]?e[e.length-1].toLowerCase():null},json:function(e){return z(this,e=e||{})},text:function(){return""},wikitext:function(){return this.data.wiki||""}};Object.keys(E).forEach((e=>{O.prototype[e]=E[e]})),O.prototype.src=O.prototype.url,O.prototype.thumb=O.prototype.thumbnail;var S=O,C={aa:"Afar",ab:"Аҧсуа",af:"Afrikaans",ak:"Akana",als:"Alemannisch",am:"አማርኛ",an:"Aragonés",ang:"Englisc",ar:"العربية",arc:"ܣܘܪܬ",as:"অসমীয়া",ast:"Asturianu",av:"Авар",ay:"Aymar",az:"Azərbaycanca",ba:"Башҡорт",bar:"Boarisch","bat-smg":"Žemaitėška",bcl:"Bikol",be:"Беларуская","be-x-old":"ltr",bg:"Български",bh:"भोजपुरी",bi:"Bislama",bm:"Bamanankan",bn:"বাংলা",bo:"བོད་ཡིག",bpy:"ltr",br:"Brezhoneg",bs:"Bosanski",bug:"ᨅᨔ",bxr:"ltr",ca:"Català",cdo:"Chinese",ce:"Нохчийн",ceb:"Sinugboanong",ch:"Chamoru",cho:"Choctaw",chr:"ᏣᎳᎩ",chy:"Tsetsêhestâhese",co:"Corsu",cr:"Nehiyaw",cs:"Česky",csb:"Kaszëbsczi",cu:"Slavonic",cv:"Чăваш",cy:"Cymraeg",da:"Dansk",de:"Deutsch",diq:"Zazaki",dsb:"ltr",dv:"ދިވެހިބަސް",dz:"ཇོང་ཁ",ee:"Ɛʋɛ",far:"فارسی",el:"Ελληνικά",en:"English",eo:"Esperanto",es:"Español",et:"Eesti",eu:"Euskara",ext:"Estremeñu",ff:"Fulfulde",fi:"Suomi","fiu-vro":"Võro",fj:"Na",fo:"Føroyskt",fr:"Français",frp:"Arpitan",fur:"Furlan",fy:"ltr",ga:"Gaeilge",gan:"ltr",gd:"ltr",gil:"Taetae",gl:"Galego",gn:"Avañe'ẽ",got:"gutisk",gu:"ગુજરાતી",gv:"Gaelg",ha:"هَوُسَ",hak:"ltr",haw:"Hawai`i",he:"עברית",hi:"हिन्दी",ho:"ltr",hr:"Hrvatski",ht:"Krèyol",hu:"Magyar",hy:"Հայերեն",hz:"Otsiherero",ia:"Interlingua",id:"Bahasa",ie:"Interlingue",ig:"Igbo",ii:"ltr",ik:"Iñupiak",ilo:"Ilokano",io:"Ido",is:"Íslenska",it:"Italiano",iu:"ᐃᓄᒃᑎᑐᑦ",ja:"日本語",jbo:"Lojban",jv:"Basa",ka:"ქართული",kg:"KiKongo",ki:"Gĩkũyũ",kj:"Kuanyama",kk:"Қазақша",kl:"Kalaallisut",km:"ភាសាខ្មែរ",kn:"ಕನ್ನಡ",khw:"کھوار",ko:"한국어",kr:"Kanuri",ks:"कश्मीरी",ksh:"Ripoarisch",ku:"Kurdî",kv:"Коми",kw:"Kernewek",ky:"Kırgızca",la:"Latina",lad:"Dzhudezmo",lan:"Leb",lb:"Lëtzebuergesch",lg:"Luganda",li:"Limburgs",lij:"Líguru",lmo:"Lumbaart",ln:"Lingála",lo:"ລາວ",lt:"Lietuvių",lv:"Latviešu","map-bms":"Basa",mg:"Malagasy",man:"官話",mh:"Kajin",mi:"Māori",min:"Minangkabau",mk:"Македонски",ml:"മലയാളം",mn:"Монгол",mo:"Moldovenească",mr:"मराठी",ms:"Bahasa",mt:"bil-Malti",mus:"Muskogee",my:"Myanmasa",na:"Dorerin",nah:"Nahuatl",nap:"Nnapulitano",nd:"ltr",nds:"Plattdüütsch","nds-nl":"Saxon",ne:"नेपाली",new:"नेपालभाषा",ng:"Oshiwambo",nl:"Nederlands",nn:"ltr",no:"Norsk",nr:"ltr",nso:"ltr",nrm:"Nouormand",nv:"Diné",ny:"Chi-Chewa",oc:"Occitan",oj:"ᐊᓂᔑᓈᐯᒧᐎᓐ",om:"Oromoo",or:"ଓଡ଼ିଆ",os:"Иронау",pa:"ਪੰਜਾਬੀ",pag:"Pangasinan",pam:"Kapampangan",pap:"Papiamentu",pdc:"ltr",pi:"Pāli",pih:"Norfuk",pl:"Polski",pms:"Piemontèis",ps:"پښتو",pt:"Português",qu:"Runa",rm:"ltr",rmy:"Romani",rn:"Kirundi",ro:"Română","roa-rup":"Armâneashti",ru:"Русский",rw:"Kinyarwandi",sa:"संस्कृतम्",sc:"Sardu",scn:"Sicilianu",sco:"Scots",sd:"सिनधि",se:"ltr",sg:"Sängö",sh:"Srpskohrvatski",si:"සිංහල",simple:"ltr",sk:"Slovenčina",sl:"Slovenščina",sm:"Gagana",sn:"chiShona",so:"Soomaaliga",sq:"Shqip",sr:"Српски",ss:"SiSwati",st:"ltr",su:"Basa",sv:"Svenska",sw:"Kiswahili",ta:"தமிழ்",te:"తెలుగు",tet:"Tetun",tg:"Тоҷикӣ",th:"ไทย",ti:"ትግርኛ",tk:"Туркмен",tl:"Tagalog",tlh:"tlhIngan-Hol",tn:"Setswana",to:"Lea",tpi:"ltr",tr:"Türkçe",ts:"Xitsonga",tt:"Tatarça",tum:"chiTumbuka",tw:"Twi",ty:"Reo",udm:"Удмурт",ug:"Uyƣurqə",uk:"Українська",ur:"اردو",uz:"Ўзбек",ve:"Tshivenḓa",vi:"Việtnam",vec:"Vèneto",vls:"ltr",vo:"Volapük",wa:"Walon",war:"Winaray",wo:"Wollof",xal:"Хальмг",xh:"isiXhosa",yi:"ייִדיש",yo:"Yorùbá",za:"Cuengh",zh:"中文","zh-classical":"ltr","zh-min-nan":"Bân-lâm-gú","zh-yue":"粵語",zu:"isiZulu"};const N=".wikipedia.org/wiki/$1",q=".wikimedia.org/wiki/$1",L="www.";var T={acronym:L+"acronymfinder.com/$1.html",advisory:"advisory"+q,advogato:L+"advogato.org/$1",aew:"wiki.arabeyes.org/$1",appropedia:L+"appropedia.org/$1",aquariumwiki:L+"theaquariumwiki.com/$1",arborwiki:"localwiki.org/ann-arbor/$1",arxiv:"arxiv.org/abs/$1",atmwiki:L+"otterstedt.de/wiki/index.php/$1",baden:L+"stadtwiki-baden-baden.de/wiki/$1/",battlestarwiki:"en.battlestarwiki.org/wiki/$1",bcnbio:"historiapolitica.bcn.cl/resenas_parlamentarias/wiki/$1",beacha:L+"beachapedia.org/$1",betawiki:"translatewiki.net/wiki/$1",bibcode:"adsabs.harvard.edu/abs/$1",bibliowiki:"wikilivres.org/wiki/$1",bluwiki:"bluwiki.com/go/$1",blw:"britainloves"+N,botwiki:"botwiki.sno.cc/wiki/$1",boxrec:L+"boxrec.com/media/index.php?$1",brickwiki:L+"brickwiki.info/wiki/$1",bugzilla:"bugzilla.wikimedia.org/show_bug.cgi?id=$1",bulba:"bulbapedia.bulbagarden.net/wiki/$1",c:"commons"+q,c2:"c2.com/cgi/wiki?$1",c2find:"c2.com/cgi/wiki?FindPage&value=$1",cache:L+"google.com/search?q=cache:$1","ĉej":"esperanto.blahus.cz/cxej/vikio/index.php/$1",cellwiki:"cell.wikia.com/wiki/$1",centralwikia:"community.wikia.com/wiki/$1",chej:"esperanto.blahus.cz/cxej/vikio/index.php/$1",choralwiki:L+"cpdl.org/wiki/index.php/$1",citizendium:"en.citizendium.org/wiki/$1",ckwiss:L+"ck-wissen.de/ckwiki/index.php?title=$1",comixpedia:L+"comixpedia.org/index.php?title=$1",commons:"commons"+q,communityscheme:"community.schemewiki.org/?c=s&key=$1",communitywiki:"communitywiki.org/$1",comune:"rete.comuni-italiani.it/wiki/$1",creativecommons:"creativecommons.org/licenses/$1",creativecommonswiki:"wiki.creativecommons.org/$1",cxej:"esperanto.blahus.cz/cxej/vikio/index.php/$1",dcc:L+"dccwiki.com/$1",dcdatabase:"dc.wikia.com/$1",dcma:"christian-morgenstern.de/dcma/index.php?title=$1",debian:"wiki.debian.org/$1",delicious:L+"delicious.com/tag/$1",devmo:"developer.mozilla.org/en/docs/$1",dictionary:L+"dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1",dict:L+"dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1",disinfopedia:"sourcewatch.org/index.php/$1",distributedproofreaders:L+"pgdp.net/wiki/$1",distributedproofreadersca:L+"pgdpcanada.net/wiki/index.php/$1",dmoz:"curlie.org/$1",dmozs:"curlie.org/search?q=$1",doi:"doi.org/$1",donate:"donate"+q,doom_wiki:"doom.wikia.com/wiki/$1",download:"releases.wikimedia.org/$1",dbdump:"dumps.wikimedia.org/$1/latest/",dpd:"lema.rae.es/dpd/?key=$1",drae:"dle.rae.es/?w=$1",dreamhost:"wiki.dreamhost.com/index.php/$1",drumcorpswiki:L+"drumcorpswiki.com/index.php/$1",dwjwiki:L+"suberic.net/cgi-bin/dwj/wiki.cgi?$1","eĉei":L+"ikso.net/cgi-bin/wiki.pl?$1",ecoreality:L+"EcoReality.org/wiki/$1",ecxei:L+"ikso.net/cgi-bin/wiki.pl?$1",elibre:"enciclopedia.us.es/index.php/$1",emacswiki:L+"emacswiki.org/emacs?$1",encyc:"encyc.org/wiki/$1",energiewiki:L+"netzwerk-energieberater.de/wiki/index.php/$1",englyphwiki:"en.glyphwiki.org/wiki/$1",enkol:"enkol.pl/$1",eokulturcentro:"esperanto.toulouse.free.fr/nova/wikini/wakka.php?wiki=$1",esolang:"esolangs.org/wiki/$1",etherpad:"etherpad.wikimedia.org/$1",ethnologue:L+"ethnologue.com/language/$1",ethnologuefamily:L+"ethnologue.com/show_family.asp?subid=$1",evowiki:"wiki.cotch.net/index.php/$1",exotica:L+"exotica.org.uk/wiki/$1",fanimutationwiki:"wiki.animutationportal.com/index.php/$1",fedora:"fedoraproject.org/wiki/$1",finalfantasy:"finalfantasy.wikia.com/wiki/$1",finnix:L+"finnix.org/$1",flickruser:L+"flickr.com/people/$1",flickrphoto:L+"flickr.com/photo.gne?id=$1",floralwiki:L+"floralwiki.co.uk/wiki/$1",foldoc:"foldoc.org/$1",foundation:"foundation"+q,foundationsite:"wikimediafoundation.org/$1",foxwiki:"fox.wikis.com/wc.dll?Wiki~$1",freebio:"freebiology.org/wiki/$1",freebsdman:L+"FreeBSD.org/cgi/man.cgi?apropos=1&query=$1",freeculturewiki:"wiki.freeculture.org/index.php/$1",freedomdefined:"freedomdefined.org/$1",freefeel:"freefeel.org/wiki/$1",freekiwiki:"wiki.freegeek.org/index.php/$1",freesoft:"directory.fsf.org/wiki/$1",ganfyd:"ganfyd.org/index.php?title=$1",gardenology:L+"gardenology.org/wiki/$1",gausswiki:"gauss.ffii.org/$1",gentoo:"wiki.gentoo.org/wiki/$1",genwiki:"wiki.genealogy.net/index.php/$1",gerrit:"gerrit.wikimedia.org/r/$1",git:"gerrit.wikimedia.org/g/$1",google:L+"google.com/search?q=$1",googledefine:L+"google.com/search?q=define:$1",googlegroups:"groups.google.com/groups?q=$1",guildwarswiki:"wiki.guildwars.com/wiki/$1",guildwiki:"guildwars.wikia.com/wiki/$1",guc:"tools.wmflabs.org/guc/?user=$1",gucprefix:"tools.wmflabs.org/guc/?isPrefixPattern=1&src=rc&user=$1",gutenberg:L+"gutenberg.org/etext/$1",gutenbergwiki:L+"gutenberg.org/wiki/$1",hackerspaces:"hackerspaces.org/wiki/$1",h2wiki:"halowiki.net/p/$1",hammondwiki:L+"dairiki.org/HammondWiki/index.php3?$1",hdl:"hdl.handle.net/$1",heraldik:"heraldik-wiki.de/wiki/$1",heroeswiki:"heroeswiki.com/$1",horizonlabs:"horizon.wikimedia.org/$1",hrwiki:L+"hrwiki.org/index.php/$1",hrfwiki:"fanstuff.hrwiki.org/index.php/$1",hupwiki:"wiki.hup.hu/index.php/$1",iarchive:"archive.org/details/$1",imdbname:L+"imdb.com/name/nm$1/",imdbtitle:L+"imdb.com/title/tt$1/",imdbcompany:L+"imdb.com/company/co$1/",imdbcharacter:L+"imdb.com/character/ch$1/",incubator:"incubator"+q,infosecpedia:"infosecpedia.org/wiki/$1",infosphere:"theinfosphere.org/$1","iso639-3":"iso639-3.sil.org/code/$1",issn:L+"worldcat.org/issn/$1",iuridictum:"iuridictum.pecina.cz/w/$1",jaglyphwiki:"glyphwiki.org/wiki/$1",jefo:"esperanto-jeunes.org/wiki/$1",jerseydatabase:"jerseydatabase.com/wiki.php?id=$1",jira:"jira.toolserver.org/browse/$1",jspwiki:L+"ecyrd.com/JSPWiki/Wiki.jsp?page=$1",jstor:L+"jstor.org/journals/$1",kamelo:"kamelopedia.mormo.org/index.php/$1",karlsruhe:"ka.stadtwiki.net/$1",kinowiki:"kino.skripov.com/index.php/$1",komicawiki:"wiki.komica.org/?$1",kontuwiki:"kontu.wiki/$1",wikitech:"wikitech"+q,libreplanet:"libreplanet.org/wiki/$1",linguistlist:"linguistlist.org/forms/langs/LLDescription.cfm?code=$1",linuxwiki:L+"linuxwiki.de/$1",linuxwikide:L+"linuxwiki.de/$1",liswiki:"liswiki.org/wiki/$1",literateprograms:"en.literateprograms.org/$1",livepedia:L+"livepedia.gr/index.php?title=$1",localwiki:"localwiki.org/$1",lojban:"mw.lojban.org/papri/$1",lostpedia:"lostpedia.wikia.com/wiki/$1",lqwiki:"wiki.linuxquestions.org/wiki/$1",luxo:"tools.wmflabs.org/guc/?user=$1",mail:"lists.wikimedia.org/mailman/listinfo/$1",mailarchive:"lists.wikimedia.org/pipermail/$1",mariowiki:L+"mariowiki.com/$1",marveldatabase:L+"marveldatabase.com/wiki/index.php/$1",meatball:"meatballwiki.org/wiki/$1",mw:L+"mediawiki.org/wiki/$1",mediazilla:"bugzilla.wikimedia.org/$1",memoryalpha:"memory-alpha.fandom.com/wiki/$1",metawiki:"meta"+q,metawikimedia:"meta"+q,metawikipedia:"meta"+q,mineralienatlas:L+"mineralienatlas.de/lexikon/index.php/$1",moinmoin:"moinmo.in/$1",monstropedia:L+"monstropedia.org/?title=$1",mosapedia:"mosapedia.de/wiki/index.php/$1",mozcom:"mozilla.wikia.com/wiki/$1",mozillawiki:"wiki.mozilla.org/$1",mozillazinekb:"kb.mozillazine.org/$1",musicbrainz:"musicbrainz.org/doc/$1",mediawikiwiki:L+"mediawiki.org/wiki/$1",mwod:L+"merriam-webster.com/dictionary/$1",mwot:L+"merriam-webster.com/thesaurus/$1",nkcells:L+"nkcells.info/index.php?title=$1",nara:"catalog.archives.gov/id/$1",nosmoke:"no-smok.net/nsmk/$1",nost:"nostalgia."+N,nostalgia:"nostalgia."+N,oeis:"oeis.org/$1",oldwikisource:"wikisource.org/wiki/$1",olpc:"wiki.laptop.org/go/$1",omegawiki:L+"omegawiki.org/Expression:$1",onelook:L+"onelook.com/?ls=b&w=$1",openlibrary:"openlibrary.org/$1",openstreetmap:"wiki.openstreetmap.org/wiki/$1",openwetware:"openwetware.org/wiki/$1",opera7wiki:"operawiki.info/$1",organicdesign:L+"organicdesign.co.nz/$1",orthodoxwiki:"orthodoxwiki.org/$1",osmwiki:"wiki.openstreetmap.org/wiki/$1",otrs:"ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketID=$1",otrswiki:"otrs-wiki"+q,ourmedia:L+"socialtext.net/ourmedia/index.cgi?$1",outreach:"outreach"+q,outreachwiki:"outreach"+q,owasp:L+"owasp.org/index.php/$1",panawiki:"wiki.alairelibre.net/index.php?title=$1",patwiki:"gauss.ffii.org/$1",personaltelco:"personaltelco.net/wiki/$1",petscan:"petscan.wmflabs.org/?psid=$1",phab:"phabricator.wikimedia.org/$1",phabricator:"phabricator.wikimedia.org/$1",phwiki:L+"pocketheaven.com/ph/wiki/index.php?title=$1",phpwiki:"phpwiki.sourceforge.net/phpwiki/index.php?$1",planetmath:"planetmath.org/node/$1",pmeg:L+"bertilow.com/pmeg/$1",pmid:L+"ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract",pokewiki:"pokewiki.de/$1","pokéwiki":"pokewiki.de/$1",policy:"policy.wikimedia.org/$1",proofwiki:L+"proofwiki.org/wiki/$1",pyrev:L+"mediawiki.org/wiki/Special:Code/pywikipedia/$1",pythoninfo:"wiki.python.org/moin/$1",pythonwiki:L+"pythonwiki.de/$1",pywiki:"c2.com/cgi/wiki?$1",psycle:"psycle.sourceforge.net/wiki/$1",quality:"quality"+q,quarry:"quarry.wmflabs.org/$1",regiowiki:"regiowiki.at/wiki/$1",rev:L+"mediawiki.org/wiki/Special:Code/MediaWiki/$1",revo:"purl.org/NET/voko/revo/art/$1.html",rfc:"tools.ietf.org/html/rfc$1",rheinneckar:"rhein-neckar-wiki.de/$1",robowiki:"robowiki.net/?$1",rodovid:"en.rodovid.org/wk/$1",reuterswiki:"glossary.reuters.com/index.php/$1",rowiki:"wiki.rennkuckuck.de/index.php/$1",rt:"rt.wikimedia.org/Ticket/Display.html?id=$1",s23wiki:"s23.org/wiki/$1",scholar:"scholar.google.com/scholar?q=$1",schoolswp:"schools-"+N,scores:"imslp.org/wiki/$1",scoutwiki:"en.scoutwiki.org/$1",scramble:L+"scramble.nl/wiki/index.php?title=$1",seapig:L+"seapig.org/$1",seattlewiki:"seattle.wikia.com/wiki/$1",slwiki:"wiki.secondlife.com/wiki/$1","semantic-mw":L+"semantic-mediawiki.org/wiki/$1",senseislibrary:"senseis.xmp.net/?$1",sharemap:"sharemap.org/$1",silcode:L+"sil.org/iso639-3/documentation.asp?id=$1",slashdot:"slashdot.org/article.pl?sid=$1",sourceforge:"sourceforge.net/$1",spcom:"spcom"+q,species:"species"+q,squeak:"wiki.squeak.org/squeak/$1",stats:"stats.wikimedia.org/$1",stewardry:"tools.wmflabs.org/meta/stewardry/?wiki=$1",strategy:"strategy"+q,strategywiki:"strategywiki.org/wiki/$1",sulutil:"meta.wikimedia.org/wiki/Special:CentralAuth/$1",swtrain:"train.spottingworld.com/$1",svn:"svn.wikimedia.org/viewvc/mediawiki/$1?view=log",swinbrain:"swinbrain.ict.swin.edu.au/wiki/$1",tabwiki:L+"tabwiki.com/index.php/$1",tclerswiki:"wiki.tcl.tk/$1",technorati:L+"technorati.com/search/$1",tenwiki:"ten."+N,testwiki:"test."+N,testwikidata:"test.wikidata.org/wiki/$1",test2wiki:"test2."+N,tfwiki:"tfwiki.net/wiki/$1",thelemapedia:L+"thelemapedia.org/index.php/$1",theopedia:L+"theopedia.com/$1",thinkwiki:L+"thinkwiki.org/wiki/$1",ticket:"ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketNumber=$1",tmbw:"tmbw.net/wiki/$1",tmnet:L+"technomanifestos.net/?$1",tmwiki:L+"EasyTopicMaps.com/?page=$1",toolforge:"tools.wmflabs.org/$1",toollabs:"tools.wmflabs.org/$1",tools:"toolserver.org/$1",tswiki:L+"mediawiki.org/wiki/Toolserver:$1",translatewiki:"translatewiki.net/wiki/$1",tviv:"tviv.org/wiki/$1",tvtropes:L+"tvtropes.org/pmwiki/pmwiki.php/Main/$1",twiki:"twiki.org/cgi-bin/view/$1",tyvawiki:L+"tyvawiki.org/wiki/$1",umap:"umap.openstreetmap.fr/$1",uncyclopedia:"en.uncyclopedia.co/wiki/$1",unihan:L+"unicode.org/cgi-bin/GetUnihanData.pl?codepoint=$1",unreal:"wiki.beyondunreal.com/wiki/$1",urbandict:L+"urbandictionary.com/define.php?term=$1",usej:L+"tejo.org/usej/$1",usemod:L+"usemod.com/cgi-bin/wiki.pl?$1",usability:"usability"+q,utrs:"utrs.wmflabs.org/appeal.php?id=$1",vikidia:"fr.vikidia.org/wiki/$1",vlos:"tusach.thuvienkhoahoc.com/wiki/$1",vkol:"kol.coldfront.net/thekolwiki/index.php/$1",voipinfo:L+"voip-info.org/wiki/view/$1",votewiki:"vote"+q,werelate:L+"werelate.org/wiki/$1",wg:"wg-en."+N,wikia:L+"wikia.com/wiki/w:c:$1",wikiasite:L+"wikia.com/wiki/w:c:$1",wikiapiary:"wikiapiary.com/wiki/$1",wikibooks:"en.wikibooks.org/wiki/$1",wikichristian:L+"wikichristian.org/index.php?title=$1",wikicities:L+"wikia.com/wiki/w:$1",wikicity:L+"wikia.com/wiki/w:c:$1",wikiconference:"wikiconference.org/wiki/$1",wikidata:L+"wikidata.org/wiki/$1",wikif1:L+"wikif1.org/$1",wikifur:"en.wikifur.com/wiki/$1",wikihow:L+"wikihow.com/$1",wikiindex:"wikiindex.org/$1",wikilemon:"wiki.illemonati.com/$1",wikilivres:"wikilivres.org/wiki/$1",wikilivresru:"wikilivres.ru/$1","wikimac-de":"apfelwiki.de/wiki/Main/$1",wikimedia:"foundation"+q,wikinews:"en.wikinews.org/wiki/$1",wikinfo:"wikinfo.org/w/index.php/$1",wikinvest:"meta.wikimedia.org/wiki/Interwiki_map/discontinued#Wikinvest",wikiotics:"wikiotics.org/$1",wikipapers:"wikipapers.referata.com/wiki/$1",wikipedia:"en."+N,wikipediawikipedia:"en.wikipedia.org/wiki/Wikipedia:$1",wikiquote:"en.wikiquote.org/wiki/$1",wikisophia:"wikisophia.org/index.php?title=$1",wikisource:"en.wikisource.org/wiki/$1",wikispecies:"species"+q,wikispot:"wikispot.org/?action=gotowikipage&v=$1",wikiskripta:L+"wikiskripta.eu/index.php/$1",labsconsole:"wikitech"+q,wikiti:"wikiti.denglend.net/index.php?title=$1",wikiversity:"en.wikiversity.org/wiki/$1",wikivoyage:"en.wikivoyage.org/wiki/$1",betawikiversity:"beta.wikiversity.org/wiki/$1",wikiwikiweb:"c2.com/cgi/wiki?$1",wiktionary:"en.wiktionary.org/wiki/$1",wipipedia:"wipipedia.org/index.php/$1",wlug:L+"wlug.org.nz/$1",wmam:"am"+q,wmar:L+"wikimedia.org.ar/wiki/$1",wmat:"mitglieder.wikimedia.at/$1",wmau:"wikimedia.org.au/wiki/$1",wmbd:"bd"+q,wmbe:"be"+q,wmbr:"br"+q,wmca:"ca"+q,wmch:L+"wikimedia.ch/$1",wmcl:L+"wikimediachile.cl/index.php?title=$1",wmcn:"cn"+q,wmco:"co"+q,wmcz:L+"wikimedia.cz/web/$1",wmdc:"wikimediadc.org/wiki/$1",securewikidc:"secure.wikidc.org/$1",wmde:"wikimedia.de/wiki/$1",wmdk:"dk"+q,wmee:"ee"+q,wmec:"ec"+q,wmes:L+"wikimedia.es/wiki/$1",wmet:"ee"+q,wmfdashboard:"outreachdashboard.wmflabs.org/$1",wmfi:"fi"+q,wmfr:"wikimedia.fr/$1",wmge:"ge"+q,wmhi:"hi"+q,wmhk:"meta.wikimedia.org/wiki/Wikimedia_Hong_Kong",wmhu:"wikimedia.hu/wiki/$1",wmid:"id"+q,wmil:L+"wikimedia.org.il/$1",wmin:"wiki.wikimedia.in/$1",wmit:"wiki.wikimedia.it/wiki/$1",wmke:"meta.wikimedia.org/wiki/Wikimedia_Kenya",wmmk:"mk"+q,wmmx:"mx"+q,wmnl:"nl"+q,wmnyc:"nyc"+q,wmno:"no"+q,"wmpa-us":"pa-us"+q,wmph:"meta.wikimedia.org/wiki/Wikimedia_Philippines",wmpl:"pl"+q,wmpt:"pt"+q,wmpunjabi:"punjabi"+q,wmromd:"romd"+q,wmrs:"rs"+q,wmru:"ru"+q,wmse:"se"+q,wmsk:"wikimedia.sk/$1",wmtr:"tr"+q,wmtw:"wikimedia.tw/wiki/index.php5/$1",wmua:"ua"+q,wmuk:"wikimedia.org.uk/wiki/$1",wmve:"wikimedia.org.ve/wiki/$1",wmza:"wikimedia.org.za/wiki/$1",wm2005:"wikimania2005"+q,wm2006:"wikimania2006"+q,wm2007:"wikimania2007"+q,wm2008:"wikimania2008"+q,wm2009:"wikimania2009"+q,wm2010:"wikimania2010"+q,wm2011:"wikimania2011"+q,wm2012:"wikimania2012"+q,wm2013:"wikimania2013"+q,wm2014:"wikimania2014"+q,wm2015:"wikimania2015"+q,wm2016:"wikimania2016"+q,wm2017:"wikimania2017"+q,wm2018:"wikimania2018"+q,wmania:"wikimania"+q,wikimania:"wikimania"+q,wmteam:"wikimaniateam"+q,wmf:"foundation"+q,wmfblog:"blog.wikimedia.org/$1",wmdeblog:"blog.wikimedia.de/$1",wookieepedia:"starwars.wikia.com/wiki/$1",wowwiki:L+"wowwiki.com/$1",wqy:"wqy.sourceforge.net/cgi-bin/index.cgi?$1",wurmpedia:"wurmpedia.com/index.php/$1",viaf:"viaf.org/viaf/$1",zrhwiki:L+"zrhwiki.ch/wiki/$1",zum:"wiki.zum.de/$1",zwiki:L+"zwiki.org/$1",m:"meta"+q,meta:"meta"+q,sep11:"sep11."+N,d:L+"wikidata.org/wiki/$1",minnan:"zh-min-nan."+N,nb:"no."+N,"zh-cfr":"zh-min-nan."+N,"zh-cn":"zh."+N,"zh-tw":"zh."+N,nan:"zh-min-nan."+N,vro:"fiu-vro."+N,cmn:"zh."+N,lzh:"zh-classical."+N,rup:"roa-rup."+N,gsw:"als."+N,"be-tarask":"be-x-old."+N,sgs:"bat-smg."+N,egl:"eml."+N,w:"en."+N,wikt:"en.wiktionary.org/wiki/$1",q:"en.wikiquote.org/wiki/$1",b:"en.wikibooks.org/wiki/$1",n:"en.wikinews.org/wiki/$1",s:"en.wikisource.org/wiki/$1",chapter:"en"+q,v:"en.wikiversity.org/wiki/$1",voy:"en.wikivoyage.org/wiki/$1"};const P=C,A=T;Object.keys(P).forEach((e=>{A[e]=e+".wikipedia.org/wiki/$1"}));const D=function(e){let t=e.page||"";if(-1!==t.indexOf(":")){let i=t.match(/^(.*):(.*)/);if(null===i)return e;let a=i[1]||"";if(a=a.toLowerCase(),-1!==a.indexOf(":")){let[,t,i]=a.match(/^:?(.*):(.*)/);if(A.hasOwnProperty(t)&&!1===P.hasOwnProperty(i))return e;e.wiki={wiki:t,lang:i}}else{if(!1===A.hasOwnProperty(a))return e;e.wiki=a}e.page=i[2]}return e},I=/^:?(category|catégorie|kategorie|categoría|categoria|categorie|kategoria|تصنيف|image|file|fichier|datei|media):/i,M=/\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]| ]{4,1500})([| ].*?)?\]/g,R=/\[\[(.{0,160}?)\]\]([a-z]+)?/gi;var U=function(e){let t=[];if(t=function(e,t){return t.replace(M,(function(t,i,a,n){return n=n||"",e.push({type:"external",site:i+a,text:n.trim(),raw:t}),n})),e}(t,e),t=function(e,t){return t.replace(R,(function(t,i,a){let n=null,r=i;if(i.match(/\|/)&&(r=(i=i.replace(/\[\[(.{2,100}?)\]\](\w{0,10})/g,"$1$2")).replace(/(.{2,100})\|.{0,200}/,"$1"),n=i.replace(/.{2,100}?\|/,""),null===n&&r.match(/\|$/)&&(r=r.replace(/\|$/,""),n=r)),r.match(I))return i;let o={page:r,raw:t};return o.page=o.page.replace(/#(.*)/,((e,t)=>(o.anchor=t,""))),o=D(o),o.wiki&&(o.type="interwiki"),null!==n&&n!==o.page&&(o.text=n),a&&(o.text=o.text||o.page,o.text+=a.trim()),o.page&&!1===/^[A-Z]/.test(o.page)&&(o.text||(o.text=o.page),o.page=o.page),e.push(o),i})),e}(t,e),0!==t.length)return t};const B=U,F=new RegExp("^[ \n\t]*?#("+f.redirects.join("|")+") *?(\\[\\[.{2,180}?\\]\\])","i");var K={isRedirect:function(e){return!(!e||e.length>500)&&F.test(e)},parse:function(e){let t=e.match(F);if(t&&t[2]){return(B(t[2])||[])[0]}return{}}};const W=["table","code","score","data","categorytree","charinsert","hiero","imagemap","inputbox","nowiki","poem","references","source","syntaxhighlight","timeline"],Z="< ?(".concat(W.join("|"),") ?[^>]{0,200}?>"),H="< ?/ ?(".concat(W.join("|"),") ?>"),Y=new RegExp("".concat(Z,"[").concat("\\s\\S","]+?").concat(H),"gi");const G=function(e){return(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(Y," ")).replace(/ ?< ?(span|div|table|data) [a-zA-Z0-9=%.\-#:;'" ]{2,100}\/? ?> ?/g," ")).replace(/ ?< ?(ref) [a-zA-Z0-9=" ]{2,100}\/ ?> ?/g," ")).replace(/(.*?)<\/i>/g,"''$1''")).replace(/(.*?)<\/b>/g,"'''$1'''")).replace(/(.*?)<\/sub>/g,"{{sub|$1}}")).replace(/(.*?)<\/sup>/g,"{{sup|$1}}")).replace(/ ?<[ /]?(p|sub|sup|span|nowiki|div|table|br|tr|td|th|pre|pre2|hr)[ /]?> ?/g," ")).replace(/ ?<[ /]?(abbr|bdi|bdo|blockquote|cite|del|dfn|em|ins|kbd|mark|q|s|small)[ /]?> ?/g," ")).replace(/ ?<[ /]?h[0-9][ /]?> ?/g," ")).replace(/ ?< ?br ?\/> ?/g,"\n")).trim()};var V=function(e){return e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(//g,"")).replace(/__(NOTOC|NOEDITSECTION|FORCETOC|TOC)__/gi,"")).replace(/~{2,3}/g,"")).replace(/\r/g,"")).replace(/\u3002/g,". ")).replace(/----/g,"")).replace(/\{\{\}\}/g," – ")).replace(/\{\{\\\}\}/g," / ")).replace(/ /g," "),e=(e=(e=G(e)).replace(/\([,;: ]+\)/g,"")).replace(/\{\{(baseball|basketball) (primary|secondary) (style|color).*?\}\}/i,"")};const J=/[\\.$]/,X=function(e){return"string"!=typeof e&&(e=""),e=(e=(e=e.replace(/\\/g,"\\\\")).replace(/^\$/,"\\u0024")).replace(/\./g,"\\u002e")};var Q={encodeObj:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.keys(e);for(let i=0;ie.json(t)));a.length>0&&(i.paragraphs=a)}if(!0===t.images){let a=e.images().map((e=>e.json(t)));a.length>0&&(i.images=a)}if(!0===t.tables){let a=e.tables().map((e=>e.json(t)));a.length>0&&(i.tables=a)}if(!0===t.templates){let a=e.templates().map((e=>e.json()));a.length>0&&(i.templates=a,!0===t.encode&&i.templates.forEach((e=>te.encodeObj(e))))}if(!0===t.infoboxes){let a=e.infoboxes().map((e=>e.json(t)));a.length>0&&(i.infoboxes=a)}if(!0===t.lists){let a=e.lists().map((e=>e.json(t)));a.length>0&&(i.lists=a)}if(!0===t.references||!0===t.citations){let a=e.references().map((e=>e.json(t)));a.length>0&&(i.references=a)}return!0===t.sentences&&(i.sentences=e.sentences().map((e=>e.json(t)))),i};const ne=T,re={type:"internal"},oe=function(e){e=e||{},e=Object.assign({},re,e),Object.defineProperty(this,"data",{enumerable:!1,value:e})},se={text:function(e){void 0!==e&&(this.data.text=e);let t=this.data.text||this.data.page||"";return t=t.replace(/'{2,}/g,""),t},json:function(){let e={text:this.data.text,type:this.type()};"internal"===e.type?e.page=this.page():"interwiki"===e.type?e.wiki=this.wiki():e.site=this.site();let t=this.anchor();return t&&(e.anchor=t),e},wikitext:function(){return this.data.raw||""},page:function(e){return void 0!==e&&(this.data.page=e),this.data.page},anchor:function(e){return void 0!==e&&(this.data.anchor=e),this.data.anchor||""},wiki:function(e){return void 0!==e&&(this.data.wiki=e),this.data.wiki},type:function(e){return void 0!==e&&(this.data.type=e),this.data.type},site:function(e){return void 0!==e&&(this.data.site=e),this.data.site},href:function(){let e=this.type();if("external"===e)return this.site();let t=this.page();t=t.replace(/ /g,"_"),t=encodeURIComponent(t);let i="";if("interwiki"===e){let e=this.wiki();i="https://en.wikipedia.org/wiki/$1",ne.hasOwnProperty(e)&&(i="http://"+ne[this.wiki()]),i=i.replace(/\$1/g,t)}else i="./".concat(this.page());return this.anchor()&&(i+="#"+this.anchor()),i}};Object.keys(se).forEach((e=>{oe.prototype[e]=se[e]}));var le=oe;const ce=le,ue=U;var pe=function(e){let t=e.text,i=ue(t)||[];e.links=i.map((e=>(t=t.replace(e.raw,e.text||e.page||""),new ce(e)))),t=t.replace(/\[\[File:(.{2,80}?)\|([^\]]+)\]\](\w{0,5})/g,"$1"),e.text=t};var de=function(e){let t=[],i=[],a=e.text||"";return a=a.replace(/'''''(.{0,200}?)'''''/g,((e,a)=>(t.push(a),i.push(a),a))),a=a.replace(/''''(.{0,200}?)''''/g,((e,i)=>(t.push("'".concat(i,"'")),"'".concat(i,"'")))),a=a.replace(/'''(.{0,200}?)'''/g,((e,i)=>(t.push(i),i))),a=a.replace(/''(.{0,200}?)''/g,((e,t)=>(i.push(t),t))),e.text=a,t.length>0&&(e.fmt=e.fmt||{},e.fmt.bold=t),i.length>0&&(e.fmt=e.fmt||{},e.fmt.italic=i),e};const me=d,he=/^[0-9,.]+$/,ge={text:!0,links:!0,formatting:!0,numbers:!0};const fe=function(e,t){t=me(t,ge);let i={},a=e.text();if(!0===t.text&&(i.text=a),!0===t.numbers&&he.test(a)){let e=Number(a.replace(/,/g,""));!1===isNaN(e)&&(i.number=e)}return t.links&&e.links().length>0&&(i.links=e.links().map((e=>e.json()))),t.formatting&&e.data.fmt&&(i.formatting=e.data.fmt),i},ke=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object.defineProperty(this,"data",{enumerable:!1,value:e})},be={links:function(e){let t=this.data.links||[];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find((t=>t.page===e));return void 0===i?[]:[i]}return t},interwiki:function(){return this.links().filter((e=>void 0!==e.wiki))},bolds:function(){return this.data&&this.data.fmt&&this.data.fmt.bold&&this.data.fmt.bold||[]},italics:function(){return this.data&&this.data.fmt&&this.data.fmt.italic&&this.data.fmt.italic||[]},text:function(e){return void 0!==e&&"string"==typeof e&&(this.data.text=e),this.data.text||""},json:function(e){return fe(this,e)},wikitext:function(){return this.data.wiki||""},isEmpty:function(){return""===this.data.text}};Object.keys(be).forEach((e=>{ke.prototype[e]=be[e]}));const we={links:"link",bolds:"bold",italics:"italic"};Object.keys(we).forEach((e=>{ke.prototype[we[e]]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]}})),ke.prototype.plaintext=ke.prototype.text;var ye=ke;const xe=["ad","adj","adm","adv","al","alta","approx","apr","apt","arc","ariz","assn","asst","atty","aug","ave","ba","bc","bl","bldg","blvd","brig","bros","ca","cal","calif","capt","cca","cg","cl","cm","cmdr","co","col","colo","comdr","conn","corp","cpl","cres","ct","cyn","dak","dec","def","dept","det","dg","dist","dl","dm","dr","ea","eg","eng","esp","esq","est","etc","ex","exp","feb","fem","fig","fl oz","fl","fla","fm","fr","ft","fy","ga","gal","gb","gen","gov","hg","hon","hr","hrs","hwy","hz","ia","ida","ie","inc","inf","jan","jd","jr","jul","jun","kan","kans","kb","kg","km","kmph","lat","lb","lit","llb","lm","lng","lt","ltd","lx","ma","maj","mar","masc","mb","md","messrs","mg","mi","min","minn","misc","mister","ml","mlle","mm","mme","mph","mps","mr","mrs","ms","mstr","mt","neb","nebr","nee","no","nov","oct","okla","ont","op","ord","oz","pa","pd","penn","penna","phd","pl","pp","pref","prob","prof","pron","ps","psa","pseud","pt","pvt","qt","que","rb","rd","rep","reps","res","rev","sask","sec","sen","sens","sep","sept","sfc","sgt","sir","situ","sq ft","sq","sr","ss","st","supt","surg","tb","tbl","tbsp","tce","td","tel","temp","tenn","tex","tsp","univ","usafa","ut","va","vb","ver","vet","vitro","vivo","vol","vs","vt","wis","wisc","wr","wy","wyo","yb","µg"].concat("[^]][^]]"),ve=new RegExp("(^| |')("+xe.join("|")+")[.!?] ?$","i"),$e=/[ .'][A-Z].? *$/i,je=/\.{3,} +$/,_e=/ c\.\s$/,ze=/\p{Letter}/iu;var Oe=function(e){let t=[],i=[];if(!e||"string"!=typeof e||0===e.trim().length)return t;let a=function(e){let t=e.split(/(\n+)/);return t=t.filter((e=>e.match(/\S/))),t=t.map((function(e){return e.split(/(\S.+?[.!?]"?)(?=\s|$)/g)})),function(e){let t=[];return e.forEach((function(e){t=t.concat(e)})),t}(t)}(e);for(let e=0;ei.length)return!1;const a=e.match(/"/g);return!(a&&a.length%2!=0&&e.length<900)}(n))?i[e+1]=i[e]+(i[e+1]||""):i[e]&&i[e].length>0&&(t.push(i[e]),i[e]="");var n;return 0===t.length?[e]:t};const Ee=n,Se=pe,Ce=de,Ne=ye,qe=Oe;function Le(e){let t={wiki:e,text:e};var i;return Se(t),t.text=(i=(i=(i=t.text).replace(/\([,;: ]*\)/g,"")).replace(/\( *(; ?)+/g,"("),(i=Ee.trim_whitespace(i)).replace(/ +\.$/,".")),t=Ce(t),new Ne(t)}var Te=Le,Pe=function(e){let t=qe(e.wiki);t=t.map(Le),t[0]&&t[0].text()&&":"===t[0].text()[0]&&(t=t.slice(1)),e.sentences=t};var Ae=function(e){return e=(e=e.replace(/^\{\{/,"")).replace(/\}\}$/,"")};var De=function(e){return e=(e=(e=(e||"").trim()).toLowerCase()).replace(/_/g," ")};const Ie=/^[\p{Letter}0-9._\- '()]+=/iu,Me={template:!0,list:!0,prototype:!0},Re=function(e){let t=e.split("="),i=t[0]||"";i=i.toLowerCase().trim();let a=t.slice(1).join("=");return Me.hasOwnProperty(i)&&(i="_"+i),{key:i,val:a.trim()}};var Ue=function(e,t){let i=0;return e.reduce((function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(a=a.trim(),!0===Ie.test(a)){let t=Re(a);if(t.key)return e[t.key]=t.val,e}if(t&&t[i]){e[t[i]]=a}else e.list=e.list||[],e.list.push(a);return i+=1,e}),{})};const Be={classname:!0,style:!0,align:!0,margin:!0,left:!0,break:!0,boxsize:!0,framestyle:!0,item_style:!0,collapsible:!0,list_style_type:!0,"list-style-type":!0,colwidth:!0};const Fe=Ae,Ke=De,We=Te,Ze=function(e){let t=e.split(/\n?\|/);t.forEach(((e,i)=>{null!==e&&(/\[\[[^\]]+$/.test(e)||/\{\{[^}]+$/.test(e)||e.split("{{").length!==e.split("}}").length||e.split("[[").length!==e.split("]]").length)&&(t[i+1]=t[i]+"|"+t[i+1],t[i]=null)})),t=t.filter((e=>null!==e)),t=t.map((e=>(e||"").trim()));for(let e=t.length-1;e>=0;e-=1){""===t[e]&&t.pop();break}return t},He=Ue,Ye=function(e){return Object.keys(e).forEach((t=>{!0===Be[t.toLowerCase()]&&delete e[t],null!==e[t]&&""!==e[t]||delete e[t]})),e},Ge=function(e,t){let i=We(e);return"json"===t?i.json():"raw"===t?i:i.text()};var Ve=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0;e=Fe(e||"");let a=Ze(e),n=a.shift(),r=He(a,t);return r=Ye(r),r[1]&&t[0]&&!1===r.hasOwnProperty(t[0])&&(r[t[0]]=r[1],delete r[1]),Object.keys(r).forEach((e=>{r[e]="list"!==e?Ge(r[e],i):r[e].map((e=>Ge(e,i)))})),n&&(r.template=Ke(n)),r};const Je=Q,Xe=function(e,t){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},Qe={title:function(){let e=this.data;return e.title||e.encyclopedia||e.author||""},links:function(e){let t=[];if("number"==typeof e)return t[e];if("number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find((t=>t.page()===e));return void 0===i?[]:[i]}return t||[]},text:function(){return""},wikitext:function(){return this.wiki||""},json:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.data||{};return!0===e.encode&&(t=Object.assign({},t),t=Je.encodeObj(t)),t}};Object.keys(Qe).forEach((e=>{Xe.prototype[e]=Qe[e]}));var et=Xe;const tt=Ve,it=Te,at=et,nt=function(e){return/^ *\{\{ *(cite|citation)/i.test(e)&&/\}\} *$/.test(e)&&!1===/citation needed/i.test(e)},rt=function(e){let t=tt(e);return t.type=t.template.replace(/cite /,""),t.template="citation",t},ot=function(e){return{template:"citation",type:"inline",data:{},inline:it(e)||{}}};var st=function(e){let t=[],i=e._wiki;i=i.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,a){if(nt(a)){let n=rt(a);n&&t.push({json:n,wiki:e}),i=i.replace(a,"")}else t.push({json:ot(a),wiki:e});return" "})),i=i.replace(/ ?]{0,200}?\/> ?/gi," "),i=i.replace(/ ?]{0,200}>([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,a){if(nt(a)){let e=rt(a);e&&t.push({json:e,wiki:a}),i=i.replace(a,"")}else t.push({json:ot(a),wiki:e});return" "})),i=i.replace(/ ?<[ /]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ /]?> ?/g," "),e._references=t.map((e=>new at(e.json,e.wiki))),e._wiki=i};const{trim_whitespace:lt}=n,ct=Te,ut=st,pt=/^(={1,5})(.{1,200}?)={1,5}$/;var dt=function(e,t){let i=t.match(pt);if(!i)return e.title="",e.depth=0,e;let a=i[2]||"";a=ct(a).text(),a=a.replace(/\{\{.+?\}\}/,"");let n={_wiki:a};ut(n),a=n._wiki,a=lt(a);let r=0;return i[1]&&(r=i[1].length-2),e.title=a,e.depth=r,e};const mt=/.*rowspan *= *["']?([0-9]+)["']?[ |]*/,ht=/.*colspan *= *["']?([0-9]+)["']?[ |]*/;const gt=Te,ft=function(e){let t=[],i=[];e=function(e){return e=e.filter((e=>e&&!0!==/^\|\+/.test(e))),!0===/^\{\|/.test(e[0])&&e.shift(),!0===/^\|\}/.test(e[e.length-1])&&e.pop(),!0===/^\|-/.test(e[0])&&e.shift(),e}(e);for(let a=0;a0&&(t.push(i),i=[]):(n=n.split(/(?:\|\||!!)/),!n[0]&&n[1]&&n.shift(),n.forEach((e=>{e=(e=e.replace(/^\| */,"")).trim(),i.push(e)})))}return i.length>0&&t.push(i),t},kt=function(e){return e=function(e){return e.forEach(((t,i)=>{t.forEach(((a,n)=>{let r=a.match(mt);if(null!==r){let o=parseInt(r[1],10);a=a.replace(mt,""),t[n]=a;for(let t=i+1;t{e.forEach(((t,i)=>{let a=t.match(ht);if(null!==a){let n=parseInt(a[1],10);e[i]=t.replace(ht,"");for(let t=1;te.length>0))}(e))},bt=/^!/,wt={name:!0,age:!0,born:!0,date:!0,year:!0,city:!0,country:!0,population:!0,count:!0,number:!0},yt=function(e){return(e=gt(e).text()).match(/\|/)&&(e=e.replace(/.+\| ?/,"")),e=(e=(e=e.replace(/style=['"].*?["']/,"")).replace(/^!/,"")).trim()},xt=function(e){return(e=e||[]).length-e.filter((e=>e)).length>3},vt=function(e){if(e.length<=3)return[];let t=e[0].slice(0);t=t.map((e=>(e=e.replace(/^! */,""),e=gt(e).text(),e=(e=yt(e)).toLowerCase())));for(let i=0;ie.trim())),i=ft(t);if(i=i.filter((e=>e)),0===i.length)return[];i=function(e){return e.filter((e=>1!==e.length||!e[0]||!bt.test(e[0])||!1!==/rowspan/i.test(e[0])))}(i),i=kt(i);let a=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];xt(e[0])&&e.shift();let i=e[0];return i&&i[0]&&i[1]&&(/^!/.test(i[0])||/^!/.test(i[1]))&&(t=i.map((e=>(e=e.replace(/^! */,""),yt(e)))),e.shift()),i=e[0],i&&i[0]&&i[1]&&/^!/.test(i[0])&&/^!/.test(i[1])&&(i.forEach(((e,i)=>{e=e.replace(/^! */,""),e=yt(e),!0===Boolean(e)&&(t[i]=e)})),e.shift()),t}(i);if(!a||a.length<=1){a=vt(i);let e=i[i.length-1]||[];a.length<=1&&e.length>2&&(a=vt(i.slice(1)),a.length>0&&(i=i.slice(2)))}let n=i.map((e=>function(e,t){let i={};return e.forEach(((e,a)=>{let n=t[a]||"col"+(a+1),r=gt(e);r.text(yt(r.text())),i[n]=r})),i}(e,a)));return n};const jt=Q;var _t=function(e,t){return e.map((e=>{let i={};return Object.keys(e).forEach((t=>{i[t]=e[t].json()})),!0===t.encode&&(i=jt.encodeObj(i)),i}))};const zt=d,Ot=_t,Et={},St=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e=e.toLowerCase(),e=e.replace(/[_-]/g," "),e=e.replace(/\(.*?\)/,""),e=e.trim(),e},Ct=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"_wiki",{enumerable:!1,value:t})},Nt={links(e){let t=[];if(this.data.forEach((e=>{Object.keys(e).forEach((i=>{t=t.concat(e[i].links())}))})),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find((t=>t.page()===e));return void 0===i?[]:[i]}return t},get(e){let t=this.data[0]||{},i=Object.keys(t).reduce(((e,t)=>(e[St(t)]=t,e)),{});if("string"==typeof e){let t=St(e);return t=i[t]||t,this.data.map((e=>e[t]?e[t].text():null))}return e=e.map(St).map((e=>i[e]||e)),this.data.map((t=>e.reduce(((e,i)=>(t[i]?e[i]=t[i].text():e[i]="",e)),{})))},keyValue(e){let t=this.json(e);return t.forEach((e=>{Object.keys(e).forEach((t=>{e[t]=e[t].text}))})),t},json(e){return e=zt(e,Et),Ot(this.data,e)},text:()=>"",wikitext(){return this._wiki||""}};Nt.keyvalue=Nt.keyValue,Nt.keyval=Nt.keyValue,Object.keys(Nt).forEach((e=>{Ct.prototype[e]=Nt[e]}));var qt=Ct;const Lt=$t,Tt=qt,Pt=/^\s*\{\|/,At=/^\s*\|\}/;var Dt=function(e){let t=[],i=e._wiki,a=i.split("\n"),n=[];for(let e=0;e0&&(n[n.length-1]+="\n"+a[e]);else{n[n.length-1]+="\n"+a[e];let i=n.pop();t.push(i)}else n.push(a[e]);let r=[];t.forEach((e=>{if(e){i=i.replace(e+"\n",""),i=i.replace(e,"");let t=Lt(e);t&&t.length>0&&r.push(new Tt(t,e))}})),r.length>0&&(e._tables=r),e._wiki=i};const It=d,Mt={sentences:!0};const Rt=function(e,t){let i={};return!0===(t=It(t,Mt)).sentences&&(i.sentences=e.sentences().map((e=>e.json(t)))),i},Ut=d,Bt={sentences:!0,lists:!0,images:!0},Ft=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},Kt={sentences:function(){return this.data.sentences||[]},references:function(){return this.data.references},lists:function(){return this.data.lists},images(){return this.data.images||[]},links:function(e){let t=[];if(this.sentences().forEach((i=>{t=t.concat(i.links(e))})),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find((t=>t.page()===e));return void 0===i?[]:[i]}return t||[]},interwiki(){let e=[];return this.sentences().forEach((t=>{e=e.concat(t.interwiki())})),e||[]},text:function(e){e=Ut(e,Bt);let t=this.sentences().map((t=>t.text(e))).join(" ");return this.lists().forEach((e=>{t+="\n"+e.text()})),t},json:function(e){return e=Ut(e,Bt),Rt(this,e)},wikitext:function(){return this.data.wiki}};Kt.citations=Kt.references,Object.keys(Kt).forEach((e=>{Ft.prototype[e]=Kt[e]}));const Wt={sentences:"sentence",references:"reference",citation:"citations",lists:"list",images:"image",links:"link"};Object.keys(Wt).forEach((e=>{Ft.prototype[Wt[e]]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]}}));var Zt=Ft;var Ht=function(e){let t=[],i=[];const a=e.split("");let n=0;for(let r=0;r0){let e=0,a=0;for(let t=0;ta&&i.push("]"),t.push(i.join("")),i=[]}}return t};const Yt=f,Gt=S,Vt=Ve,Jt=Te,Xt=Ht,Qt=new RegExp("("+Yt.images.join("|")+"):","i");let ei="(".concat(Yt.images.join("|"),")");const ti=new RegExp(ei+":(.+?)[\\||\\]]","iu"),ii={thumb:!0,thumbnail:!0,border:!0,right:!0,left:!0,center:!0,top:!0,bottom:!0,none:!0,upright:!0,baseline:!0,middle:!0,sub:!0,super:!0};var ai=function(e,t){let i=e.wiki;Xt(i).forEach((function(a){if(!0===Qt.test(a)){e.images=e.images||[];let n=function(e,t){let i=e.match(ti);if(null===i||!i[2])return null;let a="".concat(i[1],":").concat(i[2]||"");a=a.trim();let n=a.charAt(0).toUpperCase()+a.substring(1);if(n=n.replace(/ /g,"_"),n){let i={file:a,lang:t._lang,domain:t._domain,wiki:e};e=(e=e.replace(/^\[\[/,"")).replace(/\]\]$/,"");let n=Vt(e),r=n.list||[];return n.alt&&(i.alt=n.alt),r=r.filter((e=>!1===ii.hasOwnProperty(e))),r[r.length-1]&&(i.caption=Jt(r[r.length-1])),new Gt(i)}return null}(a,t);n&&e.images.push(n),i=i.replace(a,"")}})),e.wiki=i};const ni=d,ri={},oi=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},si={lines(){return this.data},links(e){let t=[];if(this.lines().forEach((e=>{t=t.concat(e.links())})),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find((t=>t.page()===e));return void 0===i?[]:[i]}return t},json(e){return e=ni(e,ri),this.lines().map((t=>t.json(e)))},text(){return((e,t)=>e.map((e=>" * "+e.text(t))).join("\n"))(this.data)},wikitext(){return this.wiki||""}};Object.keys(si).forEach((e=>{oi.prototype[e]=si[e]}));var li=oi;const ci=li,ui=Te,pi=/^[#*:;|]+/,di=/^\*+[^:,|]{4}/,mi=/^ ?#[^:,|]{4}/,hi=/[a-z_0-9\]}]/i,gi=function(e){return pi.test(e)||di.test(e)||mi.test(e)},fi=function(e,t){let i=[];for(let a=t;ae&&hi.test(e))),i=function(e){let t=1;e=e.filter((e=>e));for(let i=0;i0&&(a.push(t),e+=t.length-1)}else n.push(i[e]);e.lists=a.map((e=>new ci(e,t))),e.wiki=n.join("\n")}};var xi=function(e,t){let i=e._wiki,a=i.split(wi);a=a.filter((e=>e&&e.trim().length>0)),a=a.map((e=>{let i={wiki:e,lists:[],sentences:[],images:[]};return yi.list(i),yi.image(i,t),bi(i),new ki(i)})),e._wiki=i,e._paragraphs=a};const vi="{";var $i=function(e){let t=0,i=[],a=[];for(let n=e.indexOf(vi);-1!==n&&n0?n++:n=e.indexOf(vi,n+1)){let r=e[n];if(r===vi&&(t+=1),t>0){if("}"===r&&(t-=1,0===t)){a.push(r);let e=a.join("");a=[],/\{\{/.test(e)&&/\}\}/.test(e)&&i.push(e);continue}if(1===t&&r!==vi&&"}"!==r){t=0,a=[];continue}a.push(r)}}return i};const ji=De;const _i=$i,zi=function(e){let t=null;return t=/^\{\{[^\n]+\|/.test(e)?(e.match(/^\{\{(.+?)\|/)||[])[1]:-1!==e.indexOf("\n")?(e.match(/^\{\{(.+)\n/)||[])[1]:(e.match(/^\{\{(.+?)\}\}$/)||[])[1],t&&(t=t.replace(/:.*/,""),t=ji(t)),t||null},Oi=/\{\{/,Ei=function(e){return{body:e=e.replace(/#invoke:/,""),name:zi(e),children:[]}},Si=function(e){let t=e.body.substr(2);return t=t.replace(/\}\}$/,""),e.children=_i(t),e.children=e.children.map(Ei),0===e.children.length||e.children.forEach((e=>{let t=e.body.substr(2);return Oi.test(t)?Si(e):null})),e};var Ci=function(e){let t=_i(e);return t=t.map(Ei),t=t.map(Si),t};var Ni=["anchor","defaultsort","use list-defined references","void","pp","pp-move-indef","pp-semi-indef","pp-vandalism","r","#tag","div col","pope list end","shipwreck list end","starbox end","end box","end","s-end"].reduce(((e,t)=>(e[t]=!0,e)),{}),qi={"gnf protein box":!0,"automatic taxobox":!0,"chembox ":!0,editnotice:!0,geobox:!0,hybridbox:!0,ichnobox:!0,infraspeciesbox:!0,mycomorphbox:!0,oobox:!0,"paraphyletic group":!0,speciesbox:!0,subspeciesbox:!0,"starbox short":!0,taxobox:!0,nhlteamseason:!0,"asian games bid":!0,"canadian federal election results":!0,"dc thomson comic strip":!0,"daytona 24 races":!0,edencharacter:!0,"moldova national football team results":!0,samurai:!0,protein:!0,"sheet authority":!0,"order-of-approx":!0,"bacterial labs":!0,"medical resources":!0,ordination:!0,"hockey team coach":!0,"hockey team gm":!0,"pro hockey team":!0,"hockey team player":!0,"hockey team start":!0,mlbbioret:!0};const Li=qi,Ti=new RegExp("^(subst.)?("+f.infoboxes.join("|")+")[: \n]","i"),Pi=/^infobox /i,Ai=/ infobox$/i,Di=/^year in [A-Z]/i;var Ii={isInfobox:function(e){return!0===Li.hasOwnProperty(e)||(!!Ti.test(e)||(!(!Pi.test(e)&&!Ai.test(e))||!!Di.test(e)))},format:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.template.match(Ti),i=e.template;t&&t[0]&&(i=i.replace(t[0],"")),i=i.trim();let a={template:"infobox",type:i,data:e};return delete a.data.template,delete a.data.list,a}};const Mi=C;let Ri={imdb:"imdb name","imdb episodess":"imdb episode",localday:"currentday",localdayname:"currentdayname",localyear:"currentyear","birth date based on age at death":"birth based on age as of date","bare anchored list":"anchored list",cvt:"convert",cricon:"flagicon",sfrac:"frac",sqrt:"radic","unreferenced section":"unreferenced",redir:"redirect",sisterlinks:"sister project links","main article":"main"},Ui={date:["byline","dateline"],citation:["cite","source","source-pr","source-science"],flagcountry:["cr","cr-rt"],trunc:["str left","str crop"],percentage:["pct","percentage"],rnd:["rndfrac","rndnear"],abbr:["tooltip","abbrv","define"],sfn:["sfnref","harvid","harvnb"],"birth date and age":["death date and age","bda"],currentmonth:["localmonth","currentmonthname","currentmonthabbrev"],currency:["monnaie","unité","nombre","nb","iso4217"],coord:["coor","coor title dms","coor title dec","coor dms","coor dm","coor dec"],"columns-list":["cmn","col-list","columnslist","collist"],nihongo:["nihongo2","nihongo3","nihongo-s","nihongo foot"],plainlist:["flatlist","plain list"],"winning percentage":["winpct","winperc"],"collapsible list":["nblist","nonbulleted list","ubl","ublist","ubt","unbullet","unbulleted list","unbulleted","unbulletedlist","vunblist"],"election box begin":["election box begin no change","election box begin no party","election box begin no party no change","election box inline begin","election box inline begin no change"],"election box candidate":["election box candidate for alliance","election box candidate minor party","election box candidate no party link no change","election box candidate with party link","election box candidate with party link coalition 1918","election box candidate with party link no change","election box inline candidate","election box inline candidate no change","election box inline candidate with party link","election box inline candidate with party link no change","election box inline incumbent"],"4teambracket":["2teambracket","4team2elimbracket","8teambracket","16teambracket","32teambracket","4roundbracket-byes","cwsbracket","nhlbracket","nhlbracket-reseed","4teambracket-nhl","4teambracket-ncaa","4teambracket-mma","4teambracket-mlb","16teambracket-two-reseeds","8teambracket-nhl","8teambracket-mlb","8teambracket-ncaa","8teambracket-afc","8teambracket-afl","8teambracket-tennis3","8teambracket-tennis5","16teambracket-nhl","16teambracket-nhl divisional","16teambracket-nhl-reseed","16teambracket-nba","16teambracket-swtc","16teambracket-afc","16teambracket-tennis3","16teambracket-tennis5"],start:["end","birth","death","start date","end date","birth date","death date","start date and age","end date and age","dob"],"start-date":["end-date","birth-date","death-date","birth-date and age","birth-date and given age","death-date and age","death-date and given age"],tl:["lts","t","tfd links","tiw","tltt","tetl","tsetl","ti","tic","tiw","tlt","ttl","twlh","tl2","tlu","demo","hatnote","xpd","para","elc","xtag","mli","mlix","#invoke","url"]};Object.keys(Mi).forEach((e=>{Ri["ipa-"+e]="ipa",Ri["ipac-"+e]="ipac"})),Object.keys(Ui).forEach((e=>{Ui[e].forEach((t=>{Ri[t]=e}))}));var Bi=Ri;const Fi=C;let Ki={p1:0,p2:1,p3:2,resize:1,lang:1,"rtl-lang":1,l:2,h:1,sort:1};["defn","lino","finedetail","nobold","noitalic","nocaps","vanchor","rnd","date","taste","monthname","baseball secondary style","lang-de","nowrap","nobr","big","cquote","pull quote","small","smaller","midsize","larger","big","kbd","bigger","large","mono","strongbad","stronggood","huge","xt","xt2","!xt","xtn","xtd","dc","dcr","mxt","!mxt","mxtn","mxtd","bxt","!bxt","bxtn","bxtd","delink","pre","var","mvar","pre2","code"].forEach((e=>{Ki[e]=0})),Object.keys(Fi).forEach((e=>{Ki["lang-"+e]=0}));var Wi=Ki;const Zi=C;var Hi={titlecase:e=>e.charAt(0).toUpperCase()+e.substring(1),sisterProjects:{wikt:"wiktionary",commons:"commons",c:"commons",commonscat:"commonscat",n:"wikinews",q:"wikiquote",s:"wikisource",a:"wikiauthor",b:"wikibooks",voy:"wikivoyage",v:"wikiversity",d:"wikidata",species:"wikispecies",m:"meta",mw:"mediawiki"},getLang:function(e){let t=e.match(/ipac?-(.+)/);return null!==t?!0===Zi.hasOwnProperty(t[1])?Zi[t[1]].english_title:t[1]:null},percentage:function(e){if(!e.numerator&&!e.denominator)return null;let t=Number(e.numerator)/Number(e.denominator);t*=100;let i=Number(e.decimals);return isNaN(i)&&(i=1),t=t.toFixed(i),Number(t)},toNumber:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if("number"==typeof e)return e;e=e.replace(/,/g,""),e=e.replace(/−/g,"-");let t=Number(e);return isNaN(t)?e:t}};const Yi=Ve,Gi=Ae,Vi=Hi;var Ji={ra:e=>{let t=Yi(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},deg2hms:e=>(Yi(e,["degrees"]).degrees||"")+"°",hms2deg:e=>{let t=Yi(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},decdeg:e=>{let t=Yi(e,["deg","min","sec","hem","rnd"]);return(t.deg||t.degrees)+"°"},sortname:e=>{let t=Yi(e,["first","last","target","sort"]),i="".concat(t.first||""," ").concat(t.last||"");return i=i.trim(),t.nolink?t.target||i:(t.dab&&(i+=" (".concat(t.dab,")"),t.target&&(t.target+=" (".concat(t.dab,")"))),t.target?"[[".concat(t.target,"|").concat(i,"]]"):"[[".concat(i,"]]"))},"first word":e=>{let t=Yi(e,["text"]),i=t.text;return t.sep?i.split(t.sep)[0]:i.split(" ")[0]},trunc:e=>{let t=Yi(e,["str","len"]);return t.str.substr(0,t.len)},"str mid":e=>{let t=Yi(e,["str","start","end"]),i=parseInt(t.start,10)-1,a=parseInt(t.end,10);return t.str.substr(i,a)},reign:e=>{let t=Yi(e,["start","end"]);return"(r. ".concat(t.start," – ").concat(t.end,")")},circa:e=>{let t=Yi(e,["year"]);return"c. ".concat(t.year)},"decade link":e=>{let t=Yi(e,["year"]);return"".concat(t.year,"|").concat(t.year,"s")},decade:e=>{let t=Yi(e,["year"]),i=Number(t.year);return i=10*parseInt(i/10,10),"".concat(i,"s")},century:e=>{let t=Yi(e,["year"]),i=Number(t.year);return i=parseInt(i/100,10)+1,"".concat(i)},radic:e=>{let t=Yi(e,["after","before"]);return"".concat(t.before||"","√").concat(t.after||"")},"medical cases chart/row":e=>e,oldstyledate:e=>{let t=Yi(e,["date","year"]);return t.year?t.date+" "+t.year:t.date},braces:e=>{let t=Yi(e,["text"]),i="";return t.list&&(i="|"+t.list.join("|")),"{{"+(t.text||"")+i+"}}"},hlist:e=>{let t=Yi(e);return t.list=t.list||[],t.list.join(" · ")},pagelist:e=>(Yi(e).list||[]).join(", "),catlist:e=>(Yi(e).list||[]).join(", "),"br separated entries":e=>(Yi(e).list||[]).join("\n\n"),"comma separated entries":e=>(Yi(e).list||[]).join(", "),"anchored list":e=>{let t=Yi(e).list||[];return t=t.map(((e,t)=>"".concat(t+1,". ").concat(e))),t.join("\n\n")},"bulleted list":e=>{let t=Yi(e).list||[];return t=t.filter((e=>e)),t=t.map((e=>"• "+e)),t.join("\n\n")},plainlist:e=>{let t=(e=Gi(e)).split("|").slice(1);return t=t.join("|").split(/\n ?\* ?/),t=t.filter((e=>e)),t.join("\n\n")},term:e=>{let t=Yi(e,["term"]);return"".concat(t.term,":")},linum:e=>{let t=Yi(e,["num","text"]);return"".concat(t.num,". ").concat(t.text)},"block indent":e=>{let t=Yi(e);return t[1]?"\n"+t[1]+"\n":""},lbs:e=>{let t=Yi(e,["text"]);return"[[".concat(t.text," Lifeboat Station|").concat(t.text,"]]")},lbc:e=>{let t=Yi(e,["text"]);return"[[".concat(t.text,"-class lifeboat|").concat(t.text,"-class]]")},lbb:e=>{let t=Yi(e,["text"]);return"[[".concat(t.text,"-class lifeboat|").concat(t.text,"]]")},"#dateformat":e=>(e=e.replace(/:/,"|"),Yi(e,["date","format"]).date),lc:e=>(e=e.replace(/:/,"|"),(Yi(e,["text"]).text||"").toLowerCase()),uc:e=>(e=e.replace(/:/,"|"),(Yi(e,["text"]).text||"").toUpperCase()),lcfirst:e=>{e=e.replace(/:/,"|");let t=Yi(e,["text"]).text;return t?t[0].toLowerCase()+t.substr(1):""},ucfirst:e=>{e=e.replace(/:/,"|");let t=Yi(e,["text"]).text;return t?t[0].toUpperCase()+t.substr(1):""},padleft:e=>{e=e.replace(/:/,"|");let t=Yi(e,["text","num"]);return(t.text||"").padStart(t.num,t.str||"0")},padright:e=>{e=e.replace(/:/,"|");let t=Yi(e,["text","num"]);return(t.text||"").padEnd(t.num,t.str||"0")},abbrlink:e=>{let t=Yi(e,["abbr","page"]);return t.page?"[[".concat(t.page,"|").concat(t.abbr,"]]"):"[[".concat(t.abbr,"]]")},own:e=>{let t=Yi(e,["author"]),i="Own work";return t.author&&(i+=" by "+t.author),i},formatnum:e=>{e=e.replace(/:/,"|");let t=Yi(e,["number"]).number||"";return t=t.replace(/,/g,""),Number(t).toLocaleString()||""},frac:e=>{let t=Yi(e,["a","b","c"]);return t.c?"".concat(t.a," ").concat(t.b,"/").concat(t.c):t.b?"".concat(t.a,"/").concat(t.b):"1/".concat(t.b)},convert:e=>{let t=Yi(e,["num","two","three","four"]);return"-"===t.two||"to"===t.two||"and"===t.two?t.four?"".concat(t.num," ").concat(t.two," ").concat(t.three," ").concat(t.four):"".concat(t.num," ").concat(t.two," ").concat(t.three):"".concat(t.num," ").concat(t.two)},tl:e=>{let t=Yi(e,["first","second"]);return t.second||t.first},won:e=>{let t=Yi(e,["text"]);return t.place||t.text||Vi.titlecase(t.template)},tag:e=>{let t=Yi(e,["tag","open"]);const i={span:!0,div:!0,p:!0};return t.open&&"pair"!==t.open?"":i[t.tag]?t.content||"":"<".concat(t.tag," ").concat(t.attribs||"",">").concat(t.content||"","")},plural:e=>{e=e.replace(/plural:/,"plural|");let t=Yi(e,["num","word"]),i=Number(t.num),a=t.word;return 1!==i&&(/.y$/.test(a)?a=a.replace(/y$/,"ies"):a+="s"),i+" "+a},dec:e=>{let t=Yi(e,["degrees","minutes","seconds"]),i=(t.degrees||0)+"°";return t.minutes&&(i+=t.minutes+"′"),t.seconds&&(i+=t.seconds+"″"),i},val:e=>{let t=Yi(e,["number","uncertainty"]),i=t.number;i&&Number(i)&&(i=Number(i).toLocaleString());let a=i||"";return t.p&&(a=t.p+a),t.s&&(a=t.s+a),(t.u||t.ul||t.upl)&&(a=a+" "+(t.u||t.ul||t.upl)),a},percentage:e=>{let t=Yi(e,["numerator","denominator","decimals"]),i=Vi.percentage(t);return null===i?"":i+"%"},"percent-done":e=>{let t=Yi(e,["done","total","digits"]),i=Vi.percentage({numerator:t.done,denominator:t.total,decimals:t.digits});return null===i?"":"".concat(t.done," (").concat(i,"%) done")}},Xi=[["🇦🇩","and","andorra"],["🇦🇪","are","united arab emirates"],["🇦🇫","afg","afghanistan"],["🇦🇬","atg","antigua and barbuda"],["🇦🇮","aia","anguilla"],["🇦🇱","alb","albania"],["🇦🇲","arm","armenia"],["🇦🇴","ago","angola"],["🇦🇶","ata","antarctica"],["🇦🇷","arg","argentina"],["🇦🇸","asm","american samoa"],["🇦🇹","aut","austria"],["🇦🇺","aus","australia"],["🇦🇼","abw","aruba"],["🇦🇽","ala","åland islands"],["🇦🇿","aze","azerbaijan"],["🇧🇦","bih","bosnia and herzegovina"],["🇧🇧","brb","barbados"],["🇧🇩","bgd","bangladesh"],["🇧🇪","bel","belgium"],["🇧🇫","bfa","burkina faso"],["🇧🇬","bgr","bulgaria"],["🇧🇬","bul","bulgaria"],["🇧🇭","bhr","bahrain"],["🇧🇮","bdi","burundi"],["🇧🇯","ben","benin"],["🇧🇱","blm","saint barthélemy"],["🇧🇲","bmu","bermuda"],["🇧🇳","brn","brunei darussalam"],["🇧🇴","bol","bolivia"],["🇧🇶","bes","bonaire, sint eustatius and saba"],["🇧🇷","bra","brazil"],["🇧🇸","bhs","bahamas"],["🇧🇹","btn","bhutan"],["🇧🇻","bvt","bouvet island"],["🇧🇼","bwa","botswana"],["🇧🇾","blr","belarus"],["🇧🇿","blz","belize"],["🇨🇦","can","canada"],["🇨🇨","cck","cocos (keeling) islands"],["🇨🇩","cod","congo"],["🇨🇫","caf","central african republic"],["🇨🇬","cog","congo"],["🇨🇭","che","switzerland"],["🇨🇮","civ","côte d'ivoire"],["🇨🇰","cok","cook islands"],["🇨🇱","chl","chile"],["🇨🇲","cmr","cameroon"],["🇨🇳","chn","china"],["🇨🇴","col","colombia"],["🇨🇷","cri","costa rica"],["🇨🇺","cub","cuba"],["🇨🇻","cpv","cape verde"],["🇨🇼","cuw","curaçao"],["🇨🇽","cxr","christmas island"],["🇨🇾","cyp","cyprus"],["🇨🇿","cze","czech republic"],["🇩🇪","deu","germany"],["🇩🇪","ger","germany"],["🇩🇯","dji","djibouti"],["🇩🇰","dnk","denmark"],["🇩🇲","dma","dominica"],["🇩🇴","dom","dominican republic"],["🇩🇿","dza","algeria"],["🇪🇨","ecu","ecuador"],["🇪🇪","est","estonia"],["🇪🇬","egy","egypt"],["🇪🇭","esh","western sahara"],["🇪🇷","eri","eritrea"],["🇪🇸","esp","spain"],["🇪🇹","eth","ethiopia"],["🇫🇮","fin","finland"],["🇫🇯","fji","fiji"],["🇫🇰","flk","falkland islands (malvinas)"],["🇫🇲","fsm","micronesia"],["🇫🇴","fro","faroe islands"],["🇫🇷","fra","france"],["🇬🇦","gab","gabon"],["🇬🇧","gbr","united kingdom"],["🇬🇩","grd","grenada"],["🇬🇫","guf","french guiana"],["🇬🇬","ggy","guernsey"],["🇬🇭","gha","ghana"],["🇬🇮","gib","gibraltar"],["🇬🇱","grl","greenland"],["🇬🇲","gmb","gambia"],["🇬🇳","gin","guinea"],["🇬🇵","glp","guadeloupe"],["🇬🇶","gnq","equatorial guinea"],["🇬🇷","grc","greece"],["🇬🇸","sgs","south georgia"],["🇬🇹","gtm","guatemala"],["🇬🇺","gum","guam"],["🇬🇼","gnb","guinea-bissau"],["🇬🇾","guy","guyana"],["🇭🇰","hkg","hong kong"],["🇭🇲","hmd","heard island and mcdonald islands"],["🇭🇳","hnd","honduras"],["🇭🇷","hrv","croatia"],["🇭🇹","hti","haiti"],["🇭🇺","hun","hungary"],["🇮🇩","idn","indonesia"],["🇮🇪","irl","ireland"],["🇮🇱","isr","israel"],["🇮🇲","imn","isle of man"],["🇮🇳","ind","india"],["🇮🇴","iot","british indian ocean territory"],["🇮🇶","irq","iraq"],["🇮🇷","irn","iran"],["🇮🇸","isl","iceland"],["🇮🇹","ita","italy"],["🇯🇪","jey","jersey"],["🇯🇲","jam","jamaica"],["🇯🇴","jor","jordan"],["🇯🇵","jpn","japan"],["🇰🇪","ken","kenya"],["🇰🇬","kgz","kyrgyzstan"],["🇰🇭","khm","cambodia"],["🇰🇮","kir","kiribati"],["🇰🇲","com","comoros"],["🇰🇳","kna","saint kitts and nevis"],["🇰🇵","prk","north korea"],["🇰🇷","kor","south korea"],["🇰🇼","kwt","kuwait"],["🇰🇾","cym","cayman islands"],["🇰🇿","kaz","kazakhstan"],["🇱🇦","lao","lao people's democratic republic"],["🇱🇧","lbn","lebanon"],["🇱🇨","lca","saint lucia"],["🇱🇮","lie","liechtenstein"],["🇱🇰","lka","sri lanka"],["🇱🇷","lbr","liberia"],["🇱🇸","lso","lesotho"],["🇱🇹","ltu","lithuania"],["🇱🇺","lux","luxembourg"],["🇱🇻","lva","latvia"],["🇱🇾","lby","libya"],["🇲🇦","mar","morocco"],["🇲🇨","mco","monaco"],["🇲🇩","mda","moldova"],["🇲🇪","mne","montenegro"],["🇲🇫","maf","saint martin (french part)"],["🇲🇬","mdg","madagascar"],["🇲🇭","mhl","marshall islands"],["🇲🇰","mkd","macedonia"],["🇲🇱","mli","mali"],["🇲🇲","mmr","myanmar"],["🇲🇳","mng","mongolia"],["🇲🇴","mac","macao"],["🇲🇵","mnp","northern mariana islands"],["🇲🇶","mtq","martinique"],["🇲🇷","mrt","mauritania"],["🇲🇸","msr","montserrat"],["🇲🇹","mlt","malta"],["🇲🇺","mus","mauritius"],["🇲🇻","mdv","maldives"],["🇲🇼","mwi","malawi"],["🇲🇽","mex","mexico"],["🇲🇾","mys","malaysia"],["🇲🇿","moz","mozambique"],["🇳🇦","nam","namibia"],["🇳🇨","ncl","new caledonia"],["🇳🇪","ner","niger"],["🇳🇫","nfk","norfolk island"],["🇳🇬","nga","nigeria"],["🇳🇮","nic","nicaragua"],["🇳🇱","nld","netherlands"],["🇳🇴","nor","norway"],["🇳🇵","npl","nepal"],["🇳🇷","nru","nauru"],["🇳🇺","niu","niue"],["🇳🇿","nzl","new zealand"],["🇴🇲","omn","oman"],["🇵🇦","pan","panama"],["🇵🇪","per","peru"],["🇵🇫","pyf","french polynesia"],["🇵🇬","png","papua new guinea"],["🇵🇭","phl","philippines"],["🇵🇰","pak","pakistan"],["🇵🇱","pol","poland"],["🇵🇲","spm","saint pierre and miquelon"],["🇵🇳","pcn","pitcairn"],["🇵🇷","pri","puerto rico"],["🇵🇸","pse","palestinian territory"],["🇵🇹","prt","portugal"],["🇵🇼","plw","palau"],["🇵🇾","pry","paraguay"],["🇶🇦","qat","qatar"],["🇷🇪","reu","réunion"],["🇷🇴","rou","romania"],["🇷🇸","srb","serbia"],["🇷🇺","rus","russia"],["🇷🇼","rwa","rwanda"],["🇸🇦","sau","saudi arabia"],["🇸🇧","slb","solomon islands"],["🇸🇨","syc","seychelles"],["🇸🇩","sdn","sudan"],["🇸🇪","swe","sweden"],["🇸🇬","sgp","singapore"],["🇸🇭","shn","saint helena, ascension and tristan da cunha"],["🇸🇮","svn","slovenia"],["🇸🇯","sjm","svalbard and jan mayen"],["🇸🇰","svk","slovakia"],["🇸🇱","sle","sierra leone"],["🇸🇲","smr","san marino"],["🇸🇳","sen","senegal"],["🇸🇴","som","somalia"],["🇸🇷","sur","suriname"],["🇸🇸","ssd","south sudan"],["🇸🇹","stp","sao tome and principe"],["🇸🇻","slv","el salvador"],["🇸🇽","sxm","sint maarten (dutch part)"],["🇸🇾","syr","syrian arab republic"],["🇸🇿","swz","swaziland"],["🇹🇨","tca","turks and caicos islands"],["🇹🇩","tcd","chad"],["🇹🇫","atf","french southern territories"],["🇹🇬","tgo","togo"],["🇹🇭","tha","thailand"],["🇹🇯","tjk","tajikistan"],["🇹🇰","tkl","tokelau"],["🇹🇱","tls","timor-leste"],["🇹🇲","tkm","turkmenistan"],["🇹🇳","tun","tunisia"],["🇹🇴","ton","tonga"],["🇹🇷","tur","turkey"],["🇹🇹","tto","trinidad and tobago"],["🇹🇻","tuv","tuvalu"],["🇹🇼","twn","taiwan"],["🇹🇿","tza","tanzania"],["🇺🇦","ukr","ukraine"],["🇺🇬","uga","uganda"],["🇺🇲","umi","united states minor outlying islands"],["🇺🇸","us","united states"],["🇺🇸","usa","united states"],["🇺🇾","ury","uruguay"],["🇺🇿","uzb","uzbekistan"],["🇻🇦","vat","vatican city"],["🇻🇨","vct","saint vincent and the grenadines"],["🇻🇪","ven","venezuela"],["🇻🇬","vgb","virgin islands, british"],["🇻🇮","vir","virgin islands, u.s."],["🇻🇳","vnm","viet nam"],["🇻🇺","vut","vanuatu"],["🇼🇫","wlf","wallis and futuna"],["🇼🇸","wsm","samoa"],["🇾🇪","yem","yemen"],["🇾🇹","myt","mayotte"],["🇿🇦","zaf","south africa"],["🇿🇲","zmb","zambia"],["🇿🇼 ","zwe","zimbabwe"],["🇺🇳","un","united nations"],["🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿","eng","england"],["🏴󠁧󠁢󠁳󠁣󠁴󠁿","sct","scotland"],["🏴󠁧󠁢󠁷󠁬󠁳󠁿","wal","wales"],["🇪🇺","eu","european union"]];const Qi=Ve,ea=Xi;let ta={flag:e=>{let t=Qi(e,["flag","variant"]),i=t.flag||"";t.flag=(t.flag||"").toLowerCase();let a=ea.find((e=>t.flag===e[1]||t.flag===e[2]))||[],n=a[0]||"";return"".concat(n," [[").concat(a[2],"|").concat(i,"]]")},flagcountry:e=>{let t=Qi(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ea.find((e=>t.flag===e[1]||t.flag===e[2]))||[],a=i[0]||"";return"".concat(a," [[").concat(i[2],"]]")},flagcu:e=>{let t=Qi(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ea.find((e=>t.flag===e[1]||t.flag===e[2]))||[],a=i[0]||"";return"".concat(a," ").concat(i[2])},flagicon:e=>{let t=Qi(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ea.find((e=>t.flag===e[1]||t.flag===e[2]));return i?"[[".concat(i[2],"|").concat(i[0],"]]"):""},flagdeco:e=>{let t=Qi(e,["flag","variant"]);return t.flag=(t.flag||"").toLowerCase(),(ea.find((e=>t.flag===e[1]||t.flag===e[2]))||[])[0]||""},fb:e=>{let t=Qi(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ea.find((e=>t.flag===e[1]||t.flag===e[2]));return i?"".concat(i[0]," [[").concat(i[2]," national football team|").concat(i[2],"]]"):""},fbicon:e=>{let t=Qi(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ea.find((e=>t.flag===e[1]||t.flag===e[2]));return i?" [[".concat(i[2]," national football team|").concat(i[0],"]]"):""},flagathlete:e=>{let t=Qi(e,["name","flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=ea.find((e=>t.flag===e[1]||t.flag===e[2]));return i?"".concat(i[0]," [[").concat(t.name||"","]] (").concat(i[1].toUpperCase(),")"):"[[".concat(t.name||"","]]")}};ea.forEach((e=>{ta[e[1]]=()=>e[0]}));var ia=ta;const aa=Ve,na=Hi.titlecase;let ra={};["rh","rh2","yes","no","maybe","eliminated","lost","safe","active","site active","coming soon","good","won","nom","sho","longlisted","tba","success","operational","failure","partial","regional","maybecheck","partial success","partial failure","okay","yes-no","some","nonpartisan","pending","unofficial","unofficial2","usually","rarely","sometimes","any","varies","black","non-album single","unreleased","unknown","perhaps","depends","included","dropped","terminated","beta","table-experimental","free","proprietary","nonfree","needs","nightly","release-candidate","planned","scheduled","incorrect","no result","cmain","calso starring","crecurring","cguest","not yet","optional"].forEach((e=>{ra[e]=e=>{let t=aa(e,["text"]);return t.text||na(t.template)}}));[["active fire","Active"],["site active","Active"],["site inactive","Inactive"],["yes2",""],["no2",""],["ya","✅"],["na","❌"],["nom","Nominated"],["sho","Shortlisted"],["tba","TBA"],["maybecheck","✔️"],["okay","Neutral"],["n/a","N/A"],["sdash","—"],["dunno","?"],["draw",""],["cnone",""],["nocontest",""]].forEach((e=>{ra[e[0]]=t=>aa(t,["text"]).text||e[1]}));var oa=ra,sa=Object.assign({},{"·":"·",dot:"·",middot:"·","•":" • ",",":",","1/2":"1⁄2","1/3":"1⁄3","2/3":"2⁄3","1/4":"1⁄4","3/4":"3⁄4","–":"–",ndash:"–","en dash":"–","spaced ndash":" – ","—":"—",mdash:"—","em dash":"—","number sign":"#",ibeam:"I","&":"&",";":";",ampersand:"&",snds:" – ",snd:" – ","^":" ","!":"|","\\":" /","`":"`","=":"=",bracket:"[","[":"[","*":"*",asterisk:"*","long dash":"———",clear:"\n\n","h.":"ḥ",profit:"▲",loss:"▼",gain:"▲"},Wi,Ji,ia,oa);let la={};["goodreads author","twitter","facebook","instagram","tumblr","pinterest","espn nfl","espn nhl","espn fc","hockeydb","fifa player","worldcat","worldcat id","nfl player","ted speaker","playmate"].forEach((e=>{la[e]=["id","name"]}));var ca=la;let ua={};["imdb title","imdb name","imdb episode","imdb event","afi film","allmovie title","allgame","tcmdb title","discogs artist","discogs label","discogs release","discogs master","librivox author","musicbrainz artist","musicbrainz label","musicbrainz recording","musicbrainz release","musicbrainz work","youtube","goodreads book","dmoz"].forEach((e=>{ua[e]=["id","title","description","section"]}));var pa=ua;const da=Ve,ma=S,ha=Hi;var ga={ipa:(e,t)=>{let i=da(e,["transcription","lang","audio"]);return i.lang=ha.getLang(i.template),i.template="ipa",t.push(i),""},ipac:(e,t)=>{let i=da(e);return i.transcription=(i.list||[]).join(","),delete i.list,i.lang=ha.getLang(i.template),i.template="ipac",t.push(i),""},quote:(e,t)=>{let i=da(e,["text","author"]);if(t.push(i),i.text){let e='"'.concat(i.text,'"');return i.author&&(e+="\n\n",e+=" - ".concat(i.author)),e+"\n"}return""},"cite gnis":(e,t)=>{let i=da(e,["id","name","type"]);return i.type="gnis",i.template="citation",t.push(i),""},"spoken wikipedia":(e,t)=>{let i=da(e,["file","date"]);return i.template="audio",t.push(i),""},yel:(e,t)=>{let i=da(e,["min"]);return t.push(i),i.min?"yellow: ".concat(i.min||"","'"):""},subon:(e,t)=>{let i=da(e,["min"]);return t.push(i),i.min?"sub on: ".concat(i.min||"","'"):""},suboff:(e,t)=>{let i=da(e,["min"]);return t.push(i),i.min?"sub off: ".concat(i.min||"","'"):""},sfn:(e,t,i,a)=>{let n=da(e,["author","year","location"]);return a&&(n.name=n.template,n.teplate=a),t.push(n),""},redirect:(e,t)=>{let i=da(e,["redirect"]),a=i.list||[],n=[];for(let e=0;e{let i=da(e),a={};Object.keys(ha.sisterProjects).forEach((e=>{!0===i.hasOwnProperty(e)&&(a[ha.sisterProjects[e]]=i[e])}));let n={template:"sister project links",links:a};return t.push(n),""},"subject bar":(e,t)=>{let i=da(e);Object.keys(i).forEach((e=>{ha.sisterProjects.hasOwnProperty(e)&&(i[ha.sisterProjects[e]]=i[e],delete i[e])}));let a={template:"subject bar",links:i};return t.push(a),""},gallery:(e,t)=>{let i=da(e),a=(i.list||[]).filter((e=>/^ *File ?:/.test(e)));return a=a.map((e=>new ma({file:e}).json())),i={template:"gallery",images:a},t.push(i),""},sky:(e,t)=>{let i=da(e,["asc_hours","asc_minutes","asc_seconds","dec_sign","dec_degrees","dec_minutes","dec_seconds","distance"]),a={template:"sky",ascension:{hours:i.asc_hours,minutes:i.asc_minutes,seconds:i.asc_seconds},declination:{sign:i.dec_sign,degrees:i.dec_degrees,minutes:i.dec_minutes,seconds:i.dec_seconds},distance:i.distance};return t.push(a),""},"medical cases chart":(e,t)=>{let i=["date","deathsExpr","recoveriesExpr","casesExpr","4thExpr","5thExpr","col1","col1Change","col2","col2Change"],a=da(e);a.data=a.data||"";let n=a.data.split("\n").map((e=>{let t=e.split(";"),a={options:new Map},n=0;for(let e=0;e{let i=da(e);i.x&&(i.x=i.x.split(",").map((e=>e.trim()))),i.y&&(i.y=i.y.split(",").map((e=>e.trim())));let a=1;for(;i["y"+a];)i["y"+a]=i["y"+a].split(",").map((e=>e.trim())),a+=1;return t.push(i),""},"historical populations":(e,t)=>{let i=da(e);i.list=i.list||[];let a=[];for(let e=0;e{const i=/^jan /i,a=/^year /i;let n=da(e);const r=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"];let o={},s=Object.keys(n).filter((e=>i.test(e)));s=s.map((e=>e.replace(i,""))),s.forEach((e=>{o[e]=[],r.forEach((t=>{let i="".concat(t," ").concat(e);if(n.hasOwnProperty(i)){let t=ha.toNumber(n[i]);delete n[i],o[e].push(t)}}))})),n.byMonth=o;let l={};return Object.keys(n).forEach((e=>{if(a.test(e)){let t=e.replace(a,"");l[t]=n[e],delete n[e]}})),n.byYear=l,t.push(n),""},"weather box/concise c":(e,t)=>{let i=da(e);return i.list=i.list.map((e=>ha.toNumber(e))),i.byMonth={"high c":i.list.slice(0,12),"low c":i.list.slice(12,24),"rain mm":i.list.slice(24,36)},delete i.list,i.template="weather box",t.push(i),""},"weather box/concise f":(e,t)=>{let i=da(e);return i.list=i.list.map((e=>ha.toNumber(e))),i.byMonth={"high f":i.list.slice(0,12),"low f":i.list.slice(12,24),"rain inch":i.list.slice(24,36)},delete i.list,i.template="weather box",t.push(i),""},"climate chart":(e,t)=>{let i=da(e).list||[],a=i[0],n=i[38];i=i.slice(1),i=i.map((e=>(e&&"−"===e[0]&&(e=e.replace(/−/,"-")),e)));let r=[];for(let e=0;e<36;e+=3)r.push({low:ha.toNumber(i[e]),high:ha.toNumber(i[e+1]),precip:ha.toNumber(i[e+2])});let o={template:"climate chart",data:{title:a,source:n,months:r}};return t.push(o),""}};let fa={"find a grave":["id","name","work","last","first","date","accessdate"],congbio:["id","name","date"],"hollywood walk of fame":["name"],"wide image":["file","width","caption"],audio:["file","text","type"],rp:["page"],"short description":["description"],"coord missing":["region"],unreferenced:["date"],"taxon info":["taxon","item"],"portuguese name":["first","second","suffix"],geo:["lat","lon","zoom"]};fa=Object.assign(fa,ca,pa,ga);var ka=fa;const ba=Ve,wa=Hi;let ya={math:(e,t)=>{let i=ba(e,["formula"]);return t.push(i),"\n\n"+(i.formula||"")+"\n\n"},isbn:(e,t)=>{let i=ba(e,["id","id2","id3"]);return t.push(i),"ISBN: "+(i.id||"")},"based on":(e,t)=>{let i=ba(e,["title","author"]);return t.push(i),"".concat(i.title," by ").concat(i.author||"")},"bbl to t":(e,t)=>{let i=ba(e,["barrels"]);return t.push(i),"0"===i.barrels?i.barrels+" barrel":i.barrels+" barrels"},mpc:(e,t)=>{let i=ba(e,["number","text"]);return t.push(i),"[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ".concat(i.text||i.number,"]")},pengoal:(e,t)=>(t.push({template:"pengoal"}),"✅"),penmiss:(e,t)=>(t.push({template:"penmiss"}),"❌"),"ordered list":(e,t)=>{let i=ba(e);return t.push(i),i.list=i.list||[],i.list.map(((e,t)=>"".concat(t+1,". ").concat(e))).join("\n\n")},"title year":(e,t,i,a,n)=>{let r=ba(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b[0-9]{4}\b/);if(e)return e[0]}return r.nomatch||""},"title century":(e,t,i,a,n)=>{let r=ba(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b([0-9]+)(st|nd|rd|th)\b/);if(e)return e[1]||""}return r.nomatch||""},"title decade":(e,t,i,a,n)=>{let r=ba(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b([0-9]+)s\b/);if(e)return e[1]||""}return r.nomatch||""},nihongo:(e,t)=>{let i=ba(e,["english","kanji","romaji","extra"]);t.push(i);let a=i.english||i.romaji||"";return i.kanji&&(a+=" (".concat(i.kanji,")")),a},marriage:(e,t)=>{let i=ba(e,["spouse","from","to","end"]);t.push(i);let a=i.spouse||"";return i.from&&(i.to?a+=" (m. ".concat(i.from,"-").concat(i.to,")"):a+=" (m. ".concat(i.from,")")),a},"sent off":(e,t)=>{let i=ba(e,["cards"]),a={template:"sent off",cards:i.cards,minutes:i.list||[]};return t.push(a),"sent off: "+a.minutes.map((e=>e+"'")).join(", ")},transl:(e,t)=>{let i=ba(e,["lang","text","text2"]);return i.text2&&(i.iso=i.text,i.text=i.text2,delete i.text2),t.push(i),i.text||""},"collapsible list":(e,t)=>{let i=ba(e);t.push(i);let a="";if(i.title&&(a+="'''".concat(i.title,"'''")+"\n\n"),!i.list){i.list=[];for(let e=1;e<10;e+=1)i[e]&&(i.list.push(i[e]),delete i[e])}return i.list=i.list.filter((e=>e)),a+=i.list.join("\n\n"),a},"columns-list":(e,t)=>{let i=((ba(e).list||[])[0]||"").split(/\n/).filter((e=>e));return i=i.map((e=>e.replace(/\*/,""))),t.push({template:"columns-list",list:i}),i=i.map((e=>"• "+e)),i.join("\n\n")},height:(e,t)=>{let i=ba(e);t.push(i);let a=[];return["m","cm","ft","in"].forEach((e=>{!0===i.hasOwnProperty(e)&&a.push(i[e]+e)})),a.join(" ")},sic:(e,t)=>{let i=ba(e,["one","two","three"]),a=(i.one||"")+(i.two||"");return"?"===i.one&&(a=(i.two||"")+(i.three||"")),t.push({template:"sic",word:a}),"y"===i.nolink?a:"".concat(a," [sic]")},inrconvert:(e,t)=>{let i=ba(e,["rupee_value","currency_formatting"]);t.push(i);const a={k:1e3,m:1e6,b:1e9,t:1e12,l:1e5,c:1e7,lc:1e12};if(i.currency_formatting){let e=a[i.currency_formatting]||1;i.rupee_value=i.rupee_value*e}return"inr ".concat(i.rupee_value||"")},frac:(e,t)=>{let i=ba(e,["a","b","c"]),a={template:"sfrac"};return i.c?(a.integer=i.a,a.numerator=i.b,a.denominator=i.c):i.b?(a.numerator=i.a,a.denominator=i.b):(a.numerator=1,a.denominator=i.a),t.push(a),a.integer?"".concat(a.integer," ").concat(a.numerator,"⁄").concat(a.denominator):"".concat(a.numerator,"⁄").concat(a.denominator)},"winning percentage":(e,t)=>{let i=ba(e,["wins","losses","ties"]);t.push(i);let a=Number(i.wins),n=Number(i.losses),r=Number(i.ties)||0,o=a+n+r;"y"===i.ignore_ties&&(r=0),r&&(a+=r/2);let s=wa.percentage({numerator:a,denominator:o,decimals:1});return null===s?"":".".concat(10*s)},winlosspct:(e,t)=>{let i=ba(e,["wins","losses"]);t.push(i);let a=Number(i.wins),n=Number(i.losses),r=wa.percentage({numerator:a,denominator:a+n,decimals:1});return null===r?"":(r=".".concat(10*r),"".concat(a||0," || ").concat(n||0," || ").concat(r||"-"))},"video game release":(e,t)=>{let i=["region","date","region2","date2","region3","date3","region4","date4"],a=ba(e,i),n={template:"video game release",releases:[]};for(let e=0;e"".concat(e.region,": ").concat(e.date||""))).join("\n\n")+"\n"},uss:(e,t)=>{let i=ba(e,["name","id"]);return t.push(i),i.id?"[[USS ".concat(i.name," (").concat(i.id,")|USS ''").concat(i.name,"'' (").concat(i.id,")]]"):"[[USS ".concat(i.name,"|USS ''").concat(i.name,"'']]")}};var xa=ya;const va=Ve,$a={"£":"GB£","¥":"¥","৳":"৳","₩":"₩","€":"€","₱":"₱","₹":"₹","₽":"₽","cn¥":"CN¥","gb£":"GB£","india rs":"₹","indian rupee symbol":"₹","indian rupee":"₹","indian rupees":"₹","philippine peso":"₱","russian ruble":"₽","SK won":"₩","turkish lira":"TRY",a$:"A$",au$:"A$",aud:"A$",bdt:"BDT",brl:"BRL",ca$:"CA$",cad:"CA$",chf:"CHF",cny:"CN¥",czk:"czk",dkk:"dkk",dkk2:"dkk",euro:"€",gbp:"GB£",hk$:"HK$",hkd:"HK$",ils:"ILS",inr:"₹",jpy:"¥",myr:"MYR",nis:"ILS",nok:"NOK",nok2:"NOK",nz$:"NZ$",nzd:"NZ$",peso:"peso",pkr:"₨",r$:"BRL",rmb:"CN¥",rub:"₽",ruble:"₽",rupee:"₹",s$:"sgd",sek:"SEK",sek2:"SEK",sfr:"CHF",sgd:"sgd",shekel:"ILS",sheqel:"ILS",ttd:"TTD",us$:"US$",usd:"US$",yen:"¥",zar:"R"},ja=(e,t)=>{let i=va(e,["amount","code"]);t.push(i);let a=i.template||"";"currency"===a?(a=i.code,a||(i.code=a="usd")):""!==a&&"monnaie"!==a&&"unité"!==a&&"nombre"!==a&&"nb"!==a||(a=i.code),a=(a||"").toLowerCase(),"us"===a?i.code=a="usd":"uk"===a&&(i.code=a="gbp");let n="".concat($a[a]||"").concat(i.amount||"");return i.code&&!$a[i.code.toLowerCase()]&&(n+=" "+i.code),n};let _a={currency:ja};Object.keys($a).forEach((e=>{_a[e]=ja}));var za=_a;const Oa=864e5,Ea=30*Oa,Sa=365*Oa,Ca=function(e){return new Date("".concat(e.year,"-").concat(e.month||0,"-").concat(e.date||1)).getTime()};var Na={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],timeSince:function(e){let t=new Date(e);if(isNaN(t.getTime()))return"";let i=(new Date).getTime()-t.getTime(),a="ago";i<0&&(a="from now",i=Math.abs(i));let n=i/1e3/60/60/24;return n<365?parseInt(n,10)+" days "+a:parseInt(n/365,10)+" years "+a},delta:function(e,t){e=Ca(e);let i=(t=Ca(t))-e,a={},n=Math.floor(i/Sa,10);n>0&&(a.years=n,i-=a.years*Sa);let r=Math.floor(i/Ea,10);r>0&&(a.months=r,i-=a.months*Ea);let o=Math.floor(i/Oa,10);return o>0&&(a.days=o),a},toOrdinal:function(e){let t=e%10,i=e%100;return 1===t&&11!==i?e+"st":2===t&&12!==i?e+"nd":3===t&&13!==i?e+"rd":e+"th"}};const qa=[void 0,"January","February","March","April","May","June","July","August","September","October","November","December"],La=qa.reduce(((e,t,i)=>(0===i||(e[t.toLowerCase()]=i),e)),{}),Ta=function(e){return e<10?"0"+e:String(e)};var Pa={toText:function(e){let t=String(e.year||"");if(void 0!==e.month&&!0===qa.hasOwnProperty(e.month))if(void 0===e.date)t="".concat(qa[e.month]," ").concat(e.year);else{if(t="".concat(qa[e.month]," ").concat(e.date,", ").concat(e.year),void 0!==e.hour&&void 0!==e.minute){let i="".concat(Ta(e.hour),":").concat(Ta(e.minute));void 0!==e.second&&(i=i+":"+Ta(e.second)),t=i+", "+t}e.tz&&(t+=" (".concat(e.tz,")"))}return t},ymd:function(e){let t={},i=["year","month","date","hour","minute","second"];for(let a=0;a{let i=Da(e,["year","month","date","hour","minute","second","timezone"]),a=Ma.ymd([i.year,i.month,i.date||i.day]);return i.text=Ma.toText(a),i.timezone&&("Z"===i.timezone&&(i.timezone="UTC"),i.text+=" (".concat(i.timezone,")")),i.hour&&i.minute&&(i.second?i.text="".concat(i.hour,":").concat(i.minute,":").concat(i.second,", ")+i.text:i.text="".concat(i.hour,":").concat(i.minute,", ")+i.text),i.text&&t.push(Ra(i)),i.text},natural_date:(e,t)=>{let i=Da(e,["text"]).text||"",a={};if(/^[0-9]{4}$/.test(i))a.year=parseInt(i,10);else{let e=i.replace(/[a-z]+\/[a-z]+/i,"");e=e.replace(/[0-9]+:[0-9]+(am|pm)?/i,"");let t=new Date(e);!1===isNaN(t.getTime())&&(a.year=t.getFullYear(),a.month=t.getMonth()+1,a.date=t.getDate())}return t.push(Ra(a)),i.trim()},one_year:(e,t)=>{let i=Da(e,["year"]),a=Number(i.year);return t.push(Ra({year:a})),String(a)},two_dates:(e,t)=>{let i=Da(e,["b","birth_year","birth_month","birth_date","death_year","death_month","death_date"]);if(i.b&&"b"===i.b.toLowerCase()){let e=Ma.ymd([i.birth_year,i.birth_month,i.birth_date]);return t.push(Ra(e)),Ma.toText(e)}let a=Ma.ymd([i.death_year,i.death_month,i.death_date]);return t.push(Ra(a)),Ma.toText(a)},age:e=>{let t=Ua(e);return Ia(t.from,t.to).years||0},"diff-y":e=>{let t=Ua(e),i=Ia(t.from,t.to);return 1===i.years?i.years+" year":(i.years||0)+" years"},"diff-ym":e=>{let t=Ua(e),i=Ia(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),1===i.months?a.push("1 month"):i.months&&0!==i.months&&a.push(i.months+" months"),a.join(", ")},"diff-ymd":e=>{let t=Ua(e),i=Ia(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),1===i.months?a.push("1 month"):i.months&&0!==i.months&&a.push(i.months+" months"),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")},"diff-yd":e=>{let t=Ua(e),i=Ia(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),i.days+=30*(i.months||0),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")},"diff-d":e=>{let t=Ua(e),i=Ia(t.from,t.to),a=[];return i.days+=365*(i.years||0),i.days+=30*(i.months||0),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")}};const Fa=Ba,Ka=Ve,Wa=Na,Za=Pa,Ha=["January","February","March","April","May","June","July","August","September","October","November","December"];var Ya={currentday:()=>{let e=new Date;return String(e.getDate())},currentdayname:()=>{let e=new Date;return Wa.days[e.getDay()]},currentmonth:()=>{let e=new Date;return Ha[e.getMonth()]},currentyear:()=>{let e=new Date;return String(e.getFullYear())},monthyear:()=>{let e=new Date;return Ha[e.getMonth()]+" "+e.getFullYear()},"monthyear-1":()=>{let e=new Date;return e.setMonth(e.getMonth()-1),Ha[e.getMonth()]+" "+e.getFullYear()},"monthyear+1":()=>{let e=new Date;return e.setMonth(e.getMonth()+1),Ha[e.getMonth()]+" "+e.getFullYear()},"time ago":e=>{let t=Ka(e,["date","fmt"]).date;return Wa.timeSince(t)},"birth date and age":(e,t)=>{let i=Ka(e,["year","month","day"]);return i.year&&/[a-z]/i.test(i.year)?Fa.natural_date(e,t):(t.push(i),i=Za.ymd([i.year,i.month,i.day]),Za.toText(i))},"birth year and age":(e,t)=>{let i=Ka(e,["birth_year","birth_month"]);if(i.death_year&&/[a-z]/i.test(i.death_year))return Fa.natural_date(e,t);t.push(i);let a=(new Date).getFullYear()-parseInt(i.birth_year,10);i=Za.ymd([i.birth_year,i.birth_month]);let n=Za.toText(i);return a&&(n+=" (age ".concat(a,")")),n},"death year and age":(e,t)=>{let i=Ka(e,["death_year","birth_year","death_month"]);return i.death_year&&/[a-z]/i.test(i.death_year)?Fa.natural_date(e,t):(t.push(i),i=Za.ymd([i.death_year,i.death_month]),Za.toText(i))},"birth date and age2":(e,t)=>{let i=Ka(e,["at_year","at_month","at_day","birth_year","birth_month","birth_day"]);return t.push(i),i=Za.ymd([i.birth_year,i.birth_month,i.birth_day]),Za.toText(i)},"birth based on age as of date":(e,t)=>{let i=Ka(e,["age","year","month","day"]);t.push(i);let a=parseInt(i.age,10),n=parseInt(i.year,10)-a;return n&&a?"".concat(n," (age ").concat(i.age,")"):"(age ".concat(i.age,")")},"death date and given age":(e,t)=>{let i=Ka(e,["year","month","day","age"]);t.push(i),i=Za.ymd([i.year,i.month,i.day]);let a=Za.toText(i);return i.age&&(a+=" (age ".concat(i.age,")")),a},dts:e=>{e=(e=e.replace(/\|format=[ymd]+/i,"")).replace(/\|abbr=(on|off)/i,"");let t=Ka(e,["year","month","date","bc"]);return t.date&&t.month&&t.year?!0===/[a-z]/.test(t.month)?[t.month,t.date,t.year].join(" "):[t.year,t.month,t.date].join("-"):t.month&&t.year?[t.year,t.month].join("-"):t.year?(t.year<0&&(t.year=Math.abs(t.year)+" BC"),t.year):""},time:()=>{let e=new Date,t=Za.ymd([e.getFullYear(),e.getMonth(),e.getDate()]);return Za.toText(t)},millennium:e=>{let t=Ka(e,["year"]),i=Number(t.year);return i=parseInt(i/1e3,10)+1,t.abbr&&"y"===t.abbr?i<0?"".concat(Wa.toOrdinal(Math.abs(i))," BC"):"".concat(Wa.toOrdinal(i)):"".concat(Wa.toOrdinal(i)," millennium")},start:Fa.date,"start-date":Fa.natural_date,birthdeathage:Fa.two_dates,age:Fa.age,"age nts":Fa.age,"age in years":Fa["diff-y"],"age in years and months":Fa["diff-ym"],"age in years, months and days":Fa["diff-ymd"],"age in years and days":Fa["diff-yd"],"age in days":Fa["diff-d"]};const Ga=Ve;function Va(e){let t=e.pop(),i=Number(e[0]||0),a=Number(e[1]||0),n=Number(e[2]||0);if("string"!=typeof t||isNaN(i))return null;let r=1;return/[SW]/i.test(t)&&(r=-1),r*(i+a/60+n/3600)}const Ja=function(e){if("number"!=typeof e)return e;let t=1e5;return Math.round(e*t)/t},Xa={s:!0,w:!0};const Qa=function(e){let t=Ga(e);t=function(e){return e.list=e.list||[],e.list=e.list.map((t=>{let i=Number(t);if(!isNaN(i))return i;let a=t.split(/:/);return a.length>1?(e.props=e.props||{},e.props[a[0]]=a.slice(1).join(":"),null):t})),e.list=e.list.filter((e=>null!==e)),e}(t);let i=function(e){const t=e.map((e=>typeof e)).join("|");return 2===e.length&&"number|number"===t?{lat:e[0],lon:e[1]}:4===e.length&&"number|string|number|string"===t?(Xa[e[1].toLowerCase()]&&(e[0]*=-1),"w"===e[3].toLowerCase()&&(e[2]*=-1),{lat:e[0],lon:e[2]}):6===e.length?{lat:Va(e.slice(0,3)),lon:Va(e.slice(3))}:8===e.length?{lat:Va(e.slice(0,4)),lon:Va(e.slice(4))}:{}}(t.list);return t.lat=Ja(i.lat),t.lon=Ja(i.lon),t.template="coord",delete t.list,t},en={coord:(e,t)=>{let i=Qa(e);return t.push(i),i.display&&-1===i.display.indexOf("inline")?"":"".concat(i.lat||"","°N, ").concat(i.lon||"","°W")}};var tn=en;const an=Ve,nn=function(e,t,i,a){let n=an(e);return a&&(n.name=n.template,n.template=a),t.push(n),""};var rn={persondata:nn,taxobox:nn,citation:nn,portal:nn,reflist:nn,"cite book":nn,"cite journal":nn,"cite web":nn,"commons cat":nn,"election box candidate":nn,"election box begin":nn,main:nn};const on=Ve,sn={adx:"adx",aim:"aim",amex:"amex",asx:"asx",athex:"athex",b3:"b3","B3 (stock exchange)":"B3 (stock exchange)",barbadosse:"barbadosse",bbv:"bbv",bcba:"bcba",bcs:"bcs",bhse:"bhse",bist:"bist",bit:"bit","bm&f bovespa":"b3","bm&f":"b3",bmad:"bmad",bmv:"bmv","bombay stock exchange":"bombay stock exchange","botswana stock exchange":"botswana stock exchange",bpse:"bpse",bse:"bse",bsx:"bsx",bvb:"bvb",bvc:"bvc",bvl:"bvl",bvpasa:"bvpasa",bwse:"bwse","canadian securities exchange":"canadian securities exchange",cse:"cse",darse:"darse",dfm:"dfm",dse:"dse",euronext:"euronext",euronextparis:"euronextparis",fse:"fse",fwb:"fwb",gse:"gse",gtsm:"gtsm",idx:"idx",ise:"ise",iseq:"iseq",isin:"isin",jasdaq:"jasdaq",jse:"jse",kase:"kase",kn:"kn",krx:"krx",lse:"lse",luxse:"luxse","malta stock exchange":"malta stock exchange",mai:"mai",mcx:"mcx",mutf:"mutf",myx:"myx",nag:"nag","nasdaq dubai":"nasdaq dubai",nasdaq:"nasdaq",neeq:"neeq",nepse:"nepse",nex:"nex",nse:"nse",newconnect:"newconnect","nyse arca":"nyse arca",nyse:"nyse",nzx:"nzx","omx baltic":"omx baltic",omx:"omx",ose:"ose","otc expert":"otc expert","otc grey":"otc grey","otc pink":"otc pink",otcqb:"otcqb",otcqx:"otcqx","pfts ukraine stock exchange":"pfts ukraine stock exchange","philippine stock exchange":"philippine stock exchange",prse:"prse",psx:"psx",karse:"karse",qe:"qe","saudi stock exchange":"saudi stock exchange",sehk:"sehk","Stock Exchange of Thailand":"Stock Exchange of Thailand",set:"set",sgx:"sgx",sse:"sse",swx:"swx",szse:"szse",tase:"tase","tsx-v":"tsx-v",tsx:"tsx",tsxv:"tsxv",ttse:"ttse",twse:"twse",tyo:"tyo",wbag:"wbag",wse:"wse","zagreb stock exchange":"zagreb stock exchange","zimbabwe stock exchange":"zimbabwe stock exchange",zse:"zse"},ln=(e,t)=>{let i=on(e,["ticketnumber","code"]);t.push(i);let a=i.template||"";""===a&&(a=i.code),a=(a||"").toLowerCase();let n=sn[a]||"";return i.ticketnumber&&(n="".concat(n,": ").concat(i.ticketnumber)),i.code&&!sn[i.code.toLowerCase()]&&(n+=" "+i.code),n},cn={};Object.keys(sn).forEach((e=>{cn[e]=ln}));var un=cn;const pn=Ve,dn=function(e){return 1===(e=String(e)).length&&(e="0"+e),e},mn=function(e,t,i){e["rd".concat(t,"-team").concat(dn(i))]&&(i=dn(i));let a=e["rd".concat(t,"-score").concat(i)],n=Number(a);return!1===isNaN(n)&&(a=n),{team:e["rd".concat(t,"-team").concat(i)],score:a,seed:e["rd".concat(t,"-seed").concat(i)]}};var hn=function(e){let t=[],i=pn(e);for(let e=1;e<7;e+=1){let a=[];for(let t=1;t<16;t+=2){let n="rd".concat(e,"-team");if(!i[n+t]&&!i[n+dn(t)])break;{let n=mn(i,e,t),r=mn(i,e,t+1);a.push([n,r])}}a.length>0&&t.push(a)}return{template:"playoffbracket",rounds:t}};const gn=Ve,fn=Xi,kn=hn;let bn={"4teambracket":function(e,t){let i=kn(e);return t.push(i),""},player:(e,t)=>{let i=gn(e,["number","country","name","dl"]);t.push(i);let a="[[".concat(i.name,"]]");if(i.country){let e=(i.country||"").toLowerCase(),t=fn.find((t=>e===t[1]||e===t[2]))||[];t&&t[0]&&(a=t[0]+" "+a)}return i.number&&(a=i.number+" "+a),a},goal:(e,t)=>{let i={template:"goal",data:[]},a=gn(e).list||[];for(let e=0;e{let t=e.note;return t&&(t=" (".concat(t,")")),e.min+"'"+t})).join(", "),n},"sports table":(e,t)=>{let i=gn(e),a={};Object.keys(i).filter((e=>/^team[0-9]/.test(e))).map((e=>i[e].toLowerCase())).forEach((e=>{a[e]={name:i["name_".concat(e)],win:Number(i["win_".concat(e)])||0,loss:Number(i["loss_".concat(e)])||0,tie:Number(i["tie_".concat(e)])||0,otloss:Number(i["otloss_".concat(e)])||0,goals_for:Number(i["gf_".concat(e)])||0,goals_against:Number(i["ga_".concat(e)])||0}}));let n={date:i.update,header:i.table_header,teams:a};t.push(n)}};var wn=bn,yn=Object.assign({},{mlbplayer:{props:["number","name","il"],out:"name"},syntaxhighlight:{props:[],out:"code"},samp:{props:["1"],out:"1"},sub:{props:["text"],out:"text"},sup:{props:["text"],out:"text"},chem2:{props:["equation"],out:"equation"},ill:{props:["text","lan1","text1","lan2","text2"],out:"text"},abbr:{props:["abbr","meaning","ipa"],out:"abbr"}},xa,za,Ya,tn,rn,un,hn,wn,hn,wn);const xn=Bi;let vn=Object.assign({},sa,ka,yn);Object.keys(xn).forEach((e=>{vn[e]=vn[xn[e]]}));var $n=vn;const jn=Ni,_n=Ii,zn=$n,On=Ve,{isArray:En,isObject:Sn}=n,Cn=["0","1","2","3","4","5","6","7","8","9"];var Nn=function(e,t){let i=e.name;if(!0===jn.hasOwnProperty(i))return[""];if(!0===_n.isInfobox(i)){let t=On(e.body,[],"raw");return["",_n.format(t)]}if(!0===/^cite [a-z]/.test(i)){let t=On(e.body);return t.type=t.template,t.template="citation",["",t]}if(!0===zn.hasOwnProperty(i)){if("number"==typeof zn[i]){return[On(e.body,Cn)[String(zn[i])]||""]}if("string"==typeof zn[i])return[zn[i]];if(!0===En(zn[i])){return["",On(e.body,zn[i])]}if(!0===Sn(zn[i])){let t=On(e.body,zn[i].props);return[t[zn[i].out],t]}if("function"==typeof zn[i]){let a=[];return[zn[i](e.body,a,On,null,t),a[0]]}}let a=On(e.body);return 0===Object.keys(a).length&&(a=null),["",a]};const qn=Q;var Ln=function(e,t){let i=Object.keys(e.data).reduce(((t,i)=>(e.data[i]&&(t[i]=e.data[i].json()),t)),{});return!0===t.encode&&(i=qn.encodeObj(i)),i};const Tn=Ln,Pn=S,{isArray:An}=n,Dn=ye,In=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e=e.toLowerCase(),e=e.replace(/[-_]/g," "),e.trim()},Mn=function(e,t){this._type=e.type,this.domain=e.domain,Object.defineProperty(this,"data",{enumerable:!1,value:e.data}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},Rn={type:function(){return this._type},links:function(e){let t=[];if(Object.keys(this.data).forEach((e=>{this.data[e].links().forEach((e=>t.push(e)))})),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find((t=>t.page()===e));return void 0===i?[]:[i]}return t},image:function(){let e=this.data.image||this.data.image2||this.data.logo||this.data.image_skyline||this.data.image_flag;if(!e)return null;let t=e.json();return t.file=t.text,t.text="",t.domain=this.domain,new Pn(t)},get:function(e){let t=Object.keys(this.data);if("string"==typeof e){let i=In(e);for(let e=0;e{for(let i=0;i(this.data[t]&&(e[t]=this.data[t].text()),e)),{})}};Object.keys(Rn).forEach((e=>{Mn.prototype[e]=Rn[e]})),Mn.prototype.data=Mn.prototype.keyValue,Mn.prototype.template=Mn.prototype.type,Mn.prototype.images=Mn.prototype.image;var Un=Mn;const Bn=Te,Fn={text:function(){let e=this._text||"";return Bn(e).text()},json:function(){return this.data||{}},wikitext:function(){return this.wiki||""}},Kn=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"_text",{enumerable:!1,value:t}),Object.defineProperty(this,"wiki",{enumerable:!1,value:i})};Object.keys(Fn).forEach((e=>{Kn.prototype[e]=Fn[e]}));var Wn=Kn;const Zn=Un,Hn=et,Yn=Wn,Gn=/^(cite |citation)/i,Vn={citation:!0,refn:!0,harvnb:!0,source:!0};var Jn=function(e,t){let i={infoboxes:[],templates:[],references:[]};return e.forEach((e=>{let a=e.json,n=a.template||a.type||a.name;if(!0!==Vn[n]&&!0!==Gn.test(n))return"infobox"===a.template&&"yes"!==a.subbox?(a.domain=t,a.data=a.data||{},void i.infoboxes.push(new Zn(a,e.wiki))):void i.templates.push(new Yn(a,e.text,e.wiki));i.references.push(new Hn(a,e.wiki))})),i};const Xn=Ci,Qn=Nn,er=Jn;var tr=function(e,t){let{list:i,wiki:a}=function(e,t){let i=[],a=Xn(e);const n=function(a,r){a.parent=r,a.children&&a.children.length>0&&a.children.forEach((e=>n(e,a)));let[o,s]=Qn(a,t);a.wiki=o,s&&i.push({name:a.name,wiki:a.body,text:o,json:s});const l=function(e,t,i){e.parent&&(e.parent.body=e.parent.body.replace(t,i),l(e.parent,t,i))};l(a,a.body,a.wiki),e=e.replace(a.body,a.wiki)};return a.forEach((e=>n(e,null))),a.forEach((t=>{e=e.replace(t.body,t.wiki)})),{list:i,wiki:e}}(e._wiki,t),n=t?t._domain:null,{infoboxes:r,references:o,templates:s}=er(i,n);e._infoboxes=e._infoboxes||[],e._references=e._references||[],e._templates=e._templates||[],e._infoboxes=e._infoboxes.concat(r),e._references=e._references.concat(o),e._templates=e._templates.concat(s),e._wiki=a};const ir=Te,ar=S;var nr=function(e,t,i){e.text=e.text.replace(/]*)>([\s\S]+)<\/gallery>/g,((a,n,r)=>{let o=r.split(/\n/g);return o=o.filter((e=>e&&""!==e.trim())),o=o.map((e=>{let i=e.split(/\|/),a={file:i[0].trim(),lang:t.lang(),domain:t.domain()},n=new ar(a).json(),r=i.slice(1).join("|");return""!==r&&(n.caption=ir(r)),n})),o.length>0&&e.templates.push({template:"gallery",images:o,pos:i.title}),""}))};const rr=tr;var or=function(e){e.text=e.text.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi,(t=>{let i={_wiki:t,_templates:[]};rr(i);let a=i._templates.map((e=>e.json())),n=a.find((e=>"election box"===e.template))||{},r=a.filter((e=>"election box candidate"===e.template)),o=a.find((e=>"election box gain"===e.template||"election box hold"===e.template))||{};return(r.length>0||o)&&e.templates.push({template:"election box",title:n.title,candidates:r,summary:o.data}),""}))};const sr=$t,lr={coach:["team","year","g","w","l","w-l%","finish","pg","pw","pl","pw-l%"],player:["year","team","gp","gs","mpg","fg%","3p%","ft%","rpg","apg","spg","bpg","ppg"],roster:["player","gp","gs","mpg","fg%","3fg%","ft%","rpg","apg","spg","bpg","ppg"]};const cr=$t;var ur=function(e){e.text=e.text.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi,(t=>{let i=function(e){let t=["#","date","opponent","score","win","loss","save","attendance","record"];return!0===/\|stadium=y/i.test(e)&&t.splice(7,0,"stadium"),!0===/\|time=y/i.test(e)&&t.splice(7,0,"time"),!0===/\|box=y/i.test(e)&&t.push("box"),t}(t);t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{mlb game log (section|month) end\}\}/i,"");let a="! "+i.join(" !! "),n=cr("{|\n"+a+"\n"+t+"\n|}");return n=n.map((e=>(Object.keys(e).forEach((t=>{e[t]=e[t].text()})),e))),e.templates.push({template:"mlb game log section",data:n}),""}))};const pr=$t;let dr=["res","record","opponent","method","event","date","round","time","location","notes"];const mr=Te;const hr=nr,gr=or,fr=function(e){e.text=e.text.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi,((t,i)=>{t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{s-end\}\}/,""),i=i.toLowerCase().trim();let a="! "+lr[i].join(" !! "),n=sr("{|\n"+a+"\n"+t+"\n|}");return n=n.map((e=>(Object.keys(e).forEach((t=>{e[t]=e[t].text()})),e))),e.templates.push({template:"NBA "+i+" statistics",data:n}),""}))},kr=ur,br=function(e){e.text=e.text.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi,(t=>{t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{end\}\}/i,"");let i="! "+dr.join(" !! "),a=pr("{|\n"+i+"\n"+t+"\n|}");return a=a.map((e=>(Object.keys(e).forEach((t=>{e[t]=e[t].text()})),e))),e.templates.push({template:"mma record start",data:a}),""}))},wr=function(e){e.text=e.text.replace(/]*)>([\s\S]+)<\/math>/g,((t,i,a)=>{let n=mr(a).text();return e.templates.push({template:"math",formula:n,raw:a}),n&&n.length<12?n:""})),e.text=e.text.replace(/]*)>([\s\S]+?)<\/chem>/g,((t,i,a)=>(e.templates.push({template:"chem",data:a}),"")))},yr=Wn;const xr=ae,vr=d,$r={heading:dt,table:Dt,paragraphs:xi,templates:tr,references:st,startEndTemplates:function(e,t){const i={templates:[],text:e._wiki};return gr(i),hr(i,t,e),wr(i),kr(i),br(i),fr(i),i.templates=i.templates.map((e=>new yr(e))),i}},jr={tables:!0,references:!0,paragraphs:!0,templates:!0,infoboxes:!0};class _r{constructor(e,t){let i={doc:t,title:e.title||"",depth:e.depth,wiki:e.wiki||"",templates:[],tables:[],infoboxes:[],references:[],paragraphs:[]};Object.keys(i).forEach((e=>{Object.defineProperty(this,"_"+e,{enumerable:!1,writable:!0,value:i[e]})}));const a=$r.startEndTemplates(this,t);this._wiki=a.text,this._templates=this._templates.concat(a.templates),$r.references(this),$r.templates(this,t),$r.table(this),$r.paragraphs(this,t)}title(){return this._title||""}index(){if(!this._doc)return null;let e=this._doc.sections().indexOf(this);return-1===e?null:e}depth(){return this._depth}indentation(){return this.depth()}sentences(){return this.paragraphs().reduce(((e,t)=>e.concat(t.sentences())),[])}paragraphs(){return this._paragraphs||[]}links(e){let t=[];if(this.infoboxes().forEach((e=>{t.push(e.links())})),this.sentences().forEach((e=>{t.push(e.links())})),this.tables().forEach((e=>{t.push(e.links())})),this.lists().forEach((e=>{t.push(e.links())})),t=t.reduce(((e,t)=>e.concat(t)),[]).filter((e=>void 0!==e)),"string"==typeof e){let i=t.find((t=>t.page().toLowerCase()===e.toLowerCase()));return void 0===i?[]:[i]}return t}tables(){return this._tables||[]}templates(e){let t=this._templates||[];return"string"==typeof e?(e=e.toLowerCase(),t.filter((t=>t.data.template===e||t.data.name===e))):t}infoboxes(e){let t=this._infoboxes||[];return"string"==typeof e?(e=(e=e.replace(/^infobox /i,"")).trim().toLowerCase(),t.filter((t=>t._type===e))):t}coordinates(){return[...this.templates("coord"),...this.templates("coor")].map((e=>e.json()))}lists(){let e=[];return this.paragraphs().forEach((t=>{e=e.concat(t.lists())})),e}interwiki(){let e=[];return this.paragraphs().forEach((t=>{e=e.concat(t.interwiki())})),e}images(){let e=[];return this.paragraphs().forEach((t=>{e=e.concat(t.images())})),e}references(){return this._references||[]}remove(){if(!this._doc)return null;let e={};e[this.title()]=!0,this.children().forEach((t=>e[t.title()]=!0));let t=this._doc.sections();return t=t.filter((t=>!0!==e.hasOwnProperty(t.title()))),t=t.filter((t=>!0!==e.hasOwnProperty(t.title()))),this._doc._sections=t,this._doc}nextSibling(){if(!this._doc)return null;let e=this._doc.sections();for(let t=(this.index()||0)+1;tthis.depth())for(let e=i+1;ethis.depth();e+=1)a.push(t[e]);return"string"==typeof e?a.find((t=>t.title().toLowerCase()===e.toLowerCase())):a}sections(e){return this.children(e)}parent(){if(!this._doc)return null;let e=this._doc.sections();for(let t=this.index()||0;t>=0;t-=1)if(e[t]&&e[t].depth()t.text(e))).join("\n\n")}wikitext(){return this._wiki}json(e){return e=vr(e,jr),xr(this,e)}}_r.prototype.citations=_r.prototype.references;const zr={sentences:"sentence",paragraphs:"paragraph",links:"link",tables:"table",templates:"template",infoboxes:"infobox",coordinates:"coordinate",lists:"list",images:"image",references:"reference",citations:"citation"};Object.keys(zr).forEach((e=>{let t=zr[e];_r.prototype[t]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]||null}}));var Or=_r;const Er=Or,Sr=new RegExp("^("+f.references.join("|")+"):?","i"),Cr=/(?:\n|^)(={2,5}.{1,200}?={2,5})/g,Nr={heading:dt};var qr=function(e){let t=[],i=e._wiki.split(Cr);for(let a=0;a!0!==Sr.test(t.title())||t.paragraphs().length>0||t.templates().length>0||(e[i+1]&&e[i+1].depth()>t.depth()&&(e[i+1]._depth-=1),!1)))}(t)};const Lr=f,Tr=new RegExp("\\[\\[:?("+Lr.categories.join("|")+"):(.{2,178}?)]](w{0,10})","gi"),Pr=new RegExp("^\\[\\[:?("+Lr.categories.join("|")+"):","gi");const Ar=p,Dr=g,Ir=$,Mr=d,Rr=S,Ur=K,Br=V,Fr={section:qr,categories:function(e){const t=[];let i=e.match(Tr);i&&i.forEach((function(e){(e=(e=(e=e.replace(Pr,"")).replace(/\|?[ *]?\]\]$/,"")).replace(/\|.*/,""))&&!e.match(/[[\]]/)&&t.push(e.trim())}));const a=e.replace(Tr,"");return[t,a]}},Kr={tables:!0,lists:!0,paragraphs:!0};class Wr{constructor(e,t){let i={pageID:(t=t||{}).pageID||t.id||null,namespace:t.namespace||t.ns||null,lang:t.lang||t.language||null,domain:t.domain||null,title:t.title||null,type:"page",redirectTo:null,wikidata:t.wikidata||null,wiki:e||"",categories:[],sections:[],coordinates:[]};if(Object.keys(i).forEach((e=>{Object.defineProperty(this,"_"+e,{enumerable:!1,writable:!0,value:i[e]})})),!0===Ur.isRedirect(this._wiki)){this._type="redirect",this._redirectTo=Ur.parse(this._wiki);const[e,t]=Fr.categories(this._wiki);return this._categories=e,void(this._wiki=t)}this._wiki=Br(this._wiki);const[a,n]=Fr.categories(this._wiki);this._categories=a,this._wiki=n,this._sections=Fr.section(this)}title(e){if(void 0!==e)return this._title=e,e;if(this._title)return this._title;let t=null,i=this.sentence();return i&&(t=i.bold()),t}pageID(e){return void 0!==e&&(this._pageID=e),this._pageID||null}wikidata(e){return void 0!==e&&(this._wikidata=e),this._wikidata||null}domain(e){return void 0!==e&&(this._domain=e),this._domain||null}language(e){return void 0!==e&&(this._lang=e),this._lang||null}url(){let e=this.title();if(!e)return null;let t=this.language()||"en",i=this.domain()||"wikipedia.org";return e=e.replace(/ /g,"_"),e=encodeURIComponent(e),"https://".concat(t,".").concat(i,"/wiki/").concat(e)}namespace(e){return void 0!==e&&(this._namespace=e),this._namespace||null}isRedirect(){return"redirect"===this._type}redirectTo(){return this._redirectTo}isDisambiguation(){return Ir(this)}categories(e){let t=this._categories||[];return"number"==typeof e?[t[e]]:t}sections(e){let t=this._sections||[];if(t.forEach((e=>{e._doc=this})),"string"==typeof e){let i=e.toLowerCase().trim();return t.filter((e=>e.title().toLowerCase()===i))}return"number"==typeof e?[t[e]]:t}paragraphs(e){let t=[];return this.sections().forEach((e=>{t=t.concat(e.paragraphs())})),"number"==typeof e?[t[e]]:t}sentences(e){let t=[];return this.sections().forEach((e=>{t=t.concat(e.sentences())})),"number"==typeof e?[t[e]]:t}images(e){let t=Ar(this,"images",null);return this.infoboxes().forEach((e=>{let i=e.image();i&&t.unshift(i)})),this.templates().forEach((e=>{"gallery"===e.data.template&&(e.data.images=e.data.images||[],e.data.images.forEach((e=>{e instanceof Rr||(e.language=this.language(),e.domain=this.domain(),e=new Rr(e)),t.push(e)})))})),"number"==typeof e?[t[e]]:t}links(e){return Ar(this,"links",e)}interwiki(e){return Ar(this,"interwiki",e)}lists(e){return Ar(this,"lists",e)}tables(e){return Ar(this,"tables",e)}templates(e){return Ar(this,"templates",e)}references(e){return Ar(this,"references",e)}citations(e){return this.references(e)}coordinates(e){return Ar(this,"coordinates",e)}infoboxes(e){let t=Ar(this,"infoboxes",e);return t=t.sort(((e,t)=>Object.keys(e.data).length>Object.keys(t.data).length?-1:1)),t}text(e){if(e=Mr(e,Kr),!0===this.isRedirect())return"";return this.sections().map((t=>t.text(e))).join("\n\n")}json(e){return e=Mr(e,Kr),Dr(this,e)}wikitext(){return this._wiki||""}debug(){return console.log("\n"),this.sections().forEach((e=>{let t=" - ";for(let i=0;i{let t=Zr[e];Wr.prototype[t]=function(t){return this[e](t)[0]||null}})),Wr.prototype.lang=Wr.prototype.language,Wr.prototype.ns=Wr.prototype.namespace,Wr.prototype.plaintext=Wr.prototype.text,Wr.prototype.isDisambig=Wr.prototype.isDisambiguation,Wr.prototype.citations=Wr.prototype.references,Wr.prototype.redirectsTo=Wr.prototype.redirectTo,Wr.prototype.redirect=Wr.prototype.redirectTo,Wr.prototype.redirects=Wr.prototype.redirectTo;var Hr=Wr;const Yr=Hr,{isArray:Gr}=n;const Vr=i,Jr=a,Xr=c,Qr=u,eo=function(e,t){let i=(e=e.filter((e=>e))).map((e=>new Yr(e.wiki,e.meta)));return 0===i.length?null:Gr(t)||1!==i.length?i:i[0]},to=function(e){let t,i=e.userAgent||e["User-Agent"]||e["Api-User-Agent"]||"User of the wtf_wikipedia library";return t=e.noOrigin?"":e.origin||e.Origin||"*",{method:"GET",headers:{"Content-Type":"application/json","Api-User-Agent":i,"User-Agent":i,Origin:t,"Accept-Encoding":"gzip"},redirect:"follow"}},io=/^https?:\/\//,ao={lang:"en",wiki:"wikipedia",domain:void 0,follow_redirects:!0,path:"api.php"};const no=i;const ro=function(e,t,i){"string"==typeof t&&(t={lang:t}),(t={...ao,...t}).title=e,"string"==typeof e&&io.test(e)&&(t={...t,...Jr(e)});const a=Xr(t),n=to(t);return Vr(a,n).then((e=>e.json())).then((a=>{let n=Qr(a,t);return n=eo(n,e),i&&i(null,n),n})).catch((e=>(console.error(e),i&&i(e,null),null)))},oo=Hr,so=function(e,t){return new oo(e,t)},lo={Doc:Hr,Section:Or,Paragraph:Zt,Sentence:ye,Image:S,Infobox:Un,Link:le,List:li,Reference:et,Table:qt,Template:Wn,http:function(e,t){return no(e,t).then((function(e){return e.json()}))},wtf:so};let co=$n,uo=qi;return so.fetch=function(e,t,i){return ro(e,t,i)},so.plugin=so.extend=function(e){return e(lo,co,uo),this},so.version="9.0.2",so})); diff --git a/builds/wtf_wikipedia-client.mjs b/builds/wtf_wikipedia-client.mjs index bdbfd7a1..5e0469df 100644 --- a/builds/wtf_wikipedia-client.mjs +++ b/builds/wtf_wikipedia-client.mjs @@ -1 +1 @@ -var e=Object.freeze({__proto__:null,default:function(e,t){return t=t||{},new Promise((function(i,a){var n=new XMLHttpRequest,r=[],o=[],s={},l=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:l,headers:{keys:function(){return r},entries:function(){return o},get:function(e){return s[e.toLowerCase()]},has:function(e){return e.toLowerCase()in s}}}};for(var c in n.open(t.method||"get",e,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(e,t,i){r.push(t=t.toLowerCase()),o.push([t,i]),s[t]=s[t]?s[t]+","+i:i})),i(l())},n.onerror=a,n.withCredentials="include"==t.credentials,t.headers)n.setRequestHeader(c,t.headers[c]);n.send(t.body||null)}))}});var t,i=(t=e)&&t.default||t,a=self.fetch||(self.fetch=i.default||i);var n=function(e){let t=new URL(e),i=t.pathname.replace(/^\/(wiki\/)?/,"");return i=decodeURIComponent(i),{domain:t.host,title:i}};var r={capitalise:function(e){return e&&"string"==typeof e?e.charAt(0).toUpperCase()+e.slice(1):""},trim_whitespace:function(e){return e&&"string"==typeof e?e=(e=(e=(e=e.replace(/^\s+/,"")).replace(/\s+$/,"")).replace(/ {2}/," ")).replace(/\s, /,", "):""},isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},isObject:function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)}};const{isArray:o}=r,s=/(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/,l={action:"query",prop:"revisions|pageprops",rvprop:"content",maxlag:5,rvslots:"main",origin:"*",format:"json",redirects:"true"},c=e=>e.replace(/ /g,"_").trim();var u=function(e){let t=Object.assign({},l),i="";if(e.domain){let t=s.test(e.domain)?"w/api.php":e.path;i=`https://${e.domain}/${t}?`}else{if(!e.lang||!e.wiki)return"";i=`https://${e.lang}.${e.wiki}.org/w/api.php?`}e.follow_redirects||delete t.redirects;let a=e.title;if("number"==typeof a)t.pageids=a;else if("string"==typeof a)t.titles=c(a);else if(void 0!==a&&o(a)&&"number"==typeof a[0])t.pageids=a.join("|");else{if(void 0===a||!0!==o(a)||"string"!=typeof a[0])return"";t.titles=a.map(c).join("|")}return`${i}${n=t,Object.entries(n).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&")}`;var n};var p=function(e,t={}){return Object.keys(e.query.pages).map(i=>{let a=e.query.pages[i]||{};if(a.hasOwnProperty("missing")||a.hasOwnProperty("invalid"))return null;let n=a.revisions[0]["*"];!n&&a.revisions[0].slots&&(n=a.revisions[0].slots.main["*"]),a.pageprops=a.pageprops||{};let r=t.domain;return!r&&t.wiki&&(r=t.wiki+".org"),{wiki:n,meta:Object.assign({},t,{title:a.title,pageID:a.pageid,namespace:a.ns,domain:r,wikidata:a.pageprops.wikibase_item,description:a.pageprops["wikibase-shortdesc"]})}})};var m=function(e,t,i){let a=[];return e.sections().forEach(e=>{let n=[];n="string"==typeof i?e[t](i):e[t](),n.forEach(e=>{a.push(e)})}),"number"==typeof i?void 0===a[i]?[]:[a[i]]:a};var d=function(e,t){return Object.assign({},t,e)};const h={title:!0,sections:!0,pageID:!0,categories:!0};var g=function(e,t){let i={};return(t=d(t,h)).title&&(i.title=e.title()),t.pageID&&(i.pageID=e.pageID()),t.categories&&(i.categories=e.categories()),t.sections&&(i.sections=e.sections().map(e=>e.json(t))),!0===e.isRedirect()&&(i.isRedirect=!0,i.redirectTo=e.redirectTo(),i.sections=[]),t.coordinates&&(i.coordinates=e.coordinates()),t.infoboxes&&(i.infoboxes=e.infoboxes().map(e=>e.json(t))),t.images&&(i.images=e.images().map(e=>e.json(t))),t.plaintext&&(i.plaintext=e.text(t)),(t.citations||t.references)&&(i.references=e.references()),i};let f=" disambiguation";var k={categories:["category","abdeeling","bólkur","catagóir","categori","categoria","categoria","categoría","categorîa","categorìa","catégorie","categorie","catègorie","category","categuria","catigurìa","class","ẹ̀ka","flocc","flocc","flokkur","grup","jamii","kaarangay","kateggoría","kategooria","kategori","kategorî","kategoria","kategória","kategorie","kategoriija","kategorija","kategorio","kategoriya","kategoriýa","kategoriye","kategory","kategorya","kateqoriya","katiguriya","klad","luokka","ñemohenda","roinn","ronney","rummad","setensele","sokajy","sumut","thể","turkum","категорија","категория","категорія","катэгорыя","төркем","קטגוריה","تصنيف","تۈر","رده","श्रेणी","श्रेणी","বিষয়শ্রেণী","หมวดหมู่","분류","분류","分类"],disambig_templates:["dab","disamb","disambig","disambiguation","aðgreining","aimai","ałtsʼáʼáztiin","anlam ayrımı","anlam ayrımı","apartigilo","argipen","begriepskloorenge","begriffsklärung","begriffsklärung","begriffsklärung","begriffsklearung","bisongidila","bkl","bokokani","caddayn","clerheans","cudakirin","čvor","db","desambig","desambigación","desambiguação","desambiguació","desambiguación","desambiguáncia","desambiguasion","desambiguassiù","desambigui","dezambiguizare","dəqiqləşdirmə","disambigua","disambigua","disambigua","disambìgua","disambigua","disambiguasi","disambiguasi","discretiva","disheñvelout","disingkek","dixanbigua","dixebra","diżambigwazzjoni","doorverwijspagina","dp","dp","dubbelsinnig","dudalipen","dv","egyért","fleiri týdningar","fleirtyding","flertydig","förgrening","gì-ngiê","giklaro","gwahaniaethu","homonimo","homónimos","homonymie","huaʻōlelo puana like","idirdhealú","khu-pia̍t","kthjellim","kujekesa","maana","maneo bin","mehrdüdig begreep","menm non","muardüüdag artiikel","neibetsjuttings","nozīmju atdalīšana","nuorodinis","nyahkekaburan","omonimeye","omonimia","page dé frouque","paglilinaw","panangilawlawag","pansayod","pejy mitovy anarana","peker","razdvojba","razločitev","razvrstavanje","reddaghey","rozcestník","rozlišovacia stránka","sclerir noziun","selvendyssivu","soilleireachadh","suzmunski","täpsustuslehekülg","täsmennyssivu","telplänov","tlahtolmelahuacatlaliztli","trang định hướng","ujednoznacznienie","verdudeliking","wěcejwóznamowosć","wjacezmyslnosć","zambiguaçon","zeimeibu škiršona","αποσαφήνιση","айрық","аҵакырацәа","вишезначна одредница","ибҳомзудоӣ","кёб магъаналы","күп мәгънәләр","күп мәғәнәлелек","мъногосъмꙑслиѥ","неадназначнасць","неадназначнасьць","неоднозначность","олон удхатай","појаснување","пояснение","са шумуд манавал","салаа утгатай","суолталар","текмаанисиздик","цо магіна гуреб","чеперушка","чолхалла","шуко ончыктымаш-влак","მრავალმნიშვნელოვანი","բազմիմաստութիւն","բազմիմաստություն","באדייטן","פירושונים","ابهام‌زدایی","توضيح","توضيح","دقیقلشدیرمه","ڕوونکردنەوە","سلجهائپ","ضد ابہام","گجگجی بیری","نامبهمېدنه","መንታ","अस्पष्टता","बहुअर्थी","बहुविकल्पी शब्द","দ্ব্যর্থতা নিরসন","ਗੁੰਝਲ-ਖੋਲ੍ਹ","સંદિગ્ધ શીર્ષક","பக்கவழி நெறிப்படுத்தல்","అయోమయ నివృత్తి","ದ್ವಂದ್ವ ನಿವಾರಣೆ","വിവക്ഷകൾ","වක්‍රෝත්ති","แก้ความกำกวม","သံတူကြောင်းကွဲ","ណែនាំ","동음이의","扤清楚","搞清楚","曖昧さ回避","消歧义","釋義","gestion dj'omònim","sut'ichana qillqa"],disambig_titles:["disambiguation","homonymie","توضيح","desambiguação","Begriffsklärung","disambigua","曖昧さ回避","消歧義","搞清楚","значения","ابهام‌زدایی","د ابہام","동음이의","dubbelsinnig","այլ կիրառումներ","ujednoznacznienie"],images:["file","image","चित्र","archivo","attēls","berkas","bestand","datei","dosiero","dosya","fájl","fasciculus","fichier","fil","fitxategi","fitxer","gambar","imagem","imej","immagine","larawan","lêer","plik","restr","slika","wêne","wobraz","выява","податотека","слика","файл","სურათი","պատկեր","קובץ","پرونده","دوتنه","ملف","وێنە","चित्र","ไฟล์","파일","ファイル"],infoboxes:["infobox","anfo","anuāmapa","bilgi kutusu","bilgi","bilgiquti","boaty","boestkelaouiñ","bosca","capsa","diehtokássa","faktamall","ficha","generalni","gwybodlen3","info","infobokis","infoboks","infochascha","infokašćik","infokast","infokutija","infolentelė","infopolje","informkesto","infoskreine","infotaula","inligtingskas","inligtingskas3","inligtingskas4","kishtey","kotak","tertcita","tietolaatikko","yerleşim bilgi kutusu","ynfoboks","πλαίσιο","акарточка","аҥа","инфобокс","инфокутија","инфокутия","інфобокс","канадский","картка","карточка","карточка2","карточкарус","картуш","қуттӣ","ინფოდაფა","տեղեկաքարտ","אינפאקעסטל","תבנית","بطاقة","ڄاڻخانو","خانہ","لغة","ज्ञानसन्दूक","তথ্যছক","ਜਾਣਕਾਰੀਡੱਬਾ","సమాచారపెట్టె","තොරතුරුකොටුව","กล่องข้อมูล","ប្រអប់ព័ត៌មាន","정보상자","明細"],redirects:["adkas","aýdaw","doorverwijzing","ohjaus","patrz","přesměruj","redirección","redireccion","redirección","redirecionamento","redirect","redirection","redirection","rinvia","tilvísun","uudelleenohjaus","weiterleitung","weiterleitung","yönlendi̇r","yönlendirme","yönlendi̇rme","ανακατευθυνση","айдау","перанакіраваньне","перенаправлення","пренасочување","преусмери","преусмјери","تغییر_مسیر","تغییرمسیر","تغییرمسیر","เปลี่ยนทาง","ប្តូរទីតាំងទៅ","転送","重定向"],references:["references","reference","einzelnachweise","referencias","références","notes et références","脚注","referenser","bronnen","примечания"]},b=["dab","dab","disamb","disambig","geodis","hndis","setindex","ship index","split dab","sport index","wp disambig","disambiguation cleanup","airport"+f,"biology"+f,"call sign"+f,"caselaw"+f,"chinese title"+f,"genus"+f,"hospital"+f,"lake index","letter"+f,"letter-number combination"+f,"mathematical"+f,"military unit"+f,"mountainindex","number"+f,"phonetics"+f,"place name"+f,"portal"+f,"road"+f,"school"+f,"species latin name abbreviation"+f,"species latin name"+f,"station"+f,"synagogue"+f,"taxonomic authority"+f,"taxonomy"+f].reduce((e,t)=>(e[t]=!0,e),{});const w=new RegExp(". \\(("+k.disambig_titles.join("|")+")\\)$","i"),y=k.disambig_templates.reduce((e,t)=>(e[t]=!0,e),{}),$=function(e){if(!e)return!1;let t=e.text();return!(null===t||!t[0]||!0!==/. may (also)? refer to\b/i.test(t))};var x=function(e){if(e.templates().map(e=>e.json()).find(e=>b.hasOwnProperty(e.template)||y.hasOwnProperty(e.template)))return!0;let t=e.title();return!(!t||!0!==w.test(t))||(!0===$(e.sentence(0))||!0===$(e.sentence(1)))};const v={caption:!0,alt:!0,links:!0,thumb:!0,url:!0};var j=function(e,t){t=d(t,v);let i={file:e.file()};return!1!==t.thumb&&(i.thumb=e.thumbnail()),!1!==t.url&&(i.url=e.url()),!1!==t.caption&&e.data.caption&&(i.caption=e.caption(),!1!==t.links&&e.data.caption.links()&&(i.links=e.links())),!1!==t.alt&&e.data.alt&&(i.alt=e.alt()),i};const _=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},z={file(){return this.data.file||""},alt(){let e=this.data.alt||this.data.file||"";return e=e.replace(/^(file|image):/i,""),e=e.replace(/\.(jpg|jpeg|png|gif|svg)/i,""),e.replace(/_/g," ")},caption(){return this.data.caption?this.data.caption.text():""},links(){return this.data.caption?this.data.caption.links():[]},url(){let e=function(e){let t=function(e){let t=e.replace(/^(image|file?):/i,"");return t=t.charAt(0).toUpperCase()+t.substring(1),t=t.trim().replace(/ /g,"_"),t}(e);return t=encodeURIComponent(t),t}(this.file());return`https://${this.data.domain||"wikipedia.org"}/wiki/Special:Redirect/file/${e}`},thumbnail(e){return e=e||300,this.url()+"?width="+e},format(){let e=this.file().split(".");return e[e.length-1]?e[e.length-1].toLowerCase():null},json:function(e){return j(this,e=e||{})},text:function(){return""},wikitext:function(){return this.data.wiki||""}};Object.keys(z).forEach(e=>{_.prototype[e]=z[e]}),_.prototype.src=_.prototype.url,_.prototype.thumb=_.prototype.thumbnail;var O=_,E={aa:"Afar",ab:"Аҧсуа",af:"Afrikaans",ak:"Akana",als:"Alemannisch",am:"አማርኛ",an:"Aragonés",ang:"Englisc",ar:"العربية",arc:"ܣܘܪܬ",as:"অসমীয়া",ast:"Asturianu",av:"Авар",ay:"Aymar",az:"Azərbaycanca",ba:"Башҡорт",bar:"Boarisch","bat-smg":"Žemaitėška",bcl:"Bikol",be:"Беларуская","be-x-old":"ltr",bg:"Български",bh:"भोजपुरी",bi:"Bislama",bm:"Bamanankan",bn:"বাংলা",bo:"བོད་ཡིག",bpy:"ltr",br:"Brezhoneg",bs:"Bosanski",bug:"ᨅᨔ",bxr:"ltr",ca:"Català",cdo:"Chinese",ce:"Нохчийн",ceb:"Sinugboanong",ch:"Chamoru",cho:"Choctaw",chr:"ᏣᎳᎩ",chy:"Tsetsêhestâhese",co:"Corsu",cr:"Nehiyaw",cs:"Česky",csb:"Kaszëbsczi",cu:"Slavonic",cv:"Чăваш",cy:"Cymraeg",da:"Dansk",de:"Deutsch",diq:"Zazaki",dsb:"ltr",dv:"ދިވެހިބަސް",dz:"ཇོང་ཁ",ee:"Ɛʋɛ",far:"فارسی",el:"Ελληνικά",en:"English",eo:"Esperanto",es:"Español",et:"Eesti",eu:"Euskara",ext:"Estremeñu",ff:"Fulfulde",fi:"Suomi","fiu-vro":"Võro",fj:"Na",fo:"Føroyskt",fr:"Français",frp:"Arpitan",fur:"Furlan",fy:"ltr",ga:"Gaeilge",gan:"ltr",gd:"ltr",gil:"Taetae",gl:"Galego",gn:"Avañe'ẽ",got:"gutisk",gu:"ગુજરાતી",gv:"Gaelg",ha:"هَوُسَ",hak:"ltr",haw:"Hawai`i",he:"עברית",hi:"हिन्दी",ho:"ltr",hr:"Hrvatski",ht:"Krèyol",hu:"Magyar",hy:"Հայերեն",hz:"Otsiherero",ia:"Interlingua",id:"Bahasa",ie:"Interlingue",ig:"Igbo",ii:"ltr",ik:"Iñupiak",ilo:"Ilokano",io:"Ido",is:"Íslenska",it:"Italiano",iu:"ᐃᓄᒃᑎᑐᑦ",ja:"日本語",jbo:"Lojban",jv:"Basa",ka:"ქართული",kg:"KiKongo",ki:"Gĩkũyũ",kj:"Kuanyama",kk:"Қазақша",kl:"Kalaallisut",km:"ភាសាខ្មែរ",kn:"ಕನ್ನಡ",khw:"کھوار",ko:"한국어",kr:"Kanuri",ks:"कश्मीरी",ksh:"Ripoarisch",ku:"Kurdî",kv:"Коми",kw:"Kernewek",ky:"Kırgızca",la:"Latina",lad:"Dzhudezmo",lan:"Leb",lb:"Lëtzebuergesch",lg:"Luganda",li:"Limburgs",lij:"Líguru",lmo:"Lumbaart",ln:"Lingála",lo:"ລາວ",lt:"Lietuvių",lv:"Latviešu","map-bms":"Basa",mg:"Malagasy",man:"官話",mh:"Kajin",mi:"Māori",min:"Minangkabau",mk:"Македонски",ml:"മലയാളം",mn:"Монгол",mo:"Moldovenească",mr:"मराठी",ms:"Bahasa",mt:"bil-Malti",mus:"Muskogee",my:"Myanmasa",na:"Dorerin",nah:"Nahuatl",nap:"Nnapulitano",nd:"ltr",nds:"Plattdüütsch","nds-nl":"Saxon",ne:"नेपाली",new:"नेपालभाषा",ng:"Oshiwambo",nl:"Nederlands",nn:"ltr",no:"Norsk",nr:"ltr",nso:"ltr",nrm:"Nouormand",nv:"Diné",ny:"Chi-Chewa",oc:"Occitan",oj:"ᐊᓂᔑᓈᐯᒧᐎᓐ",om:"Oromoo",or:"ଓଡ଼ିଆ",os:"Иронау",pa:"ਪੰਜਾਬੀ",pag:"Pangasinan",pam:"Kapampangan",pap:"Papiamentu",pdc:"ltr",pi:"Pāli",pih:"Norfuk",pl:"Polski",pms:"Piemontèis",ps:"پښتو",pt:"Português",qu:"Runa",rm:"ltr",rmy:"Romani",rn:"Kirundi",ro:"Română","roa-rup":"Armâneashti",ru:"Русский",rw:"Kinyarwandi",sa:"संस्कृतम्",sc:"Sardu",scn:"Sicilianu",sco:"Scots",sd:"सिनधि",se:"ltr",sg:"Sängö",sh:"Srpskohrvatski",si:"සිංහල",simple:"ltr",sk:"Slovenčina",sl:"Slovenščina",sm:"Gagana",sn:"chiShona",so:"Soomaaliga",sq:"Shqip",sr:"Српски",ss:"SiSwati",st:"ltr",su:"Basa",sv:"Svenska",sw:"Kiswahili",ta:"தமிழ்",te:"తెలుగు",tet:"Tetun",tg:"Тоҷикӣ",th:"ไทย",ti:"ትግርኛ",tk:"Туркмен",tl:"Tagalog",tlh:"tlhIngan-Hol",tn:"Setswana",to:"Lea",tpi:"ltr",tr:"Türkçe",ts:"Xitsonga",tt:"Tatarça",tum:"chiTumbuka",tw:"Twi",ty:"Reo",udm:"Удмурт",ug:"Uyƣurqə",uk:"Українська",ur:"اردو",uz:"Ўзбек",ve:"Tshivenḓa",vi:"Việtnam",vec:"Vèneto",vls:"ltr",vo:"Volapük",wa:"Walon",war:"Winaray",wo:"Wollof",xal:"Хальмг",xh:"isiXhosa",yi:"ייִדיש",yo:"Yorùbá",za:"Cuengh",zh:"中文","zh-classical":"ltr","zh-min-nan":"Bân-lâm-gú","zh-yue":"粵語",zu:"isiZulu"};const S=".wikipedia.org/wiki/$1",C=".wikimedia.org/wiki/$1",N="www.";var q={acronym:N+"acronymfinder.com/$1.html",advisory:"advisory"+C,advogato:N+"advogato.org/$1",aew:"wiki.arabeyes.org/$1",appropedia:N+"appropedia.org/$1",aquariumwiki:N+"theaquariumwiki.com/$1",arborwiki:"localwiki.org/ann-arbor/$1",arxiv:"arxiv.org/abs/$1",atmwiki:N+"otterstedt.de/wiki/index.php/$1",baden:N+"stadtwiki-baden-baden.de/wiki/$1/",battlestarwiki:"en.battlestarwiki.org/wiki/$1",bcnbio:"historiapolitica.bcn.cl/resenas_parlamentarias/wiki/$1",beacha:N+"beachapedia.org/$1",betawiki:"translatewiki.net/wiki/$1",bibcode:"adsabs.harvard.edu/abs/$1",bibliowiki:"wikilivres.org/wiki/$1",bluwiki:"bluwiki.com/go/$1",blw:"britainloves"+S,botwiki:"botwiki.sno.cc/wiki/$1",boxrec:N+"boxrec.com/media/index.php?$1",brickwiki:N+"brickwiki.info/wiki/$1",bugzilla:"bugzilla.wikimedia.org/show_bug.cgi?id=$1",bulba:"bulbapedia.bulbagarden.net/wiki/$1",c:"commons"+C,c2:"c2.com/cgi/wiki?$1",c2find:"c2.com/cgi/wiki?FindPage&value=$1",cache:N+"google.com/search?q=cache:$1","ĉej":"esperanto.blahus.cz/cxej/vikio/index.php/$1",cellwiki:"cell.wikia.com/wiki/$1",centralwikia:"community.wikia.com/wiki/$1",chej:"esperanto.blahus.cz/cxej/vikio/index.php/$1",choralwiki:N+"cpdl.org/wiki/index.php/$1",citizendium:"en.citizendium.org/wiki/$1",ckwiss:N+"ck-wissen.de/ckwiki/index.php?title=$1",comixpedia:N+"comixpedia.org/index.php?title=$1",commons:"commons"+C,communityscheme:"community.schemewiki.org/?c=s&key=$1",communitywiki:"communitywiki.org/$1",comune:"rete.comuni-italiani.it/wiki/$1",creativecommons:"creativecommons.org/licenses/$1",creativecommonswiki:"wiki.creativecommons.org/$1",cxej:"esperanto.blahus.cz/cxej/vikio/index.php/$1",dcc:N+"dccwiki.com/$1",dcdatabase:"dc.wikia.com/$1",dcma:"christian-morgenstern.de/dcma/index.php?title=$1",debian:"wiki.debian.org/$1",delicious:N+"delicious.com/tag/$1",devmo:"developer.mozilla.org/en/docs/$1",dictionary:N+"dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1",dict:N+"dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1",disinfopedia:"sourcewatch.org/index.php/$1",distributedproofreaders:N+"pgdp.net/wiki/$1",distributedproofreadersca:N+"pgdpcanada.net/wiki/index.php/$1",dmoz:"curlie.org/$1",dmozs:"curlie.org/search?q=$1",doi:"doi.org/$1",donate:"donate"+C,doom_wiki:"doom.wikia.com/wiki/$1",download:"releases.wikimedia.org/$1",dbdump:"dumps.wikimedia.org/$1/latest/",dpd:"lema.rae.es/dpd/?key=$1",drae:"dle.rae.es/?w=$1",dreamhost:"wiki.dreamhost.com/index.php/$1",drumcorpswiki:N+"drumcorpswiki.com/index.php/$1",dwjwiki:N+"suberic.net/cgi-bin/dwj/wiki.cgi?$1","eĉei":N+"ikso.net/cgi-bin/wiki.pl?$1",ecoreality:N+"EcoReality.org/wiki/$1",ecxei:N+"ikso.net/cgi-bin/wiki.pl?$1",elibre:"enciclopedia.us.es/index.php/$1",emacswiki:N+"emacswiki.org/emacs?$1",encyc:"encyc.org/wiki/$1",energiewiki:N+"netzwerk-energieberater.de/wiki/index.php/$1",englyphwiki:"en.glyphwiki.org/wiki/$1",enkol:"enkol.pl/$1",eokulturcentro:"esperanto.toulouse.free.fr/nova/wikini/wakka.php?wiki=$1",esolang:"esolangs.org/wiki/$1",etherpad:"etherpad.wikimedia.org/$1",ethnologue:N+"ethnologue.com/language/$1",ethnologuefamily:N+"ethnologue.com/show_family.asp?subid=$1",evowiki:"wiki.cotch.net/index.php/$1",exotica:N+"exotica.org.uk/wiki/$1",fanimutationwiki:"wiki.animutationportal.com/index.php/$1",fedora:"fedoraproject.org/wiki/$1",finalfantasy:"finalfantasy.wikia.com/wiki/$1",finnix:N+"finnix.org/$1",flickruser:N+"flickr.com/people/$1",flickrphoto:N+"flickr.com/photo.gne?id=$1",floralwiki:N+"floralwiki.co.uk/wiki/$1",foldoc:"foldoc.org/$1",foundation:"foundation"+C,foundationsite:"wikimediafoundation.org/$1",foxwiki:"fox.wikis.com/wc.dll?Wiki~$1",freebio:"freebiology.org/wiki/$1",freebsdman:N+"FreeBSD.org/cgi/man.cgi?apropos=1&query=$1",freeculturewiki:"wiki.freeculture.org/index.php/$1",freedomdefined:"freedomdefined.org/$1",freefeel:"freefeel.org/wiki/$1",freekiwiki:"wiki.freegeek.org/index.php/$1",freesoft:"directory.fsf.org/wiki/$1",ganfyd:"ganfyd.org/index.php?title=$1",gardenology:N+"gardenology.org/wiki/$1",gausswiki:"gauss.ffii.org/$1",gentoo:"wiki.gentoo.org/wiki/$1",genwiki:"wiki.genealogy.net/index.php/$1",gerrit:"gerrit.wikimedia.org/r/$1",git:"gerrit.wikimedia.org/g/$1",google:N+"google.com/search?q=$1",googledefine:N+"google.com/search?q=define:$1",googlegroups:"groups.google.com/groups?q=$1",guildwarswiki:"wiki.guildwars.com/wiki/$1",guildwiki:"guildwars.wikia.com/wiki/$1",guc:"tools.wmflabs.org/guc/?user=$1",gucprefix:"tools.wmflabs.org/guc/?isPrefixPattern=1&src=rc&user=$1",gutenberg:N+"gutenberg.org/etext/$1",gutenbergwiki:N+"gutenberg.org/wiki/$1",hackerspaces:"hackerspaces.org/wiki/$1",h2wiki:"halowiki.net/p/$1",hammondwiki:N+"dairiki.org/HammondWiki/index.php3?$1",hdl:"hdl.handle.net/$1",heraldik:"heraldik-wiki.de/wiki/$1",heroeswiki:"heroeswiki.com/$1",horizonlabs:"horizon.wikimedia.org/$1",hrwiki:N+"hrwiki.org/index.php/$1",hrfwiki:"fanstuff.hrwiki.org/index.php/$1",hupwiki:"wiki.hup.hu/index.php/$1",iarchive:"archive.org/details/$1",imdbname:N+"imdb.com/name/nm$1/",imdbtitle:N+"imdb.com/title/tt$1/",imdbcompany:N+"imdb.com/company/co$1/",imdbcharacter:N+"imdb.com/character/ch$1/",incubator:"incubator"+C,infosecpedia:"infosecpedia.org/wiki/$1",infosphere:"theinfosphere.org/$1","iso639-3":"iso639-3.sil.org/code/$1",issn:N+"worldcat.org/issn/$1",iuridictum:"iuridictum.pecina.cz/w/$1",jaglyphwiki:"glyphwiki.org/wiki/$1",jefo:"esperanto-jeunes.org/wiki/$1",jerseydatabase:"jerseydatabase.com/wiki.php?id=$1",jira:"jira.toolserver.org/browse/$1",jspwiki:N+"ecyrd.com/JSPWiki/Wiki.jsp?page=$1",jstor:N+"jstor.org/journals/$1",kamelo:"kamelopedia.mormo.org/index.php/$1",karlsruhe:"ka.stadtwiki.net/$1",kinowiki:"kino.skripov.com/index.php/$1",komicawiki:"wiki.komica.org/?$1",kontuwiki:"kontu.wiki/$1",wikitech:"wikitech"+C,libreplanet:"libreplanet.org/wiki/$1",linguistlist:"linguistlist.org/forms/langs/LLDescription.cfm?code=$1",linuxwiki:N+"linuxwiki.de/$1",linuxwikide:N+"linuxwiki.de/$1",liswiki:"liswiki.org/wiki/$1",literateprograms:"en.literateprograms.org/$1",livepedia:N+"livepedia.gr/index.php?title=$1",localwiki:"localwiki.org/$1",lojban:"mw.lojban.org/papri/$1",lostpedia:"lostpedia.wikia.com/wiki/$1",lqwiki:"wiki.linuxquestions.org/wiki/$1",luxo:"tools.wmflabs.org/guc/?user=$1",mail:"lists.wikimedia.org/mailman/listinfo/$1",mailarchive:"lists.wikimedia.org/pipermail/$1",mariowiki:N+"mariowiki.com/$1",marveldatabase:N+"marveldatabase.com/wiki/index.php/$1",meatball:"meatballwiki.org/wiki/$1",mw:N+"mediawiki.org/wiki/$1",mediazilla:"bugzilla.wikimedia.org/$1",memoryalpha:"memory-alpha.fandom.com/wiki/$1",metawiki:"meta"+C,metawikimedia:"meta"+C,metawikipedia:"meta"+C,mineralienatlas:N+"mineralienatlas.de/lexikon/index.php/$1",moinmoin:"moinmo.in/$1",monstropedia:N+"monstropedia.org/?title=$1",mosapedia:"mosapedia.de/wiki/index.php/$1",mozcom:"mozilla.wikia.com/wiki/$1",mozillawiki:"wiki.mozilla.org/$1",mozillazinekb:"kb.mozillazine.org/$1",musicbrainz:"musicbrainz.org/doc/$1",mediawikiwiki:N+"mediawiki.org/wiki/$1",mwod:N+"merriam-webster.com/dictionary/$1",mwot:N+"merriam-webster.com/thesaurus/$1",nkcells:N+"nkcells.info/index.php?title=$1",nara:"catalog.archives.gov/id/$1",nosmoke:"no-smok.net/nsmk/$1",nost:"nostalgia."+S,nostalgia:"nostalgia."+S,oeis:"oeis.org/$1",oldwikisource:"wikisource.org/wiki/$1",olpc:"wiki.laptop.org/go/$1",omegawiki:N+"omegawiki.org/Expression:$1",onelook:N+"onelook.com/?ls=b&w=$1",openlibrary:"openlibrary.org/$1",openstreetmap:"wiki.openstreetmap.org/wiki/$1",openwetware:"openwetware.org/wiki/$1",opera7wiki:"operawiki.info/$1",organicdesign:N+"organicdesign.co.nz/$1",orthodoxwiki:"orthodoxwiki.org/$1",osmwiki:"wiki.openstreetmap.org/wiki/$1",otrs:"ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketID=$1",otrswiki:"otrs-wiki"+C,ourmedia:N+"socialtext.net/ourmedia/index.cgi?$1",outreach:"outreach"+C,outreachwiki:"outreach"+C,owasp:N+"owasp.org/index.php/$1",panawiki:"wiki.alairelibre.net/index.php?title=$1",patwiki:"gauss.ffii.org/$1",personaltelco:"personaltelco.net/wiki/$1",petscan:"petscan.wmflabs.org/?psid=$1",phab:"phabricator.wikimedia.org/$1",phabricator:"phabricator.wikimedia.org/$1",phwiki:N+"pocketheaven.com/ph/wiki/index.php?title=$1",phpwiki:"phpwiki.sourceforge.net/phpwiki/index.php?$1",planetmath:"planetmath.org/node/$1",pmeg:N+"bertilow.com/pmeg/$1",pmid:N+"ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract",pokewiki:"pokewiki.de/$1","pokéwiki":"pokewiki.de/$1",policy:"policy.wikimedia.org/$1",proofwiki:N+"proofwiki.org/wiki/$1",pyrev:N+"mediawiki.org/wiki/Special:Code/pywikipedia/$1",pythoninfo:"wiki.python.org/moin/$1",pythonwiki:N+"pythonwiki.de/$1",pywiki:"c2.com/cgi/wiki?$1",psycle:"psycle.sourceforge.net/wiki/$1",quality:"quality"+C,quarry:"quarry.wmflabs.org/$1",regiowiki:"regiowiki.at/wiki/$1",rev:N+"mediawiki.org/wiki/Special:Code/MediaWiki/$1",revo:"purl.org/NET/voko/revo/art/$1.html",rfc:"tools.ietf.org/html/rfc$1",rheinneckar:"rhein-neckar-wiki.de/$1",robowiki:"robowiki.net/?$1",rodovid:"en.rodovid.org/wk/$1",reuterswiki:"glossary.reuters.com/index.php/$1",rowiki:"wiki.rennkuckuck.de/index.php/$1",rt:"rt.wikimedia.org/Ticket/Display.html?id=$1",s23wiki:"s23.org/wiki/$1",scholar:"scholar.google.com/scholar?q=$1",schoolswp:"schools-"+S,scores:"imslp.org/wiki/$1",scoutwiki:"en.scoutwiki.org/$1",scramble:N+"scramble.nl/wiki/index.php?title=$1",seapig:N+"seapig.org/$1",seattlewiki:"seattle.wikia.com/wiki/$1",slwiki:"wiki.secondlife.com/wiki/$1","semantic-mw":N+"semantic-mediawiki.org/wiki/$1",senseislibrary:"senseis.xmp.net/?$1",sharemap:"sharemap.org/$1",silcode:N+"sil.org/iso639-3/documentation.asp?id=$1",slashdot:"slashdot.org/article.pl?sid=$1",sourceforge:"sourceforge.net/$1",spcom:"spcom"+C,species:"species"+C,squeak:"wiki.squeak.org/squeak/$1",stats:"stats.wikimedia.org/$1",stewardry:"tools.wmflabs.org/meta/stewardry/?wiki=$1",strategy:"strategy"+C,strategywiki:"strategywiki.org/wiki/$1",sulutil:"meta.wikimedia.org/wiki/Special:CentralAuth/$1",swtrain:"train.spottingworld.com/$1",svn:"svn.wikimedia.org/viewvc/mediawiki/$1?view=log",swinbrain:"swinbrain.ict.swin.edu.au/wiki/$1",tabwiki:N+"tabwiki.com/index.php/$1",tclerswiki:"wiki.tcl.tk/$1",technorati:N+"technorati.com/search/$1",tenwiki:"ten."+S,testwiki:"test."+S,testwikidata:"test.wikidata.org/wiki/$1",test2wiki:"test2."+S,tfwiki:"tfwiki.net/wiki/$1",thelemapedia:N+"thelemapedia.org/index.php/$1",theopedia:N+"theopedia.com/$1",thinkwiki:N+"thinkwiki.org/wiki/$1",ticket:"ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketNumber=$1",tmbw:"tmbw.net/wiki/$1",tmnet:N+"technomanifestos.net/?$1",tmwiki:N+"EasyTopicMaps.com/?page=$1",toolforge:"tools.wmflabs.org/$1",toollabs:"tools.wmflabs.org/$1",tools:"toolserver.org/$1",tswiki:N+"mediawiki.org/wiki/Toolserver:$1",translatewiki:"translatewiki.net/wiki/$1",tviv:"tviv.org/wiki/$1",tvtropes:N+"tvtropes.org/pmwiki/pmwiki.php/Main/$1",twiki:"twiki.org/cgi-bin/view/$1",tyvawiki:N+"tyvawiki.org/wiki/$1",umap:"umap.openstreetmap.fr/$1",uncyclopedia:"en.uncyclopedia.co/wiki/$1",unihan:N+"unicode.org/cgi-bin/GetUnihanData.pl?codepoint=$1",unreal:"wiki.beyondunreal.com/wiki/$1",urbandict:N+"urbandictionary.com/define.php?term=$1",usej:N+"tejo.org/usej/$1",usemod:N+"usemod.com/cgi-bin/wiki.pl?$1",usability:"usability"+C,utrs:"utrs.wmflabs.org/appeal.php?id=$1",vikidia:"fr.vikidia.org/wiki/$1",vlos:"tusach.thuvienkhoahoc.com/wiki/$1",vkol:"kol.coldfront.net/thekolwiki/index.php/$1",voipinfo:N+"voip-info.org/wiki/view/$1",votewiki:"vote"+C,werelate:N+"werelate.org/wiki/$1",wg:"wg-en."+S,wikia:N+"wikia.com/wiki/w:c:$1",wikiasite:N+"wikia.com/wiki/w:c:$1",wikiapiary:"wikiapiary.com/wiki/$1",wikibooks:"en.wikibooks.org/wiki/$1",wikichristian:N+"wikichristian.org/index.php?title=$1",wikicities:N+"wikia.com/wiki/w:$1",wikicity:N+"wikia.com/wiki/w:c:$1",wikiconference:"wikiconference.org/wiki/$1",wikidata:N+"wikidata.org/wiki/$1",wikif1:N+"wikif1.org/$1",wikifur:"en.wikifur.com/wiki/$1",wikihow:N+"wikihow.com/$1",wikiindex:"wikiindex.org/$1",wikilemon:"wiki.illemonati.com/$1",wikilivres:"wikilivres.org/wiki/$1",wikilivresru:"wikilivres.ru/$1","wikimac-de":"apfelwiki.de/wiki/Main/$1",wikimedia:"foundation"+C,wikinews:"en.wikinews.org/wiki/$1",wikinfo:"wikinfo.org/w/index.php/$1",wikinvest:"meta.wikimedia.org/wiki/Interwiki_map/discontinued#Wikinvest",wikiotics:"wikiotics.org/$1",wikipapers:"wikipapers.referata.com/wiki/$1",wikipedia:"en."+S,wikipediawikipedia:"en.wikipedia.org/wiki/Wikipedia:$1",wikiquote:"en.wikiquote.org/wiki/$1",wikisophia:"wikisophia.org/index.php?title=$1",wikisource:"en.wikisource.org/wiki/$1",wikispecies:"species"+C,wikispot:"wikispot.org/?action=gotowikipage&v=$1",wikiskripta:N+"wikiskripta.eu/index.php/$1",labsconsole:"wikitech"+C,wikiti:"wikiti.denglend.net/index.php?title=$1",wikiversity:"en.wikiversity.org/wiki/$1",wikivoyage:"en.wikivoyage.org/wiki/$1",betawikiversity:"beta.wikiversity.org/wiki/$1",wikiwikiweb:"c2.com/cgi/wiki?$1",wiktionary:"en.wiktionary.org/wiki/$1",wipipedia:"wipipedia.org/index.php/$1",wlug:N+"wlug.org.nz/$1",wmam:"am"+C,wmar:N+"wikimedia.org.ar/wiki/$1",wmat:"mitglieder.wikimedia.at/$1",wmau:"wikimedia.org.au/wiki/$1",wmbd:"bd"+C,wmbe:"be"+C,wmbr:"br"+C,wmca:"ca"+C,wmch:N+"wikimedia.ch/$1",wmcl:N+"wikimediachile.cl/index.php?title=$1",wmcn:"cn"+C,wmco:"co"+C,wmcz:N+"wikimedia.cz/web/$1",wmdc:"wikimediadc.org/wiki/$1",securewikidc:"secure.wikidc.org/$1",wmde:"wikimedia.de/wiki/$1",wmdk:"dk"+C,wmee:"ee"+C,wmec:"ec"+C,wmes:N+"wikimedia.es/wiki/$1",wmet:"ee"+C,wmfdashboard:"outreachdashboard.wmflabs.org/$1",wmfi:"fi"+C,wmfr:"wikimedia.fr/$1",wmge:"ge"+C,wmhi:"hi"+C,wmhk:"meta.wikimedia.org/wiki/Wikimedia_Hong_Kong",wmhu:"wikimedia.hu/wiki/$1",wmid:"id"+C,wmil:N+"wikimedia.org.il/$1",wmin:"wiki.wikimedia.in/$1",wmit:"wiki.wikimedia.it/wiki/$1",wmke:"meta.wikimedia.org/wiki/Wikimedia_Kenya",wmmk:"mk"+C,wmmx:"mx"+C,wmnl:"nl"+C,wmnyc:"nyc"+C,wmno:"no"+C,"wmpa-us":"pa-us"+C,wmph:"meta.wikimedia.org/wiki/Wikimedia_Philippines",wmpl:"pl"+C,wmpt:"pt"+C,wmpunjabi:"punjabi"+C,wmromd:"romd"+C,wmrs:"rs"+C,wmru:"ru"+C,wmse:"se"+C,wmsk:"wikimedia.sk/$1",wmtr:"tr"+C,wmtw:"wikimedia.tw/wiki/index.php5/$1",wmua:"ua"+C,wmuk:"wikimedia.org.uk/wiki/$1",wmve:"wikimedia.org.ve/wiki/$1",wmza:"wikimedia.org.za/wiki/$1",wm2005:"wikimania2005"+C,wm2006:"wikimania2006"+C,wm2007:"wikimania2007"+C,wm2008:"wikimania2008"+C,wm2009:"wikimania2009"+C,wm2010:"wikimania2010"+C,wm2011:"wikimania2011"+C,wm2012:"wikimania2012"+C,wm2013:"wikimania2013"+C,wm2014:"wikimania2014"+C,wm2015:"wikimania2015"+C,wm2016:"wikimania2016"+C,wm2017:"wikimania2017"+C,wm2018:"wikimania2018"+C,wmania:"wikimania"+C,wikimania:"wikimania"+C,wmteam:"wikimaniateam"+C,wmf:"foundation"+C,wmfblog:"blog.wikimedia.org/$1",wmdeblog:"blog.wikimedia.de/$1",wookieepedia:"starwars.wikia.com/wiki/$1",wowwiki:N+"wowwiki.com/$1",wqy:"wqy.sourceforge.net/cgi-bin/index.cgi?$1",wurmpedia:"wurmpedia.com/index.php/$1",viaf:"viaf.org/viaf/$1",zrhwiki:N+"zrhwiki.ch/wiki/$1",zum:"wiki.zum.de/$1",zwiki:N+"zwiki.org/$1",m:"meta"+C,meta:"meta"+C,sep11:"sep11."+S,d:N+"wikidata.org/wiki/$1",minnan:"zh-min-nan."+S,nb:"no."+S,"zh-cfr":"zh-min-nan."+S,"zh-cn":"zh."+S,"zh-tw":"zh."+S,nan:"zh-min-nan."+S,vro:"fiu-vro."+S,cmn:"zh."+S,lzh:"zh-classical."+S,rup:"roa-rup."+S,gsw:"als."+S,"be-tarask":"be-x-old."+S,sgs:"bat-smg."+S,egl:"eml."+S,w:"en."+S,wikt:"en.wiktionary.org/wiki/$1",q:"en.wikiquote.org/wiki/$1",b:"en.wikibooks.org/wiki/$1",n:"en.wikinews.org/wiki/$1",s:"en.wikisource.org/wiki/$1",chapter:"en"+C,v:"en.wikiversity.org/wiki/$1",voy:"en.wikivoyage.org/wiki/$1"},T=E,L=q;Object.keys(T).forEach(e=>{L[e]=e+".wikipedia.org/wiki/$1"});var P=function(e){let t=e.page||"";if(-1!==t.indexOf(":")){let i=t.match(/^(.*):(.*)/);if(null===i)return e;let a=i[1]||"";if(a=a.toLowerCase(),-1!==a.indexOf(":")){let[,t,i]=a.match(/^:?(.*):(.*)/);if(L.hasOwnProperty(t)&&!1===T.hasOwnProperty(i))return e;e.wiki={wiki:t,lang:i}}else{if(!1===L.hasOwnProperty(a))return e;e.wiki=a}e.page=i[2]}return e};const A=/^:?(category|catégorie|kategorie|categoría|categoria|categorie|kategoria|تصنيف|image|file|fichier|datei|media):/i,D=/\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]| ]{4,1500})([| ].*?)?\]/g,I=/\[\[(.{0,160}?)\]\]([a-z]+)?/gi;var M=function(e){let t=[];if(t=function(e,t){return t.replace(D,(function(t,i,a,n){return n=n||"",e.push({type:"external",site:i+a,text:n.trim(),raw:t}),n})),e}(t,e),t=function(e,t){return t.replace(I,(function(t,i,a){let n=null,r=i;if(i.match(/\|/)&&(r=(i=i.replace(/\[\[(.{2,100}?)\]\](\w{0,10})/g,"$1$2")).replace(/(.{2,100})\|.{0,200}/,"$1"),n=i.replace(/.{2,100}?\|/,""),null===n&&r.match(/\|$/)&&(r=r.replace(/\|$/,""),n=r)),r.match(A))return i;let o={page:r,raw:t};return o.page=o.page.replace(/#(.*)/,(e,t)=>(o.anchor=t,"")),o=P(o),o.wiki&&(o.type="interwiki"),null!==n&&n!==o.page&&(o.text=n),a&&(o.text=o.text||o.page,o.text+=a.trim()),o.page&&!1===/^[A-Z]/.test(o.page)&&(o.text||(o.text=o.page),o.page=o.page),e.push(o),i})),e}(t,e),0!==t.length)return t};const R=new RegExp("^[ \n\t]*?#("+k.redirects.join("|")+") *?(\\[\\[.{2,180}?\\]\\])","i");var U={isRedirect:function(e){return!(!e||e.length>500)&&R.test(e)},parse:function(e){let t=e.match(R);if(t&&t[2]){return(M(t[2])||[])[0]}return{}}};const B=["table","code","score","data","categorytree","charinsert","hiero","imagemap","inputbox","nowiki","poem","references","source","syntaxhighlight","timeline"],F=`< ?(${B.join("|")}) ?[^>]{0,200}?>`,K=`< ?/ ?(${B.join("|")}) ?>`,W=new RegExp(`${F}[\\s\\S]+?${K}`,"gi");var Z=function(e){return(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(W," ")).replace(/ ?< ?(span|div|table|data) [a-zA-Z0-9=%.\-#:;'" ]{2,100}\/? ?> ?/g," ")).replace(/ ?< ?(ref) [a-zA-Z0-9=" ]{2,100}\/ ?> ?/g," ")).replace(/(.*?)<\/i>/g,"''$1''")).replace(/(.*?)<\/b>/g,"'''$1'''")).replace(/(.*?)<\/sub>/g,"{{sub|$1}}")).replace(/(.*?)<\/sup>/g,"{{sup|$1}}")).replace(/ ?<[ /]?(p|sub|sup|span|nowiki|div|table|br|tr|td|th|pre|pre2|hr)[ /]?> ?/g," ")).replace(/ ?<[ /]?(abbr|bdi|bdo|blockquote|cite|del|dfn|em|ins|kbd|mark|q|s|small)[ /]?> ?/g," ")).replace(/ ?<[ /]?h[0-9][ /]?> ?/g," ")).replace(/ ?< ?br ?\/> ?/g,"\n")).trim()};var H=function(e){return e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(//g,"")).replace(/__(NOTOC|NOEDITSECTION|FORCETOC|TOC)__/gi,"")).replace(/~{2,3}/g,"")).replace(/\r/g,"")).replace(/\u3002/g,". ")).replace(/----/g,"")).replace(/\{\{\}\}/g," – ")).replace(/\{\{\\\}\}/g," / ")).replace(/ /g," "),e=(e=(e=Z(e)).replace(/\([,;: ]+\)/g,"")).replace(/\{\{(baseball|basketball) (primary|secondary) (style|color).*?\}\}/i,"")};const Y=/[\\.$]/,G=function(e){return"string"!=typeof e&&(e=""),e=(e=(e=e.replace(/\\/g,"\\\\")).replace(/^\$/,"\\u0024")).replace(/\./g,"\\u002e")};var V={encodeObj:function(e={}){let t=Object.keys(e);for(let i=0;ie.json(t));a.length>0&&(i.paragraphs=a)}if(!0===t.images){let a=e.images().map(e=>e.json(t));a.length>0&&(i.images=a)}if(!0===t.tables){let a=e.tables().map(e=>e.json(t));a.length>0&&(i.tables=a)}if(!0===t.templates){let a=e.templates().map(e=>e.json());a.length>0&&(i.templates=a,!0===t.encode&&i.templates.forEach(e=>V.encodeObj(e)))}if(!0===t.infoboxes){let a=e.infoboxes().map(e=>e.json(t));a.length>0&&(i.infoboxes=a)}if(!0===t.lists){let a=e.lists().map(e=>e.json(t));a.length>0&&(i.lists=a)}if(!0===t.references||!0===t.citations){let a=e.references().map(e=>e.json(t));a.length>0&&(i.references=a)}return!0===t.sentences&&(i.sentences=e.sentences().map(e=>e.json(t))),i};const Q={type:"internal"},ee=function(e){e=e||{},e=Object.assign({},Q,e),Object.defineProperty(this,"data",{enumerable:!1,value:e})},te={text:function(e){void 0!==e&&(this.data.text=e);let t=this.data.text||this.data.page||"";return t=t.replace(/'{2,}/g,""),t},json:function(){let e={text:this.data.text,type:this.type()};"internal"===e.type?e.page=this.page():"interwiki"===e.type?e.wiki=this.wiki():e.site=this.site();let t=this.anchor();return t&&(e.anchor=t),e},wikitext:function(){return this.data.raw||""},page:function(e){return void 0!==e&&(this.data.page=e),this.data.page},anchor:function(e){return void 0!==e&&(this.data.anchor=e),this.data.anchor||""},wiki:function(e){return void 0!==e&&(this.data.wiki=e),this.data.wiki},type:function(e){return void 0!==e&&(this.data.type=e),this.data.type},site:function(e){return void 0!==e&&(this.data.site=e),this.data.site},href:function(){let e=this.type();if("external"===e)return this.site();let t=this.page();t=t.replace(/ /g,"_"),t=encodeURIComponent(t);let i="";if("interwiki"===e){let e=this.wiki();i="https://en.wikipedia.org/wiki/$1",L.hasOwnProperty(e)&&(i="http://"+L[this.wiki()]),i=i.replace(/\$1/g,t)}else i="./"+this.page();return this.anchor()&&(i+="#"+this.anchor()),i}};Object.keys(te).forEach(e=>{ee.prototype[e]=te[e]});var ie=ee;var ae=function(e){let t=e.text,i=M(t)||[];e.links=i.map(e=>(t=t.replace(e.raw,e.text||e.page||""),new ie(e))),t=t.replace(/\[\[File:(.{2,80}?)\|([^\]]+)\]\](\w{0,5})/g,"$1"),e.text=t};var ne=function(e){let t=[],i=[],a=e.text||"";return a=a.replace(/'''''(.{0,200}?)'''''/g,(e,a)=>(t.push(a),i.push(a),a)),a=a.replace(/''''(.{0,200}?)''''/g,(e,i)=>(t.push(`'${i}'`),`'${i}'`)),a=a.replace(/'''(.{0,200}?)'''/g,(e,i)=>(t.push(i),i)),a=a.replace(/''(.{0,200}?)''/g,(e,t)=>(i.push(t),t)),e.text=a,t.length>0&&(e.fmt=e.fmt||{},e.fmt.bold=t),i.length>0&&(e.fmt=e.fmt||{},e.fmt.italic=i),e};const re=/^[0-9,.]+$/,oe={text:!0,links:!0,formatting:!0,numbers:!0};var se=function(e,t){t=d(t,oe);let i={},a=e.text();if(!0===t.text&&(i.text=a),!0===t.numbers&&re.test(a)){let e=Number(a.replace(/,/g,""));!1===isNaN(e)&&(i.number=e)}return t.links&&e.links().length>0&&(i.links=e.links().map(e=>e.json())),t.formatting&&e.data.fmt&&(i.formatting=e.data.fmt),i};const le=function(e={}){Object.defineProperty(this,"data",{enumerable:!1,value:e})},ce={links:function(e){let t=this.data.links||[];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page===e);return void 0===i?[]:[i]}return t},interwiki:function(){return this.links().filter(e=>void 0!==e.wiki)},bolds:function(){return this.data&&this.data.fmt&&this.data.fmt.bold&&this.data.fmt.bold||[]},italics:function(){return this.data&&this.data.fmt&&this.data.fmt.italic&&this.data.fmt.italic||[]},text:function(e){return void 0!==e&&"string"==typeof e&&(this.data.text=e),this.data.text||""},json:function(e){return se(this,e)},wikitext:function(){return this.data.wiki||""},isEmpty:function(){return""===this.data.text}};Object.keys(ce).forEach(e=>{le.prototype[e]=ce[e]});const ue={links:"link",bolds:"bold",italics:"italic"};Object.keys(ue).forEach(e=>{le.prototype[ue[e]]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]}}),le.prototype.plaintext=le.prototype.text;var pe=le;const me=["ad","adj","adm","adv","al","alta","approx","apr","apt","arc","ariz","assn","asst","atty","aug","ave","ba","bc","bl","bldg","blvd","brig","bros","ca","cal","calif","capt","cca","cg","cl","cm","cmdr","co","col","colo","comdr","conn","corp","cpl","cres","ct","cyn","dak","dec","def","dept","det","dg","dist","dl","dm","dr","ea","eg","eng","esp","esq","est","etc","ex","exp","feb","fem","fig","fl oz","fl","fla","fm","fr","ft","fy","ga","gal","gb","gen","gov","hg","hon","hr","hrs","hwy","hz","ia","ida","ie","inc","inf","jan","jd","jr","jul","jun","kan","kans","kb","kg","km","kmph","lat","lb","lit","llb","lm","lng","lt","ltd","lx","ma","maj","mar","masc","mb","md","messrs","mg","mi","min","minn","misc","mister","ml","mlle","mm","mme","mph","mps","mr","mrs","ms","mstr","mt","neb","nebr","nee","no","nov","oct","okla","ont","op","ord","oz","pa","pd","penn","penna","phd","pl","pp","pref","prob","prof","pron","ps","psa","pseud","pt","pvt","qt","que","rb","rd","rep","reps","res","rev","sask","sec","sen","sens","sep","sept","sfc","sgt","sir","situ","sq ft","sq","sr","ss","st","supt","surg","tb","tbl","tbsp","tce","td","tel","temp","tenn","tex","tsp","univ","usafa","ut","va","vb","ver","vet","vitro","vivo","vol","vs","vt","wis","wisc","wr","wy","wyo","yb","µg"].concat("[^]][^]]"),de=new RegExp("(^| |')("+me.join("|")+")[.!?] ?$","i"),he=/[ .'][A-Z].? *?$/i,ge=/\.{3,} +?$/,fe=/ c\.\s$/,ke=/\p{Letter}/iu;var be=ae,we=ne,ye=pe,$e=function(e){let t=[],i=[];if(!e||"string"!=typeof e||0===e.trim().length)return t;let a=function(e){let t=e.split(/(\n+)/);return t=t.filter(e=>e.match(/\S/)),t=t.map((function(e){return e.split(/(\S.+?[.!?]"?)(?=\s|$)/g)})),function(e){let t=[];return e.forEach((function(e){t=t.concat(e)})),t}(t)}(e);for(let e=0;ei.length)return!1;const a=e.match(/"/g);return!(a&&a.length%2!=0&&e.length<900)}(n))?i[e+1]=i[e]+(i[e+1]||""):i[e]&&i[e].length>0&&(t.push(i[e]),i[e]="");var n;return 0===t.length?[e]:t};function xe(e){let t={wiki:e,text:e};var i;return be(t),t.text=(i=(i=(i=t.text).replace(/\([,;: ]*\)/g,"")).replace(/\( *(; ?)+/g,"("),(i=r.trim_whitespace(i)).replace(/ +\.$/,".")),t=we(t),new ye(t)}const ve=/^[\p{Letter}0-9._\- '()]+=/iu,je={template:!0,list:!0,prototype:!0};const _e={classname:!0,style:!0,align:!0,margin:!0,left:!0,break:!0,boxsize:!0,framestyle:!0,item_style:!0,collapsible:!0,list_style_type:!0,"list-style-type":!0,colwidth:!0};var ze=function(e){return e=(e=e.replace(/^\{\{/,"")).replace(/\}\}$/,"")},Oe=function(e){return e=(e=(e=(e||"").trim()).toLowerCase()).replace(/_/g," ")},Ee={fromText:xe,byParagraph:function(e){let t=$e(e.wiki);t=t.map(xe),t[0]&&t[0].text()&&":"===t[0].text()[0]&&(t=t.slice(1)),e.sentences=t}},Se=function(e){let t=e.split(/\n?\|/);t.forEach((e,i)=>{null!==e&&(/\[\[[^\]]+$/.test(e)||/\{\{[^}]+$/.test(e)||e.split("{{").length!==e.split("}}").length||e.split("[[").length!==e.split("]]").length)&&(t[i+1]=t[i]+"|"+t[i+1],t[i]=null)}),t=t.filter(e=>null!==e),t=t.map(e=>(e||"").trim());for(let e=t.length-1;e>=0;e-=1){""===t[e]&&t.pop();break}return t},Ce=function(e,t){let i=0;return e.reduce((e,a="")=>{if(a=a.trim(),!0===ve.test(a)){let t=function(e){let t=e.split("="),i=t[0]||"";i=i.toLowerCase().trim();let a=t.slice(1).join("=");return je.hasOwnProperty(i)&&(i="_"+i),{key:i,val:a.trim()}}(a);if(t.key)return e[t.key]=t.val,e}if(t&&t[i]){e[t[i]]=a}else e.list=e.list||[],e.list.push(a);return i+=1,e},{})},Ne=function(e){return Object.keys(e).forEach(t=>{!0===_e[t.toLowerCase()]&&delete e[t],null!==e[t]&&""!==e[t]||delete e[t]}),e};const qe=Ee.fromText,Te=function(e,t){let i=qe(e);return"json"===t?i.json():"raw"===t?i:i.text()};var Le=function(e,t=[],i){e=ze(e||"");let a=Se(e),n=a.shift(),r=Ce(a,t);return r=Ne(r),r[1]&&t[0]&&!1===r.hasOwnProperty(t[0])&&(r[t[0]]=r[1],delete r[1]),Object.keys(r).forEach(e=>{r[e]="list"!==e?Te(r[e],i):r[e].map(e=>Te(e,i))}),n&&(r.template=Oe(n)),r};const Pe=function(e,t){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},Ae={title:function(){let e=this.data;return e.title||e.encyclopedia||e.author||""},links:function(e){let t=[];if("number"==typeof e)return t[e];if("number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t||[]},text:function(){return""},wikitext:function(){return this.wiki||""},json:function(e={}){let t=this.data||{};return!0===e.encode&&(t=Object.assign({},t),t=V.encodeObj(t)),t}};Object.keys(Ae).forEach(e=>{Pe.prototype[e]=Ae[e]});var De=Le,Ie=Pe;const Me=Ee.fromText,Re=function(e){return/^ *\{\{ *(cite|citation)/i.test(e)&&/\}\} *$/.test(e)&&!1===/citation needed/i.test(e)},Ue=function(e){let t=De(e);return t.type=t.template.replace(/cite /,""),t.template="citation",t},Be=function(e){return{template:"citation",type:"inline",data:{},inline:Me(e)||{}}};var Fe=function(e){let t=[],i=e._wiki;i=i.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,a){if(Re(a)){let n=Ue(a);n&&t.push({json:n,wiki:e}),i=i.replace(a,"")}else t.push({json:Be(a),wiki:e});return" "})),i=i.replace(/ ?]{0,200}?\/> ?/gi," "),i=i.replace(/ ?]{0,200}>([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,a){if(Re(a)){let e=Ue(a);e&&t.push({json:e,wiki:a}),i=i.replace(a,"")}else t.push({json:Be(a),wiki:e});return" "})),i=i.replace(/ ?<[ /]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ /]?> ?/g," "),e._references=t.map(e=>new Ie(e.json,e.wiki)),e._wiki=i};const{trim_whitespace:Ke}=r,We=Ee.fromText,Ze=/^(={1,5})(.{1,200}?)={1,5}$/;var He=function(e,t){let i=t.match(Ze);if(!i)return e.title="",e.depth=0,e;let a=i[2]||"";a=We(a).text(),a=a.replace(/\{\{.+?\}\}/,"");let n={_wiki:a};Fe(n),a=n._wiki,a=Ke(a);let r=0;return i[1]&&(r=i[1].length-2),e.title=a,e.depth=r,e};const Ye=/.*rowspan *= *["']?([0-9]+)["']?[ |]*/,Ge=/.*colspan *= *["']?([0-9]+)["']?[ |]*/;var Ve=function(e){let t=[],i=[];e=function(e){return e=e.filter(e=>e&&!0!==/^\|\+/.test(e)),!0===/^\{\|/.test(e[0])&&e.shift(),!0===/^\|\}/.test(e[e.length-1])&&e.pop(),!0===/^\|-/.test(e[0])&&e.shift(),e}(e);for(let a=0;a0&&(t.push(i),i=[]):(n=n.split(/(?:\|\||!!)/),!n[0]&&n[1]&&n.shift(),n.forEach(e=>{e=(e=e.replace(/^\| */,"")).trim(),i.push(e)}))}return i.length>0&&t.push(i),t},Je=function(e){return e=function(e){return e.forEach((t,i)=>{t.forEach((a,n)=>{let r=a.match(Ye);if(null!==r){let o=parseInt(r[1],10);a=a.replace(Ye,""),t[n]=a;for(let t=i+1;t{e.forEach((t,i)=>{let a=t.match(Ge);if(null!==a){let n=parseInt(a[1],10);e[i]=t.replace(Ge,"");for(let t=1;te.length>0)}(e))};const Xe=Ee.fromText,Qe=/^!/,et={name:!0,age:!0,born:!0,date:!0,year:!0,city:!0,country:!0,population:!0,count:!0,number:!0},tt=function(e){return(e=Xe(e).text()).match(/\|/)&&(e=e.replace(/.+\| ?/,"")),e=(e=(e=e.replace(/style=['"].*?["']/,"")).replace(/^!/,"")).trim()},it=function(e){if(e.length<=3)return[];let t=e[0].slice(0);t=t.map(e=>(e=e.replace(/^! */,""),e=Xe(e).text(),e=(e=tt(e)).toLowerCase()));for(let i=0;ie.trim()),i=Ve(t);if(i=i.filter(e=>e),0===i.length)return[];i=function(e){return e.filter(e=>1!==e.length||!e[0]||!Qe.test(e[0])||!1!==/rowspan/i.test(e[0]))}(i),i=Je(i);let a=function(e=[]){let t=[];var i;(i=(i=e[0])||[]).length-i.filter(e=>e).length>3&&e.shift();let a=e[0];return a&&a[0]&&a[1]&&(/^!/.test(a[0])||/^!/.test(a[1]))&&(t=a.map(e=>(e=e.replace(/^! */,""),tt(e))),e.shift()),a=e[0],a&&a[0]&&a[1]&&/^!/.test(a[0])&&/^!/.test(a[1])&&(a.forEach((e,i)=>{e=e.replace(/^! */,""),e=tt(e),!0===Boolean(e)&&(t[i]=e)}),e.shift()),t}(i);if(!a||a.length<=1){a=it(i);let e=i[i.length-1]||[];a.length<=1&&e.length>2&&(a=it(i.slice(1)),a.length>0&&(i=i.slice(2)))}return i.map(e=>function(e,t){let i={};return e.forEach((e,a)=>{let n=t[a]||"col"+(a+1),r=Xe(e);r.text(tt(r.text())),i[n]=r}),i}(e,a))};var nt=function(e,t){return e.map(e=>{let i={};return Object.keys(e).forEach(t=>{i[t]=e[t].json()}),!0===t.encode&&(i=V.encodeObj(i)),i})};const rt={},ot=function(e=""){return e=(e=(e=(e=e.toLowerCase()).replace(/[_-]/g," ")).replace(/\(.*?\)/,"")).trim()},st=function(e,t=""){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"_wiki",{enumerable:!1,value:t})},lt={links(e){let t=[];if(this.data.forEach(e=>{Object.keys(e).forEach(i=>{t=t.concat(e[i].links())})}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},get(e){let t=this.data[0]||{},i=Object.keys(t).reduce((e,t)=>(e[ot(t)]=t,e),{});if("string"==typeof e){let t=ot(e);return t=i[t]||t,this.data.map(e=>e[t]?e[t].text():null)}return e=e.map(ot).map(e=>i[e]||e),this.data.map(t=>e.reduce((e,i)=>(t[i]?e[i]=t[i].text():e[i]="",e),{}))},keyValue(e){let t=this.json(e);return t.forEach(e=>{Object.keys(e).forEach(t=>{e[t]=e[t].text})}),t},json(e){return e=d(e,rt),nt(this.data,e)},text:()=>"",wikitext(){return this._wiki||""}};lt.keyvalue=lt.keyValue,lt.keyval=lt.keyValue,Object.keys(lt).forEach(e=>{st.prototype[e]=lt[e]});var ct=at,ut=st;const pt=/^\s*\{\|/,mt=/^\s*\|\}/;var dt=function(e){let t=[],i=e._wiki,a=i.split("\n"),n=[];for(let e=0;e0&&(n[n.length-1]+="\n"+a[e]);else{n[n.length-1]+="\n"+a[e];let i=n.pop();t.push(i)}else n.push(a[e]);let r=[];t.forEach(e=>{if(e){i=i.replace(e+"\n",""),i=i.replace(e,"");let t=ct(e);t&&t.length>0&&r.push(new ut(t,e))}}),r.length>0&&(e._tables=r),e._wiki=i};const ht={sentences:!0};var gt=function(e,t){let i={};return!0===(t=d(t,ht)).sentences&&(i.sentences=e.sentences().map(e=>e.json(t))),i};const ft={sentences:!0,lists:!0,images:!0},kt=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},bt={sentences:function(){return this.data.sentences||[]},references:function(){return this.data.references},lists:function(){return this.data.lists},images(){return this.data.images||[]},links:function(e){let t=[];if(this.sentences().forEach(i=>{t=t.concat(i.links(e))}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t||[]},interwiki(){let e=[];return this.sentences().forEach(t=>{e=e.concat(t.interwiki())}),e||[]},text:function(e){e=d(e,ft);let t=this.sentences().map(t=>t.text(e)).join(" ");return this.lists().forEach(e=>{t+="\n"+e.text()}),t},json:function(e){return e=d(e,ft),gt(this,e)},wikitext:function(){return this.data.wiki}};bt.citations=bt.references,Object.keys(bt).forEach(e=>{kt.prototype[e]=bt[e]});const wt={sentences:"sentence",references:"reference",citation:"citations",lists:"list",images:"image",links:"link"};Object.keys(wt).forEach(e=>{kt.prototype[wt[e]]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]}});var yt=kt;var $t=O,xt=function(e){let t=[],i=[];const a=e.split("");let n=0;for(let r=0;r0){let e=0,a=0;for(let t=0;ta&&i.push("]"),t.push(i.join("")),i=[]}}return t};const vt=Ee.fromText,jt=new RegExp("("+k.images.join("|")+"):","i");let _t=`(${k.images.join("|")})`;const zt=new RegExp(_t+":(.+?)[\\||\\]]","iu"),Ot={thumb:!0,thumbnail:!0,border:!0,right:!0,left:!0,center:!0,top:!0,bottom:!0,none:!0,upright:!0,baseline:!0,middle:!0,sub:!0,super:!0};var Et=function(e,t){let i=e.wiki;xt(i).forEach((function(a){if(!0===jt.test(a)){e.images=e.images||[];let n=function(e,t){let i=e.match(zt);if(null===i||!i[2])return null;let a=`${i[1]}:${i[2]||""}`;a=a.trim();let n=a.charAt(0).toUpperCase()+a.substring(1);if(n=n.replace(/ /g,"_"),n){let i={file:a,lang:t._lang,domain:t._domain,wiki:e};e=(e=e.replace(/^\[\[/,"")).replace(/\]\]$/,"");let n=De(e),r=n.list||[];return n.alt&&(i.alt=n.alt),r=r.filter(e=>!1===Ot.hasOwnProperty(e)),r[r.length-1]&&(i.caption=vt(r[r.length-1])),new $t(i)}return null}(a,t);n&&e.images.push(n),i=i.replace(a,"")}})),e.wiki=i};const St={},Ct=function(e,t=""){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},Nt={lines(){return this.data},links(e){let t=[];if(this.lines().forEach(e=>{t=t.concat(e.links())}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},json(e){return e=d(e,St),this.lines().map(t=>t.json(e))},text(){return((e,t)=>e.map(e=>" * "+e.text(t)).join("\n"))(this.data)},wikitext(){return this.wiki||""}};Object.keys(Nt).forEach(e=>{Ct.prototype[e]=Nt[e]});var qt=Ct;const Tt=Ee.fromText,Lt=/^[#*:;|]+/,Pt=/^\*+[^:,|]{4}/,At=/^ ?#[^:,|]{4}/,Dt=/[a-z_0-9\]}]/i,It=function(e){return Lt.test(e)||Pt.test(e)||At.test(e)},Mt=function(e,t){let i=[];for(let a=t;ae&&Dt.test(e)),i=function(e){let t=1;e=e.filter(e=>e);for(let i=0;i0&&(a.push(t),e+=t.length-1)}else n.push(i[e]);e.lists=a.map(e=>new qt(e,t)),e.wiki=n.join("\n")}};var Kt=function(e,t){let i=e._wiki,a=i.split(Bt);a=a.filter(e=>e&&e.trim().length>0),a=a.map(e=>{let i={wiki:e,lists:[],sentences:[],images:[]};return Ft.list(i),Ft.image(i,t),Ut(i),new Rt(i)}),e._wiki=i,e._paragraphs=a};var Wt=function(e){let t=0,i=[],a=[];for(let n=e.indexOf("{");-1!==n&&n0?n++:n=e.indexOf("{",n+1)){let r=e[n];if("{"===r&&(t+=1),t>0){if("}"===r&&(t-=1,0===t)){a.push(r);let e=a.join("");a=[],/\{\{/.test(e)&&/\}\}/.test(e)&&i.push(e);continue}if(1===t&&"{"!==r&&"}"!==r){t=0,a=[];continue}a.push(r)}}return i},Zt=function(e){let t=null;return t=/^\{\{[^\n]+\|/.test(e)?(e.match(/^\{\{(.+?)\|/)||[])[1]:-1!==e.indexOf("\n")?(e.match(/^\{\{(.+)\n/)||[])[1]:(e.match(/^\{\{(.+?)\}\}$/)||[])[1],t&&(t=t.replace(/:.*/,""),t=Oe(t)),t||null};const Ht=/\{\{/,Yt=function(e){return{body:e=e.replace(/#invoke:/,""),name:Zt(e),children:[]}},Gt=function(e){let t=e.body.substr(2);return t=t.replace(/\}\}$/,""),e.children=Wt(t),e.children=e.children.map(Yt),0===e.children.length||e.children.forEach(e=>{let t=e.body.substr(2);return Ht.test(t)?Gt(e):null}),e};var Vt=function(e){let t=Wt(e);return t=t.map(Yt),t=t.map(Gt),t};var Jt=["anchor","defaultsort","use list-defined references","void","pp","pp-move-indef","pp-semi-indef","pp-vandalism","r","#tag","div col","pope list end","shipwreck list end","starbox end","end box","end","s-end"].reduce((e,t)=>(e[t]=!0,e),{}),Xt={"gnf protein box":!0,"automatic taxobox":!0,"chembox ":!0,editnotice:!0,geobox:!0,hybridbox:!0,ichnobox:!0,infraspeciesbox:!0,mycomorphbox:!0,oobox:!0,"paraphyletic group":!0,speciesbox:!0,subspeciesbox:!0,"starbox short":!0,taxobox:!0,nhlteamseason:!0,"asian games bid":!0,"canadian federal election results":!0,"dc thomson comic strip":!0,"daytona 24 races":!0,edencharacter:!0,"moldova national football team results":!0,samurai:!0,protein:!0,"sheet authority":!0,"order-of-approx":!0,"bacterial labs":!0,"medical resources":!0,ordination:!0,"hockey team coach":!0,"hockey team gm":!0,"pro hockey team":!0,"hockey team player":!0,"hockey team start":!0,mlbbioret:!0},Qt=Xt;const ei=new RegExp("^(subst.)?("+k.infoboxes.join("|")+")[: \n]","i"),ti=/^infobox /i,ii=/ infobox$/i,ai=/^year in [A-Z]/i;var ni={isInfobox:function(e){return!0===Qt.hasOwnProperty(e)||(!!ei.test(e)||(!(!ti.test(e)&&!ii.test(e))||!!ai.test(e)))},format:function(e={}){let t=e.template.match(ei),i=e.template;t&&t[0]&&(i=i.replace(t[0],"")),i=i.trim();let a={template:"infobox",type:i,data:e};return delete a.data.template,delete a.data.list,a}};let ri={imdb:"imdb name","imdb episodess":"imdb episode",localday:"currentday",localdayname:"currentdayname",localyear:"currentyear","birth date based on age at death":"birth based on age as of date","bare anchored list":"anchored list",cvt:"convert",cricon:"flagicon",sfrac:"frac",sqrt:"radic","unreferenced section":"unreferenced",redir:"redirect",sisterlinks:"sister project links","main article":"main"},oi={date:["byline","dateline"],citation:["cite","source","source-pr","source-science"],flagcountry:["cr","cr-rt"],trunc:["str left","str crop"],percentage:["pct","percentage"],rnd:["rndfrac","rndnear"],abbr:["tooltip","abbrv","define"],sfn:["sfnref","harvid","harvnb"],"birth date and age":["death date and age","bda"],currentmonth:["localmonth","currentmonthname","currentmonthabbrev"],currency:["monnaie","unité","nombre","nb","iso4217"],coord:["coor","coor title dms","coor title dec","coor dms","coor dm","coor dec"],"columns-list":["cmn","col-list","columnslist","collist"],nihongo:["nihongo2","nihongo3","nihongo-s","nihongo foot"],plainlist:["flatlist","plain list"],"winning percentage":["winpct","winperc"],"collapsible list":["nblist","nonbulleted list","ubl","ublist","ubt","unbullet","unbulleted list","unbulleted","unbulletedlist","vunblist"],"election box begin":["election box begin no change","election box begin no party","election box begin no party no change","election box inline begin","election box inline begin no change"],"election box candidate":["election box candidate for alliance","election box candidate minor party","election box candidate no party link no change","election box candidate with party link","election box candidate with party link coalition 1918","election box candidate with party link no change","election box inline candidate","election box inline candidate no change","election box inline candidate with party link","election box inline candidate with party link no change","election box inline incumbent"],"4teambracket":["2teambracket","4team2elimbracket","8teambracket","16teambracket","32teambracket","4roundbracket-byes","cwsbracket","nhlbracket","nhlbracket-reseed","4teambracket-nhl","4teambracket-ncaa","4teambracket-mma","4teambracket-mlb","16teambracket-two-reseeds","8teambracket-nhl","8teambracket-mlb","8teambracket-ncaa","8teambracket-afc","8teambracket-afl","8teambracket-tennis3","8teambracket-tennis5","16teambracket-nhl","16teambracket-nhl divisional","16teambracket-nhl-reseed","16teambracket-nba","16teambracket-swtc","16teambracket-afc","16teambracket-tennis3","16teambracket-tennis5"],start:["end","birth","death","start date","end date","birth date","death date","start date and age","end date and age","dob"],"start-date":["end-date","birth-date","death-date","birth-date and age","birth-date and given age","death-date and age","death-date and given age"],tl:["lts","t","tfd links","tiw","tltt","tetl","tsetl","ti","tic","tiw","tlt","ttl","twlh","tl2","tlu","demo","hatnote","xpd","para","elc","xtag","mli","mlix","#invoke","url"]};Object.keys(T).forEach(e=>{ri["ipa-"+e]="ipa",ri["ipac-"+e]="ipac"}),Object.keys(oi).forEach(e=>{oi[e].forEach(t=>{ri[t]=e})});var si=ri,li={"·":"·",dot:"·",middot:"·","•":" • ",",":",","1/2":"1⁄2","1/3":"1⁄3","2/3":"2⁄3","1/4":"1⁄4","3/4":"3⁄4","–":"–",ndash:"–","en dash":"–","spaced ndash":" – ","—":"—",mdash:"—","em dash":"—","number sign":"#",ibeam:"I","&":"&",";":";",ampersand:"&",snds:" – ",snd:" – ","^":" ","!":"|","\\":" /","`":"`","=":"=",bracket:"[","[":"[","*":"*",asterisk:"*","long dash":"———",clear:"\n\n","h.":"ḥ",profit:"▲",loss:"▼",gain:"▲"};let ci={p1:0,p2:1,p3:2,resize:1,lang:1,"rtl-lang":1,l:2,h:1,sort:1};["defn","lino","finedetail","nobold","noitalic","nocaps","vanchor","rnd","date","taste","monthname","baseball secondary style","lang-de","nowrap","nobr","big","cquote","pull quote","small","smaller","midsize","larger","big","kbd","bigger","large","mono","strongbad","stronggood","huge","xt","xt2","!xt","xtn","xtd","dc","dcr","mxt","!mxt","mxtn","mxtd","bxt","!bxt","bxtn","bxtd","delink","pre","var","mvar","pre2","code"].forEach(e=>{ci[e]=0}),Object.keys(T).forEach(e=>{ci["lang-"+e]=0});var ui=ci;var pi={titlecase:e=>e.charAt(0).toUpperCase()+e.substring(1),sisterProjects:{wikt:"wiktionary",commons:"commons",c:"commons",commonscat:"commonscat",n:"wikinews",q:"wikiquote",s:"wikisource",a:"wikiauthor",b:"wikibooks",voy:"wikivoyage",v:"wikiversity",d:"wikidata",species:"wikispecies",m:"meta",mw:"mediawiki"},getLang:function(e){let t=e.match(/ipac?-(.+)/);return null!==t?!0===T.hasOwnProperty(t[1])?T[t[1]].english_title:t[1]:null},percentage:function(e){if(!e.numerator&&!e.denominator)return null;let t=Number(e.numerator)/Number(e.denominator);t*=100;let i=Number(e.decimals);return isNaN(i)&&(i=1),t=t.toFixed(i),Number(t)},toNumber:function(e=""){if("number"==typeof e)return e;e=(e=e.replace(/,/g,"")).replace(/−/g,"-");let t=Number(e);return isNaN(t)?e:t}},mi={ra:e=>{let t=De(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},deg2hms:e=>(De(e,["degrees"]).degrees||"")+"°",hms2deg:e=>{let t=De(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},decdeg:e=>{let t=De(e,["deg","min","sec","hem","rnd"]);return(t.deg||t.degrees)+"°"},sortname:e=>{let t=De(e,["first","last","target","sort"]),i=`${t.first||""} ${t.last||""}`;return i=i.trim(),t.nolink?t.target||i:(t.dab&&(i+=` (${t.dab})`,t.target&&(t.target+=` (${t.dab})`)),t.target?`[[${t.target}|${i}]]`:`[[${i}]]`)},"first word":e=>{let t=De(e,["text"]),i=t.text;return t.sep?i.split(t.sep)[0]:i.split(" ")[0]},trunc:e=>{let t=De(e,["str","len"]);return t.str.substr(0,t.len)},"str mid":e=>{let t=De(e,["str","start","end"]),i=parseInt(t.start,10)-1,a=parseInt(t.end,10);return t.str.substr(i,a)},reign:e=>{let t=De(e,["start","end"]);return`(r. ${t.start} – ${t.end})`},circa:e=>"c. "+De(e,["year"]).year,"decade link":e=>{let t=De(e,["year"]);return`${t.year}|${t.year}s`},decade:e=>{let t=De(e,["year"]),i=Number(t.year);return i=10*parseInt(i/10,10),i+"s"},century:e=>{let t=De(e,["year"]),i=Number(t.year);return i=parseInt(i/100,10)+1,""+i},radic:e=>{let t=De(e,["after","before"]);return`${t.before||""}√${t.after||""}`},"medical cases chart/row":e=>e,oldstyledate:e=>{let t=De(e,["date","year"]);return t.year?t.date+" "+t.year:t.date},braces:e=>{let t=De(e,["text"]),i="";return t.list&&(i="|"+t.list.join("|")),"{{"+(t.text||"")+i+"}}"},hlist:e=>{let t=De(e);return t.list=t.list||[],t.list.join(" · ")},pagelist:e=>(De(e).list||[]).join(", "),catlist:e=>(De(e).list||[]).join(", "),"br separated entries":e=>(De(e).list||[]).join("\n\n"),"comma separated entries":e=>(De(e).list||[]).join(", "),"anchored list":e=>{let t=De(e).list||[];return t=t.map((e,t)=>`${t+1}. ${e}`),t.join("\n\n")},"bulleted list":e=>{let t=De(e).list||[];return t=t.filter(e=>e),t=t.map(e=>"• "+e),t.join("\n\n")},plainlist:e=>{let t=(e=ze(e)).split("|").slice(1);return t=t.join("|").split(/\n ?\* ?/),t=t.filter(e=>e),t.join("\n\n")},term:e=>De(e,["term"]).term+":",linum:e=>{let t=De(e,["num","text"]);return`${t.num}. ${t.text}`},"block indent":e=>{let t=De(e);return t[1]?"\n"+t[1]+"\n":""},lbs:e=>{let t=De(e,["text"]);return`[[${t.text} Lifeboat Station|${t.text}]]`},lbc:e=>{let t=De(e,["text"]);return`[[${t.text}-class lifeboat|${t.text}-class]]`},lbb:e=>{let t=De(e,["text"]);return`[[${t.text}-class lifeboat|${t.text}]]`},"#dateformat":e=>(e=e.replace(/:/,"|"),De(e,["date","format"]).date),lc:e=>(e=e.replace(/:/,"|"),(De(e,["text"]).text||"").toLowerCase()),uc:e=>(e=e.replace(/:/,"|"),(De(e,["text"]).text||"").toUpperCase()),lcfirst:e=>{e=e.replace(/:/,"|");let t=De(e,["text"]).text;return t?t[0].toLowerCase()+t.substr(1):""},ucfirst:e=>{e=e.replace(/:/,"|");let t=De(e,["text"]).text;return t?t[0].toUpperCase()+t.substr(1):""},padleft:e=>{e=e.replace(/:/,"|");let t=De(e,["text","num"]);return(t.text||"").padStart(t.num,t.str||"0")},padright:e=>{e=e.replace(/:/,"|");let t=De(e,["text","num"]);return(t.text||"").padEnd(t.num,t.str||"0")},abbrlink:e=>{let t=De(e,["abbr","page"]);return t.page?`[[${t.page}|${t.abbr}]]`:`[[${t.abbr}]]`},own:e=>{let t=De(e,["author"]),i="Own work";return t.author&&(i+=" by "+t.author),i},formatnum:e=>{e=e.replace(/:/,"|");let t=De(e,["number"]).number||"";return t=t.replace(/,/g,""),Number(t).toLocaleString()||""},frac:e=>{let t=De(e,["a","b","c"]);return t.c?`${t.a} ${t.b}/${t.c}`:t.b?`${t.a}/${t.b}`:"1/"+t.b},convert:e=>{let t=De(e,["num","two","three","four"]);return"-"===t.two||"to"===t.two||"and"===t.two?t.four?`${t.num} ${t.two} ${t.three} ${t.four}`:`${t.num} ${t.two} ${t.three}`:`${t.num} ${t.two}`},tl:e=>{let t=De(e,["first","second"]);return t.second||t.first},won:e=>{let t=De(e,["text"]);return t.place||t.text||pi.titlecase(t.template)},tag:e=>{let t=De(e,["tag","open"]);const i={span:!0,div:!0,p:!0};return t.open&&"pair"!==t.open?"":i[t.tag]?t.content||"":`<${t.tag} ${t.attribs||""}>${t.content||""}`},plural:e=>{e=e.replace(/plural:/,"plural|");let t=De(e,["num","word"]),i=Number(t.num),a=t.word;return 1!==i&&(/.y$/.test(a)?a=a.replace(/y$/,"ies"):a+="s"),i+" "+a},dec:e=>{let t=De(e,["degrees","minutes","seconds"]),i=(t.degrees||0)+"°";return t.minutes&&(i+=t.minutes+"′"),t.seconds&&(i+=t.seconds+"″"),i},val:e=>{let t=De(e,["number","uncertainty"]),i=t.number;i&&Number(i)&&(i=Number(i).toLocaleString());let a=i||"";return t.p&&(a=t.p+a),t.s&&(a=t.s+a),(t.u||t.ul||t.upl)&&(a=a+" "+(t.u||t.ul||t.upl)),a},percentage:e=>{let t=De(e,["numerator","denominator","decimals"]),i=pi.percentage(t);return null===i?"":i+"%"},"percent-done":e=>{let t=De(e,["done","total","digits"]),i=pi.percentage({numerator:t.done,denominator:t.total,decimals:t.digits});return null===i?"":`${t.done} (${i}%) done`}},di=[["🇦🇩","and","andorra"],["🇦🇪","are","united arab emirates"],["🇦🇫","afg","afghanistan"],["🇦🇬","atg","antigua and barbuda"],["🇦🇮","aia","anguilla"],["🇦🇱","alb","albania"],["🇦🇲","arm","armenia"],["🇦🇴","ago","angola"],["🇦🇶","ata","antarctica"],["🇦🇷","arg","argentina"],["🇦🇸","asm","american samoa"],["🇦🇹","aut","austria"],["🇦🇺","aus","australia"],["🇦🇼","abw","aruba"],["🇦🇽","ala","åland islands"],["🇦🇿","aze","azerbaijan"],["🇧🇦","bih","bosnia and herzegovina"],["🇧🇧","brb","barbados"],["🇧🇩","bgd","bangladesh"],["🇧🇪","bel","belgium"],["🇧🇫","bfa","burkina faso"],["🇧🇬","bgr","bulgaria"],["🇧🇬","bul","bulgaria"],["🇧🇭","bhr","bahrain"],["🇧🇮","bdi","burundi"],["🇧🇯","ben","benin"],["🇧🇱","blm","saint barthélemy"],["🇧🇲","bmu","bermuda"],["🇧🇳","brn","brunei darussalam"],["🇧🇴","bol","bolivia"],["🇧🇶","bes","bonaire, sint eustatius and saba"],["🇧🇷","bra","brazil"],["🇧🇸","bhs","bahamas"],["🇧🇹","btn","bhutan"],["🇧🇻","bvt","bouvet island"],["🇧🇼","bwa","botswana"],["🇧🇾","blr","belarus"],["🇧🇿","blz","belize"],["🇨🇦","can","canada"],["🇨🇨","cck","cocos (keeling) islands"],["🇨🇩","cod","congo"],["🇨🇫","caf","central african republic"],["🇨🇬","cog","congo"],["🇨🇭","che","switzerland"],["🇨🇮","civ","côte d'ivoire"],["🇨🇰","cok","cook islands"],["🇨🇱","chl","chile"],["🇨🇲","cmr","cameroon"],["🇨🇳","chn","china"],["🇨🇴","col","colombia"],["🇨🇷","cri","costa rica"],["🇨🇺","cub","cuba"],["🇨🇻","cpv","cape verde"],["🇨🇼","cuw","curaçao"],["🇨🇽","cxr","christmas island"],["🇨🇾","cyp","cyprus"],["🇨🇿","cze","czech republic"],["🇩🇪","deu","germany"],["🇩🇪","ger","germany"],["🇩🇯","dji","djibouti"],["🇩🇰","dnk","denmark"],["🇩🇲","dma","dominica"],["🇩🇴","dom","dominican republic"],["🇩🇿","dza","algeria"],["🇪🇨","ecu","ecuador"],["🇪🇪","est","estonia"],["🇪🇬","egy","egypt"],["🇪🇭","esh","western sahara"],["🇪🇷","eri","eritrea"],["🇪🇸","esp","spain"],["🇪🇹","eth","ethiopia"],["🇫🇮","fin","finland"],["🇫🇯","fji","fiji"],["🇫🇰","flk","falkland islands (malvinas)"],["🇫🇲","fsm","micronesia"],["🇫🇴","fro","faroe islands"],["🇫🇷","fra","france"],["🇬🇦","gab","gabon"],["🇬🇧","gbr","united kingdom"],["🇬🇩","grd","grenada"],["🇬🇫","guf","french guiana"],["🇬🇬","ggy","guernsey"],["🇬🇭","gha","ghana"],["🇬🇮","gib","gibraltar"],["🇬🇱","grl","greenland"],["🇬🇲","gmb","gambia"],["🇬🇳","gin","guinea"],["🇬🇵","glp","guadeloupe"],["🇬🇶","gnq","equatorial guinea"],["🇬🇷","grc","greece"],["🇬🇸","sgs","south georgia"],["🇬🇹","gtm","guatemala"],["🇬🇺","gum","guam"],["🇬🇼","gnb","guinea-bissau"],["🇬🇾","guy","guyana"],["🇭🇰","hkg","hong kong"],["🇭🇲","hmd","heard island and mcdonald islands"],["🇭🇳","hnd","honduras"],["🇭🇷","hrv","croatia"],["🇭🇹","hti","haiti"],["🇭🇺","hun","hungary"],["🇮🇩","idn","indonesia"],["🇮🇪","irl","ireland"],["🇮🇱","isr","israel"],["🇮🇲","imn","isle of man"],["🇮🇳","ind","india"],["🇮🇴","iot","british indian ocean territory"],["🇮🇶","irq","iraq"],["🇮🇷","irn","iran"],["🇮🇸","isl","iceland"],["🇮🇹","ita","italy"],["🇯🇪","jey","jersey"],["🇯🇲","jam","jamaica"],["🇯🇴","jor","jordan"],["🇯🇵","jpn","japan"],["🇰🇪","ken","kenya"],["🇰🇬","kgz","kyrgyzstan"],["🇰🇭","khm","cambodia"],["🇰🇮","kir","kiribati"],["🇰🇲","com","comoros"],["🇰🇳","kna","saint kitts and nevis"],["🇰🇵","prk","north korea"],["🇰🇷","kor","south korea"],["🇰🇼","kwt","kuwait"],["🇰🇾","cym","cayman islands"],["🇰🇿","kaz","kazakhstan"],["🇱🇦","lao","lao people's democratic republic"],["🇱🇧","lbn","lebanon"],["🇱🇨","lca","saint lucia"],["🇱🇮","lie","liechtenstein"],["🇱🇰","lka","sri lanka"],["🇱🇷","lbr","liberia"],["🇱🇸","lso","lesotho"],["🇱🇹","ltu","lithuania"],["🇱🇺","lux","luxembourg"],["🇱🇻","lva","latvia"],["🇱🇾","lby","libya"],["🇲🇦","mar","morocco"],["🇲🇨","mco","monaco"],["🇲🇩","mda","moldova"],["🇲🇪","mne","montenegro"],["🇲🇫","maf","saint martin (french part)"],["🇲🇬","mdg","madagascar"],["🇲🇭","mhl","marshall islands"],["🇲🇰","mkd","macedonia"],["🇲🇱","mli","mali"],["🇲🇲","mmr","myanmar"],["🇲🇳","mng","mongolia"],["🇲🇴","mac","macao"],["🇲🇵","mnp","northern mariana islands"],["🇲🇶","mtq","martinique"],["🇲🇷","mrt","mauritania"],["🇲🇸","msr","montserrat"],["🇲🇹","mlt","malta"],["🇲🇺","mus","mauritius"],["🇲🇻","mdv","maldives"],["🇲🇼","mwi","malawi"],["🇲🇽","mex","mexico"],["🇲🇾","mys","malaysia"],["🇲🇿","moz","mozambique"],["🇳🇦","nam","namibia"],["🇳🇨","ncl","new caledonia"],["🇳🇪","ner","niger"],["🇳🇫","nfk","norfolk island"],["🇳🇬","nga","nigeria"],["🇳🇮","nic","nicaragua"],["🇳🇱","nld","netherlands"],["🇳🇴","nor","norway"],["🇳🇵","npl","nepal"],["🇳🇷","nru","nauru"],["🇳🇺","niu","niue"],["🇳🇿","nzl","new zealand"],["🇴🇲","omn","oman"],["🇵🇦","pan","panama"],["🇵🇪","per","peru"],["🇵🇫","pyf","french polynesia"],["🇵🇬","png","papua new guinea"],["🇵🇭","phl","philippines"],["🇵🇰","pak","pakistan"],["🇵🇱","pol","poland"],["🇵🇲","spm","saint pierre and miquelon"],["🇵🇳","pcn","pitcairn"],["🇵🇷","pri","puerto rico"],["🇵🇸","pse","palestinian territory"],["🇵🇹","prt","portugal"],["🇵🇼","plw","palau"],["🇵🇾","pry","paraguay"],["🇶🇦","qat","qatar"],["🇷🇪","reu","réunion"],["🇷🇴","rou","romania"],["🇷🇸","srb","serbia"],["🇷🇺","rus","russia"],["🇷🇼","rwa","rwanda"],["🇸🇦","sau","saudi arabia"],["🇸🇧","slb","solomon islands"],["🇸🇨","syc","seychelles"],["🇸🇩","sdn","sudan"],["🇸🇪","swe","sweden"],["🇸🇬","sgp","singapore"],["🇸🇭","shn","saint helena, ascension and tristan da cunha"],["🇸🇮","svn","slovenia"],["🇸🇯","sjm","svalbard and jan mayen"],["🇸🇰","svk","slovakia"],["🇸🇱","sle","sierra leone"],["🇸🇲","smr","san marino"],["🇸🇳","sen","senegal"],["🇸🇴","som","somalia"],["🇸🇷","sur","suriname"],["🇸🇸","ssd","south sudan"],["🇸🇹","stp","sao tome and principe"],["🇸🇻","slv","el salvador"],["🇸🇽","sxm","sint maarten (dutch part)"],["🇸🇾","syr","syrian arab republic"],["🇸🇿","swz","swaziland"],["🇹🇨","tca","turks and caicos islands"],["🇹🇩","tcd","chad"],["🇹🇫","atf","french southern territories"],["🇹🇬","tgo","togo"],["🇹🇭","tha","thailand"],["🇹🇯","tjk","tajikistan"],["🇹🇰","tkl","tokelau"],["🇹🇱","tls","timor-leste"],["🇹🇲","tkm","turkmenistan"],["🇹🇳","tun","tunisia"],["🇹🇴","ton","tonga"],["🇹🇷","tur","turkey"],["🇹🇹","tto","trinidad and tobago"],["🇹🇻","tuv","tuvalu"],["🇹🇼","twn","taiwan"],["🇹🇿","tza","tanzania"],["🇺🇦","ukr","ukraine"],["🇺🇬","uga","uganda"],["🇺🇲","umi","united states minor outlying islands"],["🇺🇸","us","united states"],["🇺🇸","usa","united states"],["🇺🇾","ury","uruguay"],["🇺🇿","uzb","uzbekistan"],["🇻🇦","vat","vatican city"],["🇻🇨","vct","saint vincent and the grenadines"],["🇻🇪","ven","venezuela"],["🇻🇬","vgb","virgin islands, british"],["🇻🇮","vir","virgin islands, u.s."],["🇻🇳","vnm","viet nam"],["🇻🇺","vut","vanuatu"],["🇼🇫","wlf","wallis and futuna"],["🇼🇸","wsm","samoa"],["🇾🇪","yem","yemen"],["🇾🇹","myt","mayotte"],["🇿🇦","zaf","south africa"],["🇿🇲","zmb","zambia"],["🇿🇼 ","zwe","zimbabwe"],["🇺🇳","un","united nations"],["🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿","eng","england"],["🏴󠁧󠁢󠁳󠁣󠁴󠁿","sct","scotland"],["🏴󠁧󠁢󠁷󠁬󠁳󠁿","wal","wales"],["🇪🇺","eu","european union"]];let hi={flag:e=>{let t=De(e,["flag","variant"]),i=t.flag||"";t.flag=(t.flag||"").toLowerCase();let a=di.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${a[0]||""} [[${a[2]}|${i}]]`},flagcountry:e=>{let t=De(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=di.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${i[0]||""} [[${i[2]}]]`},flagcu:e=>{let t=De(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=di.find(e=>t.flag===e[1]||t.flag===e[2])||[];return`${i[0]||""} ${i[2]}`},flagicon:e=>{let t=De(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=di.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`[[${i[2]}|${i[0]}]]`:""},flagdeco:e=>{let t=De(e,["flag","variant"]);return t.flag=(t.flag||"").toLowerCase(),(di.find(e=>t.flag===e[1]||t.flag===e[2])||[])[0]||""},fb:e=>{let t=De(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=di.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`${i[0]} [[${i[2]} national football team|${i[2]}]]`:""},fbicon:e=>{let t=De(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=di.find(e=>t.flag===e[1]||t.flag===e[2]);return i?` [[${i[2]} national football team|${i[0]}]]`:""},flagathlete:e=>{let t=De(e,["name","flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=di.find(e=>t.flag===e[1]||t.flag===e[2]);return i?`${i[0]} [[${t.name||""}]] (${i[1].toUpperCase()})`:`[[${t.name||""}]]`}};di.forEach(e=>{hi[e[1]]=()=>e[0]});var gi=hi;const fi=pi.titlecase;let ki={};["rh","rh2","yes","no","maybe","eliminated","lost","safe","active","site active","coming soon","good","won","nom","sho","longlisted","tba","success","operational","failure","partial","regional","maybecheck","partial success","partial failure","okay","yes-no","some","nonpartisan","pending","unofficial","unofficial2","usually","rarely","sometimes","any","varies","black","non-album single","unreleased","unknown","perhaps","depends","included","dropped","terminated","beta","table-experimental","free","proprietary","nonfree","needs","nightly","release-candidate","planned","scheduled","incorrect","no result","cmain","calso starring","crecurring","cguest","not yet","optional"].forEach(e=>{ki[e]=e=>{let t=De(e,["text"]);return t.text||fi(t.template)}});[["active fire","Active"],["site active","Active"],["site inactive","Inactive"],["yes2",""],["no2",""],["ya","✅"],["na","❌"],["nom","Nominated"],["sho","Shortlisted"],["tba","TBA"],["maybecheck","✔️"],["okay","Neutral"],["n/a","N/A"],["sdash","—"],["dunno","?"],["draw",""],["cnone",""],["nocontest",""]].forEach(e=>{ki[e[0]]=t=>De(t,["text"]).text||e[1]});var bi=li,wi=ui,yi=mi,$i=gi,xi=ki,vi=Object.assign({},bi,wi,yi,$i,xi);let ji={};["goodreads author","twitter","facebook","instagram","tumblr","pinterest","espn nfl","espn nhl","espn fc","hockeydb","fifa player","worldcat","worldcat id","nfl player","ted speaker","playmate"].forEach(e=>{ji[e]=["id","name"]});var _i=ji;let zi={};["imdb title","imdb name","imdb episode","imdb event","afi film","allmovie title","allgame","tcmdb title","discogs artist","discogs label","discogs release","discogs master","librivox author","musicbrainz artist","musicbrainz label","musicbrainz recording","musicbrainz release","musicbrainz work","youtube","goodreads book","dmoz"].forEach(e=>{zi[e]=["id","title","description","section"]});var Oi={ipa:(e,t)=>{let i=De(e,["transcription","lang","audio"]);return i.lang=pi.getLang(i.template),i.template="ipa",t.push(i),""},ipac:(e,t)=>{let i=De(e);return i.transcription=(i.list||[]).join(","),delete i.list,i.lang=pi.getLang(i.template),i.template="ipac",t.push(i),""},quote:(e,t)=>{let i=De(e,["text","author"]);if(t.push(i),i.text){let e=`"${i.text}"`;return i.author&&(e+="\n\n",e+=" - "+i.author),e+"\n"}return""},"cite gnis":(e,t)=>{let i=De(e,["id","name","type"]);return i.type="gnis",i.template="citation",t.push(i),""},"spoken wikipedia":(e,t)=>{let i=De(e,["file","date"]);return i.template="audio",t.push(i),""},yel:(e,t)=>{let i=De(e,["min"]);return t.push(i),i.min?`yellow: ${i.min||""}'`:""},subon:(e,t)=>{let i=De(e,["min"]);return t.push(i),i.min?`sub on: ${i.min||""}'`:""},suboff:(e,t)=>{let i=De(e,["min"]);return t.push(i),i.min?`sub off: ${i.min||""}'`:""},sfn:(e,t,i,a)=>{let n=De(e,["author","year","location"]);return a&&(n.name=n.template,n.teplate=a),t.push(n),""},redirect:(e,t)=>{let i=De(e,["redirect"]),a=i.list||[],n=[];for(let e=0;e{let i=De(e),a={};Object.keys(pi.sisterProjects).forEach(e=>{!0===i.hasOwnProperty(e)&&(a[pi.sisterProjects[e]]=i[e])});let n={template:"sister project links",links:a};return t.push(n),""},"subject bar":(e,t)=>{let i=De(e);Object.keys(i).forEach(e=>{pi.sisterProjects.hasOwnProperty(e)&&(i[pi.sisterProjects[e]]=i[e],delete i[e])});let a={template:"subject bar",links:i};return t.push(a),""},gallery:(e,t)=>{let i=De(e),a=(i.list||[]).filter(e=>/^ *File ?:/.test(e));return a=a.map(e=>new $t({file:e}).json()),i={template:"gallery",images:a},t.push(i),""},sky:(e,t)=>{let i=De(e,["asc_hours","asc_minutes","asc_seconds","dec_sign","dec_degrees","dec_minutes","dec_seconds","distance"]),a={template:"sky",ascension:{hours:i.asc_hours,minutes:i.asc_minutes,seconds:i.asc_seconds},declination:{sign:i.dec_sign,degrees:i.dec_degrees,minutes:i.dec_minutes,seconds:i.dec_seconds},distance:i.distance};return t.push(a),""},"medical cases chart":(e,t)=>{let i=["date","deathsExpr","recoveriesExpr","casesExpr","4thExpr","5thExpr","col1","col1Change","col2","col2Change"],a=De(e);a.data=a.data||"";let n=a.data.split("\n").map(e=>{let t=e.split(";"),a={options:new Map},n=0;for(let e=0;e{let i=De(e);i.x&&(i.x=i.x.split(",").map(e=>e.trim())),i.y&&(i.y=i.y.split(",").map(e=>e.trim()));let a=1;for(;i["y"+a];)i["y"+a]=i["y"+a].split(",").map(e=>e.trim()),a+=1;return t.push(i),""},"historical populations":(e,t)=>{let i=De(e);i.list=i.list||[];let a=[];for(let e=0;e{const i=/^jan /i,a=/^year /i;let n=De(e);const r=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"];let o={},s=Object.keys(n).filter(e=>i.test(e));s=s.map(e=>e.replace(i,"")),s.forEach(e=>{o[e]=[],r.forEach(t=>{let i=`${t} ${e}`;if(n.hasOwnProperty(i)){let t=pi.toNumber(n[i]);delete n[i],o[e].push(t)}})}),n.byMonth=o;let l={};return Object.keys(n).forEach(e=>{if(a.test(e)){let t=e.replace(a,"");l[t]=n[e],delete n[e]}}),n.byYear=l,t.push(n),""},"weather box/concise c":(e,t)=>{let i=De(e);return i.list=i.list.map(e=>pi.toNumber(e)),i.byMonth={"high c":i.list.slice(0,12),"low c":i.list.slice(12,24),"rain mm":i.list.slice(24,36)},delete i.list,i.template="weather box",t.push(i),""},"weather box/concise f":(e,t)=>{let i=De(e);return i.list=i.list.map(e=>pi.toNumber(e)),i.byMonth={"high f":i.list.slice(0,12),"low f":i.list.slice(12,24),"rain inch":i.list.slice(24,36)},delete i.list,i.template="weather box",t.push(i),""},"climate chart":(e,t)=>{let i=De(e).list||[],a=i[0],n=i[38];i=i.slice(1),i=i.map(e=>(e&&"−"===e[0]&&(e=e.replace(/−/,"-")),e));let r=[];for(let e=0;e<36;e+=3)r.push({low:pi.toNumber(i[e]),high:pi.toNumber(i[e+1]),precip:pi.toNumber(i[e+2])});let o={template:"climate chart",data:{title:a,source:n,months:r}};return t.push(o),""}},Ei=_i,Si=zi,Ci=Oi;let Ni={"find a grave":["id","name","work","last","first","date","accessdate"],congbio:["id","name","date"],"hollywood walk of fame":["name"],"wide image":["file","width","caption"],audio:["file","text","type"],rp:["page"],"short description":["description"],"coord missing":["region"],unreferenced:["date"],"taxon info":["taxon","item"],"portuguese name":["first","second","suffix"],geo:["lat","lon","zoom"]};Ni=Object.assign(Ni,Ei,Si,Ci);var qi=Ni,Ti={mlbplayer:{props:["number","name","il"],out:"name"},syntaxhighlight:{props:[],out:"code"},samp:{props:["1"],out:"1"},sub:{props:["text"],out:"text"},sup:{props:["text"],out:"text"},chem2:{props:["equation"],out:"equation"},ill:{props:["text","lan1","text1","lan2","text2"],out:"text"},abbr:{props:["abbr","meaning","ipa"],out:"abbr"}};var Li={math:(e,t)=>{let i=De(e,["formula"]);return t.push(i),"\n\n"+(i.formula||"")+"\n\n"},isbn:(e,t)=>{let i=De(e,["id","id2","id3"]);return t.push(i),"ISBN: "+(i.id||"")},"based on":(e,t)=>{let i=De(e,["title","author"]);return t.push(i),`${i.title} by ${i.author||""}`},"bbl to t":(e,t)=>{let i=De(e,["barrels"]);return t.push(i),"0"===i.barrels?i.barrels+" barrel":i.barrels+" barrels"},mpc:(e,t)=>{let i=De(e,["number","text"]);return t.push(i),`[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ${i.text||i.number}]`},pengoal:(e,t)=>(t.push({template:"pengoal"}),"✅"),penmiss:(e,t)=>(t.push({template:"penmiss"}),"❌"),"ordered list":(e,t)=>{let i=De(e);return t.push(i),i.list=i.list||[],i.list.map((e,t)=>`${t+1}. ${e}`).join("\n\n")},"title year":(e,t,i,a,n)=>{let r=De(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b[0-9]{4}\b/);if(e)return e[0]}return r.nomatch||""},"title century":(e,t,i,a,n)=>{let r=De(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b([0-9]+)(st|nd|rd|th)\b/);if(e)return e[1]||""}return r.nomatch||""},"title decade":(e,t,i,a,n)=>{let r=De(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b([0-9]+)s\b/);if(e)return e[1]||""}return r.nomatch||""},nihongo:(e,t)=>{let i=De(e,["english","kanji","romaji","extra"]);t.push(i);let a=i.english||i.romaji||"";return i.kanji&&(a+=` (${i.kanji})`),a},marriage:(e,t)=>{let i=De(e,["spouse","from","to","end"]);t.push(i);let a=i.spouse||"";return i.from&&(i.to?a+=` (m. ${i.from}-${i.to})`:a+=` (m. ${i.from})`),a},"sent off":(e,t)=>{let i=De(e,["cards"]),a={template:"sent off",cards:i.cards,minutes:i.list||[]};return t.push(a),"sent off: "+a.minutes.map(e=>e+"'").join(", ")},transl:(e,t)=>{let i=De(e,["lang","text","text2"]);return i.text2&&(i.iso=i.text,i.text=i.text2,delete i.text2),t.push(i),i.text||""},"collapsible list":(e,t)=>{let i=De(e);t.push(i);let a="";if(i.title&&(a+=`'''${i.title}'''\n\n`),!i.list){i.list=[];for(let e=1;e<10;e+=1)i[e]&&(i.list.push(i[e]),delete i[e])}return i.list=i.list.filter(e=>e),a+=i.list.join("\n\n"),a},"columns-list":(e,t)=>{let i=((De(e).list||[])[0]||"").split(/\n/).filter(e=>e);return i=i.map(e=>e.replace(/\*/,"")),t.push({template:"columns-list",list:i}),i=i.map(e=>"• "+e),i.join("\n\n")},height:(e,t)=>{let i=De(e);t.push(i);let a=[];return["m","cm","ft","in"].forEach(e=>{!0===i.hasOwnProperty(e)&&a.push(i[e]+e)}),a.join(" ")},sic:(e,t)=>{let i=De(e,["one","two","three"]),a=(i.one||"")+(i.two||"");return"?"===i.one&&(a=(i.two||"")+(i.three||"")),t.push({template:"sic",word:a}),"y"===i.nolink?a:a+" [sic]"},inrconvert:(e,t)=>{let i=De(e,["rupee_value","currency_formatting"]);t.push(i);const a={k:1e3,m:1e6,b:1e9,t:1e12,l:1e5,c:1e7,lc:1e12};if(i.currency_formatting){let e=a[i.currency_formatting]||1;i.rupee_value=i.rupee_value*e}return"inr "+(i.rupee_value||"")},frac:(e,t)=>{let i=De(e,["a","b","c"]),a={template:"sfrac"};return i.c?(a.integer=i.a,a.numerator=i.b,a.denominator=i.c):i.b?(a.numerator=i.a,a.denominator=i.b):(a.numerator=1,a.denominator=i.a),t.push(a),a.integer?`${a.integer} ${a.numerator}⁄${a.denominator}`:`${a.numerator}⁄${a.denominator}`},"winning percentage":(e,t)=>{let i=De(e,["wins","losses","ties"]);t.push(i);let a=Number(i.wins),n=Number(i.losses),r=Number(i.ties)||0,o=a+n+r;"y"===i.ignore_ties&&(r=0),r&&(a+=r/2);let s=pi.percentage({numerator:a,denominator:o,decimals:1});return null===s?"":"."+10*s},winlosspct:(e,t)=>{let i=De(e,["wins","losses"]);t.push(i);let a=Number(i.wins),n=Number(i.losses),r=pi.percentage({numerator:a,denominator:a+n,decimals:1});return null===r?"":(r="."+10*r,`${a||0} || ${n||0} || ${r||"-"}`)},"video game release":(e,t)=>{let i=["region","date","region2","date2","region3","date3","region4","date4"],a=De(e,i),n={template:"video game release",releases:[]};for(let e=0;e`${e.region}: ${e.date||""}`).join("\n\n")+"\n"},uss:(e,t)=>{let i=De(e,["name","id"]);return t.push(i),i.id?`[[USS ${i.name} (${i.id})|USS ''${i.name}'' (${i.id})]]`:`[[USS ${i.name}|USS ''${i.name}'']]`}};const Pi={"£":"GB£","¥":"¥","৳":"৳","₩":"₩","€":"€","₱":"₱","₹":"₹","₽":"₽","cn¥":"CN¥","gb£":"GB£","india rs":"₹","indian rupee symbol":"₹","indian rupee":"₹","indian rupees":"₹","philippine peso":"₱","russian ruble":"₽","SK won":"₩","turkish lira":"TRY",a$:"A$",au$:"A$",aud:"A$",bdt:"BDT",brl:"BRL",ca$:"CA$",cad:"CA$",chf:"CHF",cny:"CN¥",czk:"czk",dkk:"dkk",dkk2:"dkk",euro:"€",gbp:"GB£",hk$:"HK$",hkd:"HK$",ils:"ILS",inr:"₹",jpy:"¥",myr:"MYR",nis:"ILS",nok:"NOK",nok2:"NOK",nz$:"NZ$",nzd:"NZ$",peso:"peso",pkr:"₨",r$:"BRL",rmb:"CN¥",rub:"₽",ruble:"₽",rupee:"₹",s$:"sgd",sek:"SEK",sek2:"SEK",sfr:"CHF",sgd:"sgd",shekel:"ILS",sheqel:"ILS",ttd:"TTD",us$:"US$",usd:"US$",yen:"¥",zar:"R"},Ai=(e,t)=>{let i=De(e,["amount","code"]);t.push(i);let a=i.template||"";"currency"===a?(a=i.code,a||(i.code=a="usd")):""!==a&&"monnaie"!==a&&"unité"!==a&&"nombre"!==a&&"nb"!==a||(a=i.code),a=(a||"").toLowerCase(),"us"===a?i.code=a="usd":"uk"===a&&(i.code=a="gbp");let n=`${Pi[a]||""}${i.amount||""}`;return i.code&&!Pi[i.code.toLowerCase()]&&(n+=" "+i.code),n};let Di={currency:Ai};Object.keys(Pi).forEach(e=>{Di[e]=Ai});var Ii=Di;const Mi=864e5,Ri=function(e){return new Date(`${e.year}-${e.month||0}-${e.date||1}`).getTime()};var Ui={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],timeSince:function(e){let t=new Date(e);if(isNaN(t.getTime()))return"";let i=(new Date).getTime()-t.getTime(),a="ago";i<0&&(a="from now",i=Math.abs(i));let n=i/1e3/60/60/24;return n<365?parseInt(n,10)+" days "+a:parseInt(n/365,10)+" years "+a},delta:function(e,t){e=Ri(e);let i=(t=Ri(t))-e,a={},n=Math.floor(i/31536e6,10);n>0&&(a.years=n,i-=31536e6*a.years);let r=Math.floor(i/2592e6,10);r>0&&(a.months=r,i-=2592e6*a.months);let o=Math.floor(i/Mi,10);return o>0&&(a.days=o),a},toOrdinal:function(e){let t=e%10,i=e%100;return 1===t&&11!==i?e+"st":2===t&&12!==i?e+"nd":3===t&&13!==i?e+"rd":e+"th"}};const Bi=[void 0,"January","February","March","April","May","June","July","August","September","October","November","December"],Fi=Bi.reduce((e,t,i)=>(0===i||(e[t.toLowerCase()]=i),e),{}),Ki=function(e){return e<10?"0"+e:String(e)};var Wi=Ui,Zi={toText:function(e){let t=String(e.year||"");if(void 0!==e.month&&!0===Bi.hasOwnProperty(e.month))if(void 0===e.date)t=`${Bi[e.month]} ${e.year}`;else{if(t=`${Bi[e.month]} ${e.date}, ${e.year}`,void 0!==e.hour&&void 0!==e.minute){let i=`${Ki(e.hour)}:${Ki(e.minute)}`;void 0!==e.second&&(i=i+":"+Ki(e.second)),t=i+", "+t}e.tz&&(t+=` (${e.tz})`)}return t},ymd:function(e){let t={},i=["year","month","date","hour","minute","second"];for(let a=0;a{let i=De(e,["year","month","date","hour","minute","second","timezone"]),a=Zi.ymd([i.year,i.month,i.date||i.day]);return i.text=Zi.toText(a),i.timezone&&("Z"===i.timezone&&(i.timezone="UTC"),i.text+=` (${i.timezone})`),i.hour&&i.minute&&(i.second?i.text=`${i.hour}:${i.minute}:${i.second}, `+i.text:i.text=`${i.hour}:${i.minute}, `+i.text),i.text&&t.push(Yi(i)),i.text},natural_date:(e,t)=>{let i=De(e,["text"]).text||"",a={};if(/^[0-9]{4}$/.test(i))a.year=parseInt(i,10);else{let e=i.replace(/[a-z]+\/[a-z]+/i,"");e=e.replace(/[0-9]+:[0-9]+(am|pm)?/i,"");let t=new Date(e);!1===isNaN(t.getTime())&&(a.year=t.getFullYear(),a.month=t.getMonth()+1,a.date=t.getDate())}return t.push(Yi(a)),i.trim()},one_year:(e,t)=>{let i=De(e,["year"]),a=Number(i.year);return t.push(Yi({year:a})),String(a)},two_dates:(e,t)=>{let i=De(e,["b","birth_year","birth_month","birth_date","death_year","death_month","death_date"]);if(i.b&&"b"===i.b.toLowerCase()){let e=Zi.ymd([i.birth_year,i.birth_month,i.birth_date]);return t.push(Yi(e)),Zi.toText(e)}let a=Zi.ymd([i.death_year,i.death_month,i.death_date]);return t.push(Yi(a)),Zi.toText(a)},age:e=>{let t=Gi(e);return Hi(t.from,t.to).years||0},"diff-y":e=>{let t=Gi(e),i=Hi(t.from,t.to);return 1===i.years?i.years+" year":(i.years||0)+" years"},"diff-ym":e=>{let t=Gi(e),i=Hi(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),1===i.months?a.push("1 month"):i.months&&0!==i.months&&a.push(i.months+" months"),a.join(", ")},"diff-ymd":e=>{let t=Gi(e),i=Hi(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),1===i.months?a.push("1 month"):i.months&&0!==i.months&&a.push(i.months+" months"),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")},"diff-yd":e=>{let t=Gi(e),i=Hi(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),i.days+=30*(i.months||0),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")},"diff-d":e=>{let t=Gi(e),i=Hi(t.from,t.to),a=[];return i.days+=365*(i.years||0),i.days+=30*(i.months||0),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")}};const Ji=["January","February","March","April","May","June","July","August","September","October","November","December"];var Xi={currentday:()=>{let e=new Date;return String(e.getDate())},currentdayname:()=>{let e=new Date;return Wi.days[e.getDay()]},currentmonth:()=>{let e=new Date;return Ji[e.getMonth()]},currentyear:()=>{let e=new Date;return String(e.getFullYear())},monthyear:()=>{let e=new Date;return Ji[e.getMonth()]+" "+e.getFullYear()},"monthyear-1":()=>{let e=new Date;return e.setMonth(e.getMonth()-1),Ji[e.getMonth()]+" "+e.getFullYear()},"monthyear+1":()=>{let e=new Date;return e.setMonth(e.getMonth()+1),Ji[e.getMonth()]+" "+e.getFullYear()},"time ago":e=>{let t=De(e,["date","fmt"]).date;return Wi.timeSince(t)},"birth date and age":(e,t)=>{let i=De(e,["year","month","day"]);return i.year&&/[a-z]/i.test(i.year)?Vi.natural_date(e,t):(t.push(i),i=Zi.ymd([i.year,i.month,i.day]),Zi.toText(i))},"birth year and age":(e,t)=>{let i=De(e,["birth_year","birth_month"]);if(i.death_year&&/[a-z]/i.test(i.death_year))return Vi.natural_date(e,t);t.push(i);let a=(new Date).getFullYear()-parseInt(i.birth_year,10);i=Zi.ymd([i.birth_year,i.birth_month]);let n=Zi.toText(i);return a&&(n+=` (age ${a})`),n},"death year and age":(e,t)=>{let i=De(e,["death_year","birth_year","death_month"]);return i.death_year&&/[a-z]/i.test(i.death_year)?Vi.natural_date(e,t):(t.push(i),i=Zi.ymd([i.death_year,i.death_month]),Zi.toText(i))},"birth date and age2":(e,t)=>{let i=De(e,["at_year","at_month","at_day","birth_year","birth_month","birth_day"]);return t.push(i),i=Zi.ymd([i.birth_year,i.birth_month,i.birth_day]),Zi.toText(i)},"birth based on age as of date":(e,t)=>{let i=De(e,["age","year","month","day"]);t.push(i);let a=parseInt(i.age,10),n=parseInt(i.year,10)-a;return n&&a?`${n} (age ${i.age})`:`(age ${i.age})`},"death date and given age":(e,t)=>{let i=De(e,["year","month","day","age"]);t.push(i),i=Zi.ymd([i.year,i.month,i.day]);let a=Zi.toText(i);return i.age&&(a+=` (age ${i.age})`),a},dts:e=>{e=(e=e.replace(/\|format=[ymd]+/i,"")).replace(/\|abbr=(on|off)/i,"");let t=De(e,["year","month","date","bc"]);return t.date&&t.month&&t.year?!0===/[a-z]/.test(t.month)?[t.month,t.date,t.year].join(" "):[t.year,t.month,t.date].join("-"):t.month&&t.year?[t.year,t.month].join("-"):t.year?(t.year<0&&(t.year=Math.abs(t.year)+" BC"),t.year):""},time:()=>{let e=new Date,t=Zi.ymd([e.getFullYear(),e.getMonth(),e.getDate()]);return Zi.toText(t)},millennium:e=>{let t=De(e,["year"]),i=Number(t.year);return i=parseInt(i/1e3,10)+1,t.abbr&&"y"===t.abbr?i<0?Wi.toOrdinal(Math.abs(i))+" BC":""+Wi.toOrdinal(i):Wi.toOrdinal(i)+" millennium"},start:Vi.date,"start-date":Vi.natural_date,birthdeathage:Vi.two_dates,age:Vi.age,"age nts":Vi.age,"age in years":Vi["diff-y"],"age in years and months":Vi["diff-ym"],"age in years, months and days":Vi["diff-ymd"],"age in years and days":Vi["diff-yd"],"age in days":Vi["diff-d"]};function Qi(e){let t=e.pop(),i=Number(e[0]||0),a=Number(e[1]||0),n=Number(e[2]||0);if("string"!=typeof t||isNaN(i))return null;let r=1;return/[SW]/i.test(t)&&(r=-1),r*(i+a/60+n/3600)}const ea=function(e){if("number"!=typeof e)return e;let t=1e5;return Math.round(e*t)/t},ta={s:!0,w:!0};var ia=function(e){let t=De(e);t=function(e){return e.list=e.list||[],e.list=e.list.map(t=>{let i=Number(t);if(!isNaN(i))return i;let a=t.split(/:/);return a.length>1?(e.props=e.props||{},e.props[a[0]]=a.slice(1).join(":"),null):t}),e.list=e.list.filter(e=>null!==e),e}(t);let i=function(e){const t=e.map(e=>typeof e).join("|");return 2===e.length&&"number|number"===t?{lat:e[0],lon:e[1]}:4===e.length&&"number|string|number|string"===t?(ta[e[1].toLowerCase()]&&(e[0]*=-1),"w"===e[3].toLowerCase()&&(e[2]*=-1),{lat:e[0],lon:e[2]}):6===e.length?{lat:Qi(e.slice(0,3)),lon:Qi(e.slice(3))}:8===e.length?{lat:Qi(e.slice(0,4)),lon:Qi(e.slice(4))}:{}}(t.list);return t.lat=ea(i.lat),t.lon=ea(i.lon),t.template="coord",delete t.list,t};var aa={coord:(e,t)=>{let i=ia(e);return t.push(i),i.display&&-1===i.display.indexOf("inline")?"":`${i.lat||""}°N, ${i.lon||""}°W`}};const na=function(e,t,i,a){let n=De(e);return a&&(n.name=n.template,n.template=a),t.push(n),""};var ra={persondata:na,taxobox:na,citation:na,portal:na,reflist:na,"cite book":na,"cite journal":na,"cite web":na,"commons cat":na,"election box candidate":na,"election box begin":na,main:na};const oa={adx:"adx",aim:"aim",amex:"amex",asx:"asx",athex:"athex",b3:"b3","B3 (stock exchange)":"B3 (stock exchange)",barbadosse:"barbadosse",bbv:"bbv",bcba:"bcba",bcs:"bcs",bhse:"bhse",bist:"bist",bit:"bit","bm&f bovespa":"b3","bm&f":"b3",bmad:"bmad",bmv:"bmv","bombay stock exchange":"bombay stock exchange","botswana stock exchange":"botswana stock exchange",bpse:"bpse",bse:"bse",bsx:"bsx",bvb:"bvb",bvc:"bvc",bvl:"bvl",bvpasa:"bvpasa",bwse:"bwse","canadian securities exchange":"canadian securities exchange",cse:"cse",darse:"darse",dfm:"dfm",dse:"dse",euronext:"euronext",euronextparis:"euronextparis",fse:"fse",fwb:"fwb",gse:"gse",gtsm:"gtsm",idx:"idx",ise:"ise",iseq:"iseq",isin:"isin",jasdaq:"jasdaq",jse:"jse",kase:"kase",kn:"kn",krx:"krx",lse:"lse",luxse:"luxse","malta stock exchange":"malta stock exchange",mai:"mai",mcx:"mcx",mutf:"mutf",myx:"myx",nag:"nag","nasdaq dubai":"nasdaq dubai",nasdaq:"nasdaq",neeq:"neeq",nepse:"nepse",nex:"nex",nse:"nse",newconnect:"newconnect","nyse arca":"nyse arca",nyse:"nyse",nzx:"nzx","omx baltic":"omx baltic",omx:"omx",ose:"ose","otc expert":"otc expert","otc grey":"otc grey","otc pink":"otc pink",otcqb:"otcqb",otcqx:"otcqx","pfts ukraine stock exchange":"pfts ukraine stock exchange","philippine stock exchange":"philippine stock exchange",prse:"prse",psx:"psx",karse:"karse",qe:"qe","saudi stock exchange":"saudi stock exchange",sehk:"sehk","Stock Exchange of Thailand":"Stock Exchange of Thailand",set:"set",sgx:"sgx",sse:"sse",swx:"swx",szse:"szse",tase:"tase","tsx-v":"tsx-v",tsx:"tsx",tsxv:"tsxv",ttse:"ttse",twse:"twse",tyo:"tyo",wbag:"wbag",wse:"wse","zagreb stock exchange":"zagreb stock exchange","zimbabwe stock exchange":"zimbabwe stock exchange",zse:"zse"},sa=(e,t)=>{let i=De(e,["ticketnumber","code"]);t.push(i);let a=i.template||"";""===a&&(a=i.code),a=(a||"").toLowerCase();let n=oa[a]||"";return i.ticketnumber&&(n=`${n}: ${i.ticketnumber}`),i.code&&!oa[i.code.toLowerCase()]&&(n+=" "+i.code),n},la={};Object.keys(oa).forEach(e=>{la[e]=sa});const ca=function(e){return 1===(e=String(e)).length&&(e="0"+e),e},ua=function(e,t,i){e[`rd${t}-team${ca(i)}`]&&(i=ca(i));let a=e[`rd${t}-score${i}`],n=Number(a);return!1===isNaN(n)&&(a=n),{team:e[`rd${t}-team${i}`],score:a,seed:e[`rd${t}-seed${i}`]}};var pa=function(e){let t=[],i=De(e);for(let e=1;e<7;e+=1){let a=[];for(let t=1;t<16;t+=2){let n=`rd${e}-team`;if(!i[n+t]&&!i[n+ca(t)])break;{let n=ua(i,e,t),r=ua(i,e,t+1);a.push([n,r])}}a.length>0&&t.push(a)}return{template:"playoffbracket",rounds:t}};var ma=Ti,da=Li,ha=Ii,ga=Xi,fa=aa,ka=ra,ba=la,wa={"4teambracket":function(e,t){let i=pa(e);return t.push(i),""},player:(e,t)=>{let i=De(e,["number","country","name","dl"]);t.push(i);let a=`[[${i.name}]]`;if(i.country){let e=(i.country||"").toLowerCase(),t=di.find(t=>e===t[1]||e===t[2])||[];t&&t[0]&&(a=t[0]+" "+a)}return i.number&&(a=i.number+" "+a),a},goal:(e,t)=>{let i={template:"goal",data:[]},a=De(e).list||[];for(let e=0;e{let t=e.note;return t&&(t=` (${t})`),e.min+"'"+t}).join(", "),n},"sports table":(e,t)=>{let i=De(e),a={};Object.keys(i).filter(e=>/^team[0-9]/.test(e)).map(e=>i[e].toLowerCase()).forEach(e=>{a[e]={name:i["name_"+e],win:Number(i["win_"+e])||0,loss:Number(i["loss_"+e])||0,tie:Number(i["tie_"+e])||0,otloss:Number(i["otloss_"+e])||0,goals_for:Number(i["gf_"+e])||0,goals_against:Number(i["ga_"+e])||0}});let n={date:i.update,header:i.table_header,teams:a};t.push(n)}},ya=Object.assign({},ma,da,ha,ga,fa,ka,ba,pa,wa,pa,wa),$a=si,xa=vi,va=qi,ja=ya;let _a=Object.assign({},xa,va,ja);Object.keys($a).forEach(e=>{_a[e]=_a[$a[e]]});var za=Jt,Oa=ni,Ea=_a;const{isArray:Sa,isObject:Ca}=r,Na=["0","1","2","3","4","5","6","7","8","9"];var qa=function(e,t){let i=e.name;if(!0===za.hasOwnProperty(i))return[""];if(!0===Oa.isInfobox(i)){let t=De(e.body,[],"raw");return["",Oa.format(t)]}if(!0===/^cite [a-z]/.test(i)){let t=De(e.body);return t.type=t.template,t.template="citation",["",t]}if(!0===Ea.hasOwnProperty(i)){if("number"==typeof Ea[i]){return[De(e.body,Na)[String(Ea[i])]||""]}if("string"==typeof Ea[i])return[Ea[i]];if(!0===Sa(Ea[i])){return["",De(e.body,Ea[i])]}if(!0===Ca(Ea[i])){let t=De(e.body,Ea[i].props);return[t[Ea[i].out],t]}if("function"==typeof Ea[i]){let a=[];return[Ea[i](e.body,a,De,null,t),a[0]]}}let a=De(e.body);return 0===Object.keys(a).length&&(a=null),["",a]};var Ta=function(e,t){let i=Object.keys(e.data).reduce((t,i)=>(e.data[i]&&(t[i]=e.data[i].json()),t),{});return!0===t.encode&&(i=V.encodeObj(i)),i};const{isArray:La}=r,Pa=(e="")=>(e=(e=e.toLowerCase()).replace(/[-_]/g," ")).trim(),Aa=function(e,t){this._type=e.type,this.domain=e.domain,Object.defineProperty(this,"data",{enumerable:!1,value:e.data}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},Da={type:function(){return this._type},links:function(e){let t=[];if(Object.keys(this.data).forEach(e=>{this.data[e].links().forEach(e=>t.push(e))}),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find(t=>t.page()===e);return void 0===i?[]:[i]}return t},image:function(){let e=this.data.image||this.data.image2||this.data.logo||this.data.image_skyline||this.data.image_flag;if(!e)return null;let t=e.json();return t.file=t.text,t.text="",t.domain=this.domain,new $t(t)},get:function(e){let t=Object.keys(this.data);if("string"==typeof e){let i=Pa(e);for(let e=0;e{for(let i=0;i(this.data[t]&&(e[t]=this.data[t].text()),e),{})}};Object.keys(Da).forEach(e=>{Aa.prototype[e]=Da[e]}),Aa.prototype.data=Aa.prototype.keyValue,Aa.prototype.template=Aa.prototype.type,Aa.prototype.images=Aa.prototype.image;var Ia=Aa;const Ma=Ee.fromText,Ra={text:function(){let e=this._text||"";return Ma(e).text()},json:function(){return this.data||{}},wikitext:function(){return this.wiki||""}},Ua=function(e,t="",i=""){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"_text",{enumerable:!1,value:t}),Object.defineProperty(this,"wiki",{enumerable:!1,value:i})};Object.keys(Ra).forEach(e=>{Ua.prototype[e]=Ra[e]});var Ba=Ia,Fa=Ua;const Ka=/^(cite |citation)/i,Wa={citation:!0,refn:!0,harvnb:!0,source:!0};var Za=Vt,Ha=qa,Ya=function(e,t){let i={infoboxes:[],templates:[],references:[]};return e.forEach(e=>{let a=e.json,n=a.template||a.type||a.name;if(!0!==Wa[n]&&!0!==Ka.test(n))return"infobox"===a.template&&"yes"!==a.subbox?(a.domain=t,a.data=a.data||{},void i.infoboxes.push(new Ba(a,e.wiki))):void i.templates.push(new Fa(a,e.text,e.wiki));i.references.push(new Ie(a,e.wiki))}),i};const Ga=Ee.fromText;var Va=function(e,t){let{list:i,wiki:a}=function(e,t){let i=[],a=Za(e);const n=function(a,r){a.parent=r,a.children&&a.children.length>0&&a.children.forEach(e=>n(e,a));let[o,s]=Ha(a,t);a.wiki=o,s&&i.push({name:a.name,wiki:a.body,text:o,json:s});const l=function(e,t,i){e.parent&&(e.parent.body=e.parent.body.replace(t,i),l(e.parent,t,i))};l(a,a.body,a.wiki),e=e.replace(a.body,a.wiki)};return a.forEach(e=>n(e,null)),a.forEach(t=>{e=e.replace(t.body,t.wiki)}),{list:i,wiki:e}}(e._wiki,t),n=t?t._domain:null,{infoboxes:r,references:o,templates:s}=Ya(i,n);e._infoboxes=e._infoboxes||[],e._references=e._references||[],e._templates=e._templates||[],e._infoboxes=e._infoboxes.concat(r),e._references=e._references.concat(o),e._templates=e._templates.concat(s),e._wiki=a};const Ja={coach:["team","year","g","w","l","w-l%","finish","pg","pw","pl","pw-l%"],player:["year","team","gp","gs","mpg","fg%","3p%","ft%","rpg","apg","spg","bpg","ppg"],roster:["player","gp","gs","mpg","fg%","3fg%","ft%","rpg","apg","spg","bpg","ppg"]};var Xa=function(e){e.text=e.text.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi,t=>{let i=function(e){let t=["#","date","opponent","score","win","loss","save","attendance","record"];return!0===/\|stadium=y/i.test(e)&&t.splice(7,0,"stadium"),!0===/\|time=y/i.test(e)&&t.splice(7,0,"time"),!0===/\|box=y/i.test(e)&&t.push("box"),t}(t);t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{mlb game log (section|month) end\}\}/i,"");let a="! "+i.join(" !! "),n=ct("{|\n"+a+"\n"+t+"\n|}");return n=n.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"mlb game log section",data:n}),""})};let Qa=["res","record","opponent","method","event","date","round","time","location","notes"];const en=Ee.fromText;var tn=function(e,t,i){e.text=e.text.replace(/]*)>([\s\S]+)<\/gallery>/g,(a,n,r)=>{let o=r.split(/\n/g);return o=o.filter(e=>e&&""!==e.trim()),o=o.map(e=>{let i=e.split(/\|/),a={file:i[0].trim(),lang:t.lang(),domain:t.domain()},n=new $t(a).json(),r=i.slice(1).join("|");return""!==r&&(n.caption=Ga(r)),n}),o.length>0&&e.templates.push({template:"gallery",images:o,pos:i.title}),""})},an=function(e){e.text=e.text.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi,t=>{let i={_wiki:t,_templates:[]};Va(i);let a=i._templates.map(e=>e.json()),n=a.find(e=>"election box"===e.template)||{},r=a.filter(e=>"election box candidate"===e.template),o=a.find(e=>"election box gain"===e.template||"election box hold"===e.template)||{};return(r.length>0||o)&&e.templates.push({template:"election box",title:n.title,candidates:r,summary:o.data}),""})},nn=function(e){e.text=e.text.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi,(t,i)=>{t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{s-end\}\}/,""),i=i.toLowerCase().trim();let a="! "+Ja[i].join(" !! "),n=ct("{|\n"+a+"\n"+t+"\n|}");return n=n.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"NBA "+i+" statistics",data:n}),""})},rn=Xa,on=function(e){e.text=e.text.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi,t=>{t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{end\}\}/i,"");let i="! "+Qa.join(" !! "),a=ct("{|\n"+i+"\n"+t+"\n|}");return a=a.map(e=>(Object.keys(e).forEach(t=>{e[t]=e[t].text()}),e)),e.templates.push({template:"mma record start",data:a}),""})},sn=function(e){e.text=e.text.replace(/]*)>([\s\S]+)<\/math>/g,(t,i,a)=>{let n=en(a).text();return e.templates.push({template:"math",formula:n,raw:a}),n&&n.length<12?n:""}),e.text=e.text.replace(/]*)>([\s\S]+?)<\/chem>/g,(t,i,a)=>(e.templates.push({template:"chem",data:a}),""))};var ln=X,cn=He;const un={heading:cn,table:dt,paragraphs:Kt,templates:Va,references:Fe,startEndTemplates:function(e,t){const i={templates:[],text:e._wiki};return an(i),tn(i,t,e),sn(i),rn(i),on(i),nn(i),i.templates=i.templates.map(e=>new Fa(e)),i}},pn={tables:!0,references:!0,paragraphs:!0,templates:!0,infoboxes:!0};class mn{constructor(e,t){let i={doc:t,title:e.title||"",depth:e.depth,wiki:e.wiki||"",templates:[],tables:[],infoboxes:[],references:[],paragraphs:[]};Object.keys(i).forEach(e=>{Object.defineProperty(this,"_"+e,{enumerable:!1,writable:!0,value:i[e]})});const a=un.startEndTemplates(this,t);this._wiki=a.text,this._templates=this._templates.concat(a.templates),un.references(this),un.templates(this,t),un.table(this),un.paragraphs(this,t)}title(){return this._title||""}index(){if(!this._doc)return null;let e=this._doc.sections().indexOf(this);return-1===e?null:e}depth(){return this._depth}indentation(){return this.depth()}sentences(){return this.paragraphs().reduce((e,t)=>e.concat(t.sentences()),[])}paragraphs(){return this._paragraphs||[]}links(e){let t=[];if(this.infoboxes().forEach(e=>{t.push(e.links())}),this.sentences().forEach(e=>{t.push(e.links())}),this.tables().forEach(e=>{t.push(e.links())}),this.lists().forEach(e=>{t.push(e.links())}),t=t.reduce((e,t)=>e.concat(t),[]).filter(e=>void 0!==e),"string"==typeof e){let i=t.find(t=>t.page().toLowerCase()===e.toLowerCase());return void 0===i?[]:[i]}return t}tables(){return this._tables||[]}templates(e){let t=this._templates||[];return"string"==typeof e?(e=e.toLowerCase(),t.filter(t=>t.data.template===e||t.data.name===e)):t}infoboxes(e){let t=this._infoboxes||[];return"string"==typeof e?(e=(e=e.replace(/^infobox /i,"")).trim().toLowerCase(),t.filter(t=>t._type===e)):t}coordinates(){return[...this.templates("coord"),...this.templates("coor")].map(e=>e.json())}lists(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.lists())}),e}interwiki(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.interwiki())}),e}images(){let e=[];return this.paragraphs().forEach(t=>{e=e.concat(t.images())}),e}references(){return this._references||[]}remove(){if(!this._doc)return null;let e={};e[this.title()]=!0,this.children().forEach(t=>e[t.title()]=!0);let t=this._doc.sections();return t=t.filter(t=>!0!==e.hasOwnProperty(t.title())),t=t.filter(t=>!0!==e.hasOwnProperty(t.title())),this._doc._sections=t,this._doc}nextSibling(){if(!this._doc)return null;let e=this._doc.sections();for(let t=(this.index()||0)+1;tthis.depth())for(let e=i+1;ethis.depth();e+=1)a.push(t[e]);return"string"==typeof e?a.find(t=>t.title().toLowerCase()===e.toLowerCase()):a}sections(e){return this.children(e)}parent(){if(!this._doc)return null;let e=this._doc.sections();for(let t=this.index()||0;t>=0;t-=1)if(e[t]&&e[t].depth()t.text(e)).join("\n\n")}wikitext(){return this._wiki}json(e){return e=d(e,pn),ln(this,e)}}mn.prototype.citations=mn.prototype.references;const dn={sentences:"sentence",paragraphs:"paragraph",links:"link",tables:"table",templates:"template",infoboxes:"infobox",coordinates:"coordinate",lists:"list",images:"image",references:"reference",citations:"citation"};Object.keys(dn).forEach(e=>{let t=dn[e];mn.prototype[t]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]||null}});var hn=mn;const gn=new RegExp("^("+k.references.join("|")+"):?","i"),fn=/(?:\n|^)(={2,5}.{1,200}?={2,5})/g,kn={heading:cn};var bn=function(e){let t=[],i=e._wiki.split(fn);for(let a=0;a!0!==gn.test(t.title())||t.paragraphs().length>0||t.templates().length>0||(e[i+1]&&e[i+1].depth()>t.depth()&&(e[i+1]._depth-=1),!1))}(t)};const wn=new RegExp("\\[\\[:?("+k.categories.join("|")+"):(.{2,178}?)]](w{0,10})","gi"),yn=new RegExp("^\\[\\[:?("+k.categories.join("|")+"):","gi");var $n=m,xn=g,vn=x,jn=U,_n=H;const zn={section:bn,categories:function(e){const t=[];let i=e.match(wn);i&&i.forEach((function(e){(e=(e=(e=e.replace(yn,"")).replace(/\|?[ *]?\]\]$/,"")).replace(/\|.*/,""))&&!e.match(/[[\]]/)&&t.push(e.trim())}));const a=e.replace(wn,"");return[t,a]}},On={tables:!0,lists:!0,paragraphs:!0};class En{constructor(e,t){let i={pageID:(t=t||{}).pageID||t.id||null,namespace:t.namespace||t.ns||null,lang:t.lang||t.language||null,domain:t.domain||null,title:t.title||null,type:"page",redirectTo:null,wikidata:t.wikidata||null,wiki:e||"",categories:[],sections:[],coordinates:[]};if(Object.keys(i).forEach(e=>{Object.defineProperty(this,"_"+e,{enumerable:!1,writable:!0,value:i[e]})}),!0===jn.isRedirect(this._wiki)){this._type="redirect",this._redirectTo=jn.parse(this._wiki);const[e,t]=zn.categories(this._wiki);return this._categories=e,void(this._wiki=t)}this._wiki=_n(this._wiki);const[a,n]=zn.categories(this._wiki);this._categories=a,this._wiki=n,this._sections=zn.section(this)}title(e){if(void 0!==e)return this._title=e,e;if(this._title)return this._title;let t=null,i=this.sentence();return i&&(t=i.bold()),t}pageID(e){return void 0!==e&&(this._pageID=e),this._pageID||null}wikidata(e){return void 0!==e&&(this._wikidata=e),this._wikidata||null}domain(e){return void 0!==e&&(this._domain=e),this._domain||null}language(e){return void 0!==e&&(this._lang=e),this._lang||null}url(){let e=this.title();if(!e)return null;let t=this.language()||"en",i=this.domain()||"wikipedia.org";return e=e.replace(/ /g,"_"),e=encodeURIComponent(e),`https://${t}.${i}/wiki/${e}`}namespace(e){return void 0!==e&&(this._namespace=e),this._namespace||null}isRedirect(){return"redirect"===this._type}redirectTo(){return this._redirectTo}isDisambiguation(){return vn(this)}categories(e){let t=this._categories||[];return"number"==typeof e?[t[e]]:t}sections(e){let t=this._sections||[];if(t.forEach(e=>{e._doc=this}),"string"==typeof e){let i=e.toLowerCase().trim();return t.filter(e=>e.title().toLowerCase()===i)}return"number"==typeof e?[t[e]]:t}paragraphs(e){let t=[];return this.sections().forEach(e=>{t=t.concat(e.paragraphs())}),"number"==typeof e?[t[e]]:t}sentences(e){let t=[];return this.sections().forEach(e=>{t=t.concat(e.sentences())}),"number"==typeof e?[t[e]]:t}images(e){let t=$n(this,"images",null);return this.infoboxes().forEach(e=>{let i=e.image();i&&t.unshift(i)}),this.templates().forEach(e=>{"gallery"===e.data.template&&(e.data.images=e.data.images||[],e.data.images.forEach(e=>{e instanceof $t||(e.language=this.language(),e.domain=this.domain(),e=new $t(e)),t.push(e)}))}),"number"==typeof e?[t[e]]:t}links(e){return $n(this,"links",e)}interwiki(e){return $n(this,"interwiki",e)}lists(e){return $n(this,"lists",e)}tables(e){return $n(this,"tables",e)}templates(e){return $n(this,"templates",e)}references(e){return $n(this,"references",e)}citations(e){return this.references(e)}coordinates(e){return $n(this,"coordinates",e)}infoboxes(e){let t=$n(this,"infoboxes",e);return t=t.sort((e,t)=>Object.keys(e.data).length>Object.keys(t.data).length?-1:1),t}text(e){if(e=d(e,On),!0===this.isRedirect())return"";return this.sections().map(t=>t.text(e)).join("\n\n")}json(e){return e=d(e,On),xn(this,e)}wikitext(){return this._wiki||""}debug(){return console.log("\n"),this.sections().forEach(e=>{let t=" - ";for(let i=0;i{let t=Sn[e];En.prototype[t]=function(t){return this[e](t)[0]||null}}),En.prototype.lang=En.prototype.language,En.prototype.ns=En.prototype.namespace,En.prototype.plaintext=En.prototype.text,En.prototype.isDisambig=En.prototype.isDisambiguation,En.prototype.citations=En.prototype.references,En.prototype.redirectsTo=En.prototype.redirectTo,En.prototype.redirect=En.prototype.redirectTo,En.prototype.redirects=En.prototype.redirectTo;var Cn=En;const{isArray:Nn}=r;var qn=a,Tn=n,Ln=u,Pn=p,An=function(e,t){let i=(e=e.filter(e=>e)).map(e=>new Cn(e.wiki,e.meta));return 0===i.length?null:Nn(t)||1!==i.length?i:i[0]},Dn=function(e){let t,i=e.userAgent||e["User-Agent"]||e["Api-User-Agent"]||"User of the wtf_wikipedia library";return t=e.noOrigin?"":e.origin||e.Origin||"*",{method:"GET",headers:{"Content-Type":"application/json","Api-User-Agent":i,"User-Agent":i,Origin:t,"Accept-Encoding":"gzip"},redirect:"follow"}};const In=/^https?:\/\//,Mn={lang:"en",wiki:"wikipedia",domain:void 0,follow_redirects:!0,path:"api.php"};var Rn=function(e,t,i){"string"==typeof t&&(t={lang:t}),(t={...Mn,...t}).title=e,"string"==typeof e&&In.test(e)&&(t={...t,...Tn(e)});const a=Ln(t),n=Dn(t);return qn(a,n).then(e=>e.json()).then(a=>{let n=Pn(a,t);return n=An(n,e),i&&i(null,n),n}).catch(e=>(console.error(e),i&&i(e,null),null))};const Un=function(e,t){return new Cn(e,t)},Bn={Doc:Cn,Section:hn,Paragraph:Rt,Sentence:ye,Image:$t,Infobox:Ba,Link:ie,List:qt,Reference:Ie,Table:ut,Template:Fa,http:function(e,t){return qn(e,t).then((function(e){return e.json()}))},wtf:Un};Un.fetch=function(e,t,i){return Rn(e,t,i)},Un.plugin=Un.extend=function(e){return e(Bn,Ea,Qt),this},Un.version="9.0.1";var Fn=Un;export{Fn as default}; +function e(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(i){var a=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,a.get?a:{enumerable:!0,get:function(){return e[i]}})})),t}var t=e(Object.freeze({__proto__:null,default:function(e,t){return t=t||{},new Promise((function(i,a){var n=new XMLHttpRequest,r=[],o=[],s={},l=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:l,headers:{keys:function(){return r},entries:function(){return o},get:function(e){return s[e.toLowerCase()]},has:function(e){return e.toLowerCase()in s}}}};for(var c in n.open(t.method||"get",e,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(e,t,i){r.push(t=t.toLowerCase()),o.push([t,i]),s[t]=s[t]?s[t]+","+i:i})),i(l())},n.onerror=a,n.withCredentials="include"==t.credentials,t.headers)n.setRequestHeader(c,t.headers[c]);n.send(t.body||null)}))}})),i=self.fetch||(self.fetch=t.default||t);var a=function(e){let t=new URL(e),i=t.pathname.replace(/^\/(wiki\/)?/,"");return i=decodeURIComponent(i),{domain:t.host,title:i}};var n={capitalise:function(e){return e&&"string"==typeof e?e.charAt(0).toUpperCase()+e.slice(1):""},trim_whitespace:function(e){return e&&"string"==typeof e?e=(e=(e=(e=e.replace(/^\s+/,"")).replace(/\s+$/,"")).replace(/ {2}/," ")).replace(/\s, /,", "):""},isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},isObject:function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)}};const{isArray:r}=n,o=/(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/,s={action:"query",prop:"revisions|pageprops",rvprop:"content",maxlag:5,rvslots:"main",origin:"*",format:"json",redirects:"true"},l=e=>e.replace(/ /g,"_").trim();var c=function(e){let t=Object.assign({},s),i="";if(e.domain){let t=o.test(e.domain)?"w/api.php":e.path;i="https://".concat(e.domain,"/").concat(t,"?")}else{if(!e.lang||!e.wiki)return"";i="https://".concat(e.lang,".").concat(e.wiki,".org/w/api.php?")}e.follow_redirects||delete t.redirects;let a=e.title;if("number"==typeof a)t.pageids=a;else if("string"==typeof a)t.titles=l(a);else if(void 0!==a&&r(a)&&"number"==typeof a[0])t.pageids=a.join("|");else{if(void 0===a||!0!==r(a)||"string"!=typeof a[0])return"";t.titles=a.map(l).join("|")}return"".concat(i).concat((n=t,Object.entries(n).map((e=>{let[t,i]=e;return"".concat(encodeURIComponent(t),"=").concat(encodeURIComponent(i))})).join("&")));var n};var u=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=Object.keys(e.query.pages);return i.map((i=>{let a=e.query.pages[i]||{};if(a.hasOwnProperty("missing")||a.hasOwnProperty("invalid"))return null;let n=a.revisions[0]["*"];!n&&a.revisions[0].slots&&(n=a.revisions[0].slots.main["*"]),a.pageprops=a.pageprops||{};let r=t.domain;return!r&&t.wiki&&(r="".concat(t.wiki,".org")),{wiki:n,meta:Object.assign({},t,{title:a.title,pageID:a.pageid,namespace:a.ns,domain:r,wikidata:a.pageprops.wikibase_item,description:a.pageprops["wikibase-shortdesc"]})}}))};var p=function(e,t,i){let a=[];return e.sections().forEach((e=>{let n=[];n="string"==typeof i?e[t](i):e[t](),n.forEach((e=>{a.push(e)}))})),"number"==typeof i?void 0===a[i]?[]:[a[i]]:a};var m=function(e,t){return Object.assign({},t,e)};const d=m,h={title:!0,sections:!0,pageID:!0,categories:!0};var g=function(e,t){let i={};return(t=d(t,h)).title&&(i.title=e.title()),t.pageID&&(i.pageID=e.pageID()),t.categories&&(i.categories=e.categories()),t.sections&&(i.sections=e.sections().map((e=>e.json(t)))),!0===e.isRedirect()&&(i.isRedirect=!0,i.redirectTo=e.redirectTo(),i.sections=[]),t.coordinates&&(i.coordinates=e.coordinates()),t.infoboxes&&(i.infoboxes=e.infoboxes().map((e=>e.json(t)))),t.images&&(i.images=e.images().map((e=>e.json(t)))),t.plaintext&&(i.plaintext=e.text(t)),(t.citations||t.references)&&(i.references=e.references()),i},f={categories:["category","abdeeling","bólkur","catagóir","categori","categoria","categoria","categoría","categorîa","categorìa","catégorie","categorie","catègorie","category","categuria","catigurìa","class","ẹ̀ka","flocc","flocc","flokkur","grup","jamii","kaarangay","kateggoría","kategooria","kategori","kategorî","kategoria","kategória","kategorie","kategoriija","kategorija","kategorio","kategoriya","kategoriýa","kategoriye","kategory","kategorya","kateqoriya","katiguriya","klad","luokka","ñemohenda","roinn","ronney","rummad","setensele","sokajy","sumut","thể","turkum","категорија","категория","категорія","катэгорыя","төркем","קטגוריה","تصنيف","تۈر","رده","श्रेणी","श्रेणी","বিষয়শ্রেণী","หมวดหมู่","분류","분류","分类"],disambig_templates:["dab","disamb","disambig","disambiguation","aðgreining","aimai","ałtsʼáʼáztiin","anlam ayrımı","anlam ayrımı","apartigilo","argipen","begriepskloorenge","begriffsklärung","begriffsklärung","begriffsklärung","begriffsklearung","bisongidila","bkl","bokokani","caddayn","clerheans","cudakirin","čvor","db","desambig","desambigación","desambiguação","desambiguació","desambiguación","desambiguáncia","desambiguasion","desambiguassiù","desambigui","dezambiguizare","dəqiqləşdirmə","disambigua","disambigua","disambigua","disambìgua","disambigua","disambiguasi","disambiguasi","discretiva","disheñvelout","disingkek","dixanbigua","dixebra","diżambigwazzjoni","doorverwijspagina","dp","dp","dubbelsinnig","dudalipen","dv","egyért","fleiri týdningar","fleirtyding","flertydig","förgrening","gì-ngiê","giklaro","gwahaniaethu","homonimo","homónimos","homonymie","huaʻōlelo puana like","idirdhealú","khu-pia̍t","kthjellim","kujekesa","maana","maneo bin","mehrdüdig begreep","menm non","muardüüdag artiikel","neibetsjuttings","nozīmju atdalīšana","nuorodinis","nyahkekaburan","omonimeye","omonimia","page dé frouque","paglilinaw","panangilawlawag","pansayod","pejy mitovy anarana","peker","razdvojba","razločitev","razvrstavanje","reddaghey","rozcestník","rozlišovacia stránka","sclerir noziun","selvendyssivu","soilleireachadh","suzmunski","täpsustuslehekülg","täsmennyssivu","telplänov","tlahtolmelahuacatlaliztli","trang định hướng","ujednoznacznienie","verdudeliking","wěcejwóznamowosć","wjacezmyslnosć","zambiguaçon","zeimeibu škiršona","αποσαφήνιση","айрық","аҵакырацәа","вишезначна одредница","ибҳомзудоӣ","кёб магъаналы","күп мәгънәләр","күп мәғәнәлелек","мъногосъмꙑслиѥ","неадназначнасць","неадназначнасьць","неоднозначность","олон удхатай","појаснување","пояснение","са шумуд манавал","салаа утгатай","суолталар","текмаанисиздик","цо магіна гуреб","чеперушка","чолхалла","шуко ончыктымаш-влак","მრავალმნიშვნელოვანი","բազմիմաստութիւն","բազմիմաստություն","באדייטן","פירושונים","ابهام‌زدایی","توضيح","توضيح","دقیقلشدیرمه","ڕوونکردنەوە","سلجهائپ","ضد ابہام","گجگجی بیری","نامبهمېدنه","መንታ","अस्पष्टता","बहुअर्थी","बहुविकल्पी शब्द","দ্ব্যর্থতা নিরসন","ਗੁੰਝਲ-ਖੋਲ੍ਹ","સંદિગ્ધ શીર્ષક","பக்கவழி நெறிப்படுத்தல்","అయోమయ నివృత్తి","ದ್ವಂದ್ವ ನಿವಾರಣೆ","വിവക്ഷകൾ","වක්‍රෝත්ති","แก้ความกำกวม","သံတူကြောင်းကွဲ","ណែនាំ","동음이의","扤清楚","搞清楚","曖昧さ回避","消歧义","釋義","gestion dj'omònim","sut'ichana qillqa"],disambig_titles:["disambiguation","homonymie","توضيح","desambiguação","Begriffsklärung","disambigua","曖昧さ回避","消歧義","搞清楚","значения","ابهام‌زدایی","د ابہام","동음이의","dubbelsinnig","այլ կիրառումներ","ujednoznacznienie"],images:["file","image","चित्र","archivo","attēls","berkas","bestand","datei","dosiero","dosya","fájl","fasciculus","fichier","fil","fitxategi","fitxer","gambar","imagem","imej","immagine","larawan","lêer","plik","restr","slika","wêne","wobraz","выява","податотека","слика","файл","სურათი","պատկեր","קובץ","پرونده","دوتنه","ملف","وێنە","चित्र","ไฟล์","파일","ファイル"],infoboxes:["infobox","anfo","anuāmapa","bilgi kutusu","bilgi","bilgiquti","boaty","boestkelaouiñ","bosca","capsa","diehtokássa","faktamall","ficha","generalni","gwybodlen3","info","infobokis","infoboks","infochascha","infokašćik","infokast","infokutija","infolentelė","infopolje","informkesto","infoskreine","infotaula","inligtingskas","inligtingskas3","inligtingskas4","kishtey","kotak","tertcita","tietolaatikko","yerleşim bilgi kutusu","ynfoboks","πλαίσιο","акарточка","аҥа","инфобокс","инфокутија","инфокутия","інфобокс","канадский","картка","карточка","карточка2","карточкарус","картуш","қуттӣ","ინფოდაფა","տեղեկաքարտ","אינפאקעסטל","תבנית","بطاقة","ڄاڻخانو","خانہ","لغة","ज्ञानसन्दूक","তথ্যছক","ਜਾਣਕਾਰੀਡੱਬਾ","సమాచారపెట్టె","තොරතුරුකොටුව","กล่องข้อมูล","ប្រអប់ព័ត៌មាន","정보상자","明細"],redirects:["adkas","aýdaw","doorverwijzing","ohjaus","patrz","přesměruj","redirección","redireccion","redirección","redirecionamento","redirect","redirection","redirection","rinvia","tilvísun","uudelleenohjaus","weiterleitung","weiterleitung","yönlendi̇r","yönlendirme","yönlendi̇rme","ανακατευθυνση","айдау","перанакіраваньне","перенаправлення","пренасочување","преусмери","преусмјери","تغییر_مسیر","تغییرمسیر","تغییرمسیر","เปลี่ยนทาง","ប្តូរទីតាំងទៅ","転送","重定向"],references:["references","reference","einzelnachweise","referencias","références","notes et références","脚注","referenser","bronnen","примечания"]};let k=" disambiguation";const b=f,w=["dab","dab","disamb","disambig","geodis","hndis","setindex","ship index","split dab","sport index","wp disambig","disambiguation cleanup","airport"+k,"biology"+k,"call sign"+k,"caselaw"+k,"chinese title"+k,"genus"+k,"hospital"+k,"lake index","letter"+k,"letter-number combination"+k,"mathematical"+k,"military unit"+k,"mountainindex","number"+k,"phonetics"+k,"place name"+k,"portal"+k,"road"+k,"school"+k,"species latin name abbreviation"+k,"species latin name"+k,"station"+k,"synagogue"+k,"taxonomic authority"+k,"taxonomy"+k].reduce(((e,t)=>(e[t]=!0,e)),{}),y=new RegExp(". \\(("+b.disambig_titles.join("|")+")\\)$","i"),x=b.disambig_templates.reduce(((e,t)=>(e[t]=!0,e)),{}),v=function(e){if(!e)return!1;let t=e.text();return!(null===t||!t[0]||!0!==/. may (also)? refer to\b/i.test(t))};var $=function(e){if(e.templates().map((e=>e.json())).find((e=>w.hasOwnProperty(e.template)||x.hasOwnProperty(e.template))))return!0;let t=e.title();return!(!t||!0!==y.test(t))||(!0===v(e.sentence(0))||!0===v(e.sentence(1)))};const j=m,_={caption:!0,alt:!0,links:!0,thumb:!0,url:!0};const z=function(e,t){t=j(t,_);let i={file:e.file()};return!1!==t.thumb&&(i.thumb=e.thumbnail()),!1!==t.url&&(i.url=e.url()),!1!==t.caption&&e.data.caption&&(i.caption=e.caption(),!1!==t.links&&e.data.caption.links()&&(i.links=e.links())),!1!==t.alt&&e.data.alt&&(i.alt=e.alt()),i},O=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},E={file(){return this.data.file||""},alt(){let e=this.data.alt||this.data.file||"";return e=e.replace(/^(file|image):/i,""),e=e.replace(/\.(jpg|jpeg|png|gif|svg)/i,""),e.replace(/_/g," ")},caption(){return this.data.caption?this.data.caption.text():""},links(){return this.data.caption?this.data.caption.links():[]},url(){let e=function(e){let t=function(e){let t=e.replace(/^(image|file?):/i,"");return t=t.charAt(0).toUpperCase()+t.substring(1),t=t.trim().replace(/ /g,"_"),t}(e);return t=encodeURIComponent(t),t}(this.file()),t=this.data.domain||"wikipedia.org";return"https://".concat(t,"/").concat("wiki/Special:Redirect/file","/").concat(e)},thumbnail(e){return e=e||300,this.url()+"?width="+e},format(){let e=this.file().split(".");return e[e.length-1]?e[e.length-1].toLowerCase():null},json:function(e){return z(this,e=e||{})},text:function(){return""},wikitext:function(){return this.data.wiki||""}};Object.keys(E).forEach((e=>{O.prototype[e]=E[e]})),O.prototype.src=O.prototype.url,O.prototype.thumb=O.prototype.thumbnail;var S=O,C={aa:"Afar",ab:"Аҧсуа",af:"Afrikaans",ak:"Akana",als:"Alemannisch",am:"አማርኛ",an:"Aragonés",ang:"Englisc",ar:"العربية",arc:"ܣܘܪܬ",as:"অসমীয়া",ast:"Asturianu",av:"Авар",ay:"Aymar",az:"Azərbaycanca",ba:"Башҡорт",bar:"Boarisch","bat-smg":"Žemaitėška",bcl:"Bikol",be:"Беларуская","be-x-old":"ltr",bg:"Български",bh:"भोजपुरी",bi:"Bislama",bm:"Bamanankan",bn:"বাংলা",bo:"བོད་ཡིག",bpy:"ltr",br:"Brezhoneg",bs:"Bosanski",bug:"ᨅᨔ",bxr:"ltr",ca:"Català",cdo:"Chinese",ce:"Нохчийн",ceb:"Sinugboanong",ch:"Chamoru",cho:"Choctaw",chr:"ᏣᎳᎩ",chy:"Tsetsêhestâhese",co:"Corsu",cr:"Nehiyaw",cs:"Česky",csb:"Kaszëbsczi",cu:"Slavonic",cv:"Чăваш",cy:"Cymraeg",da:"Dansk",de:"Deutsch",diq:"Zazaki",dsb:"ltr",dv:"ދިވެހިބަސް",dz:"ཇོང་ཁ",ee:"Ɛʋɛ",far:"فارسی",el:"Ελληνικά",en:"English",eo:"Esperanto",es:"Español",et:"Eesti",eu:"Euskara",ext:"Estremeñu",ff:"Fulfulde",fi:"Suomi","fiu-vro":"Võro",fj:"Na",fo:"Føroyskt",fr:"Français",frp:"Arpitan",fur:"Furlan",fy:"ltr",ga:"Gaeilge",gan:"ltr",gd:"ltr",gil:"Taetae",gl:"Galego",gn:"Avañe'ẽ",got:"gutisk",gu:"ગુજરાતી",gv:"Gaelg",ha:"هَوُسَ",hak:"ltr",haw:"Hawai`i",he:"עברית",hi:"हिन्दी",ho:"ltr",hr:"Hrvatski",ht:"Krèyol",hu:"Magyar",hy:"Հայերեն",hz:"Otsiherero",ia:"Interlingua",id:"Bahasa",ie:"Interlingue",ig:"Igbo",ii:"ltr",ik:"Iñupiak",ilo:"Ilokano",io:"Ido",is:"Íslenska",it:"Italiano",iu:"ᐃᓄᒃᑎᑐᑦ",ja:"日本語",jbo:"Lojban",jv:"Basa",ka:"ქართული",kg:"KiKongo",ki:"Gĩkũyũ",kj:"Kuanyama",kk:"Қазақша",kl:"Kalaallisut",km:"ភាសាខ្មែរ",kn:"ಕನ್ನಡ",khw:"کھوار",ko:"한국어",kr:"Kanuri",ks:"कश्मीरी",ksh:"Ripoarisch",ku:"Kurdî",kv:"Коми",kw:"Kernewek",ky:"Kırgızca",la:"Latina",lad:"Dzhudezmo",lan:"Leb",lb:"Lëtzebuergesch",lg:"Luganda",li:"Limburgs",lij:"Líguru",lmo:"Lumbaart",ln:"Lingála",lo:"ລາວ",lt:"Lietuvių",lv:"Latviešu","map-bms":"Basa",mg:"Malagasy",man:"官話",mh:"Kajin",mi:"Māori",min:"Minangkabau",mk:"Македонски",ml:"മലയാളം",mn:"Монгол",mo:"Moldovenească",mr:"मराठी",ms:"Bahasa",mt:"bil-Malti",mus:"Muskogee",my:"Myanmasa",na:"Dorerin",nah:"Nahuatl",nap:"Nnapulitano",nd:"ltr",nds:"Plattdüütsch","nds-nl":"Saxon",ne:"नेपाली",new:"नेपालभाषा",ng:"Oshiwambo",nl:"Nederlands",nn:"ltr",no:"Norsk",nr:"ltr",nso:"ltr",nrm:"Nouormand",nv:"Diné",ny:"Chi-Chewa",oc:"Occitan",oj:"ᐊᓂᔑᓈᐯᒧᐎᓐ",om:"Oromoo",or:"ଓଡ଼ିଆ",os:"Иронау",pa:"ਪੰਜਾਬੀ",pag:"Pangasinan",pam:"Kapampangan",pap:"Papiamentu",pdc:"ltr",pi:"Pāli",pih:"Norfuk",pl:"Polski",pms:"Piemontèis",ps:"پښتو",pt:"Português",qu:"Runa",rm:"ltr",rmy:"Romani",rn:"Kirundi",ro:"Română","roa-rup":"Armâneashti",ru:"Русский",rw:"Kinyarwandi",sa:"संस्कृतम्",sc:"Sardu",scn:"Sicilianu",sco:"Scots",sd:"सिनधि",se:"ltr",sg:"Sängö",sh:"Srpskohrvatski",si:"සිංහල",simple:"ltr",sk:"Slovenčina",sl:"Slovenščina",sm:"Gagana",sn:"chiShona",so:"Soomaaliga",sq:"Shqip",sr:"Српски",ss:"SiSwati",st:"ltr",su:"Basa",sv:"Svenska",sw:"Kiswahili",ta:"தமிழ்",te:"తెలుగు",tet:"Tetun",tg:"Тоҷикӣ",th:"ไทย",ti:"ትግርኛ",tk:"Туркмен",tl:"Tagalog",tlh:"tlhIngan-Hol",tn:"Setswana",to:"Lea",tpi:"ltr",tr:"Türkçe",ts:"Xitsonga",tt:"Tatarça",tum:"chiTumbuka",tw:"Twi",ty:"Reo",udm:"Удмурт",ug:"Uyƣurqə",uk:"Українська",ur:"اردو",uz:"Ўзбек",ve:"Tshivenḓa",vi:"Việtnam",vec:"Vèneto",vls:"ltr",vo:"Volapük",wa:"Walon",war:"Winaray",wo:"Wollof",xal:"Хальмг",xh:"isiXhosa",yi:"ייִדיש",yo:"Yorùbá",za:"Cuengh",zh:"中文","zh-classical":"ltr","zh-min-nan":"Bân-lâm-gú","zh-yue":"粵語",zu:"isiZulu"};const N=".wikipedia.org/wiki/$1",q=".wikimedia.org/wiki/$1",L="www.";var T={acronym:L+"acronymfinder.com/$1.html",advisory:"advisory"+q,advogato:L+"advogato.org/$1",aew:"wiki.arabeyes.org/$1",appropedia:L+"appropedia.org/$1",aquariumwiki:L+"theaquariumwiki.com/$1",arborwiki:"localwiki.org/ann-arbor/$1",arxiv:"arxiv.org/abs/$1",atmwiki:L+"otterstedt.de/wiki/index.php/$1",baden:L+"stadtwiki-baden-baden.de/wiki/$1/",battlestarwiki:"en.battlestarwiki.org/wiki/$1",bcnbio:"historiapolitica.bcn.cl/resenas_parlamentarias/wiki/$1",beacha:L+"beachapedia.org/$1",betawiki:"translatewiki.net/wiki/$1",bibcode:"adsabs.harvard.edu/abs/$1",bibliowiki:"wikilivres.org/wiki/$1",bluwiki:"bluwiki.com/go/$1",blw:"britainloves"+N,botwiki:"botwiki.sno.cc/wiki/$1",boxrec:L+"boxrec.com/media/index.php?$1",brickwiki:L+"brickwiki.info/wiki/$1",bugzilla:"bugzilla.wikimedia.org/show_bug.cgi?id=$1",bulba:"bulbapedia.bulbagarden.net/wiki/$1",c:"commons"+q,c2:"c2.com/cgi/wiki?$1",c2find:"c2.com/cgi/wiki?FindPage&value=$1",cache:L+"google.com/search?q=cache:$1","ĉej":"esperanto.blahus.cz/cxej/vikio/index.php/$1",cellwiki:"cell.wikia.com/wiki/$1",centralwikia:"community.wikia.com/wiki/$1",chej:"esperanto.blahus.cz/cxej/vikio/index.php/$1",choralwiki:L+"cpdl.org/wiki/index.php/$1",citizendium:"en.citizendium.org/wiki/$1",ckwiss:L+"ck-wissen.de/ckwiki/index.php?title=$1",comixpedia:L+"comixpedia.org/index.php?title=$1",commons:"commons"+q,communityscheme:"community.schemewiki.org/?c=s&key=$1",communitywiki:"communitywiki.org/$1",comune:"rete.comuni-italiani.it/wiki/$1",creativecommons:"creativecommons.org/licenses/$1",creativecommonswiki:"wiki.creativecommons.org/$1",cxej:"esperanto.blahus.cz/cxej/vikio/index.php/$1",dcc:L+"dccwiki.com/$1",dcdatabase:"dc.wikia.com/$1",dcma:"christian-morgenstern.de/dcma/index.php?title=$1",debian:"wiki.debian.org/$1",delicious:L+"delicious.com/tag/$1",devmo:"developer.mozilla.org/en/docs/$1",dictionary:L+"dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1",dict:L+"dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1",disinfopedia:"sourcewatch.org/index.php/$1",distributedproofreaders:L+"pgdp.net/wiki/$1",distributedproofreadersca:L+"pgdpcanada.net/wiki/index.php/$1",dmoz:"curlie.org/$1",dmozs:"curlie.org/search?q=$1",doi:"doi.org/$1",donate:"donate"+q,doom_wiki:"doom.wikia.com/wiki/$1",download:"releases.wikimedia.org/$1",dbdump:"dumps.wikimedia.org/$1/latest/",dpd:"lema.rae.es/dpd/?key=$1",drae:"dle.rae.es/?w=$1",dreamhost:"wiki.dreamhost.com/index.php/$1",drumcorpswiki:L+"drumcorpswiki.com/index.php/$1",dwjwiki:L+"suberic.net/cgi-bin/dwj/wiki.cgi?$1","eĉei":L+"ikso.net/cgi-bin/wiki.pl?$1",ecoreality:L+"EcoReality.org/wiki/$1",ecxei:L+"ikso.net/cgi-bin/wiki.pl?$1",elibre:"enciclopedia.us.es/index.php/$1",emacswiki:L+"emacswiki.org/emacs?$1",encyc:"encyc.org/wiki/$1",energiewiki:L+"netzwerk-energieberater.de/wiki/index.php/$1",englyphwiki:"en.glyphwiki.org/wiki/$1",enkol:"enkol.pl/$1",eokulturcentro:"esperanto.toulouse.free.fr/nova/wikini/wakka.php?wiki=$1",esolang:"esolangs.org/wiki/$1",etherpad:"etherpad.wikimedia.org/$1",ethnologue:L+"ethnologue.com/language/$1",ethnologuefamily:L+"ethnologue.com/show_family.asp?subid=$1",evowiki:"wiki.cotch.net/index.php/$1",exotica:L+"exotica.org.uk/wiki/$1",fanimutationwiki:"wiki.animutationportal.com/index.php/$1",fedora:"fedoraproject.org/wiki/$1",finalfantasy:"finalfantasy.wikia.com/wiki/$1",finnix:L+"finnix.org/$1",flickruser:L+"flickr.com/people/$1",flickrphoto:L+"flickr.com/photo.gne?id=$1",floralwiki:L+"floralwiki.co.uk/wiki/$1",foldoc:"foldoc.org/$1",foundation:"foundation"+q,foundationsite:"wikimediafoundation.org/$1",foxwiki:"fox.wikis.com/wc.dll?Wiki~$1",freebio:"freebiology.org/wiki/$1",freebsdman:L+"FreeBSD.org/cgi/man.cgi?apropos=1&query=$1",freeculturewiki:"wiki.freeculture.org/index.php/$1",freedomdefined:"freedomdefined.org/$1",freefeel:"freefeel.org/wiki/$1",freekiwiki:"wiki.freegeek.org/index.php/$1",freesoft:"directory.fsf.org/wiki/$1",ganfyd:"ganfyd.org/index.php?title=$1",gardenology:L+"gardenology.org/wiki/$1",gausswiki:"gauss.ffii.org/$1",gentoo:"wiki.gentoo.org/wiki/$1",genwiki:"wiki.genealogy.net/index.php/$1",gerrit:"gerrit.wikimedia.org/r/$1",git:"gerrit.wikimedia.org/g/$1",google:L+"google.com/search?q=$1",googledefine:L+"google.com/search?q=define:$1",googlegroups:"groups.google.com/groups?q=$1",guildwarswiki:"wiki.guildwars.com/wiki/$1",guildwiki:"guildwars.wikia.com/wiki/$1",guc:"tools.wmflabs.org/guc/?user=$1",gucprefix:"tools.wmflabs.org/guc/?isPrefixPattern=1&src=rc&user=$1",gutenberg:L+"gutenberg.org/etext/$1",gutenbergwiki:L+"gutenberg.org/wiki/$1",hackerspaces:"hackerspaces.org/wiki/$1",h2wiki:"halowiki.net/p/$1",hammondwiki:L+"dairiki.org/HammondWiki/index.php3?$1",hdl:"hdl.handle.net/$1",heraldik:"heraldik-wiki.de/wiki/$1",heroeswiki:"heroeswiki.com/$1",horizonlabs:"horizon.wikimedia.org/$1",hrwiki:L+"hrwiki.org/index.php/$1",hrfwiki:"fanstuff.hrwiki.org/index.php/$1",hupwiki:"wiki.hup.hu/index.php/$1",iarchive:"archive.org/details/$1",imdbname:L+"imdb.com/name/nm$1/",imdbtitle:L+"imdb.com/title/tt$1/",imdbcompany:L+"imdb.com/company/co$1/",imdbcharacter:L+"imdb.com/character/ch$1/",incubator:"incubator"+q,infosecpedia:"infosecpedia.org/wiki/$1",infosphere:"theinfosphere.org/$1","iso639-3":"iso639-3.sil.org/code/$1",issn:L+"worldcat.org/issn/$1",iuridictum:"iuridictum.pecina.cz/w/$1",jaglyphwiki:"glyphwiki.org/wiki/$1",jefo:"esperanto-jeunes.org/wiki/$1",jerseydatabase:"jerseydatabase.com/wiki.php?id=$1",jira:"jira.toolserver.org/browse/$1",jspwiki:L+"ecyrd.com/JSPWiki/Wiki.jsp?page=$1",jstor:L+"jstor.org/journals/$1",kamelo:"kamelopedia.mormo.org/index.php/$1",karlsruhe:"ka.stadtwiki.net/$1",kinowiki:"kino.skripov.com/index.php/$1",komicawiki:"wiki.komica.org/?$1",kontuwiki:"kontu.wiki/$1",wikitech:"wikitech"+q,libreplanet:"libreplanet.org/wiki/$1",linguistlist:"linguistlist.org/forms/langs/LLDescription.cfm?code=$1",linuxwiki:L+"linuxwiki.de/$1",linuxwikide:L+"linuxwiki.de/$1",liswiki:"liswiki.org/wiki/$1",literateprograms:"en.literateprograms.org/$1",livepedia:L+"livepedia.gr/index.php?title=$1",localwiki:"localwiki.org/$1",lojban:"mw.lojban.org/papri/$1",lostpedia:"lostpedia.wikia.com/wiki/$1",lqwiki:"wiki.linuxquestions.org/wiki/$1",luxo:"tools.wmflabs.org/guc/?user=$1",mail:"lists.wikimedia.org/mailman/listinfo/$1",mailarchive:"lists.wikimedia.org/pipermail/$1",mariowiki:L+"mariowiki.com/$1",marveldatabase:L+"marveldatabase.com/wiki/index.php/$1",meatball:"meatballwiki.org/wiki/$1",mw:L+"mediawiki.org/wiki/$1",mediazilla:"bugzilla.wikimedia.org/$1",memoryalpha:"memory-alpha.fandom.com/wiki/$1",metawiki:"meta"+q,metawikimedia:"meta"+q,metawikipedia:"meta"+q,mineralienatlas:L+"mineralienatlas.de/lexikon/index.php/$1",moinmoin:"moinmo.in/$1",monstropedia:L+"monstropedia.org/?title=$1",mosapedia:"mosapedia.de/wiki/index.php/$1",mozcom:"mozilla.wikia.com/wiki/$1",mozillawiki:"wiki.mozilla.org/$1",mozillazinekb:"kb.mozillazine.org/$1",musicbrainz:"musicbrainz.org/doc/$1",mediawikiwiki:L+"mediawiki.org/wiki/$1",mwod:L+"merriam-webster.com/dictionary/$1",mwot:L+"merriam-webster.com/thesaurus/$1",nkcells:L+"nkcells.info/index.php?title=$1",nara:"catalog.archives.gov/id/$1",nosmoke:"no-smok.net/nsmk/$1",nost:"nostalgia."+N,nostalgia:"nostalgia."+N,oeis:"oeis.org/$1",oldwikisource:"wikisource.org/wiki/$1",olpc:"wiki.laptop.org/go/$1",omegawiki:L+"omegawiki.org/Expression:$1",onelook:L+"onelook.com/?ls=b&w=$1",openlibrary:"openlibrary.org/$1",openstreetmap:"wiki.openstreetmap.org/wiki/$1",openwetware:"openwetware.org/wiki/$1",opera7wiki:"operawiki.info/$1",organicdesign:L+"organicdesign.co.nz/$1",orthodoxwiki:"orthodoxwiki.org/$1",osmwiki:"wiki.openstreetmap.org/wiki/$1",otrs:"ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketID=$1",otrswiki:"otrs-wiki"+q,ourmedia:L+"socialtext.net/ourmedia/index.cgi?$1",outreach:"outreach"+q,outreachwiki:"outreach"+q,owasp:L+"owasp.org/index.php/$1",panawiki:"wiki.alairelibre.net/index.php?title=$1",patwiki:"gauss.ffii.org/$1",personaltelco:"personaltelco.net/wiki/$1",petscan:"petscan.wmflabs.org/?psid=$1",phab:"phabricator.wikimedia.org/$1",phabricator:"phabricator.wikimedia.org/$1",phwiki:L+"pocketheaven.com/ph/wiki/index.php?title=$1",phpwiki:"phpwiki.sourceforge.net/phpwiki/index.php?$1",planetmath:"planetmath.org/node/$1",pmeg:L+"bertilow.com/pmeg/$1",pmid:L+"ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract",pokewiki:"pokewiki.de/$1","pokéwiki":"pokewiki.de/$1",policy:"policy.wikimedia.org/$1",proofwiki:L+"proofwiki.org/wiki/$1",pyrev:L+"mediawiki.org/wiki/Special:Code/pywikipedia/$1",pythoninfo:"wiki.python.org/moin/$1",pythonwiki:L+"pythonwiki.de/$1",pywiki:"c2.com/cgi/wiki?$1",psycle:"psycle.sourceforge.net/wiki/$1",quality:"quality"+q,quarry:"quarry.wmflabs.org/$1",regiowiki:"regiowiki.at/wiki/$1",rev:L+"mediawiki.org/wiki/Special:Code/MediaWiki/$1",revo:"purl.org/NET/voko/revo/art/$1.html",rfc:"tools.ietf.org/html/rfc$1",rheinneckar:"rhein-neckar-wiki.de/$1",robowiki:"robowiki.net/?$1",rodovid:"en.rodovid.org/wk/$1",reuterswiki:"glossary.reuters.com/index.php/$1",rowiki:"wiki.rennkuckuck.de/index.php/$1",rt:"rt.wikimedia.org/Ticket/Display.html?id=$1",s23wiki:"s23.org/wiki/$1",scholar:"scholar.google.com/scholar?q=$1",schoolswp:"schools-"+N,scores:"imslp.org/wiki/$1",scoutwiki:"en.scoutwiki.org/$1",scramble:L+"scramble.nl/wiki/index.php?title=$1",seapig:L+"seapig.org/$1",seattlewiki:"seattle.wikia.com/wiki/$1",slwiki:"wiki.secondlife.com/wiki/$1","semantic-mw":L+"semantic-mediawiki.org/wiki/$1",senseislibrary:"senseis.xmp.net/?$1",sharemap:"sharemap.org/$1",silcode:L+"sil.org/iso639-3/documentation.asp?id=$1",slashdot:"slashdot.org/article.pl?sid=$1",sourceforge:"sourceforge.net/$1",spcom:"spcom"+q,species:"species"+q,squeak:"wiki.squeak.org/squeak/$1",stats:"stats.wikimedia.org/$1",stewardry:"tools.wmflabs.org/meta/stewardry/?wiki=$1",strategy:"strategy"+q,strategywiki:"strategywiki.org/wiki/$1",sulutil:"meta.wikimedia.org/wiki/Special:CentralAuth/$1",swtrain:"train.spottingworld.com/$1",svn:"svn.wikimedia.org/viewvc/mediawiki/$1?view=log",swinbrain:"swinbrain.ict.swin.edu.au/wiki/$1",tabwiki:L+"tabwiki.com/index.php/$1",tclerswiki:"wiki.tcl.tk/$1",technorati:L+"technorati.com/search/$1",tenwiki:"ten."+N,testwiki:"test."+N,testwikidata:"test.wikidata.org/wiki/$1",test2wiki:"test2."+N,tfwiki:"tfwiki.net/wiki/$1",thelemapedia:L+"thelemapedia.org/index.php/$1",theopedia:L+"theopedia.com/$1",thinkwiki:L+"thinkwiki.org/wiki/$1",ticket:"ticket.wikimedia.org/otrs/index.pl?Action=AgentTicketZoom&TicketNumber=$1",tmbw:"tmbw.net/wiki/$1",tmnet:L+"technomanifestos.net/?$1",tmwiki:L+"EasyTopicMaps.com/?page=$1",toolforge:"tools.wmflabs.org/$1",toollabs:"tools.wmflabs.org/$1",tools:"toolserver.org/$1",tswiki:L+"mediawiki.org/wiki/Toolserver:$1",translatewiki:"translatewiki.net/wiki/$1",tviv:"tviv.org/wiki/$1",tvtropes:L+"tvtropes.org/pmwiki/pmwiki.php/Main/$1",twiki:"twiki.org/cgi-bin/view/$1",tyvawiki:L+"tyvawiki.org/wiki/$1",umap:"umap.openstreetmap.fr/$1",uncyclopedia:"en.uncyclopedia.co/wiki/$1",unihan:L+"unicode.org/cgi-bin/GetUnihanData.pl?codepoint=$1",unreal:"wiki.beyondunreal.com/wiki/$1",urbandict:L+"urbandictionary.com/define.php?term=$1",usej:L+"tejo.org/usej/$1",usemod:L+"usemod.com/cgi-bin/wiki.pl?$1",usability:"usability"+q,utrs:"utrs.wmflabs.org/appeal.php?id=$1",vikidia:"fr.vikidia.org/wiki/$1",vlos:"tusach.thuvienkhoahoc.com/wiki/$1",vkol:"kol.coldfront.net/thekolwiki/index.php/$1",voipinfo:L+"voip-info.org/wiki/view/$1",votewiki:"vote"+q,werelate:L+"werelate.org/wiki/$1",wg:"wg-en."+N,wikia:L+"wikia.com/wiki/w:c:$1",wikiasite:L+"wikia.com/wiki/w:c:$1",wikiapiary:"wikiapiary.com/wiki/$1",wikibooks:"en.wikibooks.org/wiki/$1",wikichristian:L+"wikichristian.org/index.php?title=$1",wikicities:L+"wikia.com/wiki/w:$1",wikicity:L+"wikia.com/wiki/w:c:$1",wikiconference:"wikiconference.org/wiki/$1",wikidata:L+"wikidata.org/wiki/$1",wikif1:L+"wikif1.org/$1",wikifur:"en.wikifur.com/wiki/$1",wikihow:L+"wikihow.com/$1",wikiindex:"wikiindex.org/$1",wikilemon:"wiki.illemonati.com/$1",wikilivres:"wikilivres.org/wiki/$1",wikilivresru:"wikilivres.ru/$1","wikimac-de":"apfelwiki.de/wiki/Main/$1",wikimedia:"foundation"+q,wikinews:"en.wikinews.org/wiki/$1",wikinfo:"wikinfo.org/w/index.php/$1",wikinvest:"meta.wikimedia.org/wiki/Interwiki_map/discontinued#Wikinvest",wikiotics:"wikiotics.org/$1",wikipapers:"wikipapers.referata.com/wiki/$1",wikipedia:"en."+N,wikipediawikipedia:"en.wikipedia.org/wiki/Wikipedia:$1",wikiquote:"en.wikiquote.org/wiki/$1",wikisophia:"wikisophia.org/index.php?title=$1",wikisource:"en.wikisource.org/wiki/$1",wikispecies:"species"+q,wikispot:"wikispot.org/?action=gotowikipage&v=$1",wikiskripta:L+"wikiskripta.eu/index.php/$1",labsconsole:"wikitech"+q,wikiti:"wikiti.denglend.net/index.php?title=$1",wikiversity:"en.wikiversity.org/wiki/$1",wikivoyage:"en.wikivoyage.org/wiki/$1",betawikiversity:"beta.wikiversity.org/wiki/$1",wikiwikiweb:"c2.com/cgi/wiki?$1",wiktionary:"en.wiktionary.org/wiki/$1",wipipedia:"wipipedia.org/index.php/$1",wlug:L+"wlug.org.nz/$1",wmam:"am"+q,wmar:L+"wikimedia.org.ar/wiki/$1",wmat:"mitglieder.wikimedia.at/$1",wmau:"wikimedia.org.au/wiki/$1",wmbd:"bd"+q,wmbe:"be"+q,wmbr:"br"+q,wmca:"ca"+q,wmch:L+"wikimedia.ch/$1",wmcl:L+"wikimediachile.cl/index.php?title=$1",wmcn:"cn"+q,wmco:"co"+q,wmcz:L+"wikimedia.cz/web/$1",wmdc:"wikimediadc.org/wiki/$1",securewikidc:"secure.wikidc.org/$1",wmde:"wikimedia.de/wiki/$1",wmdk:"dk"+q,wmee:"ee"+q,wmec:"ec"+q,wmes:L+"wikimedia.es/wiki/$1",wmet:"ee"+q,wmfdashboard:"outreachdashboard.wmflabs.org/$1",wmfi:"fi"+q,wmfr:"wikimedia.fr/$1",wmge:"ge"+q,wmhi:"hi"+q,wmhk:"meta.wikimedia.org/wiki/Wikimedia_Hong_Kong",wmhu:"wikimedia.hu/wiki/$1",wmid:"id"+q,wmil:L+"wikimedia.org.il/$1",wmin:"wiki.wikimedia.in/$1",wmit:"wiki.wikimedia.it/wiki/$1",wmke:"meta.wikimedia.org/wiki/Wikimedia_Kenya",wmmk:"mk"+q,wmmx:"mx"+q,wmnl:"nl"+q,wmnyc:"nyc"+q,wmno:"no"+q,"wmpa-us":"pa-us"+q,wmph:"meta.wikimedia.org/wiki/Wikimedia_Philippines",wmpl:"pl"+q,wmpt:"pt"+q,wmpunjabi:"punjabi"+q,wmromd:"romd"+q,wmrs:"rs"+q,wmru:"ru"+q,wmse:"se"+q,wmsk:"wikimedia.sk/$1",wmtr:"tr"+q,wmtw:"wikimedia.tw/wiki/index.php5/$1",wmua:"ua"+q,wmuk:"wikimedia.org.uk/wiki/$1",wmve:"wikimedia.org.ve/wiki/$1",wmza:"wikimedia.org.za/wiki/$1",wm2005:"wikimania2005"+q,wm2006:"wikimania2006"+q,wm2007:"wikimania2007"+q,wm2008:"wikimania2008"+q,wm2009:"wikimania2009"+q,wm2010:"wikimania2010"+q,wm2011:"wikimania2011"+q,wm2012:"wikimania2012"+q,wm2013:"wikimania2013"+q,wm2014:"wikimania2014"+q,wm2015:"wikimania2015"+q,wm2016:"wikimania2016"+q,wm2017:"wikimania2017"+q,wm2018:"wikimania2018"+q,wmania:"wikimania"+q,wikimania:"wikimania"+q,wmteam:"wikimaniateam"+q,wmf:"foundation"+q,wmfblog:"blog.wikimedia.org/$1",wmdeblog:"blog.wikimedia.de/$1",wookieepedia:"starwars.wikia.com/wiki/$1",wowwiki:L+"wowwiki.com/$1",wqy:"wqy.sourceforge.net/cgi-bin/index.cgi?$1",wurmpedia:"wurmpedia.com/index.php/$1",viaf:"viaf.org/viaf/$1",zrhwiki:L+"zrhwiki.ch/wiki/$1",zum:"wiki.zum.de/$1",zwiki:L+"zwiki.org/$1",m:"meta"+q,meta:"meta"+q,sep11:"sep11."+N,d:L+"wikidata.org/wiki/$1",minnan:"zh-min-nan."+N,nb:"no."+N,"zh-cfr":"zh-min-nan."+N,"zh-cn":"zh."+N,"zh-tw":"zh."+N,nan:"zh-min-nan."+N,vro:"fiu-vro."+N,cmn:"zh."+N,lzh:"zh-classical."+N,rup:"roa-rup."+N,gsw:"als."+N,"be-tarask":"be-x-old."+N,sgs:"bat-smg."+N,egl:"eml."+N,w:"en."+N,wikt:"en.wiktionary.org/wiki/$1",q:"en.wikiquote.org/wiki/$1",b:"en.wikibooks.org/wiki/$1",n:"en.wikinews.org/wiki/$1",s:"en.wikisource.org/wiki/$1",chapter:"en"+q,v:"en.wikiversity.org/wiki/$1",voy:"en.wikivoyage.org/wiki/$1"};const P=C,A=T;Object.keys(P).forEach((e=>{A[e]=e+".wikipedia.org/wiki/$1"}));const D=function(e){let t=e.page||"";if(-1!==t.indexOf(":")){let i=t.match(/^(.*):(.*)/);if(null===i)return e;let a=i[1]||"";if(a=a.toLowerCase(),-1!==a.indexOf(":")){let[,t,i]=a.match(/^:?(.*):(.*)/);if(A.hasOwnProperty(t)&&!1===P.hasOwnProperty(i))return e;e.wiki={wiki:t,lang:i}}else{if(!1===A.hasOwnProperty(a))return e;e.wiki=a}e.page=i[2]}return e},I=/^:?(category|catégorie|kategorie|categoría|categoria|categorie|kategoria|تصنيف|image|file|fichier|datei|media):/i,M=/\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]| ]{4,1500})([| ].*?)?\]/g,R=/\[\[(.{0,160}?)\]\]([a-z]+)?/gi;var U=function(e){let t=[];if(t=function(e,t){return t.replace(M,(function(t,i,a,n){return n=n||"",e.push({type:"external",site:i+a,text:n.trim(),raw:t}),n})),e}(t,e),t=function(e,t){return t.replace(R,(function(t,i,a){let n=null,r=i;if(i.match(/\|/)&&(r=(i=i.replace(/\[\[(.{2,100}?)\]\](\w{0,10})/g,"$1$2")).replace(/(.{2,100})\|.{0,200}/,"$1"),n=i.replace(/.{2,100}?\|/,""),null===n&&r.match(/\|$/)&&(r=r.replace(/\|$/,""),n=r)),r.match(I))return i;let o={page:r,raw:t};return o.page=o.page.replace(/#(.*)/,((e,t)=>(o.anchor=t,""))),o=D(o),o.wiki&&(o.type="interwiki"),null!==n&&n!==o.page&&(o.text=n),a&&(o.text=o.text||o.page,o.text+=a.trim()),o.page&&!1===/^[A-Z]/.test(o.page)&&(o.text||(o.text=o.page),o.page=o.page),e.push(o),i})),e}(t,e),0!==t.length)return t};const B=U,F=new RegExp("^[ \n\t]*?#("+f.redirects.join("|")+") *?(\\[\\[.{2,180}?\\]\\])","i");var K={isRedirect:function(e){return!(!e||e.length>500)&&F.test(e)},parse:function(e){let t=e.match(F);if(t&&t[2]){return(B(t[2])||[])[0]}return{}}};const W=["table","code","score","data","categorytree","charinsert","hiero","imagemap","inputbox","nowiki","poem","references","source","syntaxhighlight","timeline"],Z="< ?(".concat(W.join("|"),") ?[^>]{0,200}?>"),H="< ?/ ?(".concat(W.join("|"),") ?>"),Y=new RegExp("".concat(Z,"[").concat("\\s\\S","]+?").concat(H),"gi");const G=function(e){return(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(Y," ")).replace(/ ?< ?(span|div|table|data) [a-zA-Z0-9=%.\-#:;'" ]{2,100}\/? ?> ?/g," ")).replace(/ ?< ?(ref) [a-zA-Z0-9=" ]{2,100}\/ ?> ?/g," ")).replace(/(.*?)<\/i>/g,"''$1''")).replace(/(.*?)<\/b>/g,"'''$1'''")).replace(/(.*?)<\/sub>/g,"{{sub|$1}}")).replace(/(.*?)<\/sup>/g,"{{sup|$1}}")).replace(/ ?<[ /]?(p|sub|sup|span|nowiki|div|table|br|tr|td|th|pre|pre2|hr)[ /]?> ?/g," ")).replace(/ ?<[ /]?(abbr|bdi|bdo|blockquote|cite|del|dfn|em|ins|kbd|mark|q|s|small)[ /]?> ?/g," ")).replace(/ ?<[ /]?h[0-9][ /]?> ?/g," ")).replace(/ ?< ?br ?\/> ?/g,"\n")).trim()};var V=function(e){return e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(//g,"")).replace(/__(NOTOC|NOEDITSECTION|FORCETOC|TOC)__/gi,"")).replace(/~{2,3}/g,"")).replace(/\r/g,"")).replace(/\u3002/g,". ")).replace(/----/g,"")).replace(/\{\{\}\}/g," – ")).replace(/\{\{\\\}\}/g," / ")).replace(/ /g," "),e=(e=(e=G(e)).replace(/\([,;: ]+\)/g,"")).replace(/\{\{(baseball|basketball) (primary|secondary) (style|color).*?\}\}/i,"")};const J=/[\\.$]/,X=function(e){return"string"!=typeof e&&(e=""),e=(e=(e=e.replace(/\\/g,"\\\\")).replace(/^\$/,"\\u0024")).replace(/\./g,"\\u002e")};var Q={encodeObj:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.keys(e);for(let i=0;ie.json(t)));a.length>0&&(i.paragraphs=a)}if(!0===t.images){let a=e.images().map((e=>e.json(t)));a.length>0&&(i.images=a)}if(!0===t.tables){let a=e.tables().map((e=>e.json(t)));a.length>0&&(i.tables=a)}if(!0===t.templates){let a=e.templates().map((e=>e.json()));a.length>0&&(i.templates=a,!0===t.encode&&i.templates.forEach((e=>te.encodeObj(e))))}if(!0===t.infoboxes){let a=e.infoboxes().map((e=>e.json(t)));a.length>0&&(i.infoboxes=a)}if(!0===t.lists){let a=e.lists().map((e=>e.json(t)));a.length>0&&(i.lists=a)}if(!0===t.references||!0===t.citations){let a=e.references().map((e=>e.json(t)));a.length>0&&(i.references=a)}return!0===t.sentences&&(i.sentences=e.sentences().map((e=>e.json(t)))),i};const ne=T,re={type:"internal"},oe=function(e){e=e||{},e=Object.assign({},re,e),Object.defineProperty(this,"data",{enumerable:!1,value:e})},se={text:function(e){void 0!==e&&(this.data.text=e);let t=this.data.text||this.data.page||"";return t=t.replace(/'{2,}/g,""),t},json:function(){let e={text:this.data.text,type:this.type()};"internal"===e.type?e.page=this.page():"interwiki"===e.type?e.wiki=this.wiki():e.site=this.site();let t=this.anchor();return t&&(e.anchor=t),e},wikitext:function(){return this.data.raw||""},page:function(e){return void 0!==e&&(this.data.page=e),this.data.page},anchor:function(e){return void 0!==e&&(this.data.anchor=e),this.data.anchor||""},wiki:function(e){return void 0!==e&&(this.data.wiki=e),this.data.wiki},type:function(e){return void 0!==e&&(this.data.type=e),this.data.type},site:function(e){return void 0!==e&&(this.data.site=e),this.data.site},href:function(){let e=this.type();if("external"===e)return this.site();let t=this.page();t=t.replace(/ /g,"_"),t=encodeURIComponent(t);let i="";if("interwiki"===e){let e=this.wiki();i="https://en.wikipedia.org/wiki/$1",ne.hasOwnProperty(e)&&(i="http://"+ne[this.wiki()]),i=i.replace(/\$1/g,t)}else i="./".concat(this.page());return this.anchor()&&(i+="#"+this.anchor()),i}};Object.keys(se).forEach((e=>{oe.prototype[e]=se[e]}));var le=oe;const ce=le,ue=U;var pe=function(e){let t=e.text,i=ue(t)||[];e.links=i.map((e=>(t=t.replace(e.raw,e.text||e.page||""),new ce(e)))),t=t.replace(/\[\[File:(.{2,80}?)\|([^\]]+)\]\](\w{0,5})/g,"$1"),e.text=t};var me=function(e){let t=[],i=[],a=e.text||"";return a=a.replace(/'''''(.{0,200}?)'''''/g,((e,a)=>(t.push(a),i.push(a),a))),a=a.replace(/''''(.{0,200}?)''''/g,((e,i)=>(t.push("'".concat(i,"'")),"'".concat(i,"'")))),a=a.replace(/'''(.{0,200}?)'''/g,((e,i)=>(t.push(i),i))),a=a.replace(/''(.{0,200}?)''/g,((e,t)=>(i.push(t),t))),e.text=a,t.length>0&&(e.fmt=e.fmt||{},e.fmt.bold=t),i.length>0&&(e.fmt=e.fmt||{},e.fmt.italic=i),e};const de=m,he=/^[0-9,.]+$/,ge={text:!0,links:!0,formatting:!0,numbers:!0};const fe=function(e,t){t=de(t,ge);let i={},a=e.text();if(!0===t.text&&(i.text=a),!0===t.numbers&&he.test(a)){let e=Number(a.replace(/,/g,""));!1===isNaN(e)&&(i.number=e)}return t.links&&e.links().length>0&&(i.links=e.links().map((e=>e.json()))),t.formatting&&e.data.fmt&&(i.formatting=e.data.fmt),i},ke=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object.defineProperty(this,"data",{enumerable:!1,value:e})},be={links:function(e){let t=this.data.links||[];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find((t=>t.page===e));return void 0===i?[]:[i]}return t},interwiki:function(){return this.links().filter((e=>void 0!==e.wiki))},bolds:function(){return this.data&&this.data.fmt&&this.data.fmt.bold&&this.data.fmt.bold||[]},italics:function(){return this.data&&this.data.fmt&&this.data.fmt.italic&&this.data.fmt.italic||[]},text:function(e){return void 0!==e&&"string"==typeof e&&(this.data.text=e),this.data.text||""},json:function(e){return fe(this,e)},wikitext:function(){return this.data.wiki||""},isEmpty:function(){return""===this.data.text}};Object.keys(be).forEach((e=>{ke.prototype[e]=be[e]}));const we={links:"link",bolds:"bold",italics:"italic"};Object.keys(we).forEach((e=>{ke.prototype[we[e]]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]}})),ke.prototype.plaintext=ke.prototype.text;var ye=ke;const xe=["ad","adj","adm","adv","al","alta","approx","apr","apt","arc","ariz","assn","asst","atty","aug","ave","ba","bc","bl","bldg","blvd","brig","bros","ca","cal","calif","capt","cca","cg","cl","cm","cmdr","co","col","colo","comdr","conn","corp","cpl","cres","ct","cyn","dak","dec","def","dept","det","dg","dist","dl","dm","dr","ea","eg","eng","esp","esq","est","etc","ex","exp","feb","fem","fig","fl oz","fl","fla","fm","fr","ft","fy","ga","gal","gb","gen","gov","hg","hon","hr","hrs","hwy","hz","ia","ida","ie","inc","inf","jan","jd","jr","jul","jun","kan","kans","kb","kg","km","kmph","lat","lb","lit","llb","lm","lng","lt","ltd","lx","ma","maj","mar","masc","mb","md","messrs","mg","mi","min","minn","misc","mister","ml","mlle","mm","mme","mph","mps","mr","mrs","ms","mstr","mt","neb","nebr","nee","no","nov","oct","okla","ont","op","ord","oz","pa","pd","penn","penna","phd","pl","pp","pref","prob","prof","pron","ps","psa","pseud","pt","pvt","qt","que","rb","rd","rep","reps","res","rev","sask","sec","sen","sens","sep","sept","sfc","sgt","sir","situ","sq ft","sq","sr","ss","st","supt","surg","tb","tbl","tbsp","tce","td","tel","temp","tenn","tex","tsp","univ","usafa","ut","va","vb","ver","vet","vitro","vivo","vol","vs","vt","wis","wisc","wr","wy","wyo","yb","µg"].concat("[^]][^]]"),ve=new RegExp("(^| |')("+xe.join("|")+")[.!?] ?$","i"),$e=/[ .'][A-Z].? *$/i,je=/\.{3,} +$/,_e=/ c\.\s$/,ze=/\p{Letter}/iu;var Oe=function(e){let t=[],i=[];if(!e||"string"!=typeof e||0===e.trim().length)return t;let a=function(e){let t=e.split(/(\n+)/);return t=t.filter((e=>e.match(/\S/))),t=t.map((function(e){return e.split(/(\S.+?[.!?]"?)(?=\s|$)/g)})),function(e){let t=[];return e.forEach((function(e){t=t.concat(e)})),t}(t)}(e);for(let e=0;ei.length)return!1;const a=e.match(/"/g);return!(a&&a.length%2!=0&&e.length<900)}(n))?i[e+1]=i[e]+(i[e+1]||""):i[e]&&i[e].length>0&&(t.push(i[e]),i[e]="");var n;return 0===t.length?[e]:t};const Ee=n,Se=pe,Ce=me,Ne=ye,qe=Oe;function Le(e){let t={wiki:e,text:e};var i;return Se(t),t.text=(i=(i=(i=t.text).replace(/\([,;: ]*\)/g,"")).replace(/\( *(; ?)+/g,"("),(i=Ee.trim_whitespace(i)).replace(/ +\.$/,".")),t=Ce(t),new Ne(t)}var Te=Le,Pe=function(e){let t=qe(e.wiki);t=t.map(Le),t[0]&&t[0].text()&&":"===t[0].text()[0]&&(t=t.slice(1)),e.sentences=t};var Ae=function(e){return e=(e=e.replace(/^\{\{/,"")).replace(/\}\}$/,"")};var De=function(e){return e=(e=(e=(e||"").trim()).toLowerCase()).replace(/_/g," ")};const Ie=/^[\p{Letter}0-9._\- '()]+=/iu,Me={template:!0,list:!0,prototype:!0},Re=function(e){let t=e.split("="),i=t[0]||"";i=i.toLowerCase().trim();let a=t.slice(1).join("=");return Me.hasOwnProperty(i)&&(i="_"+i),{key:i,val:a.trim()}};const Ue={classname:!0,style:!0,align:!0,margin:!0,left:!0,break:!0,boxsize:!0,framestyle:!0,item_style:!0,collapsible:!0,list_style_type:!0,"list-style-type":!0,colwidth:!0};const Be=Ae,Fe=De,Ke=Te,We=function(e){let t=e.split(/\n?\|/);t.forEach(((e,i)=>{null!==e&&(/\[\[[^\]]+$/.test(e)||/\{\{[^}]+$/.test(e)||e.split("{{").length!==e.split("}}").length||e.split("[[").length!==e.split("]]").length)&&(t[i+1]=t[i]+"|"+t[i+1],t[i]=null)})),t=t.filter((e=>null!==e)),t=t.map((e=>(e||"").trim()));for(let e=t.length-1;e>=0;e-=1){""===t[e]&&t.pop();break}return t},Ze=function(e,t){let i=0;return e.reduce((function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(a=a.trim(),!0===Ie.test(a)){let t=Re(a);if(t.key)return e[t.key]=t.val,e}if(t&&t[i]){e[t[i]]=a}else e.list=e.list||[],e.list.push(a);return i+=1,e}),{})},He=function(e){return Object.keys(e).forEach((t=>{!0===Ue[t.toLowerCase()]&&delete e[t],null!==e[t]&&""!==e[t]||delete e[t]})),e},Ye=function(e,t){let i=Ke(e);return"json"===t?i.json():"raw"===t?i:i.text()};var Ge=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0;e=Be(e||"");let a=We(e),n=a.shift(),r=Ze(a,t);return r=He(r),r[1]&&t[0]&&!1===r.hasOwnProperty(t[0])&&(r[t[0]]=r[1],delete r[1]),Object.keys(r).forEach((e=>{r[e]="list"!==e?Ye(r[e],i):r[e].map((e=>Ye(e,i)))})),n&&(r.template=Fe(n)),r};const Ve=Q,Je=function(e,t){Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},Xe={title:function(){let e=this.data;return e.title||e.encyclopedia||e.author||""},links:function(e){let t=[];if("number"==typeof e)return t[e];if("number"==typeof e)return t[e];if("string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find((t=>t.page()===e));return void 0===i?[]:[i]}return t||[]},text:function(){return""},wikitext:function(){return this.wiki||""},json:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.data||{};return!0===e.encode&&(t=Object.assign({},t),t=Ve.encodeObj(t)),t}};Object.keys(Xe).forEach((e=>{Je.prototype[e]=Xe[e]}));var Qe=Je;const et=Ge,tt=Te,it=Qe,at=function(e){return/^ *\{\{ *(cite|citation)/i.test(e)&&/\}\} *$/.test(e)&&!1===/citation needed/i.test(e)},nt=function(e){let t=et(e);return t.type=t.template.replace(/cite /,""),t.template="citation",t},rt=function(e){return{template:"citation",type:"inline",data:{},inline:tt(e)||{}}};var ot=function(e){let t=[],i=e._wiki;i=i.replace(/ ?([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,a){if(at(a)){let n=nt(a);n&&t.push({json:n,wiki:e}),i=i.replace(a,"")}else t.push({json:rt(a),wiki:e});return" "})),i=i.replace(/ ?]{0,200}?\/> ?/gi," "),i=i.replace(/ ?]{0,200}>([\s\S]{0,1800}?)<\/ref> ?/gi,(function(e,a){if(at(a)){let e=nt(a);e&&t.push({json:e,wiki:a}),i=i.replace(a,"")}else t.push({json:rt(a),wiki:e});return" "})),i=i.replace(/ ?<[ /]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ /]?> ?/g," "),e._references=t.map((e=>new it(e.json,e.wiki))),e._wiki=i};const{trim_whitespace:st}=n,lt=Te,ct=ot,ut=/^(={1,5})(.{1,200}?)={1,5}$/;var pt=function(e,t){let i=t.match(ut);if(!i)return e.title="",e.depth=0,e;let a=i[2]||"";a=lt(a).text(),a=a.replace(/\{\{.+?\}\}/,"");let n={_wiki:a};ct(n),a=n._wiki,a=st(a);let r=0;return i[1]&&(r=i[1].length-2),e.title=a,e.depth=r,e};const mt=/.*rowspan *= *["']?([0-9]+)["']?[ |]*/,dt=/.*colspan *= *["']?([0-9]+)["']?[ |]*/;const ht=Te,gt=function(e){let t=[],i=[];e=function(e){return e=e.filter((e=>e&&!0!==/^\|\+/.test(e))),!0===/^\{\|/.test(e[0])&&e.shift(),!0===/^\|\}/.test(e[e.length-1])&&e.pop(),!0===/^\|-/.test(e[0])&&e.shift(),e}(e);for(let a=0;a0&&(t.push(i),i=[]):(n=n.split(/(?:\|\||!!)/),!n[0]&&n[1]&&n.shift(),n.forEach((e=>{e=(e=e.replace(/^\| */,"")).trim(),i.push(e)})))}return i.length>0&&t.push(i),t},ft=function(e){return e=function(e){return e.forEach(((t,i)=>{t.forEach(((a,n)=>{let r=a.match(mt);if(null!==r){let o=parseInt(r[1],10);a=a.replace(mt,""),t[n]=a;for(let t=i+1;t{e.forEach(((t,i)=>{let a=t.match(dt);if(null!==a){let n=parseInt(a[1],10);e[i]=t.replace(dt,"");for(let t=1;te.length>0))}(e))},kt=/^!/,bt={name:!0,age:!0,born:!0,date:!0,year:!0,city:!0,country:!0,population:!0,count:!0,number:!0},wt=function(e){return(e=ht(e).text()).match(/\|/)&&(e=e.replace(/.+\| ?/,"")),e=(e=(e=e.replace(/style=['"].*?["']/,"")).replace(/^!/,"")).trim()},yt=function(e){return(e=e||[]).length-e.filter((e=>e)).length>3},xt=function(e){if(e.length<=3)return[];let t=e[0].slice(0);t=t.map((e=>(e=e.replace(/^! */,""),e=ht(e).text(),e=(e=wt(e)).toLowerCase())));for(let i=0;ie.trim())),i=gt(t);if(i=i.filter((e=>e)),0===i.length)return[];i=function(e){return e.filter((e=>1!==e.length||!e[0]||!kt.test(e[0])||!1!==/rowspan/i.test(e[0])))}(i),i=ft(i);let a=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];yt(e[0])&&e.shift();let i=e[0];return i&&i[0]&&i[1]&&(/^!/.test(i[0])||/^!/.test(i[1]))&&(t=i.map((e=>(e=e.replace(/^! */,""),wt(e)))),e.shift()),i=e[0],i&&i[0]&&i[1]&&/^!/.test(i[0])&&/^!/.test(i[1])&&(i.forEach(((e,i)=>{e=e.replace(/^! */,""),e=wt(e),!0===Boolean(e)&&(t[i]=e)})),e.shift()),t}(i);if(!a||a.length<=1){a=xt(i);let e=i[i.length-1]||[];a.length<=1&&e.length>2&&(a=xt(i.slice(1)),a.length>0&&(i=i.slice(2)))}let n=i.map((e=>function(e,t){let i={};return e.forEach(((e,a)=>{let n=t[a]||"col"+(a+1),r=ht(e);r.text(wt(r.text())),i[n]=r})),i}(e,a)));return n};const $t=Q;var jt=function(e,t){return e.map((e=>{let i={};return Object.keys(e).forEach((t=>{i[t]=e[t].json()})),!0===t.encode&&(i=$t.encodeObj(i)),i}))};const _t=m,zt=jt,Ot={},Et=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e=e.toLowerCase(),e=e.replace(/[_-]/g," "),e=e.replace(/\(.*?\)/,""),e=e.trim(),e},St=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"_wiki",{enumerable:!1,value:t})},Ct={links(e){let t=[];if(this.data.forEach((e=>{Object.keys(e).forEach((i=>{t=t.concat(e[i].links())}))})),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find((t=>t.page()===e));return void 0===i?[]:[i]}return t},get(e){let t=this.data[0]||{},i=Object.keys(t).reduce(((e,t)=>(e[Et(t)]=t,e)),{});if("string"==typeof e){let t=Et(e);return t=i[t]||t,this.data.map((e=>e[t]?e[t].text():null))}return e=e.map(Et).map((e=>i[e]||e)),this.data.map((t=>e.reduce(((e,i)=>(t[i]?e[i]=t[i].text():e[i]="",e)),{})))},keyValue(e){let t=this.json(e);return t.forEach((e=>{Object.keys(e).forEach((t=>{e[t]=e[t].text}))})),t},json(e){return e=_t(e,Ot),zt(this.data,e)},text:()=>"",wikitext(){return this._wiki||""}};Ct.keyvalue=Ct.keyValue,Ct.keyval=Ct.keyValue,Object.keys(Ct).forEach((e=>{St.prototype[e]=Ct[e]}));var Nt=St;const qt=vt,Lt=Nt,Tt=/^\s*\{\|/,Pt=/^\s*\|\}/;var At=function(e){let t=[],i=e._wiki,a=i.split("\n"),n=[];for(let e=0;e0&&(n[n.length-1]+="\n"+a[e]);else{n[n.length-1]+="\n"+a[e];let i=n.pop();t.push(i)}else n.push(a[e]);let r=[];t.forEach((e=>{if(e){i=i.replace(e+"\n",""),i=i.replace(e,"");let t=qt(e);t&&t.length>0&&r.push(new Lt(t,e))}})),r.length>0&&(e._tables=r),e._wiki=i};const Dt=m,It={sentences:!0};const Mt=function(e,t){let i={};return!0===(t=Dt(t,It)).sentences&&(i.sentences=e.sentences().map((e=>e.json(t)))),i},Rt=m,Ut={sentences:!0,lists:!0,images:!0},Bt=function(e){Object.defineProperty(this,"data",{enumerable:!1,value:e})},Ft={sentences:function(){return this.data.sentences||[]},references:function(){return this.data.references},lists:function(){return this.data.lists},images(){return this.data.images||[]},links:function(e){let t=[];if(this.sentences().forEach((i=>{t=t.concat(i.links(e))})),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find((t=>t.page()===e));return void 0===i?[]:[i]}return t||[]},interwiki(){let e=[];return this.sentences().forEach((t=>{e=e.concat(t.interwiki())})),e||[]},text:function(e){e=Rt(e,Ut);let t=this.sentences().map((t=>t.text(e))).join(" ");return this.lists().forEach((e=>{t+="\n"+e.text()})),t},json:function(e){return e=Rt(e,Ut),Mt(this,e)},wikitext:function(){return this.data.wiki}};Ft.citations=Ft.references,Object.keys(Ft).forEach((e=>{Bt.prototype[e]=Ft[e]}));const Kt={sentences:"sentence",references:"reference",citation:"citations",lists:"list",images:"image",links:"link"};Object.keys(Kt).forEach((e=>{Bt.prototype[Kt[e]]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]}}));var Wt=Bt;var Zt=function(e){let t=[],i=[];const a=e.split("");let n=0;for(let r=0;r0){let e=0,a=0;for(let t=0;ta&&i.push("]"),t.push(i.join("")),i=[]}}return t};const Ht=f,Yt=S,Gt=Ge,Vt=Te,Jt=Zt,Xt=new RegExp("("+Ht.images.join("|")+"):","i");let Qt="(".concat(Ht.images.join("|"),")");const ei=new RegExp(Qt+":(.+?)[\\||\\]]","iu"),ti={thumb:!0,thumbnail:!0,border:!0,right:!0,left:!0,center:!0,top:!0,bottom:!0,none:!0,upright:!0,baseline:!0,middle:!0,sub:!0,super:!0};var ii=function(e,t){let i=e.wiki;Jt(i).forEach((function(a){if(!0===Xt.test(a)){e.images=e.images||[];let n=function(e,t){let i=e.match(ei);if(null===i||!i[2])return null;let a="".concat(i[1],":").concat(i[2]||"");a=a.trim();let n=a.charAt(0).toUpperCase()+a.substring(1);if(n=n.replace(/ /g,"_"),n){let i={file:a,lang:t._lang,domain:t._domain,wiki:e};e=(e=e.replace(/^\[\[/,"")).replace(/\]\]$/,"");let n=Gt(e),r=n.list||[];return n.alt&&(i.alt=n.alt),r=r.filter((e=>!1===ti.hasOwnProperty(e))),r[r.length-1]&&(i.caption=Vt(r[r.length-1])),new Yt(i)}return null}(a,t);n&&e.images.push(n),i=i.replace(a,"")}})),e.wiki=i};const ai=m,ni={},ri=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},oi={lines(){return this.data},links(e){let t=[];if(this.lines().forEach((e=>{t=t.concat(e.links())})),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find((t=>t.page()===e));return void 0===i?[]:[i]}return t},json(e){return e=ai(e,ni),this.lines().map((t=>t.json(e)))},text(){return((e,t)=>e.map((e=>" * "+e.text(t))).join("\n"))(this.data)},wikitext(){return this.wiki||""}};Object.keys(oi).forEach((e=>{ri.prototype[e]=oi[e]}));var si=ri;const li=si,ci=Te,ui=/^[#*:;|]+/,pi=/^\*+[^:,|]{4}/,mi=/^ ?#[^:,|]{4}/,di=/[a-z_0-9\]}]/i,hi=function(e){return ui.test(e)||pi.test(e)||mi.test(e)},gi=function(e,t){let i=[];for(let a=t;ae&&di.test(e))),i=function(e){let t=1;e=e.filter((e=>e));for(let i=0;i0&&(a.push(t),e+=t.length-1)}else n.push(i[e]);e.lists=a.map((e=>new li(e,t))),e.wiki=n.join("\n")}};var yi=function(e,t){let i=e._wiki,a=i.split(bi);a=a.filter((e=>e&&e.trim().length>0)),a=a.map((e=>{let i={wiki:e,lists:[],sentences:[],images:[]};return wi.list(i),wi.image(i,t),ki(i),new fi(i)})),e._wiki=i,e._paragraphs=a};var xi=function(e){let t=0,i=[],a=[];for(let n=e.indexOf("{");-1!==n&&n0?n++:n=e.indexOf("{",n+1)){let r=e[n];if("{"===r&&(t+=1),t>0){if("}"===r&&(t-=1,0===t)){a.push(r);let e=a.join("");a=[],/\{\{/.test(e)&&/\}\}/.test(e)&&i.push(e);continue}if(1===t&&"{"!==r&&"}"!==r){t=0,a=[];continue}a.push(r)}}return i};const vi=De;const $i=xi,ji=function(e){let t=null;return t=/^\{\{[^\n]+\|/.test(e)?(e.match(/^\{\{(.+?)\|/)||[])[1]:-1!==e.indexOf("\n")?(e.match(/^\{\{(.+)\n/)||[])[1]:(e.match(/^\{\{(.+?)\}\}$/)||[])[1],t&&(t=t.replace(/:.*/,""),t=vi(t)),t||null},_i=/\{\{/,zi=function(e){return{body:e=e.replace(/#invoke:/,""),name:ji(e),children:[]}},Oi=function(e){let t=e.body.substr(2);return t=t.replace(/\}\}$/,""),e.children=$i(t),e.children=e.children.map(zi),0===e.children.length||e.children.forEach((e=>{let t=e.body.substr(2);return _i.test(t)?Oi(e):null})),e};var Ei=function(e){let t=$i(e);return t=t.map(zi),t=t.map(Oi),t};var Si=["anchor","defaultsort","use list-defined references","void","pp","pp-move-indef","pp-semi-indef","pp-vandalism","r","#tag","div col","pope list end","shipwreck list end","starbox end","end box","end","s-end"].reduce(((e,t)=>(e[t]=!0,e)),{}),Ci={"gnf protein box":!0,"automatic taxobox":!0,"chembox ":!0,editnotice:!0,geobox:!0,hybridbox:!0,ichnobox:!0,infraspeciesbox:!0,mycomorphbox:!0,oobox:!0,"paraphyletic group":!0,speciesbox:!0,subspeciesbox:!0,"starbox short":!0,taxobox:!0,nhlteamseason:!0,"asian games bid":!0,"canadian federal election results":!0,"dc thomson comic strip":!0,"daytona 24 races":!0,edencharacter:!0,"moldova national football team results":!0,samurai:!0,protein:!0,"sheet authority":!0,"order-of-approx":!0,"bacterial labs":!0,"medical resources":!0,ordination:!0,"hockey team coach":!0,"hockey team gm":!0,"pro hockey team":!0,"hockey team player":!0,"hockey team start":!0,mlbbioret:!0};const Ni=Ci,qi=new RegExp("^(subst.)?("+f.infoboxes.join("|")+")[: \n]","i"),Li=/^infobox /i,Ti=/ infobox$/i,Pi=/^year in [A-Z]/i;var Ai={isInfobox:function(e){return!0===Ni.hasOwnProperty(e)||(!!qi.test(e)||(!(!Li.test(e)&&!Ti.test(e))||!!Pi.test(e)))},format:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.template.match(qi),i=e.template;t&&t[0]&&(i=i.replace(t[0],"")),i=i.trim();let a={template:"infobox",type:i,data:e};return delete a.data.template,delete a.data.list,a}};const Di=C;let Ii={imdb:"imdb name","imdb episodess":"imdb episode",localday:"currentday",localdayname:"currentdayname",localyear:"currentyear","birth date based on age at death":"birth based on age as of date","bare anchored list":"anchored list",cvt:"convert",cricon:"flagicon",sfrac:"frac",sqrt:"radic","unreferenced section":"unreferenced",redir:"redirect",sisterlinks:"sister project links","main article":"main"},Mi={date:["byline","dateline"],citation:["cite","source","source-pr","source-science"],flagcountry:["cr","cr-rt"],trunc:["str left","str crop"],percentage:["pct","percentage"],rnd:["rndfrac","rndnear"],abbr:["tooltip","abbrv","define"],sfn:["sfnref","harvid","harvnb"],"birth date and age":["death date and age","bda"],currentmonth:["localmonth","currentmonthname","currentmonthabbrev"],currency:["monnaie","unité","nombre","nb","iso4217"],coord:["coor","coor title dms","coor title dec","coor dms","coor dm","coor dec"],"columns-list":["cmn","col-list","columnslist","collist"],nihongo:["nihongo2","nihongo3","nihongo-s","nihongo foot"],plainlist:["flatlist","plain list"],"winning percentage":["winpct","winperc"],"collapsible list":["nblist","nonbulleted list","ubl","ublist","ubt","unbullet","unbulleted list","unbulleted","unbulletedlist","vunblist"],"election box begin":["election box begin no change","election box begin no party","election box begin no party no change","election box inline begin","election box inline begin no change"],"election box candidate":["election box candidate for alliance","election box candidate minor party","election box candidate no party link no change","election box candidate with party link","election box candidate with party link coalition 1918","election box candidate with party link no change","election box inline candidate","election box inline candidate no change","election box inline candidate with party link","election box inline candidate with party link no change","election box inline incumbent"],"4teambracket":["2teambracket","4team2elimbracket","8teambracket","16teambracket","32teambracket","4roundbracket-byes","cwsbracket","nhlbracket","nhlbracket-reseed","4teambracket-nhl","4teambracket-ncaa","4teambracket-mma","4teambracket-mlb","16teambracket-two-reseeds","8teambracket-nhl","8teambracket-mlb","8teambracket-ncaa","8teambracket-afc","8teambracket-afl","8teambracket-tennis3","8teambracket-tennis5","16teambracket-nhl","16teambracket-nhl divisional","16teambracket-nhl-reseed","16teambracket-nba","16teambracket-swtc","16teambracket-afc","16teambracket-tennis3","16teambracket-tennis5"],start:["end","birth","death","start date","end date","birth date","death date","start date and age","end date and age","dob"],"start-date":["end-date","birth-date","death-date","birth-date and age","birth-date and given age","death-date and age","death-date and given age"],tl:["lts","t","tfd links","tiw","tltt","tetl","tsetl","ti","tic","tiw","tlt","ttl","twlh","tl2","tlu","demo","hatnote","xpd","para","elc","xtag","mli","mlix","#invoke","url"]};Object.keys(Di).forEach((e=>{Ii["ipa-"+e]="ipa",Ii["ipac-"+e]="ipac"})),Object.keys(Mi).forEach((e=>{Mi[e].forEach((t=>{Ii[t]=e}))}));var Ri=Ii;const Ui=C;let Bi={p1:0,p2:1,p3:2,resize:1,lang:1,"rtl-lang":1,l:2,h:1,sort:1};["defn","lino","finedetail","nobold","noitalic","nocaps","vanchor","rnd","date","taste","monthname","baseball secondary style","lang-de","nowrap","nobr","big","cquote","pull quote","small","smaller","midsize","larger","big","kbd","bigger","large","mono","strongbad","stronggood","huge","xt","xt2","!xt","xtn","xtd","dc","dcr","mxt","!mxt","mxtn","mxtd","bxt","!bxt","bxtn","bxtd","delink","pre","var","mvar","pre2","code"].forEach((e=>{Bi[e]=0})),Object.keys(Ui).forEach((e=>{Bi["lang-"+e]=0}));var Fi=Bi;const Ki=C;var Wi={titlecase:e=>e.charAt(0).toUpperCase()+e.substring(1),sisterProjects:{wikt:"wiktionary",commons:"commons",c:"commons",commonscat:"commonscat",n:"wikinews",q:"wikiquote",s:"wikisource",a:"wikiauthor",b:"wikibooks",voy:"wikivoyage",v:"wikiversity",d:"wikidata",species:"wikispecies",m:"meta",mw:"mediawiki"},getLang:function(e){let t=e.match(/ipac?-(.+)/);return null!==t?!0===Ki.hasOwnProperty(t[1])?Ki[t[1]].english_title:t[1]:null},percentage:function(e){if(!e.numerator&&!e.denominator)return null;let t=Number(e.numerator)/Number(e.denominator);t*=100;let i=Number(e.decimals);return isNaN(i)&&(i=1),t=t.toFixed(i),Number(t)},toNumber:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if("number"==typeof e)return e;e=e.replace(/,/g,""),e=e.replace(/−/g,"-");let t=Number(e);return isNaN(t)?e:t}};const Zi=Ge,Hi=Ae,Yi=Wi;var Gi={ra:e=>{let t=Zi(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},deg2hms:e=>(Zi(e,["degrees"]).degrees||"")+"°",hms2deg:e=>{let t=Zi(e,["hours","minutes","seconds"]);return[t.hours||0,t.minutes||0,t.seconds||0].join(":")},decdeg:e=>{let t=Zi(e,["deg","min","sec","hem","rnd"]);return(t.deg||t.degrees)+"°"},sortname:e=>{let t=Zi(e,["first","last","target","sort"]),i="".concat(t.first||""," ").concat(t.last||"");return i=i.trim(),t.nolink?t.target||i:(t.dab&&(i+=" (".concat(t.dab,")"),t.target&&(t.target+=" (".concat(t.dab,")"))),t.target?"[[".concat(t.target,"|").concat(i,"]]"):"[[".concat(i,"]]"))},"first word":e=>{let t=Zi(e,["text"]),i=t.text;return t.sep?i.split(t.sep)[0]:i.split(" ")[0]},trunc:e=>{let t=Zi(e,["str","len"]);return t.str.substr(0,t.len)},"str mid":e=>{let t=Zi(e,["str","start","end"]),i=parseInt(t.start,10)-1,a=parseInt(t.end,10);return t.str.substr(i,a)},reign:e=>{let t=Zi(e,["start","end"]);return"(r. ".concat(t.start," – ").concat(t.end,")")},circa:e=>{let t=Zi(e,["year"]);return"c. ".concat(t.year)},"decade link":e=>{let t=Zi(e,["year"]);return"".concat(t.year,"|").concat(t.year,"s")},decade:e=>{let t=Zi(e,["year"]),i=Number(t.year);return i=10*parseInt(i/10,10),"".concat(i,"s")},century:e=>{let t=Zi(e,["year"]),i=Number(t.year);return i=parseInt(i/100,10)+1,"".concat(i)},radic:e=>{let t=Zi(e,["after","before"]);return"".concat(t.before||"","√").concat(t.after||"")},"medical cases chart/row":e=>e,oldstyledate:e=>{let t=Zi(e,["date","year"]);return t.year?t.date+" "+t.year:t.date},braces:e=>{let t=Zi(e,["text"]),i="";return t.list&&(i="|"+t.list.join("|")),"{{"+(t.text||"")+i+"}}"},hlist:e=>{let t=Zi(e);return t.list=t.list||[],t.list.join(" · ")},pagelist:e=>(Zi(e).list||[]).join(", "),catlist:e=>(Zi(e).list||[]).join(", "),"br separated entries":e=>(Zi(e).list||[]).join("\n\n"),"comma separated entries":e=>(Zi(e).list||[]).join(", "),"anchored list":e=>{let t=Zi(e).list||[];return t=t.map(((e,t)=>"".concat(t+1,". ").concat(e))),t.join("\n\n")},"bulleted list":e=>{let t=Zi(e).list||[];return t=t.filter((e=>e)),t=t.map((e=>"• "+e)),t.join("\n\n")},plainlist:e=>{let t=(e=Hi(e)).split("|").slice(1);return t=t.join("|").split(/\n ?\* ?/),t=t.filter((e=>e)),t.join("\n\n")},term:e=>{let t=Zi(e,["term"]);return"".concat(t.term,":")},linum:e=>{let t=Zi(e,["num","text"]);return"".concat(t.num,". ").concat(t.text)},"block indent":e=>{let t=Zi(e);return t[1]?"\n"+t[1]+"\n":""},lbs:e=>{let t=Zi(e,["text"]);return"[[".concat(t.text," Lifeboat Station|").concat(t.text,"]]")},lbc:e=>{let t=Zi(e,["text"]);return"[[".concat(t.text,"-class lifeboat|").concat(t.text,"-class]]")},lbb:e=>{let t=Zi(e,["text"]);return"[[".concat(t.text,"-class lifeboat|").concat(t.text,"]]")},"#dateformat":e=>(e=e.replace(/:/,"|"),Zi(e,["date","format"]).date),lc:e=>(e=e.replace(/:/,"|"),(Zi(e,["text"]).text||"").toLowerCase()),uc:e=>(e=e.replace(/:/,"|"),(Zi(e,["text"]).text||"").toUpperCase()),lcfirst:e=>{e=e.replace(/:/,"|");let t=Zi(e,["text"]).text;return t?t[0].toLowerCase()+t.substr(1):""},ucfirst:e=>{e=e.replace(/:/,"|");let t=Zi(e,["text"]).text;return t?t[0].toUpperCase()+t.substr(1):""},padleft:e=>{e=e.replace(/:/,"|");let t=Zi(e,["text","num"]);return(t.text||"").padStart(t.num,t.str||"0")},padright:e=>{e=e.replace(/:/,"|");let t=Zi(e,["text","num"]);return(t.text||"").padEnd(t.num,t.str||"0")},abbrlink:e=>{let t=Zi(e,["abbr","page"]);return t.page?"[[".concat(t.page,"|").concat(t.abbr,"]]"):"[[".concat(t.abbr,"]]")},own:e=>{let t=Zi(e,["author"]),i="Own work";return t.author&&(i+=" by "+t.author),i},formatnum:e=>{e=e.replace(/:/,"|");let t=Zi(e,["number"]).number||"";return t=t.replace(/,/g,""),Number(t).toLocaleString()||""},frac:e=>{let t=Zi(e,["a","b","c"]);return t.c?"".concat(t.a," ").concat(t.b,"/").concat(t.c):t.b?"".concat(t.a,"/").concat(t.b):"1/".concat(t.b)},convert:e=>{let t=Zi(e,["num","two","three","four"]);return"-"===t.two||"to"===t.two||"and"===t.two?t.four?"".concat(t.num," ").concat(t.two," ").concat(t.three," ").concat(t.four):"".concat(t.num," ").concat(t.two," ").concat(t.three):"".concat(t.num," ").concat(t.two)},tl:e=>{let t=Zi(e,["first","second"]);return t.second||t.first},won:e=>{let t=Zi(e,["text"]);return t.place||t.text||Yi.titlecase(t.template)},tag:e=>{let t=Zi(e,["tag","open"]);const i={span:!0,div:!0,p:!0};return t.open&&"pair"!==t.open?"":i[t.tag]?t.content||"":"<".concat(t.tag," ").concat(t.attribs||"",">").concat(t.content||"","")},plural:e=>{e=e.replace(/plural:/,"plural|");let t=Zi(e,["num","word"]),i=Number(t.num),a=t.word;return 1!==i&&(/.y$/.test(a)?a=a.replace(/y$/,"ies"):a+="s"),i+" "+a},dec:e=>{let t=Zi(e,["degrees","minutes","seconds"]),i=(t.degrees||0)+"°";return t.minutes&&(i+=t.minutes+"′"),t.seconds&&(i+=t.seconds+"″"),i},val:e=>{let t=Zi(e,["number","uncertainty"]),i=t.number;i&&Number(i)&&(i=Number(i).toLocaleString());let a=i||"";return t.p&&(a=t.p+a),t.s&&(a=t.s+a),(t.u||t.ul||t.upl)&&(a=a+" "+(t.u||t.ul||t.upl)),a},percentage:e=>{let t=Zi(e,["numerator","denominator","decimals"]),i=Yi.percentage(t);return null===i?"":i+"%"},"percent-done":e=>{let t=Zi(e,["done","total","digits"]),i=Yi.percentage({numerator:t.done,denominator:t.total,decimals:t.digits});return null===i?"":"".concat(t.done," (").concat(i,"%) done")}},Vi=[["🇦🇩","and","andorra"],["🇦🇪","are","united arab emirates"],["🇦🇫","afg","afghanistan"],["🇦🇬","atg","antigua and barbuda"],["🇦🇮","aia","anguilla"],["🇦🇱","alb","albania"],["🇦🇲","arm","armenia"],["🇦🇴","ago","angola"],["🇦🇶","ata","antarctica"],["🇦🇷","arg","argentina"],["🇦🇸","asm","american samoa"],["🇦🇹","aut","austria"],["🇦🇺","aus","australia"],["🇦🇼","abw","aruba"],["🇦🇽","ala","åland islands"],["🇦🇿","aze","azerbaijan"],["🇧🇦","bih","bosnia and herzegovina"],["🇧🇧","brb","barbados"],["🇧🇩","bgd","bangladesh"],["🇧🇪","bel","belgium"],["🇧🇫","bfa","burkina faso"],["🇧🇬","bgr","bulgaria"],["🇧🇬","bul","bulgaria"],["🇧🇭","bhr","bahrain"],["🇧🇮","bdi","burundi"],["🇧🇯","ben","benin"],["🇧🇱","blm","saint barthélemy"],["🇧🇲","bmu","bermuda"],["🇧🇳","brn","brunei darussalam"],["🇧🇴","bol","bolivia"],["🇧🇶","bes","bonaire, sint eustatius and saba"],["🇧🇷","bra","brazil"],["🇧🇸","bhs","bahamas"],["🇧🇹","btn","bhutan"],["🇧🇻","bvt","bouvet island"],["🇧🇼","bwa","botswana"],["🇧🇾","blr","belarus"],["🇧🇿","blz","belize"],["🇨🇦","can","canada"],["🇨🇨","cck","cocos (keeling) islands"],["🇨🇩","cod","congo"],["🇨🇫","caf","central african republic"],["🇨🇬","cog","congo"],["🇨🇭","che","switzerland"],["🇨🇮","civ","côte d'ivoire"],["🇨🇰","cok","cook islands"],["🇨🇱","chl","chile"],["🇨🇲","cmr","cameroon"],["🇨🇳","chn","china"],["🇨🇴","col","colombia"],["🇨🇷","cri","costa rica"],["🇨🇺","cub","cuba"],["🇨🇻","cpv","cape verde"],["🇨🇼","cuw","curaçao"],["🇨🇽","cxr","christmas island"],["🇨🇾","cyp","cyprus"],["🇨🇿","cze","czech republic"],["🇩🇪","deu","germany"],["🇩🇪","ger","germany"],["🇩🇯","dji","djibouti"],["🇩🇰","dnk","denmark"],["🇩🇲","dma","dominica"],["🇩🇴","dom","dominican republic"],["🇩🇿","dza","algeria"],["🇪🇨","ecu","ecuador"],["🇪🇪","est","estonia"],["🇪🇬","egy","egypt"],["🇪🇭","esh","western sahara"],["🇪🇷","eri","eritrea"],["🇪🇸","esp","spain"],["🇪🇹","eth","ethiopia"],["🇫🇮","fin","finland"],["🇫🇯","fji","fiji"],["🇫🇰","flk","falkland islands (malvinas)"],["🇫🇲","fsm","micronesia"],["🇫🇴","fro","faroe islands"],["🇫🇷","fra","france"],["🇬🇦","gab","gabon"],["🇬🇧","gbr","united kingdom"],["🇬🇩","grd","grenada"],["🇬🇫","guf","french guiana"],["🇬🇬","ggy","guernsey"],["🇬🇭","gha","ghana"],["🇬🇮","gib","gibraltar"],["🇬🇱","grl","greenland"],["🇬🇲","gmb","gambia"],["🇬🇳","gin","guinea"],["🇬🇵","glp","guadeloupe"],["🇬🇶","gnq","equatorial guinea"],["🇬🇷","grc","greece"],["🇬🇸","sgs","south georgia"],["🇬🇹","gtm","guatemala"],["🇬🇺","gum","guam"],["🇬🇼","gnb","guinea-bissau"],["🇬🇾","guy","guyana"],["🇭🇰","hkg","hong kong"],["🇭🇲","hmd","heard island and mcdonald islands"],["🇭🇳","hnd","honduras"],["🇭🇷","hrv","croatia"],["🇭🇹","hti","haiti"],["🇭🇺","hun","hungary"],["🇮🇩","idn","indonesia"],["🇮🇪","irl","ireland"],["🇮🇱","isr","israel"],["🇮🇲","imn","isle of man"],["🇮🇳","ind","india"],["🇮🇴","iot","british indian ocean territory"],["🇮🇶","irq","iraq"],["🇮🇷","irn","iran"],["🇮🇸","isl","iceland"],["🇮🇹","ita","italy"],["🇯🇪","jey","jersey"],["🇯🇲","jam","jamaica"],["🇯🇴","jor","jordan"],["🇯🇵","jpn","japan"],["🇰🇪","ken","kenya"],["🇰🇬","kgz","kyrgyzstan"],["🇰🇭","khm","cambodia"],["🇰🇮","kir","kiribati"],["🇰🇲","com","comoros"],["🇰🇳","kna","saint kitts and nevis"],["🇰🇵","prk","north korea"],["🇰🇷","kor","south korea"],["🇰🇼","kwt","kuwait"],["🇰🇾","cym","cayman islands"],["🇰🇿","kaz","kazakhstan"],["🇱🇦","lao","lao people's democratic republic"],["🇱🇧","lbn","lebanon"],["🇱🇨","lca","saint lucia"],["🇱🇮","lie","liechtenstein"],["🇱🇰","lka","sri lanka"],["🇱🇷","lbr","liberia"],["🇱🇸","lso","lesotho"],["🇱🇹","ltu","lithuania"],["🇱🇺","lux","luxembourg"],["🇱🇻","lva","latvia"],["🇱🇾","lby","libya"],["🇲🇦","mar","morocco"],["🇲🇨","mco","monaco"],["🇲🇩","mda","moldova"],["🇲🇪","mne","montenegro"],["🇲🇫","maf","saint martin (french part)"],["🇲🇬","mdg","madagascar"],["🇲🇭","mhl","marshall islands"],["🇲🇰","mkd","macedonia"],["🇲🇱","mli","mali"],["🇲🇲","mmr","myanmar"],["🇲🇳","mng","mongolia"],["🇲🇴","mac","macao"],["🇲🇵","mnp","northern mariana islands"],["🇲🇶","mtq","martinique"],["🇲🇷","mrt","mauritania"],["🇲🇸","msr","montserrat"],["🇲🇹","mlt","malta"],["🇲🇺","mus","mauritius"],["🇲🇻","mdv","maldives"],["🇲🇼","mwi","malawi"],["🇲🇽","mex","mexico"],["🇲🇾","mys","malaysia"],["🇲🇿","moz","mozambique"],["🇳🇦","nam","namibia"],["🇳🇨","ncl","new caledonia"],["🇳🇪","ner","niger"],["🇳🇫","nfk","norfolk island"],["🇳🇬","nga","nigeria"],["🇳🇮","nic","nicaragua"],["🇳🇱","nld","netherlands"],["🇳🇴","nor","norway"],["🇳🇵","npl","nepal"],["🇳🇷","nru","nauru"],["🇳🇺","niu","niue"],["🇳🇿","nzl","new zealand"],["🇴🇲","omn","oman"],["🇵🇦","pan","panama"],["🇵🇪","per","peru"],["🇵🇫","pyf","french polynesia"],["🇵🇬","png","papua new guinea"],["🇵🇭","phl","philippines"],["🇵🇰","pak","pakistan"],["🇵🇱","pol","poland"],["🇵🇲","spm","saint pierre and miquelon"],["🇵🇳","pcn","pitcairn"],["🇵🇷","pri","puerto rico"],["🇵🇸","pse","palestinian territory"],["🇵🇹","prt","portugal"],["🇵🇼","plw","palau"],["🇵🇾","pry","paraguay"],["🇶🇦","qat","qatar"],["🇷🇪","reu","réunion"],["🇷🇴","rou","romania"],["🇷🇸","srb","serbia"],["🇷🇺","rus","russia"],["🇷🇼","rwa","rwanda"],["🇸🇦","sau","saudi arabia"],["🇸🇧","slb","solomon islands"],["🇸🇨","syc","seychelles"],["🇸🇩","sdn","sudan"],["🇸🇪","swe","sweden"],["🇸🇬","sgp","singapore"],["🇸🇭","shn","saint helena, ascension and tristan da cunha"],["🇸🇮","svn","slovenia"],["🇸🇯","sjm","svalbard and jan mayen"],["🇸🇰","svk","slovakia"],["🇸🇱","sle","sierra leone"],["🇸🇲","smr","san marino"],["🇸🇳","sen","senegal"],["🇸🇴","som","somalia"],["🇸🇷","sur","suriname"],["🇸🇸","ssd","south sudan"],["🇸🇹","stp","sao tome and principe"],["🇸🇻","slv","el salvador"],["🇸🇽","sxm","sint maarten (dutch part)"],["🇸🇾","syr","syrian arab republic"],["🇸🇿","swz","swaziland"],["🇹🇨","tca","turks and caicos islands"],["🇹🇩","tcd","chad"],["🇹🇫","atf","french southern territories"],["🇹🇬","tgo","togo"],["🇹🇭","tha","thailand"],["🇹🇯","tjk","tajikistan"],["🇹🇰","tkl","tokelau"],["🇹🇱","tls","timor-leste"],["🇹🇲","tkm","turkmenistan"],["🇹🇳","tun","tunisia"],["🇹🇴","ton","tonga"],["🇹🇷","tur","turkey"],["🇹🇹","tto","trinidad and tobago"],["🇹🇻","tuv","tuvalu"],["🇹🇼","twn","taiwan"],["🇹🇿","tza","tanzania"],["🇺🇦","ukr","ukraine"],["🇺🇬","uga","uganda"],["🇺🇲","umi","united states minor outlying islands"],["🇺🇸","us","united states"],["🇺🇸","usa","united states"],["🇺🇾","ury","uruguay"],["🇺🇿","uzb","uzbekistan"],["🇻🇦","vat","vatican city"],["🇻🇨","vct","saint vincent and the grenadines"],["🇻🇪","ven","venezuela"],["🇻🇬","vgb","virgin islands, british"],["🇻🇮","vir","virgin islands, u.s."],["🇻🇳","vnm","viet nam"],["🇻🇺","vut","vanuatu"],["🇼🇫","wlf","wallis and futuna"],["🇼🇸","wsm","samoa"],["🇾🇪","yem","yemen"],["🇾🇹","myt","mayotte"],["🇿🇦","zaf","south africa"],["🇿🇲","zmb","zambia"],["🇿🇼 ","zwe","zimbabwe"],["🇺🇳","un","united nations"],["🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿","eng","england"],["🏴󠁧󠁢󠁳󠁣󠁴󠁿","sct","scotland"],["🏴󠁧󠁢󠁷󠁬󠁳󠁿","wal","wales"],["🇪🇺","eu","european union"]];const Ji=Ge,Xi=Vi;let Qi={flag:e=>{let t=Ji(e,["flag","variant"]),i=t.flag||"";t.flag=(t.flag||"").toLowerCase();let a=Xi.find((e=>t.flag===e[1]||t.flag===e[2]))||[],n=a[0]||"";return"".concat(n," [[").concat(a[2],"|").concat(i,"]]")},flagcountry:e=>{let t=Ji(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=Xi.find((e=>t.flag===e[1]||t.flag===e[2]))||[],a=i[0]||"";return"".concat(a," [[").concat(i[2],"]]")},flagcu:e=>{let t=Ji(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=Xi.find((e=>t.flag===e[1]||t.flag===e[2]))||[],a=i[0]||"";return"".concat(a," ").concat(i[2])},flagicon:e=>{let t=Ji(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=Xi.find((e=>t.flag===e[1]||t.flag===e[2]));return i?"[[".concat(i[2],"|").concat(i[0],"]]"):""},flagdeco:e=>{let t=Ji(e,["flag","variant"]);return t.flag=(t.flag||"").toLowerCase(),(Xi.find((e=>t.flag===e[1]||t.flag===e[2]))||[])[0]||""},fb:e=>{let t=Ji(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=Xi.find((e=>t.flag===e[1]||t.flag===e[2]));return i?"".concat(i[0]," [[").concat(i[2]," national football team|").concat(i[2],"]]"):""},fbicon:e=>{let t=Ji(e,["flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=Xi.find((e=>t.flag===e[1]||t.flag===e[2]));return i?" [[".concat(i[2]," national football team|").concat(i[0],"]]"):""},flagathlete:e=>{let t=Ji(e,["name","flag","variant"]);t.flag=(t.flag||"").toLowerCase();let i=Xi.find((e=>t.flag===e[1]||t.flag===e[2]));return i?"".concat(i[0]," [[").concat(t.name||"","]] (").concat(i[1].toUpperCase(),")"):"[[".concat(t.name||"","]]")}};Xi.forEach((e=>{Qi[e[1]]=()=>e[0]}));var ea=Qi;const ta=Ge,ia=Wi.titlecase;let aa={};["rh","rh2","yes","no","maybe","eliminated","lost","safe","active","site active","coming soon","good","won","nom","sho","longlisted","tba","success","operational","failure","partial","regional","maybecheck","partial success","partial failure","okay","yes-no","some","nonpartisan","pending","unofficial","unofficial2","usually","rarely","sometimes","any","varies","black","non-album single","unreleased","unknown","perhaps","depends","included","dropped","terminated","beta","table-experimental","free","proprietary","nonfree","needs","nightly","release-candidate","planned","scheduled","incorrect","no result","cmain","calso starring","crecurring","cguest","not yet","optional"].forEach((e=>{aa[e]=e=>{let t=ta(e,["text"]);return t.text||ia(t.template)}}));[["active fire","Active"],["site active","Active"],["site inactive","Inactive"],["yes2",""],["no2",""],["ya","✅"],["na","❌"],["nom","Nominated"],["sho","Shortlisted"],["tba","TBA"],["maybecheck","✔️"],["okay","Neutral"],["n/a","N/A"],["sdash","—"],["dunno","?"],["draw",""],["cnone",""],["nocontest",""]].forEach((e=>{aa[e[0]]=t=>ta(t,["text"]).text||e[1]}));var na=aa,ra=Object.assign({},{"·":"·",dot:"·",middot:"·","•":" • ",",":",","1/2":"1⁄2","1/3":"1⁄3","2/3":"2⁄3","1/4":"1⁄4","3/4":"3⁄4","–":"–",ndash:"–","en dash":"–","spaced ndash":" – ","—":"—",mdash:"—","em dash":"—","number sign":"#",ibeam:"I","&":"&",";":";",ampersand:"&",snds:" – ",snd:" – ","^":" ","!":"|","\\":" /","`":"`","=":"=",bracket:"[","[":"[","*":"*",asterisk:"*","long dash":"———",clear:"\n\n","h.":"ḥ",profit:"▲",loss:"▼",gain:"▲"},Fi,Gi,ea,na);let oa={};["goodreads author","twitter","facebook","instagram","tumblr","pinterest","espn nfl","espn nhl","espn fc","hockeydb","fifa player","worldcat","worldcat id","nfl player","ted speaker","playmate"].forEach((e=>{oa[e]=["id","name"]}));var sa=oa;let la={};["imdb title","imdb name","imdb episode","imdb event","afi film","allmovie title","allgame","tcmdb title","discogs artist","discogs label","discogs release","discogs master","librivox author","musicbrainz artist","musicbrainz label","musicbrainz recording","musicbrainz release","musicbrainz work","youtube","goodreads book","dmoz"].forEach((e=>{la[e]=["id","title","description","section"]}));var ca=la;const ua=Ge,pa=S,ma=Wi;var da={ipa:(e,t)=>{let i=ua(e,["transcription","lang","audio"]);return i.lang=ma.getLang(i.template),i.template="ipa",t.push(i),""},ipac:(e,t)=>{let i=ua(e);return i.transcription=(i.list||[]).join(","),delete i.list,i.lang=ma.getLang(i.template),i.template="ipac",t.push(i),""},quote:(e,t)=>{let i=ua(e,["text","author"]);if(t.push(i),i.text){let e='"'.concat(i.text,'"');return i.author&&(e+="\n\n",e+=" - ".concat(i.author)),e+"\n"}return""},"cite gnis":(e,t)=>{let i=ua(e,["id","name","type"]);return i.type="gnis",i.template="citation",t.push(i),""},"spoken wikipedia":(e,t)=>{let i=ua(e,["file","date"]);return i.template="audio",t.push(i),""},yel:(e,t)=>{let i=ua(e,["min"]);return t.push(i),i.min?"yellow: ".concat(i.min||"","'"):""},subon:(e,t)=>{let i=ua(e,["min"]);return t.push(i),i.min?"sub on: ".concat(i.min||"","'"):""},suboff:(e,t)=>{let i=ua(e,["min"]);return t.push(i),i.min?"sub off: ".concat(i.min||"","'"):""},sfn:(e,t,i,a)=>{let n=ua(e,["author","year","location"]);return a&&(n.name=n.template,n.teplate=a),t.push(n),""},redirect:(e,t)=>{let i=ua(e,["redirect"]),a=i.list||[],n=[];for(let e=0;e{let i=ua(e),a={};Object.keys(ma.sisterProjects).forEach((e=>{!0===i.hasOwnProperty(e)&&(a[ma.sisterProjects[e]]=i[e])}));let n={template:"sister project links",links:a};return t.push(n),""},"subject bar":(e,t)=>{let i=ua(e);Object.keys(i).forEach((e=>{ma.sisterProjects.hasOwnProperty(e)&&(i[ma.sisterProjects[e]]=i[e],delete i[e])}));let a={template:"subject bar",links:i};return t.push(a),""},gallery:(e,t)=>{let i=ua(e),a=(i.list||[]).filter((e=>/^ *File ?:/.test(e)));return a=a.map((e=>new pa({file:e}).json())),i={template:"gallery",images:a},t.push(i),""},sky:(e,t)=>{let i=ua(e,["asc_hours","asc_minutes","asc_seconds","dec_sign","dec_degrees","dec_minutes","dec_seconds","distance"]),a={template:"sky",ascension:{hours:i.asc_hours,minutes:i.asc_minutes,seconds:i.asc_seconds},declination:{sign:i.dec_sign,degrees:i.dec_degrees,minutes:i.dec_minutes,seconds:i.dec_seconds},distance:i.distance};return t.push(a),""},"medical cases chart":(e,t)=>{let i=["date","deathsExpr","recoveriesExpr","casesExpr","4thExpr","5thExpr","col1","col1Change","col2","col2Change"],a=ua(e);a.data=a.data||"";let n=a.data.split("\n").map((e=>{let t=e.split(";"),a={options:new Map},n=0;for(let e=0;e{let i=ua(e);i.x&&(i.x=i.x.split(",").map((e=>e.trim()))),i.y&&(i.y=i.y.split(",").map((e=>e.trim())));let a=1;for(;i["y"+a];)i["y"+a]=i["y"+a].split(",").map((e=>e.trim())),a+=1;return t.push(i),""},"historical populations":(e,t)=>{let i=ua(e);i.list=i.list||[];let a=[];for(let e=0;e{const i=/^jan /i,a=/^year /i;let n=ua(e);const r=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"];let o={},s=Object.keys(n).filter((e=>i.test(e)));s=s.map((e=>e.replace(i,""))),s.forEach((e=>{o[e]=[],r.forEach((t=>{let i="".concat(t," ").concat(e);if(n.hasOwnProperty(i)){let t=ma.toNumber(n[i]);delete n[i],o[e].push(t)}}))})),n.byMonth=o;let l={};return Object.keys(n).forEach((e=>{if(a.test(e)){let t=e.replace(a,"");l[t]=n[e],delete n[e]}})),n.byYear=l,t.push(n),""},"weather box/concise c":(e,t)=>{let i=ua(e);return i.list=i.list.map((e=>ma.toNumber(e))),i.byMonth={"high c":i.list.slice(0,12),"low c":i.list.slice(12,24),"rain mm":i.list.slice(24,36)},delete i.list,i.template="weather box",t.push(i),""},"weather box/concise f":(e,t)=>{let i=ua(e);return i.list=i.list.map((e=>ma.toNumber(e))),i.byMonth={"high f":i.list.slice(0,12),"low f":i.list.slice(12,24),"rain inch":i.list.slice(24,36)},delete i.list,i.template="weather box",t.push(i),""},"climate chart":(e,t)=>{let i=ua(e).list||[],a=i[0],n=i[38];i=i.slice(1),i=i.map((e=>(e&&"−"===e[0]&&(e=e.replace(/−/,"-")),e)));let r=[];for(let e=0;e<36;e+=3)r.push({low:ma.toNumber(i[e]),high:ma.toNumber(i[e+1]),precip:ma.toNumber(i[e+2])});let o={template:"climate chart",data:{title:a,source:n,months:r}};return t.push(o),""}};let ha={"find a grave":["id","name","work","last","first","date","accessdate"],congbio:["id","name","date"],"hollywood walk of fame":["name"],"wide image":["file","width","caption"],audio:["file","text","type"],rp:["page"],"short description":["description"],"coord missing":["region"],unreferenced:["date"],"taxon info":["taxon","item"],"portuguese name":["first","second","suffix"],geo:["lat","lon","zoom"]};ha=Object.assign(ha,sa,ca,da);var ga=ha;const fa=Ge,ka=Wi;let ba={math:(e,t)=>{let i=fa(e,["formula"]);return t.push(i),"\n\n"+(i.formula||"")+"\n\n"},isbn:(e,t)=>{let i=fa(e,["id","id2","id3"]);return t.push(i),"ISBN: "+(i.id||"")},"based on":(e,t)=>{let i=fa(e,["title","author"]);return t.push(i),"".concat(i.title," by ").concat(i.author||"")},"bbl to t":(e,t)=>{let i=fa(e,["barrels"]);return t.push(i),"0"===i.barrels?i.barrels+" barrel":i.barrels+" barrels"},mpc:(e,t)=>{let i=fa(e,["number","text"]);return t.push(i),"[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ".concat(i.text||i.number,"]")},pengoal:(e,t)=>(t.push({template:"pengoal"}),"✅"),penmiss:(e,t)=>(t.push({template:"penmiss"}),"❌"),"ordered list":(e,t)=>{let i=fa(e);return t.push(i),i.list=i.list||[],i.list.map(((e,t)=>"".concat(t+1,". ").concat(e))).join("\n\n")},"title year":(e,t,i,a,n)=>{let r=fa(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b[0-9]{4}\b/);if(e)return e[0]}return r.nomatch||""},"title century":(e,t,i,a,n)=>{let r=fa(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b([0-9]+)(st|nd|rd|th)\b/);if(e)return e[1]||""}return r.nomatch||""},"title decade":(e,t,i,a,n)=>{let r=fa(e,["match","nomatch","page"]),o=r.page||n.title();if(o){let e=o.match(/\b([0-9]+)s\b/);if(e)return e[1]||""}return r.nomatch||""},nihongo:(e,t)=>{let i=fa(e,["english","kanji","romaji","extra"]);t.push(i);let a=i.english||i.romaji||"";return i.kanji&&(a+=" (".concat(i.kanji,")")),a},marriage:(e,t)=>{let i=fa(e,["spouse","from","to","end"]);t.push(i);let a=i.spouse||"";return i.from&&(i.to?a+=" (m. ".concat(i.from,"-").concat(i.to,")"):a+=" (m. ".concat(i.from,")")),a},"sent off":(e,t)=>{let i=fa(e,["cards"]),a={template:"sent off",cards:i.cards,minutes:i.list||[]};return t.push(a),"sent off: "+a.minutes.map((e=>e+"'")).join(", ")},transl:(e,t)=>{let i=fa(e,["lang","text","text2"]);return i.text2&&(i.iso=i.text,i.text=i.text2,delete i.text2),t.push(i),i.text||""},"collapsible list":(e,t)=>{let i=fa(e);t.push(i);let a="";if(i.title&&(a+="'''".concat(i.title,"'''")+"\n\n"),!i.list){i.list=[];for(let e=1;e<10;e+=1)i[e]&&(i.list.push(i[e]),delete i[e])}return i.list=i.list.filter((e=>e)),a+=i.list.join("\n\n"),a},"columns-list":(e,t)=>{let i=((fa(e).list||[])[0]||"").split(/\n/).filter((e=>e));return i=i.map((e=>e.replace(/\*/,""))),t.push({template:"columns-list",list:i}),i=i.map((e=>"• "+e)),i.join("\n\n")},height:(e,t)=>{let i=fa(e);t.push(i);let a=[];return["m","cm","ft","in"].forEach((e=>{!0===i.hasOwnProperty(e)&&a.push(i[e]+e)})),a.join(" ")},sic:(e,t)=>{let i=fa(e,["one","two","three"]),a=(i.one||"")+(i.two||"");return"?"===i.one&&(a=(i.two||"")+(i.three||"")),t.push({template:"sic",word:a}),"y"===i.nolink?a:"".concat(a," [sic]")},inrconvert:(e,t)=>{let i=fa(e,["rupee_value","currency_formatting"]);t.push(i);const a={k:1e3,m:1e6,b:1e9,t:1e12,l:1e5,c:1e7,lc:1e12};if(i.currency_formatting){let e=a[i.currency_formatting]||1;i.rupee_value=i.rupee_value*e}return"inr ".concat(i.rupee_value||"")},frac:(e,t)=>{let i=fa(e,["a","b","c"]),a={template:"sfrac"};return i.c?(a.integer=i.a,a.numerator=i.b,a.denominator=i.c):i.b?(a.numerator=i.a,a.denominator=i.b):(a.numerator=1,a.denominator=i.a),t.push(a),a.integer?"".concat(a.integer," ").concat(a.numerator,"⁄").concat(a.denominator):"".concat(a.numerator,"⁄").concat(a.denominator)},"winning percentage":(e,t)=>{let i=fa(e,["wins","losses","ties"]);t.push(i);let a=Number(i.wins),n=Number(i.losses),r=Number(i.ties)||0,o=a+n+r;"y"===i.ignore_ties&&(r=0),r&&(a+=r/2);let s=ka.percentage({numerator:a,denominator:o,decimals:1});return null===s?"":".".concat(10*s)},winlosspct:(e,t)=>{let i=fa(e,["wins","losses"]);t.push(i);let a=Number(i.wins),n=Number(i.losses),r=ka.percentage({numerator:a,denominator:a+n,decimals:1});return null===r?"":(r=".".concat(10*r),"".concat(a||0," || ").concat(n||0," || ").concat(r||"-"))},"video game release":(e,t)=>{let i=["region","date","region2","date2","region3","date3","region4","date4"],a=fa(e,i),n={template:"video game release",releases:[]};for(let e=0;e"".concat(e.region,": ").concat(e.date||""))).join("\n\n")+"\n"},uss:(e,t)=>{let i=fa(e,["name","id"]);return t.push(i),i.id?"[[USS ".concat(i.name," (").concat(i.id,")|USS ''").concat(i.name,"'' (").concat(i.id,")]]"):"[[USS ".concat(i.name,"|USS ''").concat(i.name,"'']]")}};var wa=ba;const ya=Ge,xa={"£":"GB£","¥":"¥","৳":"৳","₩":"₩","€":"€","₱":"₱","₹":"₹","₽":"₽","cn¥":"CN¥","gb£":"GB£","india rs":"₹","indian rupee symbol":"₹","indian rupee":"₹","indian rupees":"₹","philippine peso":"₱","russian ruble":"₽","SK won":"₩","turkish lira":"TRY",a$:"A$",au$:"A$",aud:"A$",bdt:"BDT",brl:"BRL",ca$:"CA$",cad:"CA$",chf:"CHF",cny:"CN¥",czk:"czk",dkk:"dkk",dkk2:"dkk",euro:"€",gbp:"GB£",hk$:"HK$",hkd:"HK$",ils:"ILS",inr:"₹",jpy:"¥",myr:"MYR",nis:"ILS",nok:"NOK",nok2:"NOK",nz$:"NZ$",nzd:"NZ$",peso:"peso",pkr:"₨",r$:"BRL",rmb:"CN¥",rub:"₽",ruble:"₽",rupee:"₹",s$:"sgd",sek:"SEK",sek2:"SEK",sfr:"CHF",sgd:"sgd",shekel:"ILS",sheqel:"ILS",ttd:"TTD",us$:"US$",usd:"US$",yen:"¥",zar:"R"},va=(e,t)=>{let i=ya(e,["amount","code"]);t.push(i);let a=i.template||"";"currency"===a?(a=i.code,a||(i.code=a="usd")):""!==a&&"monnaie"!==a&&"unité"!==a&&"nombre"!==a&&"nb"!==a||(a=i.code),a=(a||"").toLowerCase(),"us"===a?i.code=a="usd":"uk"===a&&(i.code=a="gbp");let n="".concat(xa[a]||"").concat(i.amount||"");return i.code&&!xa[i.code.toLowerCase()]&&(n+=" "+i.code),n};let $a={currency:va};Object.keys(xa).forEach((e=>{$a[e]=va}));var ja=$a;const _a=864e5,za=function(e){return new Date("".concat(e.year,"-").concat(e.month||0,"-").concat(e.date||1)).getTime()};var Oa={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],timeSince:function(e){let t=new Date(e);if(isNaN(t.getTime()))return"";let i=(new Date).getTime()-t.getTime(),a="ago";i<0&&(a="from now",i=Math.abs(i));let n=i/1e3/60/60/24;return n<365?parseInt(n,10)+" days "+a:parseInt(n/365,10)+" years "+a},delta:function(e,t){e=za(e);let i=(t=za(t))-e,a={},n=Math.floor(i/31536e6,10);n>0&&(a.years=n,i-=31536e6*a.years);let r=Math.floor(i/2592e6,10);r>0&&(a.months=r,i-=2592e6*a.months);let o=Math.floor(i/_a,10);return o>0&&(a.days=o),a},toOrdinal:function(e){let t=e%10,i=e%100;return 1===t&&11!==i?e+"st":2===t&&12!==i?e+"nd":3===t&&13!==i?e+"rd":e+"th"}};const Ea=[void 0,"January","February","March","April","May","June","July","August","September","October","November","December"],Sa=Ea.reduce(((e,t,i)=>(0===i||(e[t.toLowerCase()]=i),e)),{}),Ca=function(e){return e<10?"0"+e:String(e)};var Na={toText:function(e){let t=String(e.year||"");if(void 0!==e.month&&!0===Ea.hasOwnProperty(e.month))if(void 0===e.date)t="".concat(Ea[e.month]," ").concat(e.year);else{if(t="".concat(Ea[e.month]," ").concat(e.date,", ").concat(e.year),void 0!==e.hour&&void 0!==e.minute){let i="".concat(Ca(e.hour),":").concat(Ca(e.minute));void 0!==e.second&&(i=i+":"+Ca(e.second)),t=i+", "+t}e.tz&&(t+=" (".concat(e.tz,")"))}return t},ymd:function(e){let t={},i=["year","month","date","hour","minute","second"];for(let a=0;a{let i=La(e,["year","month","date","hour","minute","second","timezone"]),a=Pa.ymd([i.year,i.month,i.date||i.day]);return i.text=Pa.toText(a),i.timezone&&("Z"===i.timezone&&(i.timezone="UTC"),i.text+=" (".concat(i.timezone,")")),i.hour&&i.minute&&(i.second?i.text="".concat(i.hour,":").concat(i.minute,":").concat(i.second,", ")+i.text:i.text="".concat(i.hour,":").concat(i.minute,", ")+i.text),i.text&&t.push(Aa(i)),i.text},natural_date:(e,t)=>{let i=La(e,["text"]).text||"",a={};if(/^[0-9]{4}$/.test(i))a.year=parseInt(i,10);else{let e=i.replace(/[a-z]+\/[a-z]+/i,"");e=e.replace(/[0-9]+:[0-9]+(am|pm)?/i,"");let t=new Date(e);!1===isNaN(t.getTime())&&(a.year=t.getFullYear(),a.month=t.getMonth()+1,a.date=t.getDate())}return t.push(Aa(a)),i.trim()},one_year:(e,t)=>{let i=La(e,["year"]),a=Number(i.year);return t.push(Aa({year:a})),String(a)},two_dates:(e,t)=>{let i=La(e,["b","birth_year","birth_month","birth_date","death_year","death_month","death_date"]);if(i.b&&"b"===i.b.toLowerCase()){let e=Pa.ymd([i.birth_year,i.birth_month,i.birth_date]);return t.push(Aa(e)),Pa.toText(e)}let a=Pa.ymd([i.death_year,i.death_month,i.death_date]);return t.push(Aa(a)),Pa.toText(a)},age:e=>{let t=Da(e);return Ta(t.from,t.to).years||0},"diff-y":e=>{let t=Da(e),i=Ta(t.from,t.to);return 1===i.years?i.years+" year":(i.years||0)+" years"},"diff-ym":e=>{let t=Da(e),i=Ta(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),1===i.months?a.push("1 month"):i.months&&0!==i.months&&a.push(i.months+" months"),a.join(", ")},"diff-ymd":e=>{let t=Da(e),i=Ta(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),1===i.months?a.push("1 month"):i.months&&0!==i.months&&a.push(i.months+" months"),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")},"diff-yd":e=>{let t=Da(e),i=Ta(t.from,t.to),a=[];return 1===i.years?a.push(i.years+" year"):i.years&&0!==i.years&&a.push(i.years+" years"),i.days+=30*(i.months||0),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")},"diff-d":e=>{let t=Da(e),i=Ta(t.from,t.to),a=[];return i.days+=365*(i.years||0),i.days+=30*(i.months||0),1===i.days?a.push("1 day"):i.days&&0!==i.days&&a.push(i.days+" days"),a.join(", ")}};const Ma=Ia,Ra=Ge,Ua=Oa,Ba=Na,Fa=["January","February","March","April","May","June","July","August","September","October","November","December"];var Ka={currentday:()=>{let e=new Date;return String(e.getDate())},currentdayname:()=>{let e=new Date;return Ua.days[e.getDay()]},currentmonth:()=>{let e=new Date;return Fa[e.getMonth()]},currentyear:()=>{let e=new Date;return String(e.getFullYear())},monthyear:()=>{let e=new Date;return Fa[e.getMonth()]+" "+e.getFullYear()},"monthyear-1":()=>{let e=new Date;return e.setMonth(e.getMonth()-1),Fa[e.getMonth()]+" "+e.getFullYear()},"monthyear+1":()=>{let e=new Date;return e.setMonth(e.getMonth()+1),Fa[e.getMonth()]+" "+e.getFullYear()},"time ago":e=>{let t=Ra(e,["date","fmt"]).date;return Ua.timeSince(t)},"birth date and age":(e,t)=>{let i=Ra(e,["year","month","day"]);return i.year&&/[a-z]/i.test(i.year)?Ma.natural_date(e,t):(t.push(i),i=Ba.ymd([i.year,i.month,i.day]),Ba.toText(i))},"birth year and age":(e,t)=>{let i=Ra(e,["birth_year","birth_month"]);if(i.death_year&&/[a-z]/i.test(i.death_year))return Ma.natural_date(e,t);t.push(i);let a=(new Date).getFullYear()-parseInt(i.birth_year,10);i=Ba.ymd([i.birth_year,i.birth_month]);let n=Ba.toText(i);return a&&(n+=" (age ".concat(a,")")),n},"death year and age":(e,t)=>{let i=Ra(e,["death_year","birth_year","death_month"]);return i.death_year&&/[a-z]/i.test(i.death_year)?Ma.natural_date(e,t):(t.push(i),i=Ba.ymd([i.death_year,i.death_month]),Ba.toText(i))},"birth date and age2":(e,t)=>{let i=Ra(e,["at_year","at_month","at_day","birth_year","birth_month","birth_day"]);return t.push(i),i=Ba.ymd([i.birth_year,i.birth_month,i.birth_day]),Ba.toText(i)},"birth based on age as of date":(e,t)=>{let i=Ra(e,["age","year","month","day"]);t.push(i);let a=parseInt(i.age,10),n=parseInt(i.year,10)-a;return n&&a?"".concat(n," (age ").concat(i.age,")"):"(age ".concat(i.age,")")},"death date and given age":(e,t)=>{let i=Ra(e,["year","month","day","age"]);t.push(i),i=Ba.ymd([i.year,i.month,i.day]);let a=Ba.toText(i);return i.age&&(a+=" (age ".concat(i.age,")")),a},dts:e=>{e=(e=e.replace(/\|format=[ymd]+/i,"")).replace(/\|abbr=(on|off)/i,"");let t=Ra(e,["year","month","date","bc"]);return t.date&&t.month&&t.year?!0===/[a-z]/.test(t.month)?[t.month,t.date,t.year].join(" "):[t.year,t.month,t.date].join("-"):t.month&&t.year?[t.year,t.month].join("-"):t.year?(t.year<0&&(t.year=Math.abs(t.year)+" BC"),t.year):""},time:()=>{let e=new Date,t=Ba.ymd([e.getFullYear(),e.getMonth(),e.getDate()]);return Ba.toText(t)},millennium:e=>{let t=Ra(e,["year"]),i=Number(t.year);return i=parseInt(i/1e3,10)+1,t.abbr&&"y"===t.abbr?i<0?"".concat(Ua.toOrdinal(Math.abs(i))," BC"):"".concat(Ua.toOrdinal(i)):"".concat(Ua.toOrdinal(i)," millennium")},start:Ma.date,"start-date":Ma.natural_date,birthdeathage:Ma.two_dates,age:Ma.age,"age nts":Ma.age,"age in years":Ma["diff-y"],"age in years and months":Ma["diff-ym"],"age in years, months and days":Ma["diff-ymd"],"age in years and days":Ma["diff-yd"],"age in days":Ma["diff-d"]};const Wa=Ge;function Za(e){let t=e.pop(),i=Number(e[0]||0),a=Number(e[1]||0),n=Number(e[2]||0);if("string"!=typeof t||isNaN(i))return null;let r=1;return/[SW]/i.test(t)&&(r=-1),r*(i+a/60+n/3600)}const Ha=function(e){if("number"!=typeof e)return e;let t=1e5;return Math.round(e*t)/t},Ya={s:!0,w:!0};const Ga=function(e){let t=Wa(e);t=function(e){return e.list=e.list||[],e.list=e.list.map((t=>{let i=Number(t);if(!isNaN(i))return i;let a=t.split(/:/);return a.length>1?(e.props=e.props||{},e.props[a[0]]=a.slice(1).join(":"),null):t})),e.list=e.list.filter((e=>null!==e)),e}(t);let i=function(e){const t=e.map((e=>typeof e)).join("|");return 2===e.length&&"number|number"===t?{lat:e[0],lon:e[1]}:4===e.length&&"number|string|number|string"===t?(Ya[e[1].toLowerCase()]&&(e[0]*=-1),"w"===e[3].toLowerCase()&&(e[2]*=-1),{lat:e[0],lon:e[2]}):6===e.length?{lat:Za(e.slice(0,3)),lon:Za(e.slice(3))}:8===e.length?{lat:Za(e.slice(0,4)),lon:Za(e.slice(4))}:{}}(t.list);return t.lat=Ha(i.lat),t.lon=Ha(i.lon),t.template="coord",delete t.list,t},Va={coord:(e,t)=>{let i=Ga(e);return t.push(i),i.display&&-1===i.display.indexOf("inline")?"":"".concat(i.lat||"","°N, ").concat(i.lon||"","°W")}};var Ja=Va;const Xa=Ge,Qa=function(e,t,i,a){let n=Xa(e);return a&&(n.name=n.template,n.template=a),t.push(n),""};var en={persondata:Qa,taxobox:Qa,citation:Qa,portal:Qa,reflist:Qa,"cite book":Qa,"cite journal":Qa,"cite web":Qa,"commons cat":Qa,"election box candidate":Qa,"election box begin":Qa,main:Qa};const tn=Ge,an={adx:"adx",aim:"aim",amex:"amex",asx:"asx",athex:"athex",b3:"b3","B3 (stock exchange)":"B3 (stock exchange)",barbadosse:"barbadosse",bbv:"bbv",bcba:"bcba",bcs:"bcs",bhse:"bhse",bist:"bist",bit:"bit","bm&f bovespa":"b3","bm&f":"b3",bmad:"bmad",bmv:"bmv","bombay stock exchange":"bombay stock exchange","botswana stock exchange":"botswana stock exchange",bpse:"bpse",bse:"bse",bsx:"bsx",bvb:"bvb",bvc:"bvc",bvl:"bvl",bvpasa:"bvpasa",bwse:"bwse","canadian securities exchange":"canadian securities exchange",cse:"cse",darse:"darse",dfm:"dfm",dse:"dse",euronext:"euronext",euronextparis:"euronextparis",fse:"fse",fwb:"fwb",gse:"gse",gtsm:"gtsm",idx:"idx",ise:"ise",iseq:"iseq",isin:"isin",jasdaq:"jasdaq",jse:"jse",kase:"kase",kn:"kn",krx:"krx",lse:"lse",luxse:"luxse","malta stock exchange":"malta stock exchange",mai:"mai",mcx:"mcx",mutf:"mutf",myx:"myx",nag:"nag","nasdaq dubai":"nasdaq dubai",nasdaq:"nasdaq",neeq:"neeq",nepse:"nepse",nex:"nex",nse:"nse",newconnect:"newconnect","nyse arca":"nyse arca",nyse:"nyse",nzx:"nzx","omx baltic":"omx baltic",omx:"omx",ose:"ose","otc expert":"otc expert","otc grey":"otc grey","otc pink":"otc pink",otcqb:"otcqb",otcqx:"otcqx","pfts ukraine stock exchange":"pfts ukraine stock exchange","philippine stock exchange":"philippine stock exchange",prse:"prse",psx:"psx",karse:"karse",qe:"qe","saudi stock exchange":"saudi stock exchange",sehk:"sehk","Stock Exchange of Thailand":"Stock Exchange of Thailand",set:"set",sgx:"sgx",sse:"sse",swx:"swx",szse:"szse",tase:"tase","tsx-v":"tsx-v",tsx:"tsx",tsxv:"tsxv",ttse:"ttse",twse:"twse",tyo:"tyo",wbag:"wbag",wse:"wse","zagreb stock exchange":"zagreb stock exchange","zimbabwe stock exchange":"zimbabwe stock exchange",zse:"zse"},nn=(e,t)=>{let i=tn(e,["ticketnumber","code"]);t.push(i);let a=i.template||"";""===a&&(a=i.code),a=(a||"").toLowerCase();let n=an[a]||"";return i.ticketnumber&&(n="".concat(n,": ").concat(i.ticketnumber)),i.code&&!an[i.code.toLowerCase()]&&(n+=" "+i.code),n},rn={};Object.keys(an).forEach((e=>{rn[e]=nn}));var on=rn;const sn=Ge,ln=function(e){return 1===(e=String(e)).length&&(e="0"+e),e},cn=function(e,t,i){e["rd".concat(t,"-team").concat(ln(i))]&&(i=ln(i));let a=e["rd".concat(t,"-score").concat(i)],n=Number(a);return!1===isNaN(n)&&(a=n),{team:e["rd".concat(t,"-team").concat(i)],score:a,seed:e["rd".concat(t,"-seed").concat(i)]}};var un=function(e){let t=[],i=sn(e);for(let e=1;e<7;e+=1){let a=[];for(let t=1;t<16;t+=2){let n="rd".concat(e,"-team");if(!i[n+t]&&!i[n+ln(t)])break;{let n=cn(i,e,t),r=cn(i,e,t+1);a.push([n,r])}}a.length>0&&t.push(a)}return{template:"playoffbracket",rounds:t}};const pn=Ge,mn=Vi,dn=un;let hn={"4teambracket":function(e,t){let i=dn(e);return t.push(i),""},player:(e,t)=>{let i=pn(e,["number","country","name","dl"]);t.push(i);let a="[[".concat(i.name,"]]");if(i.country){let e=(i.country||"").toLowerCase(),t=mn.find((t=>e===t[1]||e===t[2]))||[];t&&t[0]&&(a=t[0]+" "+a)}return i.number&&(a=i.number+" "+a),a},goal:(e,t)=>{let i={template:"goal",data:[]},a=pn(e).list||[];for(let e=0;e{let t=e.note;return t&&(t=" (".concat(t,")")),e.min+"'"+t})).join(", "),n},"sports table":(e,t)=>{let i=pn(e),a={};Object.keys(i).filter((e=>/^team[0-9]/.test(e))).map((e=>i[e].toLowerCase())).forEach((e=>{a[e]={name:i["name_".concat(e)],win:Number(i["win_".concat(e)])||0,loss:Number(i["loss_".concat(e)])||0,tie:Number(i["tie_".concat(e)])||0,otloss:Number(i["otloss_".concat(e)])||0,goals_for:Number(i["gf_".concat(e)])||0,goals_against:Number(i["ga_".concat(e)])||0}}));let n={date:i.update,header:i.table_header,teams:a};t.push(n)}};var gn=hn,fn=Object.assign({},{mlbplayer:{props:["number","name","il"],out:"name"},syntaxhighlight:{props:[],out:"code"},samp:{props:["1"],out:"1"},sub:{props:["text"],out:"text"},sup:{props:["text"],out:"text"},chem2:{props:["equation"],out:"equation"},ill:{props:["text","lan1","text1","lan2","text2"],out:"text"},abbr:{props:["abbr","meaning","ipa"],out:"abbr"}},wa,ja,Ka,Ja,en,on,un,gn,un,gn);const kn=Ri;let bn=Object.assign({},ra,ga,fn);Object.keys(kn).forEach((e=>{bn[e]=bn[kn[e]]}));var wn=bn;const yn=Si,xn=Ai,vn=wn,$n=Ge,{isArray:jn,isObject:_n}=n,zn=["0","1","2","3","4","5","6","7","8","9"];var On=function(e,t){let i=e.name;if(!0===yn.hasOwnProperty(i))return[""];if(!0===xn.isInfobox(i)){let t=$n(e.body,[],"raw");return["",xn.format(t)]}if(!0===/^cite [a-z]/.test(i)){let t=$n(e.body);return t.type=t.template,t.template="citation",["",t]}if(!0===vn.hasOwnProperty(i)){if("number"==typeof vn[i]){return[$n(e.body,zn)[String(vn[i])]||""]}if("string"==typeof vn[i])return[vn[i]];if(!0===jn(vn[i])){return["",$n(e.body,vn[i])]}if(!0===_n(vn[i])){let t=$n(e.body,vn[i].props);return[t[vn[i].out],t]}if("function"==typeof vn[i]){let a=[];return[vn[i](e.body,a,$n,null,t),a[0]]}}let a=$n(e.body);return 0===Object.keys(a).length&&(a=null),["",a]};const En=Q;var Sn=function(e,t){let i=Object.keys(e.data).reduce(((t,i)=>(e.data[i]&&(t[i]=e.data[i].json()),t)),{});return!0===t.encode&&(i=En.encodeObj(i)),i};const Cn=Sn,Nn=S,{isArray:qn}=n,Ln=ye,Tn=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e=e.toLowerCase(),e=e.replace(/[-_]/g," "),e.trim()},Pn=function(e,t){this._type=e.type,this.domain=e.domain,Object.defineProperty(this,"data",{enumerable:!1,value:e.data}),Object.defineProperty(this,"wiki",{enumerable:!1,value:t})},An={type:function(){return this._type},links:function(e){let t=[];if(Object.keys(this.data).forEach((e=>{this.data[e].links().forEach((e=>t.push(e)))})),"string"==typeof e){e=e.charAt(0).toUpperCase()+e.substring(1);let i=t.find((t=>t.page()===e));return void 0===i?[]:[i]}return t},image:function(){let e=this.data.image||this.data.image2||this.data.logo||this.data.image_skyline||this.data.image_flag;if(!e)return null;let t=e.json();return t.file=t.text,t.text="",t.domain=this.domain,new Nn(t)},get:function(e){let t=Object.keys(this.data);if("string"==typeof e){let i=Tn(e);for(let e=0;e{for(let i=0;i(this.data[t]&&(e[t]=this.data[t].text()),e)),{})}};Object.keys(An).forEach((e=>{Pn.prototype[e]=An[e]})),Pn.prototype.data=Pn.prototype.keyValue,Pn.prototype.template=Pn.prototype.type,Pn.prototype.images=Pn.prototype.image;var Dn=Pn;const In=Te,Mn={text:function(){let e=this._text||"";return In(e).text()},json:function(){return this.data||{}},wikitext:function(){return this.wiki||""}},Rn=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";Object.defineProperty(this,"data",{enumerable:!1,value:e}),Object.defineProperty(this,"_text",{enumerable:!1,value:t}),Object.defineProperty(this,"wiki",{enumerable:!1,value:i})};Object.keys(Mn).forEach((e=>{Rn.prototype[e]=Mn[e]}));var Un=Rn;const Bn=Dn,Fn=Qe,Kn=Un,Wn=/^(cite |citation)/i,Zn={citation:!0,refn:!0,harvnb:!0,source:!0};var Hn=function(e,t){let i={infoboxes:[],templates:[],references:[]};return e.forEach((e=>{let a=e.json,n=a.template||a.type||a.name;if(!0!==Zn[n]&&!0!==Wn.test(n))return"infobox"===a.template&&"yes"!==a.subbox?(a.domain=t,a.data=a.data||{},void i.infoboxes.push(new Bn(a,e.wiki))):void i.templates.push(new Kn(a,e.text,e.wiki));i.references.push(new Fn(a,e.wiki))})),i};const Yn=Ei,Gn=On,Vn=Hn;var Jn=function(e,t){let{list:i,wiki:a}=function(e,t){let i=[],a=Yn(e);const n=function(a,r){a.parent=r,a.children&&a.children.length>0&&a.children.forEach((e=>n(e,a)));let[o,s]=Gn(a,t);a.wiki=o,s&&i.push({name:a.name,wiki:a.body,text:o,json:s});const l=function(e,t,i){e.parent&&(e.parent.body=e.parent.body.replace(t,i),l(e.parent,t,i))};l(a,a.body,a.wiki),e=e.replace(a.body,a.wiki)};return a.forEach((e=>n(e,null))),a.forEach((t=>{e=e.replace(t.body,t.wiki)})),{list:i,wiki:e}}(e._wiki,t),n=t?t._domain:null,{infoboxes:r,references:o,templates:s}=Vn(i,n);e._infoboxes=e._infoboxes||[],e._references=e._references||[],e._templates=e._templates||[],e._infoboxes=e._infoboxes.concat(r),e._references=e._references.concat(o),e._templates=e._templates.concat(s),e._wiki=a};const Xn=Te,Qn=S;var er=function(e,t,i){e.text=e.text.replace(/]*)>([\s\S]+)<\/gallery>/g,((a,n,r)=>{let o=r.split(/\n/g);return o=o.filter((e=>e&&""!==e.trim())),o=o.map((e=>{let i=e.split(/\|/),a={file:i[0].trim(),lang:t.lang(),domain:t.domain()},n=new Qn(a).json(),r=i.slice(1).join("|");return""!==r&&(n.caption=Xn(r)),n})),o.length>0&&e.templates.push({template:"gallery",images:o,pos:i.title}),""}))};const tr=Jn;var ir=function(e){e.text=e.text.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi,(t=>{let i={_wiki:t,_templates:[]};tr(i);let a=i._templates.map((e=>e.json())),n=a.find((e=>"election box"===e.template))||{},r=a.filter((e=>"election box candidate"===e.template)),o=a.find((e=>"election box gain"===e.template||"election box hold"===e.template))||{};return(r.length>0||o)&&e.templates.push({template:"election box",title:n.title,candidates:r,summary:o.data}),""}))};const ar=vt,nr={coach:["team","year","g","w","l","w-l%","finish","pg","pw","pl","pw-l%"],player:["year","team","gp","gs","mpg","fg%","3p%","ft%","rpg","apg","spg","bpg","ppg"],roster:["player","gp","gs","mpg","fg%","3fg%","ft%","rpg","apg","spg","bpg","ppg"]};const rr=vt;var or=function(e){e.text=e.text.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi,(t=>{let i=function(e){let t=["#","date","opponent","score","win","loss","save","attendance","record"];return!0===/\|stadium=y/i.test(e)&&t.splice(7,0,"stadium"),!0===/\|time=y/i.test(e)&&t.splice(7,0,"time"),!0===/\|box=y/i.test(e)&&t.push("box"),t}(t);t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{mlb game log (section|month) end\}\}/i,"");let a="! "+i.join(" !! "),n=rr("{|\n"+a+"\n"+t+"\n|}");return n=n.map((e=>(Object.keys(e).forEach((t=>{e[t]=e[t].text()})),e))),e.templates.push({template:"mlb game log section",data:n}),""}))};const sr=vt;let lr=["res","record","opponent","method","event","date","round","time","location","notes"];const cr=Te;const ur=er,pr=ir,mr=function(e){e.text=e.text.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi,((t,i)=>{t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{s-end\}\}/,""),i=i.toLowerCase().trim();let a="! "+nr[i].join(" !! "),n=ar("{|\n"+a+"\n"+t+"\n|}");return n=n.map((e=>(Object.keys(e).forEach((t=>{e[t]=e[t].text()})),e))),e.templates.push({template:"NBA "+i+" statistics",data:n}),""}))},dr=or,hr=function(e){e.text=e.text.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi,(t=>{t=(t=t.replace(/^\{\{.*?\}\}/,"")).replace(/\{\{end\}\}/i,"");let i="! "+lr.join(" !! "),a=sr("{|\n"+i+"\n"+t+"\n|}");return a=a.map((e=>(Object.keys(e).forEach((t=>{e[t]=e[t].text()})),e))),e.templates.push({template:"mma record start",data:a}),""}))},gr=function(e){e.text=e.text.replace(/]*)>([\s\S]+)<\/math>/g,((t,i,a)=>{let n=cr(a).text();return e.templates.push({template:"math",formula:n,raw:a}),n&&n.length<12?n:""})),e.text=e.text.replace(/]*)>([\s\S]+?)<\/chem>/g,((t,i,a)=>(e.templates.push({template:"chem",data:a}),"")))},fr=Un;const kr=ae,br=m,wr={heading:pt,table:At,paragraphs:yi,templates:Jn,references:ot,startEndTemplates:function(e,t){const i={templates:[],text:e._wiki};return pr(i),ur(i,t,e),gr(i),dr(i),hr(i),mr(i),i.templates=i.templates.map((e=>new fr(e))),i}},yr={tables:!0,references:!0,paragraphs:!0,templates:!0,infoboxes:!0};class xr{constructor(e,t){let i={doc:t,title:e.title||"",depth:e.depth,wiki:e.wiki||"",templates:[],tables:[],infoboxes:[],references:[],paragraphs:[]};Object.keys(i).forEach((e=>{Object.defineProperty(this,"_"+e,{enumerable:!1,writable:!0,value:i[e]})}));const a=wr.startEndTemplates(this,t);this._wiki=a.text,this._templates=this._templates.concat(a.templates),wr.references(this),wr.templates(this,t),wr.table(this),wr.paragraphs(this,t)}title(){return this._title||""}index(){if(!this._doc)return null;let e=this._doc.sections().indexOf(this);return-1===e?null:e}depth(){return this._depth}indentation(){return this.depth()}sentences(){return this.paragraphs().reduce(((e,t)=>e.concat(t.sentences())),[])}paragraphs(){return this._paragraphs||[]}links(e){let t=[];if(this.infoboxes().forEach((e=>{t.push(e.links())})),this.sentences().forEach((e=>{t.push(e.links())})),this.tables().forEach((e=>{t.push(e.links())})),this.lists().forEach((e=>{t.push(e.links())})),t=t.reduce(((e,t)=>e.concat(t)),[]).filter((e=>void 0!==e)),"string"==typeof e){let i=t.find((t=>t.page().toLowerCase()===e.toLowerCase()));return void 0===i?[]:[i]}return t}tables(){return this._tables||[]}templates(e){let t=this._templates||[];return"string"==typeof e?(e=e.toLowerCase(),t.filter((t=>t.data.template===e||t.data.name===e))):t}infoboxes(e){let t=this._infoboxes||[];return"string"==typeof e?(e=(e=e.replace(/^infobox /i,"")).trim().toLowerCase(),t.filter((t=>t._type===e))):t}coordinates(){return[...this.templates("coord"),...this.templates("coor")].map((e=>e.json()))}lists(){let e=[];return this.paragraphs().forEach((t=>{e=e.concat(t.lists())})),e}interwiki(){let e=[];return this.paragraphs().forEach((t=>{e=e.concat(t.interwiki())})),e}images(){let e=[];return this.paragraphs().forEach((t=>{e=e.concat(t.images())})),e}references(){return this._references||[]}remove(){if(!this._doc)return null;let e={};e[this.title()]=!0,this.children().forEach((t=>e[t.title()]=!0));let t=this._doc.sections();return t=t.filter((t=>!0!==e.hasOwnProperty(t.title()))),t=t.filter((t=>!0!==e.hasOwnProperty(t.title()))),this._doc._sections=t,this._doc}nextSibling(){if(!this._doc)return null;let e=this._doc.sections();for(let t=(this.index()||0)+1;tthis.depth())for(let e=i+1;ethis.depth();e+=1)a.push(t[e]);return"string"==typeof e?a.find((t=>t.title().toLowerCase()===e.toLowerCase())):a}sections(e){return this.children(e)}parent(){if(!this._doc)return null;let e=this._doc.sections();for(let t=this.index()||0;t>=0;t-=1)if(e[t]&&e[t].depth()t.text(e))).join("\n\n")}wikitext(){return this._wiki}json(e){return e=br(e,yr),kr(this,e)}}xr.prototype.citations=xr.prototype.references;const vr={sentences:"sentence",paragraphs:"paragraph",links:"link",tables:"table",templates:"template",infoboxes:"infobox",coordinates:"coordinate",lists:"list",images:"image",references:"reference",citations:"citation"};Object.keys(vr).forEach((e=>{let t=vr[e];xr.prototype[t]=function(t){let i=this[e](t);return"number"==typeof t?i[t]:i[0]||null}}));var $r=xr;const jr=$r,_r=new RegExp("^("+f.references.join("|")+"):?","i"),zr=/(?:\n|^)(={2,5}.{1,200}?={2,5})/g,Or={heading:pt};var Er=function(e){let t=[],i=e._wiki.split(zr);for(let a=0;a!0!==_r.test(t.title())||t.paragraphs().length>0||t.templates().length>0||(e[i+1]&&e[i+1].depth()>t.depth()&&(e[i+1]._depth-=1),!1)))}(t)};const Sr=f,Cr=new RegExp("\\[\\[:?("+Sr.categories.join("|")+"):(.{2,178}?)]](w{0,10})","gi"),Nr=new RegExp("^\\[\\[:?("+Sr.categories.join("|")+"):","gi");const qr=p,Lr=g,Tr=$,Pr=m,Ar=S,Dr=K,Ir=V,Mr={section:Er,categories:function(e){const t=[];let i=e.match(Cr);i&&i.forEach((function(e){(e=(e=(e=e.replace(Nr,"")).replace(/\|?[ *]?\]\]$/,"")).replace(/\|.*/,""))&&!e.match(/[[\]]/)&&t.push(e.trim())}));const a=e.replace(Cr,"");return[t,a]}},Rr={tables:!0,lists:!0,paragraphs:!0};class Ur{constructor(e,t){let i={pageID:(t=t||{}).pageID||t.id||null,namespace:t.namespace||t.ns||null,lang:t.lang||t.language||null,domain:t.domain||null,title:t.title||null,type:"page",redirectTo:null,wikidata:t.wikidata||null,wiki:e||"",categories:[],sections:[],coordinates:[]};if(Object.keys(i).forEach((e=>{Object.defineProperty(this,"_"+e,{enumerable:!1,writable:!0,value:i[e]})})),!0===Dr.isRedirect(this._wiki)){this._type="redirect",this._redirectTo=Dr.parse(this._wiki);const[e,t]=Mr.categories(this._wiki);return this._categories=e,void(this._wiki=t)}this._wiki=Ir(this._wiki);const[a,n]=Mr.categories(this._wiki);this._categories=a,this._wiki=n,this._sections=Mr.section(this)}title(e){if(void 0!==e)return this._title=e,e;if(this._title)return this._title;let t=null,i=this.sentence();return i&&(t=i.bold()),t}pageID(e){return void 0!==e&&(this._pageID=e),this._pageID||null}wikidata(e){return void 0!==e&&(this._wikidata=e),this._wikidata||null}domain(e){return void 0!==e&&(this._domain=e),this._domain||null}language(e){return void 0!==e&&(this._lang=e),this._lang||null}url(){let e=this.title();if(!e)return null;let t=this.language()||"en",i=this.domain()||"wikipedia.org";return e=e.replace(/ /g,"_"),e=encodeURIComponent(e),"https://".concat(t,".").concat(i,"/wiki/").concat(e)}namespace(e){return void 0!==e&&(this._namespace=e),this._namespace||null}isRedirect(){return"redirect"===this._type}redirectTo(){return this._redirectTo}isDisambiguation(){return Tr(this)}categories(e){let t=this._categories||[];return"number"==typeof e?[t[e]]:t}sections(e){let t=this._sections||[];if(t.forEach((e=>{e._doc=this})),"string"==typeof e){let i=e.toLowerCase().trim();return t.filter((e=>e.title().toLowerCase()===i))}return"number"==typeof e?[t[e]]:t}paragraphs(e){let t=[];return this.sections().forEach((e=>{t=t.concat(e.paragraphs())})),"number"==typeof e?[t[e]]:t}sentences(e){let t=[];return this.sections().forEach((e=>{t=t.concat(e.sentences())})),"number"==typeof e?[t[e]]:t}images(e){let t=qr(this,"images",null);return this.infoboxes().forEach((e=>{let i=e.image();i&&t.unshift(i)})),this.templates().forEach((e=>{"gallery"===e.data.template&&(e.data.images=e.data.images||[],e.data.images.forEach((e=>{e instanceof Ar||(e.language=this.language(),e.domain=this.domain(),e=new Ar(e)),t.push(e)})))})),"number"==typeof e?[t[e]]:t}links(e){return qr(this,"links",e)}interwiki(e){return qr(this,"interwiki",e)}lists(e){return qr(this,"lists",e)}tables(e){return qr(this,"tables",e)}templates(e){return qr(this,"templates",e)}references(e){return qr(this,"references",e)}citations(e){return this.references(e)}coordinates(e){return qr(this,"coordinates",e)}infoboxes(e){let t=qr(this,"infoboxes",e);return t=t.sort(((e,t)=>Object.keys(e.data).length>Object.keys(t.data).length?-1:1)),t}text(e){if(e=Pr(e,Rr),!0===this.isRedirect())return"";return this.sections().map((t=>t.text(e))).join("\n\n")}json(e){return e=Pr(e,Rr),Lr(this,e)}wikitext(){return this._wiki||""}debug(){return console.log("\n"),this.sections().forEach((e=>{let t=" - ";for(let i=0;i{let t=Br[e];Ur.prototype[t]=function(t){return this[e](t)[0]||null}})),Ur.prototype.lang=Ur.prototype.language,Ur.prototype.ns=Ur.prototype.namespace,Ur.prototype.plaintext=Ur.prototype.text,Ur.prototype.isDisambig=Ur.prototype.isDisambiguation,Ur.prototype.citations=Ur.prototype.references,Ur.prototype.redirectsTo=Ur.prototype.redirectTo,Ur.prototype.redirect=Ur.prototype.redirectTo,Ur.prototype.redirects=Ur.prototype.redirectTo;var Fr=Ur;const Kr=Fr,{isArray:Wr}=n;const Zr=i,Hr=a,Yr=c,Gr=u,Vr=function(e,t){let i=(e=e.filter((e=>e))).map((e=>new Kr(e.wiki,e.meta)));return 0===i.length?null:Wr(t)||1!==i.length?i:i[0]},Jr=function(e){let t,i=e.userAgent||e["User-Agent"]||e["Api-User-Agent"]||"User of the wtf_wikipedia library";return t=e.noOrigin?"":e.origin||e.Origin||"*",{method:"GET",headers:{"Content-Type":"application/json","Api-User-Agent":i,"User-Agent":i,Origin:t,"Accept-Encoding":"gzip"},redirect:"follow"}},Xr=/^https?:\/\//,Qr={lang:"en",wiki:"wikipedia",domain:void 0,follow_redirects:!0,path:"api.php"};const eo=i;const to=function(e,t,i){"string"==typeof t&&(t={lang:t}),(t={...Qr,...t}).title=e,"string"==typeof e&&Xr.test(e)&&(t={...t,...Hr(e)});const a=Yr(t),n=Jr(t);return Zr(a,n).then((e=>e.json())).then((a=>{let n=Gr(a,t);return n=Vr(n,e),i&&i(null,n),n})).catch((e=>(console.error(e),i&&i(e,null),null)))},io=Fr,ao=function(e,t){return new io(e,t)},no={Doc:Fr,Section:$r,Paragraph:Wt,Sentence:ye,Image:S,Infobox:Dn,Link:le,List:si,Reference:Qe,Table:Nt,Template:Un,http:function(e,t){return eo(e,t).then((function(e){return e.json()}))},wtf:ao};let ro=wn,oo=Ci;ao.fetch=function(e,t,i){return to(e,t,i)},ao.plugin=ao.extend=function(e){return e(no,ro,oo),this},ao.version="9.0.2";var so=ao;export{so as default}; diff --git a/builds/wtf_wikipedia.js b/builds/wtf_wikipedia.js index fc989ff9..adaea609 100644 --- a/builds/wtf_wikipedia.js +++ b/builds/wtf_wikipedia.js @@ -1,13 +1,13 @@ -/* wtf_wikipedia 9.0.1 MIT */ +/* wtf_wikipedia 9.0.2 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('isomorphic-unfetch')) : typeof define === 'function' && define.amd ? define(['isomorphic-unfetch'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtf = factory(global.unfetch)); -}(this, (function (isomorphicUnfetch) { 'use strict'; +})(this, (function (require$$0) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - var isomorphicUnfetch__default = /*#__PURE__*/_interopDefaultLegacy(isomorphicUnfetch); + var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0); /** * Parses out the domain and title from a url @@ -16,7 +16,8 @@ * @param {string} url The url that will be parsed * @returns {{domain: string, title: string}} The domain and title of a url */ - const parseUrl = function (url) { + + const parseUrl$1 = function (url) { let parsed = new URL(url); let title = parsed.pathname.replace(/^\/(wiki\/)?/, ''); title = decodeURIComponent(title); @@ -26,7 +27,7 @@ }; }; - var parseUrl_1 = parseUrl; + var parseUrl_1 = parseUrl$1; /** * capitalizes the input @@ -37,6 +38,7 @@ * @param {string} [str] the string that will be capitalized * @returns {string} the capitalized string */ + function capitalise(str) { if (str && typeof str === 'string') { return str.charAt(0).toUpperCase() + str.slice(1); @@ -89,7 +91,7 @@ return x && Object.prototype.toString.call(x) === '[object Object]'; } - var helpers = { + var helpers$1 = { capitalise, trim_whitespace: trim_whitespace$1, isArray: isArray$4, @@ -98,7 +100,7 @@ const { isArray: isArray$3 - } = helpers; + } = helpers$1; const isInterWiki = /(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/; const defaults$c = { action: 'query', @@ -120,7 +122,10 @@ */ const toQueryString = function (obj) { - return Object.entries(obj).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join('&'); + return Object.entries(obj).map(_ref => { + let [key, value] = _ref; + return "".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(value)); + }).join('&'); }; /** * cleans and prepares the tile by replacing the spaces with underscores (_) and trimming the white spaces of the ends @@ -143,7 +148,7 @@ */ - const makeUrl = function (options) { + const makeUrl$1 = function (options) { let params = Object.assign({}, defaults$c); //default url let apiPath = ''; //add support for third party apis @@ -151,9 +156,9 @@ if (options.domain) { //wikimedia is the only api that uses `/w/api` as its path. other wikis use other paths let path = isInterWiki.test(options.domain) ? 'w/api.php' : options.path; - apiPath = `https://${options.domain}/${path}?`; + apiPath = "https://".concat(options.domain, "/").concat(path, "?"); } else if (options.lang && options.wiki) { - apiPath = `https://${options.lang}.${options.wiki}.org/w/api.php?`; + apiPath = "https://".concat(options.lang, ".").concat(options.wiki, ".org/w/api.php?"); } else { return ''; } @@ -182,10 +187,10 @@ } //make it! - return `${apiPath}${toQueryString(params)}`; + return "".concat(apiPath).concat(toQueryString(params)); }; - var makeUrl_1 = makeUrl; + var makeUrl_1 = makeUrl$1; /** * parses the media wiki api response to something we can use @@ -197,7 +202,9 @@ * @param {object} [options] * @returns {*} result */ - const getResult = function (data, options = {}) { + + const getResult$1 = function (data) { + let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; //get all the pagesIds from the result let pages = Object.keys(data.query.pages); // map over the pageIds to parse out all the information @@ -220,7 +227,7 @@ let domain = options.domain; if (!domain && options.wiki) { - domain = `${options.wiki}.org`; + domain = "".concat(options.wiki, ".org"); } let meta = Object.assign({}, options, { @@ -238,7 +245,7 @@ }); }; - var getResult_1 = getResult; + var getResult_1 = getResult$1; /** * helper for looping around all sections of a document @@ -249,7 +256,8 @@ * @param {string | number} [clue] the clue that will be used with the function * @returns {Array|*} the array of item at the index of the clue */ - const sectionMap = function (doc, fn, clue) { + + const sectionMap$1 = function (doc, fn, clue) { let arr = []; doc.sections().forEach(sec => { let list = []; @@ -276,7 +284,7 @@ return arr; }; - var _sectionMap = sectionMap; + var _sectionMap = sectionMap$1; /** * applies the the key values of defaults to options @@ -286,12 +294,14 @@ * @param {object} defaults the defaults * @returns {object} the user options with the defaults applied */ - const setDefaults = function (options, defaults) { + + const setDefaults$a = function (options, defaults) { return Object.assign({}, defaults, options); }; - var setDefaults_1 = setDefaults; + var setDefaults_1 = setDefaults$a; + const setDefaults$9 = setDefaults_1; /** * @typedef DocumentToJsonOptions * @property {boolean | undefined} title @@ -336,8 +346,8 @@ * @returns {documentToJsonReturn} */ - const toJSON$3 = function (doc, options) { - options = setDefaults_1(options, defaults$b); + const toJSON$8 = function (doc, options) { + options = setDefaults$9(options, defaults$b); /** * @type {documentToJsonReturn} */ @@ -390,7 +400,7 @@ return data; }; - var toJson$6 = toJSON$3; + var toJson$9 = toJSON$8; var categories$1 = ['category', //en 'abdeeling', // pdc @@ -622,8 +632,8 @@ // 'သဵင်မိူၼ် တူၼ်ႈထႅဝ်ပႅၵ်ႇ', //shn ]; - // used in titles to denote disambiguation pages // see 'Football_(disambiguation)' + var disambig_titles = ['disambiguation', //en 'homonymie', //fr 'توضيح', //ar @@ -686,7 +696,7 @@ 'ファイル' //ja ]; - var infoboxes = ['infobox', //en + var infoboxes$2 = ['infobox', //en 'anfo', //mwl 'anuāmapa', //haw 'bilgi kutusu', //tr @@ -751,7 +761,7 @@ '明細' //zh_yue ]; - var redirects$1 = ['adkas', //br + var redirects$2 = ['adkas', //br 'aýdaw', 'doorverwijzing', //nl 'ohjaus', 'patrz', //pl 'přesměruj', 'redirección', 'redireccion', 'redirección', //es @@ -786,14 +796,13 @@ * disambig: string[] * }} */ - - var i18n = { + var i18n$6 = { categories: categories$1, disambig_templates: disambig_templates, disambig_titles: disambig_titles, images: images, - infoboxes: infoboxes, - redirects: redirects$1, + infoboxes: infoboxes$2, + redirects: redirects$2, references: references //specials: [ //'спэцыяльныя', //'especial', @@ -844,16 +853,17 @@ }; - //alt disambig-templates en-wikipedia uses let d = ' disambiguation'; - const templates$a = ['dab', 'dab', 'disamb', 'disambig', 'geodis', 'hndis', 'setindex', 'ship index', 'split dab', 'sport index', 'wp disambig', 'disambiguation cleanup', 'airport' + d, 'biology' + d, 'call sign' + d, 'caselaw' + d, 'chinese title' + d, 'genus' + d, 'hospital' + d, 'lake index', 'letter' + d, 'letter-number combination' + d, 'mathematical' + d, 'military unit' + d, 'mountainindex', 'number' + d, 'phonetics' + d, 'place name' + d, 'portal' + d, 'road' + d, 'school' + d, 'species latin name abbreviation' + d, 'species latin name' + d, 'station' + d, 'synagogue' + d, 'taxonomic authority' + d, 'taxonomy' + d].reduce((h, str) => { + const templates$c = ['dab', 'dab', 'disamb', 'disambig', 'geodis', 'hndis', 'setindex', 'ship index', 'split dab', 'sport index', 'wp disambig', 'disambiguation cleanup', 'airport' + d, 'biology' + d, 'call sign' + d, 'caselaw' + d, 'chinese title' + d, 'genus' + d, 'hospital' + d, 'lake index', 'letter' + d, 'letter-number combination' + d, 'mathematical' + d, 'military unit' + d, 'mountainindex', 'number' + d, 'phonetics' + d, 'place name' + d, 'portal' + d, 'road' + d, 'school' + d, 'species latin name abbreviation' + d, 'species latin name' + d, 'station' + d, 'synagogue' + d, 'taxonomic authority' + d, 'taxonomy' + d].reduce((h, str) => { h[str] = true; return h; }, {}); - var _disambig = templates$a; + var _disambig = templates$c; - const inTitle = new RegExp('. \\((' + i18n.disambig_titles.join('|') + ')\\)$', 'i'); - const i18n_templates = i18n.disambig_templates.reduce((h, str) => { + const i18n$5 = i18n$6; + const alt_disambig = _disambig; + const inTitle = new RegExp('. \\((' + i18n$5.disambig_titles.join('|') + ')\\)$', 'i'); + const i18n_templates = i18n$5.disambig_templates.reduce((h, str) => { h[str] = true; return h; }, {}); // look for '... may refer to' @@ -882,11 +892,11 @@ */ - const isDisambig = function (doc) { + const isDisambig$1 = function (doc) { // check for a {{disambig}} template let templates = doc.templates().map(tmpl => tmpl.json()); let found = templates.find(obj => { - return _disambig.hasOwnProperty(obj.template) || i18n_templates.hasOwnProperty(obj.template); + return alt_disambig.hasOwnProperty(obj.template) || i18n_templates.hasOwnProperty(obj.template); }); if (found) { @@ -908,8 +918,9 @@ return false; }; - var isDisambig_1 = isDisambig; + var isDisambig_1 = isDisambig$1; + const setDefaults$8 = setDefaults_1; const defaults$a = { caption: true, alt: true, @@ -918,8 +929,8 @@ url: true }; // - const toJson$5 = function (img, options) { - options = setDefaults_1(options, defaults$a); + const toJson$8 = function (img, options) { + options = setDefaults$8(options, defaults$a); let json = { file: img.file() }; @@ -948,8 +959,9 @@ return json; }; - var toJson_1$3 = toJson$5; + var toJson_1$3 = toJson$8; + const toJson$7 = toJson_1$3; const server = 'wikipedia.org'; const encodeTitle = function (file) { @@ -969,7 +981,7 @@ }; //the class for our image generation functions - const Image = function (data) { + const Image$5 = function (data) { Object.defineProperty(this, 'data', { enumerable: false, value: data @@ -1008,8 +1020,8 @@ // let lang = 'en' //this.language() || 'en' //hmm: get actual language? let fileName = makeSrc(this.file()); let domain = this.data.domain || server; - let path = `wiki/Special:Redirect/file`; - return `https://${domain}/${path}/${fileName}`; + let path = "wiki/Special:Redirect/file"; + return "https://".concat(domain, "/").concat(path, "/").concat(fileName); }, thumbnail(size) { @@ -1029,7 +1041,7 @@ json: function (options) { options = options || {}; - return toJson_1$3(this, options); + return toJson$7(this, options); }, text: function () { return ''; @@ -1039,13 +1051,13 @@ } }; Object.keys(methods$8).forEach(k => { - Image.prototype[k] = methods$8[k]; + Image$5.prototype[k] = methods$8[k]; }); - Image.prototype.src = Image.prototype.url; - Image.prototype.thumb = Image.prototype.thumbnail; - var Image_1 = Image; + Image$5.prototype.src = Image$5.prototype.url; + Image$5.prototype.thumb = Image$5.prototype.thumbnail; + var Image_1 = Image$5; - var languages = { + var languages$4 = { aa: 'Afar', //Afar ab: 'Аҧсуа', @@ -1553,249 +1565,6 @@ zu: 'isiZulu' //Zulu }; - languages.aa; - languages.ab; - languages.af; - languages.ak; - languages.als; - languages.am; - languages.an; - languages.ang; - languages.ar; - languages.arc; - languages.as; - languages.ast; - languages.av; - languages.ay; - languages.az; - languages.ba; - languages.bar; - languages.bcl; - languages.be; - languages.bg; - languages.bh; - languages.bi; - languages.bm; - languages.bn; - languages.bo; - languages.bpy; - languages.br; - languages.bs; - languages.bug; - languages.bxr; - languages.ca; - languages.cdo; - languages.ce; - languages.ceb; - languages.ch; - languages.cho; - languages.chr; - languages.chy; - languages.co; - languages.cr; - languages.cs; - languages.csb; - languages.cu; - languages.cv; - languages.cy; - languages.da; - languages.de; - languages.diq; - languages.dsb; - languages.dv; - languages.dz; - languages.ee; - languages.far; - languages.el; - languages.en; - languages.eo; - languages.es; - languages.et; - languages.eu; - languages.ext; - languages.ff; - languages.fi; - languages.fj; - languages.fo; - languages.fr; - languages.frp; - languages.fur; - languages.fy; - languages.ga; - languages.gan; - languages.gd; - languages.gil; - languages.gl; - languages.gn; - languages.got; - languages.gu; - languages.gv; - languages.ha; - languages.hak; - languages.haw; - languages.he; - languages.hi; - languages.ho; - languages.hr; - languages.ht; - languages.hu; - languages.hy; - languages.hz; - languages.ia; - languages.id; - languages.ie; - languages.ig; - languages.ii; - languages.ik; - languages.ilo; - languages.io; - languages.is; - languages.it; - languages.iu; - languages.ja; - languages.jbo; - languages.jv; - languages.ka; - languages.kg; - languages.ki; - languages.kj; - languages.kk; - languages.kl; - languages.km; - languages.kn; - languages.khw; - languages.ko; - languages.kr; - languages.ks; - languages.ksh; - languages.ku; - languages.kv; - languages.kw; - languages.ky; - languages.la; - languages.lad; - languages.lan; - languages.lb; - languages.lg; - languages.li; - languages.lij; - languages.lmo; - languages.ln; - languages.lo; - languages.lt; - languages.lv; - languages.mg; - languages.man; - languages.mh; - languages.mi; - languages.min; - languages.mk; - languages.ml; - languages.mn; - languages.mo; - languages.mr; - languages.ms; - languages.mt; - languages.mus; - languages.my; - languages.na; - languages.nah; - languages.nap; - languages.nd; - languages.nds; - languages.ne; - languages.ng; - languages.nl; - languages.nn; - languages.no; - languages.nr; - languages.nso; - languages.nrm; - languages.nv; - languages.ny; - languages.oc; - languages.oj; - languages.om; - languages.or; - languages.os; - languages.pa; - languages.pag; - languages.pam; - languages.pap; - languages.pdc; - languages.pi; - languages.pih; - languages.pl; - languages.pms; - languages.ps; - languages.pt; - languages.qu; - languages.rm; - languages.rmy; - languages.rn; - languages.ro; - languages.ru; - languages.rw; - languages.sa; - languages.sc; - languages.scn; - languages.sco; - languages.sd; - languages.se; - languages.sg; - languages.sh; - languages.si; - languages.simple; - languages.sk; - languages.sl; - languages.sm; - languages.sn; - languages.so; - languages.sq; - languages.sr; - languages.ss; - languages.st; - languages.su; - languages.sv; - languages.sw; - languages.ta; - languages.te; - languages.tet; - languages.tg; - languages.th; - languages.ti; - languages.tk; - languages.tl; - languages.tlh; - languages.tn; - languages.to; - languages.tpi; - languages.tr; - languages.ts; - languages.tt; - languages.tum; - languages.tw; - languages.ty; - languages.udm; - languages.ug; - languages.uk; - languages.ur; - languages.uz; - languages.ve; - languages.vi; - languages.vec; - languages.vls; - languages.vo; - languages.wa; - languages.war; - languages.wo; - languages.xal; - languages.xh; - languages.yi; - languages.yo; - languages.za; - languages.zh; - languages.zu; const wp = '.wikipedia.org/wiki/$1'; const wm = '.wikimedia.org/wiki/$1'; @@ -2260,453 +2029,14 @@ v: 'en.wikiversity.org/wiki/$1', voy: 'en.wikivoyage.org/wiki/$1' }; - interwiki$1.acronym; - interwiki$1.advisory; - interwiki$1.advogato; - interwiki$1.aew; - interwiki$1.appropedia; - interwiki$1.aquariumwiki; - interwiki$1.arborwiki; - interwiki$1.arxiv; - interwiki$1.atmwiki; - interwiki$1.baden; - interwiki$1.battlestarwiki; - interwiki$1.bcnbio; - interwiki$1.beacha; - interwiki$1.betawiki; - interwiki$1.bibcode; - interwiki$1.bibliowiki; - interwiki$1.bluwiki; - interwiki$1.blw; - interwiki$1.botwiki; - interwiki$1.boxrec; - interwiki$1.brickwiki; - interwiki$1.bugzilla; - interwiki$1.bulba; - interwiki$1.c; - interwiki$1.c2; - interwiki$1.c2find; - interwiki$1.cache; - interwiki$1.cellwiki; - interwiki$1.centralwikia; - interwiki$1.chej; - interwiki$1.choralwiki; - interwiki$1.citizendium; - interwiki$1.ckwiss; - interwiki$1.comixpedia; - interwiki$1.commons; - interwiki$1.communityscheme; - interwiki$1.communitywiki; - interwiki$1.comune; - interwiki$1.creativecommons; - interwiki$1.creativecommonswiki; - interwiki$1.cxej; - interwiki$1.dcc; - interwiki$1.dcdatabase; - interwiki$1.dcma; - interwiki$1.debian; - interwiki$1.delicious; - interwiki$1.devmo; - interwiki$1.dictionary; - interwiki$1.dict; - interwiki$1.disinfopedia; - interwiki$1.distributedproofreaders; - interwiki$1.distributedproofreadersca; - interwiki$1.dmoz; - interwiki$1.dmozs; - interwiki$1.doi; - interwiki$1.donate; - interwiki$1.doom_wiki; - interwiki$1.download; - interwiki$1.dbdump; - interwiki$1.dpd; - interwiki$1.drae; - interwiki$1.dreamhost; - interwiki$1.drumcorpswiki; - interwiki$1.dwjwiki; - interwiki$1.ecoreality; - interwiki$1.ecxei; - interwiki$1.elibre; - interwiki$1.emacswiki; - interwiki$1.encyc; - interwiki$1.energiewiki; - interwiki$1.englyphwiki; - interwiki$1.enkol; - interwiki$1.eokulturcentro; - interwiki$1.esolang; - interwiki$1.etherpad; - interwiki$1.ethnologue; - interwiki$1.ethnologuefamily; - interwiki$1.evowiki; - interwiki$1.exotica; - interwiki$1.fanimutationwiki; - interwiki$1.fedora; - interwiki$1.finalfantasy; - interwiki$1.finnix; - interwiki$1.flickruser; - interwiki$1.flickrphoto; - interwiki$1.floralwiki; - interwiki$1.foldoc; - interwiki$1.foundation; - interwiki$1.foundationsite; - interwiki$1.foxwiki; - interwiki$1.freebio; - interwiki$1.freebsdman; - interwiki$1.freeculturewiki; - interwiki$1.freedomdefined; - interwiki$1.freefeel; - interwiki$1.freekiwiki; - interwiki$1.freesoft; - interwiki$1.ganfyd; - interwiki$1.gardenology; - interwiki$1.gausswiki; - interwiki$1.gentoo; - interwiki$1.genwiki; - interwiki$1.gerrit; - interwiki$1.git; - interwiki$1.google; - interwiki$1.googledefine; - interwiki$1.googlegroups; - interwiki$1.guildwarswiki; - interwiki$1.guildwiki; - interwiki$1.guc; - interwiki$1.gucprefix; - interwiki$1.gutenberg; - interwiki$1.gutenbergwiki; - interwiki$1.hackerspaces; - interwiki$1.h2wiki; - interwiki$1.hammondwiki; - interwiki$1.hdl; - interwiki$1.heraldik; - interwiki$1.heroeswiki; - interwiki$1.horizonlabs; - interwiki$1.hrwiki; - interwiki$1.hrfwiki; - interwiki$1.hupwiki; - interwiki$1.iarchive; - interwiki$1.imdbname; - interwiki$1.imdbtitle; - interwiki$1.imdbcompany; - interwiki$1.imdbcharacter; - interwiki$1.incubator; - interwiki$1.infosecpedia; - interwiki$1.infosphere; - interwiki$1.issn; - interwiki$1.iuridictum; - interwiki$1.jaglyphwiki; - interwiki$1.jefo; - interwiki$1.jerseydatabase; - interwiki$1.jira; - interwiki$1.jspwiki; - interwiki$1.jstor; - interwiki$1.kamelo; - interwiki$1.karlsruhe; - interwiki$1.kinowiki; - interwiki$1.komicawiki; - interwiki$1.kontuwiki; - interwiki$1.wikitech; - interwiki$1.libreplanet; - interwiki$1.linguistlist; - interwiki$1.linuxwiki; - interwiki$1.linuxwikide; - interwiki$1.liswiki; - interwiki$1.literateprograms; - interwiki$1.livepedia; - interwiki$1.localwiki; - interwiki$1.lojban; - interwiki$1.lostpedia; - interwiki$1.lqwiki; - interwiki$1.luxo; - interwiki$1.mail; - interwiki$1.mailarchive; - interwiki$1.mariowiki; - interwiki$1.marveldatabase; - interwiki$1.meatball; - interwiki$1.mw; - interwiki$1.mediazilla; - interwiki$1.memoryalpha; - interwiki$1.metawiki; - interwiki$1.metawikimedia; - interwiki$1.metawikipedia; - interwiki$1.mineralienatlas; - interwiki$1.moinmoin; - interwiki$1.monstropedia; - interwiki$1.mosapedia; - interwiki$1.mozcom; - interwiki$1.mozillawiki; - interwiki$1.mozillazinekb; - interwiki$1.musicbrainz; - interwiki$1.mediawikiwiki; - interwiki$1.mwod; - interwiki$1.mwot; - interwiki$1.nkcells; - interwiki$1.nara; - interwiki$1.nosmoke; - interwiki$1.nost; - interwiki$1.nostalgia; - interwiki$1.oeis; - interwiki$1.oldwikisource; - interwiki$1.olpc; - interwiki$1.omegawiki; - interwiki$1.onelook; - interwiki$1.openlibrary; - interwiki$1.openstreetmap; - interwiki$1.openwetware; - interwiki$1.opera7wiki; - interwiki$1.organicdesign; - interwiki$1.orthodoxwiki; - interwiki$1.osmwiki; - interwiki$1.otrs; - interwiki$1.otrswiki; - interwiki$1.ourmedia; - interwiki$1.outreach; - interwiki$1.outreachwiki; - interwiki$1.owasp; - interwiki$1.panawiki; - interwiki$1.patwiki; - interwiki$1.personaltelco; - interwiki$1.petscan; - interwiki$1.phab; - interwiki$1.phabricator; - interwiki$1.phwiki; - interwiki$1.phpwiki; - interwiki$1.planetmath; - interwiki$1.pmeg; - interwiki$1.pmid; - interwiki$1.pokewiki; - interwiki$1.policy; - interwiki$1.proofwiki; - interwiki$1.pyrev; - interwiki$1.pythoninfo; - interwiki$1.pythonwiki; - interwiki$1.pywiki; - interwiki$1.psycle; - interwiki$1.quality; - interwiki$1.quarry; - interwiki$1.regiowiki; - interwiki$1.rev; - interwiki$1.revo; - interwiki$1.rfc; - interwiki$1.rheinneckar; - interwiki$1.robowiki; - interwiki$1.rodovid; - interwiki$1.reuterswiki; - interwiki$1.rowiki; - interwiki$1.rt; - interwiki$1.s23wiki; - interwiki$1.scholar; - interwiki$1.schoolswp; - interwiki$1.scores; - interwiki$1.scoutwiki; - interwiki$1.scramble; - interwiki$1.seapig; - interwiki$1.seattlewiki; - interwiki$1.slwiki; - interwiki$1.senseislibrary; - interwiki$1.sharemap; - interwiki$1.silcode; - interwiki$1.slashdot; - interwiki$1.sourceforge; - interwiki$1.spcom; - interwiki$1.species; - interwiki$1.squeak; - interwiki$1.stats; - interwiki$1.stewardry; - interwiki$1.strategy; - interwiki$1.strategywiki; - interwiki$1.sulutil; - interwiki$1.swtrain; - interwiki$1.svn; - interwiki$1.swinbrain; - interwiki$1.tabwiki; - interwiki$1.tclerswiki; - interwiki$1.technorati; - interwiki$1.tenwiki; - interwiki$1.testwiki; - interwiki$1.testwikidata; - interwiki$1.test2wiki; - interwiki$1.tfwiki; - interwiki$1.thelemapedia; - interwiki$1.theopedia; - interwiki$1.thinkwiki; - interwiki$1.ticket; - interwiki$1.tmbw; - interwiki$1.tmnet; - interwiki$1.tmwiki; - interwiki$1.toolforge; - interwiki$1.toollabs; - interwiki$1.tools; - interwiki$1.tswiki; - interwiki$1.translatewiki; - interwiki$1.tviv; - interwiki$1.tvtropes; - interwiki$1.twiki; - interwiki$1.tyvawiki; - interwiki$1.umap; - interwiki$1.uncyclopedia; - interwiki$1.unihan; - interwiki$1.unreal; - interwiki$1.urbandict; - interwiki$1.usej; - interwiki$1.usemod; - interwiki$1.usability; - interwiki$1.utrs; - interwiki$1.vikidia; - interwiki$1.vlos; - interwiki$1.vkol; - interwiki$1.voipinfo; - interwiki$1.votewiki; - interwiki$1.werelate; - interwiki$1.wg; - interwiki$1.wikia; - interwiki$1.wikiasite; - interwiki$1.wikiapiary; - interwiki$1.wikibooks; - interwiki$1.wikichristian; - interwiki$1.wikicities; - interwiki$1.wikicity; - interwiki$1.wikiconference; - interwiki$1.wikidata; - interwiki$1.wikif1; - interwiki$1.wikifur; - interwiki$1.wikihow; - interwiki$1.wikiindex; - interwiki$1.wikilemon; - interwiki$1.wikilivres; - interwiki$1.wikilivresru; - interwiki$1.wikimedia; - interwiki$1.wikinews; - interwiki$1.wikinfo; - interwiki$1.wikinvest; - interwiki$1.wikiotics; - interwiki$1.wikipapers; - interwiki$1.wikipedia; - interwiki$1.wikipediawikipedia; - interwiki$1.wikiquote; - interwiki$1.wikisophia; - interwiki$1.wikisource; - interwiki$1.wikispecies; - interwiki$1.wikispot; - interwiki$1.wikiskripta; - interwiki$1.labsconsole; - interwiki$1.wikiti; - interwiki$1.wikiversity; - interwiki$1.wikivoyage; - interwiki$1.betawikiversity; - interwiki$1.wikiwikiweb; - interwiki$1.wiktionary; - interwiki$1.wipipedia; - interwiki$1.wlug; - interwiki$1.wmam; - interwiki$1.wmar; - interwiki$1.wmat; - interwiki$1.wmau; - interwiki$1.wmbd; - interwiki$1.wmbe; - interwiki$1.wmbr; - interwiki$1.wmca; - interwiki$1.wmch; - interwiki$1.wmcl; - interwiki$1.wmcn; - interwiki$1.wmco; - interwiki$1.wmcz; - interwiki$1.wmdc; - interwiki$1.securewikidc; - interwiki$1.wmde; - interwiki$1.wmdk; - interwiki$1.wmee; - interwiki$1.wmec; - interwiki$1.wmes; - interwiki$1.wmet; - interwiki$1.wmfdashboard; - interwiki$1.wmfi; - interwiki$1.wmfr; - interwiki$1.wmge; - interwiki$1.wmhi; - interwiki$1.wmhk; - interwiki$1.wmhu; - interwiki$1.wmid; - interwiki$1.wmil; - interwiki$1.wmin; - interwiki$1.wmit; - interwiki$1.wmke; - interwiki$1.wmmk; - interwiki$1.wmmx; - interwiki$1.wmnl; - interwiki$1.wmnyc; - interwiki$1.wmno; - interwiki$1.wmph; - interwiki$1.wmpl; - interwiki$1.wmpt; - interwiki$1.wmpunjabi; - interwiki$1.wmromd; - interwiki$1.wmrs; - interwiki$1.wmru; - interwiki$1.wmse; - interwiki$1.wmsk; - interwiki$1.wmtr; - interwiki$1.wmtw; - interwiki$1.wmua; - interwiki$1.wmuk; - interwiki$1.wmve; - interwiki$1.wmza; - interwiki$1.wm2005; - interwiki$1.wm2006; - interwiki$1.wm2007; - interwiki$1.wm2008; - interwiki$1.wm2009; - interwiki$1.wm2010; - interwiki$1.wm2011; - interwiki$1.wm2012; - interwiki$1.wm2013; - interwiki$1.wm2014; - interwiki$1.wm2015; - interwiki$1.wm2016; - interwiki$1.wm2017; - interwiki$1.wm2018; - interwiki$1.wmania; - interwiki$1.wikimania; - interwiki$1.wmteam; - interwiki$1.wmf; - interwiki$1.wmfblog; - interwiki$1.wmdeblog; - interwiki$1.wookieepedia; - interwiki$1.wowwiki; - interwiki$1.wqy; - interwiki$1.wurmpedia; - interwiki$1.viaf; - interwiki$1.zrhwiki; - interwiki$1.zum; - interwiki$1.zwiki; - interwiki$1.m; - interwiki$1.meta; - interwiki$1.sep11; - interwiki$1.d; - interwiki$1.minnan; - interwiki$1.nb; - interwiki$1.nan; - interwiki$1.vro; - interwiki$1.cmn; - interwiki$1.lzh; - interwiki$1.rup; - interwiki$1.gsw; - interwiki$1.sgs; - interwiki$1.egl; - interwiki$1.w; - interwiki$1.wikt; - interwiki$1.q; - interwiki$1.b; - interwiki$1.n; - interwiki$1.s; - interwiki$1.chapter; - interwiki$1.v; - interwiki$1.voy; + const languages$3 = languages$4; //some colon symbols are valid links, like `America: That place` //so we have to whitelist allowable interwiki links - //add language prefixes too.. - Object.keys(languages).forEach(k => { - interwiki$1[k] = k + '.wikipedia.org/wiki/$1'; + const interwikis = interwiki$1; //add language prefixes too.. + + Object.keys(languages$3).forEach(k => { + interwikis[k] = k + '.wikipedia.org/wiki/$1'; }); //this is predictably very complicated. // https://meta.wikimedia.org/wiki/Help:Interwiki_linking @@ -2726,7 +2056,7 @@ if (site.indexOf(':') !== -1) { let [, wiki, lang] = site.match(/^:?(.*):(.*)/); //only allow interwikis to these specific places - if (interwiki$1.hasOwnProperty(wiki) && languages.hasOwnProperty(lang) === false) { + if (interwikis.hasOwnProperty(wiki) && languages$3.hasOwnProperty(lang) === false) { return obj; } @@ -2735,7 +2065,7 @@ lang: lang }; } else { - if (interwiki$1.hasOwnProperty(site) === false) { + if (interwikis.hasOwnProperty(site) === false) { return obj; } @@ -2750,6 +2080,7 @@ var interwiki = parseInterwiki; + const parse_interwiki = interwiki; const ignore_links = /^:?(category|catégorie|kategorie|categoría|categoria|categorie|kategoria|تصنيف|image|file|fichier|datei|media):/i; const external_link = /\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]| ]{4,1500})([| ].*?)?\]/g; const link_reg = /\[\[(.{0,160}?)\]\]([a-z]+)?/gi; //allow dangling suffixes - "[[flanders]]s" @@ -2809,7 +2140,7 @@ return ''; }); //grab any fr:Paris parts - obj = interwiki(obj); + obj = parse_interwiki(obj); if (obj.wiki) { obj.type = 'interwiki'; @@ -2855,9 +2186,12 @@ return links; }; - var parse$8 = parse_links; + var parse$m = parse_links; - const REDIRECT_REGEX = new RegExp('^[ \n\t]*?#(' + i18n.redirects.join('|') + ') *?(\\[\\[.{2,180}?\\]\\])', 'i'); + const i18n$4 = i18n$6; + const parseLink = parse$m; //pulls target link out of redirect page + + const REDIRECT_REGEX = new RegExp('^[ \n\t]*?#(' + i18n$4.redirects.join('|') + ') *?(\\[\\[.{2,180}?\\]\\])', 'i'); const isRedirect = function (wiki) { //too long to be a redirect? @@ -2868,34 +2202,34 @@ return REDIRECT_REGEX.test(wiki); }; - const parse$7 = function (wiki) { + const parse$l = function (wiki) { let m = wiki.match(REDIRECT_REGEX); if (m && m[2]) { - let links = parse$8(m[2]) || []; + let links = parseLink(m[2]) || []; return links[0]; } return {}; }; - var redirects = { + var redirects$1 = { isRedirect: isRedirect, - parse: parse$7 + parse: parse$l }; - //okay, i know you're not supposed to regex html, but... //https://en.wikipedia.org/wiki/Help:HTML_in_wikitext //these are things we throw-away //these will mess-up if they're nested, but they're not usually. - const ignore$1 = ['table', 'code', 'score', 'data', 'categorytree', 'charinsert', 'hiero', 'imagemap', 'inputbox', 'nowiki', 'poem', 'references', 'source', 'syntaxhighlight', 'timeline']; - const openTag = `< ?(${ignore$1.join('|')}) ?[^>]{0,200}?>`; - const closeTag = `< ?/ ?(${ignore$1.join('|')}) ?>`; + + const ignore$2 = ['table', 'code', 'score', 'data', 'categorytree', 'charinsert', 'hiero', 'imagemap', 'inputbox', 'nowiki', 'poem', 'references', 'source', 'syntaxhighlight', 'timeline']; + const openTag = "< ?(".concat(ignore$2.join('|'), ") ?[^>]{0,200}?>"); + const closeTag = "< ?/ ?(".concat(ignore$2.join('|'), ") ?>"); const anyChar = '\\s\\S'; //including newline - const noThanks = new RegExp(`${openTag}[${anyChar}]+?${closeTag}`, 'gi'); + const noThanks = new RegExp("".concat(openTag, "[").concat(anyChar, "]+?").concat(closeTag), 'gi'); - const kill_xml = function (wiki) { + const kill_xml$1 = function (wiki) { //( tags are parsed in Section class) - luckily, refs can't be recursive. //types of html/xml that we want to trash completely. wiki = wiki.replace(noThanks, ' '); //some xml-like fragments we can also kill @@ -2906,11 +2240,11 @@ wiki = wiki.replace(/ ?< ?(ref) [a-zA-Z0-9=" ]{2,100}\/ ?> ?/g, ' '); // // convert these html tags to known formatting - wiki = wiki.replace(/(.*?)<\/i>/g, `''$1''`); - wiki = wiki.replace(/(.*?)<\/b>/g, `'''$1'''`); // these are better-handled with templates + wiki = wiki.replace(/(.*?)<\/i>/g, "''$1''"); + wiki = wiki.replace(/(.*?)<\/b>/g, "'''$1'''"); // these are better-handled with templates - wiki = wiki.replace(/(.*?)<\/sub>/g, `{{sub|$1}}`); - wiki = wiki.replace(/(.*?)<\/sup>/g, `{{sup|$1}}`); //some formatting xml, we'll keep their insides though + wiki = wiki.replace(/(.*?)<\/sub>/g, "{{sub|$1}}"); + wiki = wiki.replace(/(.*?)<\/sup>/g, "{{sup|$1}}"); //some formatting xml, we'll keep their insides though wiki = wiki.replace(/ ?<[ /]?(p|sub|sup|span|nowiki|div|table|br|tr|td|th|pre|pre2|hr)[ /]?> ?/g, ' '); //, @@ -2923,8 +2257,9 @@ return wiki.trim(); }; - var kill_xml_1 = kill_xml; + var kill_xml_1 = kill_xml$1; + const kill_xml = kill_xml_1; /** * removes unnecessary strings from the wikitext * it is mostly-formatting stuff can be cleaned-up first, to make life easier @@ -2934,7 +2269,7 @@ * @returns {string} the processed text */ - function preProcess(wiki) { + function preProcess$1(wiki) { //remove comments wiki = wiki.replace(//g, ''); wiki = wiki.replace(/__(NOTOC|NOEDITSECTION|FORCETOC|TOC)__/gi, ''); //signitures @@ -2952,7 +2287,7 @@ wiki = wiki.replace(/ /g, ' '); //give it the inglorious send-off it deserves.. - wiki = kill_xml_1(wiki); //({{template}},{{template}}) leaves empty parentheses + wiki = kill_xml(wiki); //({{template}},{{template}}) leaves empty parentheses wiki = wiki.replace(/\([,;: ]+\)/g, ''); //these templates just screw things up, too @@ -2960,11 +2295,11 @@ return wiki; } - var preProcess_1 = preProcess; + var preProcess_1 = preProcess$1; - //dumpster-dive throws everything into mongodb - github.com/spencermountain/dumpster-dive //mongo has some opinions about what characters are allowed as keys and ids. //https://stackoverflow.com/questions/12397118/mongodb-dot-in-key-name/30254815#30254815 + const specialChar = /[\\.$]/; /** * this function encodes a string to make it mongodb compatible. @@ -2985,7 +2320,8 @@ return str; }; - const encodeObj = function (obj = {}) { + const encodeObj = function () { + let obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; let keys = Object.keys(obj); for (let i = 0; i < keys.length; i += 1) { @@ -3002,10 +2338,12 @@ return obj; }; - var encode = { + var encode$4 = { encodeObj: encodeObj }; + const setDefaults$7 = setDefaults_1; + const encode$3 = encode$4; const defaults$9 = { headers: true, depth: true, @@ -3024,8 +2362,8 @@ * @returns {object} */ - const toJSON$2 = function (section, options) { - options = setDefaults_1(options, defaults$9); + const toJSON$7 = function (section, options) { + options = setDefaults$7(options, defaults$9); /** * @type {object} */ @@ -3075,7 +2413,7 @@ data.templates = templates; //encode them, for mongodb if (options.encode === true) { - data.templates.forEach(t => encode.encodeObj(t)); + data.templates.forEach(t => encode$3.encodeObj(t)); } } } //infobox json data @@ -3115,13 +2453,14 @@ return data; }; - var toJson$4 = toJSON$2; + var toJson$6 = toJSON$7; + const wikis = interwiki$1; const defaults$8 = { type: 'internal' }; - const Link = function (data) { + const Link$1 = function (data) { data = data || {}; data = Object.assign({}, defaults$8, data); Object.defineProperty(this, 'data', { @@ -3219,14 +2558,14 @@ let wiki = this.wiki(); url = 'https://en.wikipedia.org/wiki/$1'; - if (interwiki$1.hasOwnProperty(wiki)) { - url = 'http://' + interwiki$1[this.wiki()]; + if (wikis.hasOwnProperty(wiki)) { + url = 'http://' + wikis[this.wiki()]; } url = url.replace(/\$1/g, page); } else { //internal link - url = `./${this.page()}`; + url = "./".concat(this.page()); } //add anchor on the end @@ -3238,10 +2577,12 @@ } }; Object.keys(methods$7).forEach(k => { - Link.prototype[k] = methods$7[k]; + Link$1.prototype[k] = methods$7[k]; }); - var Link_1 = Link; + var Link_1 = Link$1; + const Link = Link_1; + const parseLinks$1 = parse$m; // const i18n = require('../_data/i18n') // const cat_reg = new RegExp('\\[\\[:?(' + i18n.categories.join('|') + '):[^\\]\\]]{2,80}\\]\\]', 'gi') //return only rendered text of wiki links @@ -3253,11 +2594,11 @@ const getLinks = function (data) { let wiki = data.text; - let links = parse$8(wiki) || []; + let links = parseLinks$1(wiki) || []; data.links = links.map(link => { wiki = wiki.replace(link.raw, link.text || link.page || ''); // delete link.raw - return new Link_1(link); + return new Link(link); }); wiki = removeLinks(wiki); data.text = wiki; @@ -3265,7 +2606,6 @@ var link = getLinks; - //handle the bold/italics const formatting = function (obj) { let bolds = []; let italics = []; @@ -3278,8 +2618,8 @@ }); //''''four'''' → bold with quotes wiki = wiki.replace(/''''(.{0,200}?)''''/g, (a, b) => { - bolds.push(`'${b}'`); - return `'${b}'`; + bolds.push("'".concat(b, "'")); + return "'".concat(b, "'"); }); //'''bold''' wiki = wiki.replace(/'''(.{0,200}?)'''/g, (a, b) => { @@ -3309,6 +2649,7 @@ var formatting_1 = formatting; + const setDefaults$6 = setDefaults_1; const isNumber = /^[0-9,.]+$/; const defaults$7 = { text: true, @@ -3317,8 +2658,8 @@ numbers: true }; - const toJSON$1 = function (s, options) { - options = setDefaults_1(options, defaults$7); + const toJSON$6 = function (s, options) { + options = setDefaults$6(options, defaults$7); let data = {}; let text = s.text(); @@ -3346,9 +2687,12 @@ return data; }; - var toJson$3 = toJSON$1; + var toJson$5 = toJSON$6; + + const toJSON$5 = toJson$5; //where we store the formatting, link, date information - const Sentence = function (data = {}) { + const Sentence$2 = function () { + let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; Object.defineProperty(this, 'data', { enumerable: false, value: data @@ -3395,7 +2739,7 @@ return this.data.text || ''; }, json: function (options) { - return toJson$3(this, options); + return toJSON$5(this, options); }, wikitext: function () { return this.data.wiki || ''; @@ -3405,7 +2749,7 @@ } }; Object.keys(methods$6).forEach(k => { - Sentence.prototype[k] = methods$6[k]; + Sentence$2.prototype[k] = methods$6[k]; }); // aliases const singular$3 = { @@ -3416,7 +2760,7 @@ Object.keys(singular$3).forEach(k => { let sing = singular$3[k]; - Sentence.prototype[sing] = function (clue) { + Sentence$2.prototype[sing] = function (clue) { let arr = this[k](clue); if (typeof clue === 'number') { @@ -3426,10 +2770,9 @@ return arr[0]; }; }); - Sentence.prototype.plaintext = Sentence.prototype.text; - var Sentence_1 = Sentence; + Sentence$2.prototype.plaintext = Sentence$2.prototype.text; + var Sentence_1 = Sentence$2; - //these are used for the sentence-splitter var _abbreviations = ['ad', 'adj', 'adm', 'adv', 'al', 'alta', 'approx', 'apr', 'apt', 'arc', 'ariz', 'assn', 'asst', 'atty', 'aug', 'ave', 'ba', 'bc', 'bl', 'bldg', 'blvd', 'brig', 'bros', 'ca', 'cal', 'calif', 'capt', 'cca', 'cg', 'cl', 'cm', 'cmdr', 'co', 'col', 'colo', 'comdr', 'conn', 'corp', 'cpl', 'cres', 'ct', 'cyn', 'dak', 'dec', 'def', 'dept', 'det', 'dg', 'dist', 'dl', 'dm', 'dr', 'ea', 'eg', 'eng', 'esp', 'esq', 'est', 'etc', 'ex', 'exp', 'feb', 'fem', 'fig', 'fl oz', 'fl', 'fla', 'fm', 'fr', 'ft', 'fy', 'ga', 'gal', 'gb', 'gen', 'gov', 'hg', 'hon', 'hr', 'hrs', 'hwy', 'hz', 'ia', 'ida', 'ie', 'inc', 'inf', 'jan', 'jd', 'jr', 'jul', 'jun', 'kan', 'kans', 'kb', 'kg', 'km', 'kmph', 'lat', 'lb', 'lit', 'llb', 'lm', 'lng', 'lt', 'ltd', 'lx', 'ma', 'maj', 'mar', 'masc', 'mb', 'md', 'messrs', 'mg', 'mi', 'min', 'minn', 'misc', 'mister', 'ml', 'mlle', 'mm', 'mme', 'mph', 'mps', 'mr', 'mrs', 'ms', 'mstr', 'mt', 'neb', 'nebr', 'nee', 'no', 'nov', 'oct', 'okla', 'ont', 'op', 'ord', 'oz', 'pa', 'pd', 'penn', 'penna', 'phd', 'pl', 'pp', 'pref', 'prob', 'prof', 'pron', 'ps', 'psa', 'pseud', 'pt', 'pvt', 'qt', 'que', 'rb', 'rd', 'rep', 'reps', 'res', 'rev', 'sask', 'sec', 'sen', 'sens', 'sep', 'sept', 'sfc', 'sgt', 'sir', 'situ', 'sq ft', 'sq', 'sr', 'ss', 'st', 'supt', 'surg', 'tb', 'tbl', 'tbsp', 'tce', 'td', 'tel', 'temp', 'tenn', 'tex', 'tsp', 'univ', 'usafa', 'ut', 'va', 'vb', 'ver', 'vet', 'vitro', 'vivo', 'vol', 'vs', 'vt', 'wis', 'wisc', 'wr', 'wy', 'wyo', 'yb', 'µg']; //@spencermountain MIT @@ -3437,10 +2780,11 @@ // Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc. // @spencermountain 2015 MIT - const abbreviations = _abbreviations.concat('[^]][^]]'); - const abbrev_reg = new RegExp("(^| |')(" + abbreviations.join('|') + `)[.!?] ?$`, 'i'); - const acronym_reg = /[ .'][A-Z].? *?$/i; - const elipses_reg = /\.{3,} +?$/; + const literalAbbreviations = _abbreviations; + const abbreviations = literalAbbreviations.concat('[^]][^]]'); + const abbrev_reg = new RegExp("(^| |')(" + abbreviations.join('|') + ")[.!?] ?$", 'i'); + const acronym_reg = /[ .'][A-Z].? *$/i; + const elipses_reg = /\.{3,} +$/; const circa_reg = / c\.\s$/; const hasWord = /\p{Letter}/iu; //turn a nested array into one array @@ -3558,8 +2902,13 @@ return sentences; }; - var parse$6 = sentence_parser; + var parse$k = sentence_parser; + const helpers = helpers$1; + const parseLinks = link; + const parseFmt = formatting_1; + const Sentence$1 = Sentence_1; + const sentenceParser = parse$k; /** * This function removes some final characters from the sentence * @@ -3592,18 +2941,18 @@ text: str }; //pull-out the [[links]] - link(obj); + parseLinks(obj); obj.text = postprocess(obj.text); //pull-out the bolds and ''italics'' - obj = formatting_1(obj); //pull-out things like {{start date|...}} + obj = parseFmt(obj); //pull-out things like {{start date|...}} - return new Sentence_1(obj); + return new Sentence$1(obj); } //used for consistency with other class-definitions const byParagraph = function (paragraph) { //array of texts - let sentences = parse$6(paragraph.wiki); //sentence objects + let sentences = sentenceParser(paragraph.wiki); //sentence objects sentences = sentences.map(fromText); //remove :indented first line, as it is often a disambiguation @@ -3627,23 +2976,23 @@ * @param {string} tmpl the string to be striped * @returns {string} the striped string */ - const strip = function (tmpl) { + + const strip$3 = function (tmpl) { tmpl = tmpl.replace(/^\{\{/, ''); tmpl = tmpl.replace(/\}\}$/, ''); return tmpl; }; - var _strip = strip; + var _strip = strip$3; - //normalize template names - const fmtName = function (name) { + const fmtName$2 = function (name) { name = (name || '').trim(); name = name.toLowerCase(); name = name.replace(/_/g, ' '); return name; }; - var _fmtName = fmtName; + var _fmtName = fmtName$2; /** * turn {{name|one|two|three}} into [name, one, two, three] @@ -3652,7 +3001,8 @@ * @param {string} tmpl the template text * @returns {string[]} a array containing all the split parameters */ - const pipeSplitter = function (tmpl) { + + const pipeSplitter$1 = function (tmpl) { //start with a naive '|' split let arr = tmpl.split(/\n?\|/); //we've split by '|', which is pretty lame //look for broken-up links and fix them :/ @@ -3685,10 +3035,10 @@ return arr; }; - var _01PipeSplitter = pipeSplitter; + var _01PipeSplitter = pipeSplitter$1; - //every value in {{tmpl|a|b|c}} needs a name //here we come up with names for them + const hasKey = /^[\p{Letter}0-9._\- '()]+=/iu; //templates with these properties are asking for trouble const reserved = { @@ -3734,9 +3084,10 @@ */ - const keyMaker = function (arr, order) { + const keyMaker$1 = function (arr, order) { let keyIndex = 0; - return arr.reduce((h, str = '') => { + return arr.reduce(function (h) { + let str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; str = str.trim(); //support named keys - 'foo=bar' if (hasKey.test(str) === true) { @@ -3762,7 +3113,7 @@ }, {}); }; - var _02KeyMaker = keyMaker; + var _02KeyMaker = keyMaker$1; const whoCares = { classname: true, @@ -3780,7 +3131,7 @@ colwidth: true }; //remove wiki-cruft & some styling info from templates - const cleanup$1 = function (obj) { + const cleanup$2 = function (obj) { Object.keys(obj).forEach(k => { if (whoCares[k.toLowerCase()] === true) { delete obj[k]; @@ -3794,9 +3145,14 @@ return obj; }; - var _03Cleanup = cleanup$1; + var _03Cleanup = cleanup$2; + const strip$2 = _strip; + const fmtName$1 = _fmtName; const parseSentence$7 = _04Sentence.fromText; + const pipeSplitter = _01PipeSplitter; + const keyMaker = _02KeyMaker; + const cleanup$1 = _03Cleanup; /** * most templates just want plaintext... * @@ -3829,16 +3185,18 @@ */ - const parser = function (tmpl, order = [], fmt) { + const parser = function (tmpl) { + let order = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + let fmt = arguments.length > 2 ? arguments[2] : undefined; //remove {{}}'s and split based on pipes - tmpl = _strip(tmpl || ''); - let arr = _01PipeSplitter(tmpl); //get template name + tmpl = strip$2(tmpl || ''); + let arr = pipeSplitter(tmpl); //get template name let name = arr.shift(); //name each value - let obj = _02KeyMaker(arr, order); //remove wiki-junk + let obj = keyMaker(arr, order); //remove wiki-junk - obj = _03Cleanup(obj); //is this a infobox/reference? + obj = cleanup$1(obj); //is this a infobox/reference? //let known = isKnown(obj); //using '|1=content' is an escaping-thing.. @@ -3858,15 +3216,17 @@ }); //add the template name if (name) { - obj.template = _fmtName(name); + obj.template = fmtName$1(name); } return obj; }; - var toJSON = parser; + var toJSON$4 = parser; - const Reference = function (data, wiki) { + const encode$2 = encode$4; //also called 'citations' + + const Reference$2 = function (data, wiki) { Object.defineProperty(this, 'data', { enumerable: false, value: data @@ -3908,30 +3268,34 @@ wikitext: function () { return this.wiki || ''; }, - json: function (options = {}) { + json: function () { + let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; let json = this.data || {}; //encode them, for mongodb if (options.encode === true) { json = Object.assign({}, json); - json = encode.encodeObj(json); + json = encode$2.encodeObj(json); } return json; } }; Object.keys(methods$5).forEach(k => { - Reference.prototype[k] = methods$5[k]; + Reference$2.prototype[k] = methods$5[k]; }); - var Reference_1 = Reference; + var Reference_1 = Reference$2; - const parseSentence$6 = _04Sentence.fromText; //structured Cite templates - {{Cite.. + const parse$j = toJSON$4; //const parse = require('../../templates/wikipedia/page').citation; + + const parseSentence$6 = _04Sentence.fromText; + const Reference$1 = Reference_1; //structured Cite templates - {{Cite.. const hasCitation = function (str) { return /^ *\{\{ *(cite|citation)/i.test(str) && /\}\} *$/.test(str) && /citation needed/i.test(str) === false; }; const parseCitation = function (tmpl) { - let obj = toJSON(tmpl); + let obj = parse$j(tmpl); obj.type = obj.template.replace(/cite /, ''); obj.template = 'citation'; return obj; @@ -4000,7 +3364,7 @@ wiki = wiki.replace(/ ?<[ /]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ /]?> ?/g, ' '); // - section._references = references.map(obj => new Reference_1(obj.json, obj.wiki)); + section._references = references.map(obj => new Reference$1(obj.json, obj.wiki)); section._wiki = wiki; }; @@ -4008,8 +3372,9 @@ const { trim_whitespace - } = helpers; + } = helpers$1; const parseSentence$5 = _04Sentence.fromText; + const parseReferences = reference; const heading_reg = /^(={1,5})(.{1,200}?)={1,5}$/; /** * @typedef fakeSection @@ -4045,7 +3410,7 @@ let obj = { _wiki: title }; - reference(obj); + parseReferences(obj); title = obj._wiki; //trim leading/trailing whitespace title = trim_whitespace(title); @@ -4062,7 +3427,6 @@ var heading = parseHeading; - //remove top-bottoms const cleanup = function (lines) { lines = lines.filter(line => { //a '|+' row is a 'table caption', remove it. @@ -4085,7 +3449,7 @@ }; //turn newline seperated into '|-' seperated - const findRows = function (lines) { + const findRows$1 = function (lines) { let rows = []; let row = []; lines = cleanup(lines); @@ -4124,7 +3488,7 @@ return rows; }; - var _findRows = findRows; + var _findRows = findRows$1; const getRowSpan = /.*rowspan *= *["']?([0-9]+)["']?[ |]*/; const getColSpan = /.*colspan *= *["']?([0-9]+)["']?[ |]*/; //colspans stretch ←left/right→ @@ -4180,15 +3544,17 @@ }; // - const handleSpans = function (rows) { + const handleSpans$1 = function (rows) { rows = doColSpan(rows); rows = doRowSpan(rows); return rows; }; - var _spans = handleSpans; + var _spans = handleSpans$1; const parseSentence$4 = _04Sentence.fromText; + const findRows = _findRows; + const handleSpans = _spans; const isHeading = /^!/; //common ones const headings$1 = { @@ -4245,7 +3611,8 @@ }; //'!' starts a header-row - const findHeaders = function (rows = []) { + const findHeaders = function () { + let rows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; let headers = []; // is the first-row just a ton of colspan? if (skipSpanRow(rows[0])) { @@ -4319,10 +3686,10 @@ }; //turn a {|...table string into an array of arrays - const parseTable = function (wiki) { + const parseTable$1 = function (wiki) { let lines = wiki.replace(/\r/g, '').replace(/\n(\s*[^|!{\s])/g, ' $1') //remove unecessary newlines .split(/\n/).map(l => l.trim()); - let rows = _findRows(lines); + let rows = findRows(lines); rows = rows.filter(r => r); if (rows.length === 0) { @@ -4332,7 +3699,7 @@ rows = removeMidSpans(rows); //support colspan, rowspan... - rows = _spans(rows); //grab the header rows + rows = handleSpans(rows); //grab the header rows let headers = findHeaders(rows); @@ -4356,9 +3723,11 @@ return table; }; - var parse$5 = parseTable; + var parse$i = parseTable$1; + + const encode$1 = encode$4; // - const toJson$2 = function (tables, options) { + const toJson$4 = function (tables, options) { return tables.map(table => { let row = {}; Object.keys(table).forEach(k => { @@ -4366,18 +3735,21 @@ }); //encode them, for mongodb if (options.encode === true) { - row = encode.encodeObj(row); + row = encode$1.encodeObj(row); } return row; }); }; - var toJson_1$2 = toJson$2; + var toJson_1$2 = toJson$4; + const setDefaults$5 = setDefaults_1; + const toJson$3 = toJson_1$2; const defaults$6 = {}; - const normalize$1 = function (key = '') { + const normalize$1 = function () { + let key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; key = key.toLowerCase(); key = key.replace(/[_-]/g, ' '); key = key.replace(/\(.*?\)/, ''); @@ -4385,7 +3757,8 @@ return key; }; - const Table = function (data, wiki = '') { + const Table$1 = function (data) { + let wiki = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; Object.defineProperty(this, 'data', { enumerable: false, value: data @@ -4458,8 +3831,8 @@ }, json(options) { - options = setDefaults_1(options, defaults$6); - return toJson_1$2(this.data, options); + options = setDefaults$5(options, defaults$6); + return toJson$3(this.data, options); }, text() { @@ -4474,9 +3847,12 @@ methods$4.keyvalue = methods$4.keyValue; methods$4.keyval = methods$4.keyValue; Object.keys(methods$4).forEach(k => { - Table.prototype[k] = methods$4[k]; + Table$1.prototype[k] = methods$4[k]; }); - var Table_1 = Table; + var Table_1 = Table$1; + + const parseTable = parse$i; + const Table = Table_1; //const table_reg = /\{\|[\s\S]+?\|\}/g; //the largest-cities table is ~70k chars. const openReg = /^\s*\{\|/; const closeReg = /^\s*\|\}/; //tables can be recursive, so looky-here. @@ -4515,10 +3891,10 @@ //also re-remove a newline at the end of the table (awkward) wiki = wiki.replace(str + '\n', ''); wiki = wiki.replace(str, ''); - let data = parse$5(str); + let data = parseTable(str); if (data && data.length > 0) { - tables.push(new Table_1(data, str)); + tables.push(new Table(data, str)); } } }); @@ -4532,12 +3908,13 @@ var table = findTables; + const setDefaults$4 = setDefaults_1; const defaults$5 = { sentences: true }; - const toJson$1 = function (p, options) { - options = setDefaults_1(options, defaults$5); + const toJson$2 = function (p, options) { + options = setDefaults$4(options, defaults$5); let data = {}; if (options.sentences === true) { @@ -4547,15 +3924,17 @@ return data; }; - var toJson_1$1 = toJson$1; + var toJson_1$1 = toJson$2; + const toJSON$3 = toJson_1$1; + const setDefaults$3 = setDefaults_1; const defaults$4 = { sentences: true, lists: true, images: true }; - const Paragraph = function (data) { + const Paragraph$1 = function (data) { Object.defineProperty(this, 'data', { enumerable: false, value: data @@ -4603,7 +3982,7 @@ }, text: function (options) { - options = setDefaults_1(options, defaults$4); + options = setDefaults$3(options, defaults$4); let str = this.sentences().map(s => s.text(options)).join(' '); this.lists().forEach(list => { str += '\n' + list.text(); @@ -4611,8 +3990,8 @@ return str; }, json: function (options) { - options = setDefaults_1(options, defaults$4); - return toJson_1$1(this, options); + options = setDefaults$3(options, defaults$4); + return toJSON$3(this, options); }, wikitext: function () { return this.data.wiki; @@ -4620,7 +3999,7 @@ }; methods$3.citations = methods$3.references; Object.keys(methods$3).forEach(k => { - Paragraph.prototype[k] = methods$3[k]; + Paragraph$1.prototype[k] = methods$3[k]; }); // aliases const singular$2 = { @@ -4634,7 +4013,7 @@ Object.keys(singular$2).forEach(k => { let sing = singular$2[k]; - Paragraph.prototype[sing] = function (clue) { + Paragraph$1.prototype[sing] = function (clue) { let arr = this[k](clue); if (typeof clue === 'number') { @@ -4644,7 +4023,7 @@ return arr[0]; }; }); - var Paragraph_1 = Paragraph; + var Paragraph_1 = Paragraph$1; const opener = '['; const closer = ']'; @@ -4659,7 +4038,7 @@ * @returns {string[]} all the links in the text */ - function nested_find(text) { + function nested_find$1(text) { let out = []; let last = []; const chars = text.split(''); @@ -4712,12 +4091,16 @@ return out; } - var nested_find_1 = nested_find; + var nested_find_1 = nested_find$1; - const parseSentence$3 = _04Sentence.fromText; //regexes: + const i18n$3 = i18n$6; + const Image$4 = Image_1; + const parseTemplate$3 = toJSON$4; + const parseSentence$3 = _04Sentence.fromText; + const nested_find = nested_find_1; //regexes: - const isFile = new RegExp('(' + i18n.images.join('|') + '):', 'i'); - let fileNames = `(${i18n.images.join('|')})`; + const isFile = new RegExp('(' + i18n$3.images.join('|') + '):', 'i'); + let fileNames = "(".concat(i18n$3.images.join('|'), ")"); const file_reg = new RegExp(fileNames + ':(.+?)[\\||\\]]', 'iu'); //style directives for Wikipedia:Extended_image_syntax const imgLayouts = { @@ -4744,7 +4127,7 @@ return null; } - let file = `${m[1]}:${m[2] || ''}`; + let file = "".concat(m[1], ":").concat(m[2] || ''); file = file.trim(); //titlecase it let title = file.charAt(0).toUpperCase() + file.substring(1); //spaces to underscores @@ -4763,7 +4146,7 @@ img = img.replace(/\]\]$/, ''); //https://en.wikipedia.org/wiki/Wikipedia:Extended_image_syntax //- [[File:Name|Type|Border|Location|Alignment|Size|link=Link|alt=Alt|lang=Langtag|Caption]] - let imgData = toJSON(img); + let imgData = parseTemplate$3(img); let arr = imgData.list || []; //parse-out alt text, if explicitly given if (imgData.alt) { @@ -4777,7 +4160,7 @@ obj.caption = parseSentence$3(arr[arr.length - 1]); } - return new Image_1(obj); + return new Image$4(obj); } return null; @@ -4786,7 +4169,7 @@ const parseImages = function (paragraph, doc) { let wiki = paragraph.wiki; //parse+remove scary '[[ [[]] ]]' stuff - let matches = nested_find_1(wiki); + let matches = nested_find(wiki); matches.forEach(function (s) { if (isFile.test(s) === true) { paragraph.images = paragraph.images || []; @@ -4804,6 +4187,7 @@ var image = parseImages; + const setDefaults$2 = setDefaults_1; const defaults$3 = {}; const toText$2 = (list, options) => { @@ -4813,7 +4197,8 @@ }).join('\n'); }; - const List = function (data, wiki = '') { + const List$1 = function (data) { + let wiki = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; Object.defineProperty(this, 'data', { enumerable: false, value: data @@ -4847,7 +4232,7 @@ }, json(options) { - options = setDefaults_1(options, defaults$3); + options = setDefaults$2(options, defaults$3); return this.lines().map(s => s.json(options)); }, @@ -4861,10 +4246,11 @@ }; Object.keys(methods$2).forEach(k => { - List.prototype[k] = methods$2[k]; + List$1.prototype[k] = methods$2[k]; }); - var List_1 = List; + var List_1 = List$1; + const List = List_1; const parseSentence$2 = _04Sentence.fromText; const list_reg = /^[#*:;|]+/; const bullet_reg = /^\*+[^:,|]{4}/; @@ -4933,15 +4319,16 @@ } } - paragraph.lists = lists.map(l => new List_1(l, wiki)); + paragraph.lists = lists.map(l => new List(l, wiki)); paragraph.wiki = theRest.join('\n'); }; var list$1 = parseList; + const Paragraph = Paragraph_1; const parseSentences = _04Sentence.byParagraph; const twoNewLines = /\r?\n\r?\n/; - const parse$4 = { + const parse$h = { image: image, list: list$1 }; @@ -4959,12 +4346,12 @@ images: [] }; //parse the lists - parse$4.list(paragraph); //parse images + parse$h.list(paragraph); //parse images - parse$4.image(paragraph, doc); //parse the sentences + parse$h.image(paragraph, doc); //parse the sentences parseSentences(paragraph); - return new Paragraph_1(paragraph); + return new Paragraph(paragraph); }); section._wiki = wiki; section._paragraphs = paragraphs; @@ -4975,7 +4362,7 @@ const open = '{'; const close = '}'; //grab all first-level recursions of '{{...}}' - const findFlat = function (wiki) { + const findFlat$1 = function (wiki) { let depth = 0; let list = []; let carry = []; @@ -5019,11 +4406,12 @@ return list; }; - var _02Flat = findFlat; + var _02Flat = findFlat$1; + const fmtName = _fmtName; //get the name of the template //templates are usually '{{name|stuff}}' - const getName = function (tmpl) { + const getName$1 = function (tmpl) { let name = null; //{{name|foo}} if (/^\{\{[^\n]+\|/.test(tmpl)) { @@ -5038,22 +4426,24 @@ if (name) { name = name.replace(/:.*/, ''); - name = _fmtName(name); + name = fmtName(name); } return name || null; }; - var _getName = getName; + var _getName = getName$1; + const findFlat = _02Flat; + const getName = _getName; const hasTemplate = /\{\{/; - const parseTemplate$1 = function (tmpl) { + const parseTemplate$2 = function (tmpl) { // this is some unexplained Lua thing tmpl = tmpl.replace(/#invoke:/, ''); return { body: tmpl, - name: _getName(tmpl), + name: getName(tmpl), children: [] }; }; @@ -5063,8 +4453,8 @@ let wiki = obj.body.substr(2); wiki = wiki.replace(/\}\}$/, ''); // get our child templates - obj.children = _02Flat(wiki); - obj.children = obj.children.map(parseTemplate$1); + obj.children = findFlat(wiki); + obj.children = obj.children.map(parseTemplate$2); if (obj.children.length === 0) { return obj; @@ -5084,16 +4474,15 @@ }; // return a nested structure of all templates - const findTemplates = function (wiki) { - let list = _02Flat(wiki); - list = list.map(parseTemplate$1); + const findTemplates$1 = function (wiki) { + let list = findFlat(wiki); + list = list.map(parseTemplate$2); list = list.map(doEach); return list; }; - var _01Nested = findTemplates; + var _01Nested = findTemplates$1; - //we explicitly ignore these, because they sometimes have resolve some data const list = [//https://en.wikipedia.org/wiki/category:templates_with_no_visible_output 'anchor', 'defaultsort', 'use list-defined references', 'void', //https://en.wikipedia.org/wiki/Category:Protection_templates 'pp', 'pp-move-indef', 'pp-semi-indef', 'pp-vandalism', //https://en.wikipedia.org/wiki/Template:R @@ -5118,11 +4507,11 @@ // 'weasel inline', //https://en.wikipedia.org/wiki/Template:End 'pope list end', 'shipwreck list end', 'starbox end', 'end box', 'end', 's-end']; - const ignore = list.reduce((h, str) => { + const ignore$1 = list.reduce((h, str) => { h[str] = true; return h; }, {}); - var _ignore = ignore; + var _ignore = ignore$1; var _infoboxes = { 'gnf protein box': true, @@ -5161,24 +4550,10 @@ 'hockey team start': true, mlbbioret: true }; - _infoboxes.editnotice; - _infoboxes.geobox; - _infoboxes.hybridbox; - _infoboxes.ichnobox; - _infoboxes.infraspeciesbox; - _infoboxes.mycomorphbox; - _infoboxes.oobox; - _infoboxes.speciesbox; - _infoboxes.subspeciesbox; - _infoboxes.taxobox; - _infoboxes.nhlteamseason; - _infoboxes.edencharacter; - _infoboxes.samurai; - _infoboxes.protein; - _infoboxes.ordination; - _infoboxes.mlbbioret; - - const i18nReg = new RegExp('^(subst.)?(' + i18n.infoboxes.join('|') + ')[: \n]', 'i'); //some looser ones + + const i18n$2 = i18n$6; + const infoboxes$1 = _infoboxes; + const i18nReg = new RegExp('^(subst.)?(' + i18n$2.infoboxes.join('|') + ')[: \n]', 'i'); //some looser ones const startReg = /^infobox /i; const endReg = / infobox$/i; @@ -5188,7 +4563,7 @@ const isInfobox = function (name) { //known - if (_infoboxes.hasOwnProperty(name) === true) { + if (infoboxes$1.hasOwnProperty(name) === true) { return true; } @@ -5209,7 +4584,8 @@ }; //turns template data into good infobox data - const fmtInfobox = function (obj = {}) { + const fmtInfobox = function () { + let obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; let m = obj.template.match(i18nReg); let type = obj.template; @@ -5235,7 +4611,9 @@ format: fmtInfobox }; - let aliases = { + const languages$2 = languages$4; //aliases + + let aliases$1 = { imdb: 'imdb name', 'imdb episodess': 'imdb episode', localday: 'currentday', @@ -5283,17 +4661,17 @@ // Polish, {{IPAc-pl}} {{IPAc-pl|'|sz|cz|e|ć|i|n}} → [ˈʂt͡ʂɛt͡ɕin] // Portuguese, {{IPAc-pt}} {{IPAc-pt|p|o|<|r|t|u|'|g|a|l|lang=pt}} and {{IPAc-pt|b|r|a|'|s|i|l|lang=br}} → [puɾtuˈɣaɫ] and [bɾaˈsiw] - Object.keys(languages).forEach(lang => { - aliases['ipa-' + lang] = 'ipa'; - aliases['ipac-' + lang] = 'ipac'; + Object.keys(languages$2).forEach(lang => { + aliases$1['ipa-' + lang] = 'ipa'; + aliases$1['ipac-' + lang] = 'ipac'; }); // add each alias in Object.keys(multi).forEach(k => { multi[k].forEach(str => { - aliases[str] = k; + aliases$1[str] = k; }); }); - var aliases_1 = aliases; + var aliases_1 = aliases$1; var hardcoded = { '·': '·', @@ -5336,22 +4714,10 @@ loss: '▼', gain: '▲' }; - hardcoded.dot; - hardcoded.middot; - hardcoded.ndash; - hardcoded.mdash; - hardcoded.ibeam; - hardcoded.ampersand; - hardcoded.snds; - hardcoded.snd; - hardcoded.bracket; - hardcoded.asterisk; - hardcoded.clear; - hardcoded.profit; - hardcoded.loss; - hardcoded.gain; - - let templates$9 = { + + const languages$1 = languages$4; //grab the first, second or third pipe.. + + let templates$b = { p1: 0, p2: 1, p3: 2, @@ -5373,13 +4739,15 @@ 'taste', 'monthname', 'baseball secondary style', 'lang-de', 'nowrap', 'nobr', 'big', 'cquote', 'pull quote', 'small', 'smaller', 'midsize', 'larger', 'big', 'kbd', 'bigger', 'large', 'mono', 'strongbad', 'stronggood', 'huge', 'xt', 'xt2', '!xt', 'xtn', 'xtd', 'dc', 'dcr', 'mxt', '!mxt', 'mxtn', 'mxtd', 'bxt', '!bxt', 'bxtn', 'bxtd', 'delink', //https://en.wikipedia.org/wiki/Template:Delink 'pre', 'var', 'mvar', 'pre2', 'code']; zeros.forEach(k => { - templates$9[k] = 0; + templates$b[k] = 0; }); //https://en.wikipedia.org/wiki/Category:Lang-x_templates - Object.keys(languages).forEach(k => { - templates$9['lang-' + k] = 0; + Object.keys(languages$1).forEach(k => { + templates$b['lang-' + k] = 0; }); - var shorthand$1 = templates$9; + var shorthand$1 = templates$b; + + const languages = languages$4; //simply num/denom * 100 const percentage = function (obj) { if (!obj.numerator && !obj.denominator) { @@ -5398,7 +4766,9 @@ return Number(perc); }; - const toNumber = function (str = '') { + const toNumber = function () { + let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + if (typeof str === 'number') { return str; } @@ -5458,33 +4828,36 @@ toNumber: toNumber }; + const parse$g = toJSON$4; + const strip$1 = _strip; + const lib$3 = _lib$3; var functions$2 = { //https://en.wikipedia.org/wiki/Template:Ra ra: tmpl => { - let obj = toJSON(tmpl, ['hours', 'minutes', 'seconds']); + let obj = parse$g(tmpl, ['hours', 'minutes', 'seconds']); return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); }, //https://en.wikipedia.org/wiki/Template:Deg2HMS deg2hms: tmpl => { //this template should do the conversion - let obj = toJSON(tmpl, ['degrees']); + let obj = parse$g(tmpl, ['degrees']); return (obj.degrees || '') + '°'; }, hms2deg: tmpl => { //this template should do the conversion too - let obj = toJSON(tmpl, ['hours', 'minutes', 'seconds']); + let obj = parse$g(tmpl, ['hours', 'minutes', 'seconds']); return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); }, decdeg: tmpl => { //this template should do the conversion too - let obj = toJSON(tmpl, ['deg', 'min', 'sec', 'hem', 'rnd']); + let obj = parse$g(tmpl, ['deg', 'min', 'sec', 'hem', 'rnd']); return (obj.deg || obj.degrees) + '°'; }, //https://en.wikipedia.org/wiki/Template:Sortname sortname: tmpl => { let order = ['first', 'last', 'target', 'sort']; - let obj = toJSON(tmpl, order); - let name = `${obj.first || ''} ${obj.last || ''}`; + let obj = parse$g(tmpl, order); + let name = "".concat(obj.first || '', " ").concat(obj.last || ''); name = name.trim(); if (obj.nolink) { @@ -5492,22 +4865,22 @@ } if (obj.dab) { - name += ` (${obj.dab})`; + name += " (".concat(obj.dab, ")"); if (obj.target) { - obj.target += ` (${obj.dab})`; + obj.target += " (".concat(obj.dab, ")"); } } if (obj.target) { - return `[[${obj.target}|${name}]]`; + return "[[".concat(obj.target, "|").concat(name, "]]"); } - return `[[${name}]]`; + return "[[".concat(name, "]]"); }, // https://en.wikipedia.org/wiki/Template:First_word 'first word': tmpl => { - let obj = toJSON(tmpl, ['text']); + let obj = parse$g(tmpl, ['text']); let str = obj.text; if (obj.sep) { @@ -5518,50 +4891,50 @@ }, trunc: tmpl => { let order = ['str', 'len']; - let obj = toJSON(tmpl, order); + let obj = parse$g(tmpl, order); return obj.str.substr(0, obj.len); }, 'str mid': tmpl => { let order = ['str', 'start', 'end']; - let obj = toJSON(tmpl, order); + let obj = parse$g(tmpl, order); let start = parseInt(obj.start, 10) - 1; let end = parseInt(obj.end, 10); return obj.str.substr(start, end); }, reign: tmpl => { let order = ['start', 'end']; - let obj = toJSON(tmpl, order); - return `(r. ${obj.start} – ${obj.end})`; + let obj = parse$g(tmpl, order); + return "(r. ".concat(obj.start, " \u2013 ").concat(obj.end, ")"); }, circa: tmpl => { - let obj = toJSON(tmpl, ['year']); - return `c. ${obj.year}`; + let obj = parse$g(tmpl, ['year']); + return "c.\u2009".concat(obj.year); }, // https://en.wikipedia.org/wiki/Template:Decade_link 'decade link': tmpl => { - let obj = toJSON(tmpl, ['year']); - return `${obj.year}|${obj.year}s`; + let obj = parse$g(tmpl, ['year']); + return "".concat(obj.year, "|").concat(obj.year, "s"); }, // https://en.wikipedia.org/wiki/Template:Decade decade: tmpl => { - let obj = toJSON(tmpl, ['year']); + let obj = parse$g(tmpl, ['year']); let year = Number(obj.year); year = parseInt(year / 10, 10) * 10; // round to decade - return `${year}s`; + return "".concat(year, "s"); }, // https://en.wikipedia.org/wiki/Template:Century century: tmpl => { - let obj = toJSON(tmpl, ['year']); + let obj = parse$g(tmpl, ['year']); let year = Number(obj.year); year = parseInt(year / 100, 10) + 1; - return `${year}`; + return "".concat(year); }, //https://en.wikipedia.org/wiki/Template:Radic radic: tmpl => { let order = ['after', 'before']; - let obj = toJSON(tmpl, order); - return `${obj.before || ''}√${obj.after || ''}`; + let obj = parse$g(tmpl, order); + return "".concat(obj.before || '', "\u221A").concat(obj.after || ''); }, 'medical cases chart/row': tmpl => { // Deprecated template; we keep it. @@ -5570,12 +4943,12 @@ //https://en.wikipedia.org/wiki/Template:OldStyleDate oldstyledate: tmpl => { let order = ['date', 'year']; - let obj = toJSON(tmpl, order); + let obj = parse$g(tmpl, order); return obj.year ? obj.date + ' ' + obj.year : obj.date; }, //formatting things - https://en.wikipedia.org/wiki/Template:Nobold braces: tmpl => { - let obj = toJSON(tmpl, ['text']); + let obj = parse$g(tmpl, ['text']); let attrs = ''; if (obj.list) { @@ -5585,44 +4958,44 @@ return '{{' + (obj.text || '') + attrs + '}}'; }, hlist: tmpl => { - let obj = toJSON(tmpl); + let obj = parse$g(tmpl); obj.list = obj.list || []; return obj.list.join(' · '); }, pagelist: tmpl => { - let arr = toJSON(tmpl).list || []; + let arr = parse$g(tmpl).list || []; return arr.join(', '); }, //actually rendering these links removes the text. //https://en.wikipedia.org/wiki/Template:Catlist catlist: tmpl => { - let arr = toJSON(tmpl).list || []; + let arr = parse$g(tmpl).list || []; return arr.join(', '); }, //https://en.wikipedia.org/wiki/Template:Br_separated_entries 'br separated entries': tmpl => { - let arr = toJSON(tmpl).list || []; + let arr = parse$g(tmpl).list || []; return arr.join('\n\n'); }, 'comma separated entries': tmpl => { - let arr = toJSON(tmpl).list || []; + let arr = parse$g(tmpl).list || []; return arr.join(', '); }, //https://en.wikipedia.org/wiki/Template:Bare_anchored_list 'anchored list': tmpl => { - let arr = toJSON(tmpl).list || []; - arr = arr.map((str, i) => `${i + 1}. ${str}`); + let arr = parse$g(tmpl).list || []; + arr = arr.map((str, i) => "".concat(i + 1, ". ").concat(str)); return arr.join('\n\n'); }, 'bulleted list': tmpl => { - let arr = toJSON(tmpl).list || []; + let arr = parse$g(tmpl).list || []; arr = arr.filter(f => f); arr = arr.map(str => '• ' + str); return arr.join('\n\n'); }, //a strange, newline-based list - https://en.wikipedia.org/wiki/Template:Plainlist plainlist: tmpl => { - tmpl = _strip(tmpl); + tmpl = strip$1(tmpl); let arr = tmpl.split('|').slice(1); //remove the title arr = arr.join('|').split(/\n ?\* ?/); //split on newline @@ -5632,15 +5005,15 @@ }, //https://en.wikipedia.org/wiki/Template:Term term: tmpl => { - let obj = toJSON(tmpl, ['term']); - return `${obj.term}:`; + let obj = parse$g(tmpl, ['term']); + return "".concat(obj.term, ":"); }, linum: tmpl => { - let obj = toJSON(tmpl, ['num', 'text']); - return `${obj.num}. ${obj.text}`; + let obj = parse$g(tmpl, ['num', 'text']); + return "".concat(obj.num, ". ").concat(obj.text); }, 'block indent': tmpl => { - let obj = toJSON(tmpl); + let obj = parse$g(tmpl); if (obj['1']) { return '\n' + obj['1'] + '\n'; @@ -5650,39 +5023,39 @@ }, //https://en.wikipedia.org/wiki/Template:Lbs lbs: tmpl => { - let obj = toJSON(tmpl, ['text']); - return `[[${obj.text} Lifeboat Station|${obj.text}]]`; + let obj = parse$g(tmpl, ['text']); + return "[[".concat(obj.text, " Lifeboat Station|").concat(obj.text, "]]"); }, //Foo-class lbc: tmpl => { - let obj = toJSON(tmpl, ['text']); - return `[[${obj.text}-class lifeboat|${obj.text}-class]]`; + let obj = parse$g(tmpl, ['text']); + return "[[".concat(obj.text, "-class lifeboat|").concat(obj.text, "-class]]"); }, lbb: tmpl => { - let obj = toJSON(tmpl, ['text']); - return `[[${obj.text}-class lifeboat|${obj.text}]]`; + let obj = parse$g(tmpl, ['text']); + return "[[".concat(obj.text, "-class lifeboat|").concat(obj.text, "]]"); }, //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting '#dateformat': tmpl => { tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON(tmpl, ['date', 'format']); + let obj = parse$g(tmpl, ['date', 'format']); return obj.date; }, //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting lc: tmpl => { tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON(tmpl, ['text']); + let obj = parse$g(tmpl, ['text']); return (obj.text || '').toLowerCase(); }, //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting uc: tmpl => { tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON(tmpl, ['text']); + let obj = parse$g(tmpl, ['text']); return (obj.text || '').toUpperCase(); }, lcfirst: tmpl => { tmpl = tmpl.replace(/:/, '|'); - let text = toJSON(tmpl, ['text']).text; + let text = parse$g(tmpl, ['text']).text; if (!text) { return ''; @@ -5692,7 +5065,7 @@ }, ucfirst: tmpl => { tmpl = tmpl.replace(/:/, '|'); - let text = toJSON(tmpl, ['text']).text; + let text = parse$g(tmpl, ['text']).text; if (!text) { return ''; @@ -5702,29 +5075,29 @@ }, padleft: tmpl => { tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON(tmpl, ['text', 'num']); + let obj = parse$g(tmpl, ['text', 'num']); let text = obj.text || ''; return text.padStart(obj.num, obj.str || '0'); }, padright: tmpl => { tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON(tmpl, ['text', 'num']); + let obj = parse$g(tmpl, ['text', 'num']); let text = obj.text || ''; return text.padEnd(obj.num, obj.str || '0'); }, //https://en.wikipedia.org/wiki/Template:Abbrlink abbrlink: tmpl => { - let obj = toJSON(tmpl, ['abbr', 'page']); + let obj = parse$g(tmpl, ['abbr', 'page']); if (obj.page) { - return `[[${obj.page}|${obj.abbr}]]`; + return "[[".concat(obj.page, "|").concat(obj.abbr, "]]"); } - return `[[${obj.abbr}]]`; + return "[[".concat(obj.abbr, "]]"); }, // https://en.wikipedia.org/wiki/Template:Own own: tmpl => { - let obj = toJSON(tmpl, ['author']); + let obj = parse$g(tmpl, ['author']); let str = 'Own work'; if (obj.author) { @@ -5736,7 +5109,7 @@ //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting formatnum: tmpl => { tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON(tmpl, ['number']); + let obj = parse$g(tmpl, ['number']); let str = obj.number || ''; str = str.replace(/,/g, ''); let num = Number(str); @@ -5745,47 +5118,47 @@ //https://en.wikipedia.org/wiki/Template:Frac frac: tmpl => { let order = ['a', 'b', 'c']; - let obj = toJSON(tmpl, order); + let obj = parse$g(tmpl, order); if (obj.c) { - return `${obj.a} ${obj.b}/${obj.c}`; + return "".concat(obj.a, " ").concat(obj.b, "/").concat(obj.c); } if (obj.b) { - return `${obj.a}/${obj.b}`; + return "".concat(obj.a, "/").concat(obj.b); } - return `1/${obj.b}`; + return "1/".concat(obj.b); }, //https://en.wikipedia.org/wiki/Template:Convert#Ranges_of_values convert: tmpl => { let order = ['num', 'two', 'three', 'four']; - let obj = toJSON(tmpl, order); //todo: support plural units + let obj = parse$g(tmpl, order); //todo: support plural units if (obj.two === '-' || obj.two === 'to' || obj.two === 'and') { if (obj.four) { - return `${obj.num} ${obj.two} ${obj.three} ${obj.four}`; + return "".concat(obj.num, " ").concat(obj.two, " ").concat(obj.three, " ").concat(obj.four); } - return `${obj.num} ${obj.two} ${obj.three}`; + return "".concat(obj.num, " ").concat(obj.two, " ").concat(obj.three); } - return `${obj.num} ${obj.two}`; + return "".concat(obj.num, " ").concat(obj.two); }, // Large number of aliases - https://en.wikipedia.org/wiki/Template:Tl tl: tmpl => { let order = ['first', 'second']; - let obj = toJSON(tmpl, order); + let obj = parse$g(tmpl, order); return obj.second || obj.first; }, //this one's a little different won: tmpl => { - let data = toJSON(tmpl, ['text']); - return data.place || data.text || _lib$3.titlecase(data.template); + let data = parse$g(tmpl, ['text']); + return data.place || data.text || lib$3.titlecase(data.template); }, //a convulated way to make a xml tag - https://en.wikipedia.org/wiki/Template:Tag tag: tmpl => { - let obj = toJSON(tmpl, ['tag', 'open']); + let obj = parse$g(tmpl, ['tag', 'open']); const ignore = { span: true, div: true, @@ -5798,7 +5171,7 @@ return obj.content || ''; } - return `<${obj.tag} ${obj.attribs || ''}>${obj.content || ''}`; + return "<".concat(obj.tag, " ").concat(obj.attribs || '', ">").concat(obj.content || '', ""); } return ''; @@ -5807,7 +5180,7 @@ plural: tmpl => { tmpl = tmpl.replace(/plural:/, 'plural|'); let order = ['num', 'word']; - let obj = toJSON(tmpl, order); + let obj = parse$g(tmpl, order); let num = Number(obj.num); let word = obj.word; @@ -5823,11 +5196,11 @@ }, //https://en.wikipedia.org/wiki/Template:DEC dec: tmpl => { - let obj = toJSON(tmpl, ['degrees', 'minutes', 'seconds']); + let obj = parse$g(tmpl, ['degrees', 'minutes', 'seconds']); let str = (obj.degrees || 0) + '°'; if (obj.minutes) { - str += obj.minutes + `′`; + str += obj.minutes + "\u2032"; } if (obj.seconds) { @@ -5838,7 +5211,7 @@ }, //https://en.wikipedia.org/wiki/Template:Val val: tmpl => { - let obj = toJSON(tmpl, ['number', 'uncertainty']); + let obj = parse$g(tmpl, ['number', 'uncertainty']); let num = obj.number; if (num && Number(num)) { @@ -5864,8 +5237,8 @@ }, //{{percentage | numerator | denominator | decimals to round to (zero or greater) }} percentage: tmpl => { - let obj = toJSON(tmpl, ['numerator', 'denominator', 'decimals']); - let num = _lib$3.percentage(obj); + let obj = parse$g(tmpl, ['numerator', 'denominator', 'decimals']); + let num = lib$3.percentage(obj); if (num === null) { return ''; @@ -5875,8 +5248,8 @@ }, // {{Percent-done|done=N|total=N|digits=N}} 'percent-done': tmpl => { - let obj = toJSON(tmpl, ['done', 'total', 'digits']); - let num = _lib$3.percentage({ + let obj = parse$g(tmpl, ['done', 'total', 'digits']); + let num = lib$3.percentage({ numerator: obj.done, denominator: obj.total, decimals: obj.digits @@ -5886,225 +5259,191 @@ return ''; } - return `${obj.done} (${num}%) done`; - } - }; - functions$2.ra; - functions$2.deg2hms; - functions$2.hms2deg; - functions$2.decdeg; - functions$2.sortname; - functions$2.trunc; - functions$2.reign; - functions$2.circa; - functions$2.decade; - functions$2.century; - functions$2.radic; - functions$2.oldstyledate; - functions$2.braces; - functions$2.hlist; - functions$2.pagelist; - functions$2.catlist; - functions$2.plainlist; - functions$2.term; - functions$2.linum; - functions$2.lbs; - functions$2.lbc; - functions$2.lbb; - functions$2.lc; - functions$2.uc; - functions$2.lcfirst; - functions$2.ucfirst; - functions$2.padleft; - functions$2.padright; - functions$2.abbrlink; - functions$2.own; - functions$2.formatnum; - functions$2.frac; - functions$2.convert; - functions$2.tl; - functions$2.won; - functions$2.tag; - functions$2.plural; - functions$2.dec; - functions$2.val; - functions$2.percentage; - - var flags = [['🇦🇩', 'and', 'andorra'], ['🇦🇪', 'are', 'united arab emirates'], ['🇦🇫', 'afg', 'afghanistan'], ['🇦🇬', 'atg', 'antigua and barbuda'], ['🇦🇮', 'aia', 'anguilla'], ['🇦🇱', 'alb', 'albania'], ['🇦🇲', 'arm', 'armenia'], ['🇦🇴', 'ago', 'angola'], ['🇦🇶', 'ata', 'antarctica'], ['🇦🇷', 'arg', 'argentina'], ['🇦🇸', 'asm', 'american samoa'], ['🇦🇹', 'aut', 'austria'], ['🇦🇺', 'aus', 'australia'], ['🇦🇼', 'abw', 'aruba'], ['🇦🇽', 'ala', 'åland islands'], ['🇦🇿', 'aze', 'azerbaijan'], ['🇧🇦', 'bih', 'bosnia and herzegovina'], ['🇧🇧', 'brb', 'barbados'], ['🇧🇩', 'bgd', 'bangladesh'], ['🇧🇪', 'bel', 'belgium'], ['🇧🇫', 'bfa', 'burkina faso'], ['🇧🇬', 'bgr', 'bulgaria'], ['🇧🇬', 'bul', 'bulgaria'], //dupe + return "".concat(obj.done, " (").concat(num, "%) done"); + } + }; + + var flags$2 = [['🇦🇩', 'and', 'andorra'], ['🇦🇪', 'are', 'united arab emirates'], ['🇦🇫', 'afg', 'afghanistan'], ['🇦🇬', 'atg', 'antigua and barbuda'], ['🇦🇮', 'aia', 'anguilla'], ['🇦🇱', 'alb', 'albania'], ['🇦🇲', 'arm', 'armenia'], ['🇦🇴', 'ago', 'angola'], ['🇦🇶', 'ata', 'antarctica'], ['🇦🇷', 'arg', 'argentina'], ['🇦🇸', 'asm', 'american samoa'], ['🇦🇹', 'aut', 'austria'], ['🇦🇺', 'aus', 'australia'], ['🇦🇼', 'abw', 'aruba'], ['🇦🇽', 'ala', 'åland islands'], ['🇦🇿', 'aze', 'azerbaijan'], ['🇧🇦', 'bih', 'bosnia and herzegovina'], ['🇧🇧', 'brb', 'barbados'], ['🇧🇩', 'bgd', 'bangladesh'], ['🇧🇪', 'bel', 'belgium'], ['🇧🇫', 'bfa', 'burkina faso'], ['🇧🇬', 'bgr', 'bulgaria'], ['🇧🇬', 'bul', 'bulgaria'], //dupe ['🇧🇭', 'bhr', 'bahrain'], ['🇧🇮', 'bdi', 'burundi'], ['🇧🇯', 'ben', 'benin'], ['🇧🇱', 'blm', 'saint barthélemy'], ['🇧🇲', 'bmu', 'bermuda'], ['🇧🇳', 'brn', 'brunei darussalam'], ['🇧🇴', 'bol', 'bolivia'], ['🇧🇶', 'bes', 'bonaire, sint eustatius and saba'], ['🇧🇷', 'bra', 'brazil'], ['🇧🇸', 'bhs', 'bahamas'], ['🇧🇹', 'btn', 'bhutan'], ['🇧🇻', 'bvt', 'bouvet island'], ['🇧🇼', 'bwa', 'botswana'], ['🇧🇾', 'blr', 'belarus'], ['🇧🇿', 'blz', 'belize'], ['🇨🇦', 'can', 'canada'], ['🇨🇨', 'cck', 'cocos (keeling) islands'], ['🇨🇩', 'cod', 'congo'], ['🇨🇫', 'caf', 'central african republic'], ['🇨🇬', 'cog', 'congo'], ['🇨🇭', 'che', 'switzerland'], ['🇨🇮', 'civ', 'côte d\'ivoire'], ['🇨🇰', 'cok', 'cook islands'], ['🇨🇱', 'chl', 'chile'], ['🇨🇲', 'cmr', 'cameroon'], ['🇨🇳', 'chn', 'china'], ['🇨🇴', 'col', 'colombia'], ['🇨🇷', 'cri', 'costa rica'], ['🇨🇺', 'cub', 'cuba'], ['🇨🇻', 'cpv', 'cape verde'], ['🇨🇼', 'cuw', 'curaçao'], ['🇨🇽', 'cxr', 'christmas island'], ['🇨🇾', 'cyp', 'cyprus'], ['🇨🇿', 'cze', 'czech republic'], ['🇩🇪', 'deu', 'germany'], ['🇩🇪', 'ger', 'germany'], //alias ['🇩🇯', 'dji', 'djibouti'], ['🇩🇰', 'dnk', 'denmark'], ['🇩🇲', 'dma', 'dominica'], ['🇩🇴', 'dom', 'dominican republic'], ['🇩🇿', 'dza', 'algeria'], ['🇪🇨', 'ecu', 'ecuador'], ['🇪🇪', 'est', 'estonia'], ['🇪🇬', 'egy', 'egypt'], ['🇪🇭', 'esh', 'western sahara'], ['🇪🇷', 'eri', 'eritrea'], ['🇪🇸', 'esp', 'spain'], ['🇪🇹', 'eth', 'ethiopia'], ['🇫🇮', 'fin', 'finland'], ['🇫🇯', 'fji', 'fiji'], ['🇫🇰', 'flk', 'falkland islands (malvinas)'], ['🇫🇲', 'fsm', 'micronesia'], ['🇫🇴', 'fro', 'faroe islands'], ['🇫🇷', 'fra', 'france'], ['🇬🇦', 'gab', 'gabon'], ['🇬🇧', 'gbr', 'united kingdom'], ['🇬🇩', 'grd', 'grenada'], //['🇬🇪', 'geo', 'georgia'], ['🇬🇫', 'guf', 'french guiana'], ['🇬🇬', 'ggy', 'guernsey'], ['🇬🇭', 'gha', 'ghana'], ['🇬🇮', 'gib', 'gibraltar'], ['🇬🇱', 'grl', 'greenland'], ['🇬🇲', 'gmb', 'gambia'], ['🇬🇳', 'gin', 'guinea'], ['🇬🇵', 'glp', 'guadeloupe'], ['🇬🇶', 'gnq', 'equatorial guinea'], ['🇬🇷', 'grc', 'greece'], ['🇬🇸', 'sgs', 'south georgia'], ['🇬🇹', 'gtm', 'guatemala'], ['🇬🇺', 'gum', 'guam'], ['🇬🇼', 'gnb', 'guinea-bissau'], ['🇬🇾', 'guy', 'guyana'], ['🇭🇰', 'hkg', 'hong kong'], ['🇭🇲', 'hmd', 'heard island and mcdonald islands'], ['🇭🇳', 'hnd', 'honduras'], ['🇭🇷', 'hrv', 'croatia'], ['🇭🇹', 'hti', 'haiti'], ['🇭🇺', 'hun', 'hungary'], ['🇮🇩', 'idn', 'indonesia'], ['🇮🇪', 'irl', 'ireland'], ['🇮🇱', 'isr', 'israel'], ['🇮🇲', 'imn', 'isle of man'], ['🇮🇳', 'ind', 'india'], ['🇮🇴', 'iot', 'british indian ocean territory'], ['🇮🇶', 'irq', 'iraq'], ['🇮🇷', 'irn', 'iran'], ['🇮🇸', 'isl', 'iceland'], ['🇮🇹', 'ita', 'italy'], ['🇯🇪', 'jey', 'jersey'], ['🇯🇲', 'jam', 'jamaica'], ['🇯🇴', 'jor', 'jordan'], ['🇯🇵', 'jpn', 'japan'], ['🇰🇪', 'ken', 'kenya'], ['🇰🇬', 'kgz', 'kyrgyzstan'], ['🇰🇭', 'khm', 'cambodia'], ['🇰🇮', 'kir', 'kiribati'], ['🇰🇲', 'com', 'comoros'], ['🇰🇳', 'kna', 'saint kitts and nevis'], ['🇰🇵', 'prk', 'north korea'], ['🇰🇷', 'kor', 'south korea'], ['🇰🇼', 'kwt', 'kuwait'], ['🇰🇾', 'cym', 'cayman islands'], ['🇰🇿', 'kaz', 'kazakhstan'], ['🇱🇦', 'lao', 'lao people\'s democratic republic'], ['🇱🇧', 'lbn', 'lebanon'], ['🇱🇨', 'lca', 'saint lucia'], ['🇱🇮', 'lie', 'liechtenstein'], ['🇱🇰', 'lka', 'sri lanka'], ['🇱🇷', 'lbr', 'liberia'], ['🇱🇸', 'lso', 'lesotho'], ['🇱🇹', 'ltu', 'lithuania'], ['🇱🇺', 'lux', 'luxembourg'], ['🇱🇻', 'lva', 'latvia'], ['🇱🇾', 'lby', 'libya'], ['🇲🇦', 'mar', 'morocco'], ['🇲🇨', 'mco', 'monaco'], ['🇲🇩', 'mda', 'moldova'], ['🇲🇪', 'mne', 'montenegro'], ['🇲🇫', 'maf', 'saint martin (french part)'], ['🇲🇬', 'mdg', 'madagascar'], ['🇲🇭', 'mhl', 'marshall islands'], ['🇲🇰', 'mkd', 'macedonia'], ['🇲🇱', 'mli', 'mali'], ['🇲🇲', 'mmr', 'myanmar'], ['🇲🇳', 'mng', 'mongolia'], ['🇲🇴', 'mac', 'macao'], ['🇲🇵', 'mnp', 'northern mariana islands'], ['🇲🇶', 'mtq', 'martinique'], ['🇲🇷', 'mrt', 'mauritania'], ['🇲🇸', 'msr', 'montserrat'], ['🇲🇹', 'mlt', 'malta'], ['🇲🇺', 'mus', 'mauritius'], ['🇲🇻', 'mdv', 'maldives'], ['🇲🇼', 'mwi', 'malawi'], ['🇲🇽', 'mex', 'mexico'], ['🇲🇾', 'mys', 'malaysia'], ['🇲🇿', 'moz', 'mozambique'], ['🇳🇦', 'nam', 'namibia'], ['🇳🇨', 'ncl', 'new caledonia'], ['🇳🇪', 'ner', 'niger'], ['🇳🇫', 'nfk', 'norfolk island'], ['🇳🇬', 'nga', 'nigeria'], ['🇳🇮', 'nic', 'nicaragua'], ['🇳🇱', 'nld', 'netherlands'], ['🇳🇴', 'nor', 'norway'], ['🇳🇵', 'npl', 'nepal'], ['🇳🇷', 'nru', 'nauru'], ['🇳🇺', 'niu', 'niue'], ['🇳🇿', 'nzl', 'new zealand'], ['🇴🇲', 'omn', 'oman'], ['🇵🇦', 'pan', 'panama'], ['🇵🇪', 'per', 'peru'], ['🇵🇫', 'pyf', 'french polynesia'], ['🇵🇬', 'png', 'papua new guinea'], ['🇵🇭', 'phl', 'philippines'], ['🇵🇰', 'pak', 'pakistan'], ['🇵🇱', 'pol', 'poland'], ['🇵🇲', 'spm', 'saint pierre and miquelon'], ['🇵🇳', 'pcn', 'pitcairn'], ['🇵🇷', 'pri', 'puerto rico'], ['🇵🇸', 'pse', 'palestinian territory'], ['🇵🇹', 'prt', 'portugal'], ['🇵🇼', 'plw', 'palau'], ['🇵🇾', 'pry', 'paraguay'], ['🇶🇦', 'qat', 'qatar'], ['🇷🇪', 'reu', 'réunion'], ['🇷🇴', 'rou', 'romania'], ['🇷🇸', 'srb', 'serbia'], ['🇷🇺', 'rus', 'russia'], ['🇷🇼', 'rwa', 'rwanda'], ['🇸🇦', 'sau', 'saudi arabia'], ['🇸🇧', 'slb', 'solomon islands'], ['🇸🇨', 'syc', 'seychelles'], ['🇸🇩', 'sdn', 'sudan'], ['🇸🇪', 'swe', 'sweden'], ['🇸🇬', 'sgp', 'singapore'], ['🇸🇭', 'shn', 'saint helena, ascension and tristan da cunha'], ['🇸🇮', 'svn', 'slovenia'], ['🇸🇯', 'sjm', 'svalbard and jan mayen'], ['🇸🇰', 'svk', 'slovakia'], ['🇸🇱', 'sle', 'sierra leone'], ['🇸🇲', 'smr', 'san marino'], ['🇸🇳', 'sen', 'senegal'], ['🇸🇴', 'som', 'somalia'], ['🇸🇷', 'sur', 'suriname'], ['🇸🇸', 'ssd', 'south sudan'], ['🇸🇹', 'stp', 'sao tome and principe'], ['🇸🇻', 'slv', 'el salvador'], ['🇸🇽', 'sxm', 'sint maarten (dutch part)'], ['🇸🇾', 'syr', 'syrian arab republic'], ['🇸🇿', 'swz', 'swaziland'], ['🇹🇨', 'tca', 'turks and caicos islands'], ['🇹🇩', 'tcd', 'chad'], ['🇹🇫', 'atf', 'french southern territories'], ['🇹🇬', 'tgo', 'togo'], ['🇹🇭', 'tha', 'thailand'], ['🇹🇯', 'tjk', 'tajikistan'], ['🇹🇰', 'tkl', 'tokelau'], ['🇹🇱', 'tls', 'timor-leste'], ['🇹🇲', 'tkm', 'turkmenistan'], ['🇹🇳', 'tun', 'tunisia'], ['🇹🇴', 'ton', 'tonga'], ['🇹🇷', 'tur', 'turkey'], ['🇹🇹', 'tto', 'trinidad and tobago'], ['🇹🇻', 'tuv', 'tuvalu'], ['🇹🇼', 'twn', 'taiwan'], ['🇹🇿', 'tza', 'tanzania'], ['🇺🇦', 'ukr', 'ukraine'], ['🇺🇬', 'uga', 'uganda'], ['🇺🇲', 'umi', 'united states minor outlying islands'], ['🇺🇸', 'us', 'united states'], //alias ['🇺🇸', 'usa', 'united states'], ['🇺🇾', 'ury', 'uruguay'], ['🇺🇿', 'uzb', 'uzbekistan'], ['🇻🇦', 'vat', 'vatican city'], ['🇻🇨', 'vct', 'saint vincent and the grenadines'], ['🇻🇪', 'ven', 'venezuela'], ['🇻🇬', 'vgb', 'virgin islands, british'], ['🇻🇮', 'vir', 'virgin islands, u.s.'], ['🇻🇳', 'vnm', 'viet nam'], ['🇻🇺', 'vut', 'vanuatu'], ['🇼🇫', 'wlf', 'wallis and futuna'], ['🇼🇸', 'wsm', 'samoa'], ['🇾🇪', 'yem', 'yemen'], ['🇾🇹', 'myt', 'mayotte'], ['🇿🇦', 'zaf', 'south africa'], ['🇿🇲', 'zmb', 'zambia'], ['🇿🇼 ', 'zwe', 'zimbabwe'], //others (later unicode versions) ['🇺🇳', 'un', 'united nations'], ['🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿', 'eng', 'england'], ['🏴󠁧󠁢󠁳󠁣󠁴󠁿', 'sct', 'scotland'], ['🏴󠁧󠁢󠁷󠁬󠁳󠁿', 'wal', 'wales'], ['🇪🇺', 'eu', 'european union']]; - let templates$8 = { + const parse$f = toJSON$4; + const flags$1 = flags$2; + let templates$a = { //https://en.wikipedia.org/wiki/Template:Flag // {{flag|USA}} → USA flag: tmpl => { let order = ['flag', 'variant']; - let obj = toJSON(tmpl, order); + let obj = parse$f(tmpl, order); let name = obj.flag || ''; obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; let flag = found[0] || ''; - return `${flag} [[${found[2]}|${name}]]`; + return "".concat(flag, " [[").concat(found[2], "|").concat(name, "]]"); }, // {{flagcountry|USA}} → United States flagcountry: tmpl => { let order = ['flag', 'variant']; - let obj = toJSON(tmpl, order); + let obj = parse$f(tmpl, order); obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; let flag = found[0] || ''; - return `${flag} [[${found[2]}]]`; + return "".concat(flag, " [[").concat(found[2], "]]"); }, // (unlinked flag-country) flagcu: tmpl => { let order = ['flag', 'variant']; - let obj = toJSON(tmpl, order); + let obj = parse$f(tmpl, order); obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; let flag = found[0] || ''; - return `${flag} ${found[2]}`; + return "".concat(flag, " ").concat(found[2]); }, //https://en.wikipedia.org/wiki/Template:Flagicon // {{flagicon|USA}} → United States flagicon: tmpl => { let order = ['flag', 'variant']; - let obj = toJSON(tmpl, order); + let obj = parse$f(tmpl, order); obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]); if (!found) { return ''; } - return `[[${found[2]}|${found[0]}]]`; + return "[[".concat(found[2], "|").concat(found[0], "]]"); }, //unlinked flagicon flagdeco: tmpl => { let order = ['flag', 'variant']; - let obj = toJSON(tmpl, order); + let obj = parse$f(tmpl, order); obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; return found[0] || ''; }, //same, but a soccer team fb: tmpl => { let order = ['flag', 'variant']; - let obj = toJSON(tmpl, order); + let obj = parse$f(tmpl, order); obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]); if (!found) { return ''; } - return `${found[0]} [[${found[2]} national football team|${found[2]}]]`; + return "".concat(found[0], " [[").concat(found[2], " national football team|").concat(found[2], "]]"); }, fbicon: tmpl => { let order = ['flag', 'variant']; - let obj = toJSON(tmpl, order); + let obj = parse$f(tmpl, order); obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]); if (!found) { return ''; } - return ` [[${found[2]} national football team|${found[0]}]]`; + return " [[".concat(found[2], " national football team|").concat(found[0], "]]"); }, flagathlete: tmpl => { let order = ['name', 'flag', 'variant']; - let obj = toJSON(tmpl, order); + let obj = parse$f(tmpl, order); obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]); if (!found) { - return `[[${obj.name || ''}]]`; + return "[[".concat(obj.name || '', "]]"); } - return `${found[0]} [[${obj.name || ''}]] (${found[1].toUpperCase()})`; + return "".concat(found[0], " [[").concat(obj.name || '', "]] (").concat(found[1].toUpperCase(), ")"); } }; //support {{can}} - flags.forEach(a => { - templates$8[a[1]] = () => { + flags$1.forEach(a => { + templates$a[a[1]] = () => { return a[0]; }; }); - var flags_1 = templates$8; + var flags_1 = templates$a; + const parse$e = toJSON$4; const titlecase = _lib$3.titlecase; //https://en.wikipedia.org/wiki/Template:Yes - let templates$7 = {}; + let templates$9 = {}; let cells = ['rh', 'rh2', 'yes', 'no', 'maybe', 'eliminated', 'lost', 'safe', 'active', 'site active', 'coming soon', 'good', 'won', 'nom', 'sho', 'longlisted', 'tba', 'success', 'operational', 'failure', 'partial', 'regional', 'maybecheck', 'partial success', 'partial failure', 'okay', 'yes-no', 'some', 'nonpartisan', 'pending', 'unofficial', 'unofficial2', 'usually', 'rarely', 'sometimes', 'any', 'varies', 'black', 'non-album single', 'unreleased', 'unknown', 'perhaps', 'depends', 'included', 'dropped', 'terminated', 'beta', 'table-experimental', 'free', 'proprietary', 'nonfree', 'needs', 'nightly', 'release-candidate', 'planned', 'scheduled', 'incorrect', 'no result', 'cmain', 'calso starring', 'crecurring', 'cguest', 'not yet', 'optional']; cells.forEach(str => { - templates$7[str] = tmpl => { - let data = toJSON(tmpl, ['text']); + templates$9[str] = tmpl => { + let data = parse$e(tmpl, ['text']); return data.text || titlecase(data.template); }; }); //these ones have a text result let moreCells = [['active fire', 'Active'], ['site active', 'Active'], ['site inactive', 'Inactive'], ['yes2', ''], ['no2', ''], ['ya', '✅'], ['na', '❌'], ['nom', 'Nominated'], ['sho', 'Shortlisted'], ['tba', 'TBA'], ['maybecheck', '✔️'], ['okay', 'Neutral'], ['n/a', 'N/A'], ['sdash', '—'], ['dunno', '?'], ['draw', ''], ['cnone', ''], ['nocontest', '']]; moreCells.forEach(a => { - templates$7[a[0]] = tmpl => { - let data = toJSON(tmpl, ['text']); + templates$9[a[0]] = tmpl => { + let data = parse$e(tmpl, ['text']); return data.text || a[1]; }; }); - var tableCell = templates$7; + var tableCell = templates$9; var textOnly = Object.assign({}, hardcoded, shorthand$1, functions$2, flags_1, tableCell); - let templates$6 = {}; // these all have ['id', 'name'] + let templates$8 = {}; // these all have ['id', 'name'] let idName = ['goodreads author', 'twitter', 'facebook', 'instagram', 'tumblr', 'pinterest', 'espn nfl', 'espn nhl', 'espn fc', 'hockeydb', 'fifa player', 'worldcat', 'worldcat id', 'nfl player', 'ted speaker', 'playmate']; idName.forEach(name => { - templates$6[name] = ['id', 'name']; + templates$8[name] = ['id', 'name']; }); - var idName_1 = templates$6; + var idName_1 = templates$8; - let templates$5 = {}; // these all have ['id', 'title', 'description', 'section'] + let templates$7 = {}; // these all have ['id', 'title', 'description', 'section'] let idTitle = ['imdb title', //https://en.wikipedia.org/wiki/Template:IMDb_title 'imdb name', 'imdb episode', 'imdb event', 'afi film', 'allmovie title', 'allgame', 'tcmdb title', 'discogs artist', 'discogs label', 'discogs release', 'discogs master', 'librivox author', 'musicbrainz artist', 'musicbrainz label', 'musicbrainz recording', 'musicbrainz release', 'musicbrainz work', 'youtube', 'goodreads book', 'dmoz' //https://en.wikipedia.org/wiki/Template:DMOZ ]; idTitle.forEach(name => { - templates$5[name] = ['id', 'title', 'description', 'section']; + templates$7[name] = ['id', 'title', 'description', 'section']; }); - var idTitle_1 = templates$5; + var idTitle_1 = templates$7; + const parse$d = toJSON$4; + const Image$3 = Image_1; + const lib$2 = _lib$3; var functions$1 = { // https://en.wikipedia.org/wiki/Template:IPA ipa: (tmpl, list) => { - let obj = toJSON(tmpl, ['transcription', 'lang', 'audio']); - obj.lang = _lib$3.getLang(obj.template); + let obj = parse$d(tmpl, ['transcription', 'lang', 'audio']); + obj.lang = lib$2.getLang(obj.template); obj.template = 'ipa'; list.push(obj); return ''; }, //https://en.wikipedia.org/wiki/Template:IPAc-en ipac: (tmpl, list) => { - let obj = toJSON(tmpl); + let obj = parse$d(tmpl); obj.transcription = (obj.list || []).join(','); delete obj.list; - obj.lang = _lib$3.getLang(obj.template); + obj.lang = lib$2.getLang(obj.template); obj.template = 'ipac'; list.push(obj); return ''; }, quote: (tmpl, list) => { let order = ['text', 'author']; - let obj = toJSON(tmpl, order); + let obj = parse$d(tmpl, order); list.push(obj); //create plaintext version if (obj.text) { - let str = `"${obj.text}"`; + let str = "\"".concat(obj.text, "\""); if (obj.author) { str += '\n\n'; - str += ` - ${obj.author}`; + str += " - ".concat(obj.author); } return str + '\n'; @@ -6115,7 +5454,7 @@ //this one sucks - https://en.wikipedia.org/wiki/Template:GNIS 'cite gnis': (tmpl, list) => { let order = ['id', 'name', 'type']; - let obj = toJSON(tmpl, order); + let obj = parse$d(tmpl, order); obj.type = 'gnis'; obj.template = 'citation'; list.push(obj); @@ -6123,38 +5462,38 @@ }, 'spoken wikipedia': (tmpl, list) => { let order = ['file', 'date']; - let obj = toJSON(tmpl, order); + let obj = parse$d(tmpl, order); obj.template = 'audio'; list.push(obj); return ''; }, //yellow card yel: (tmpl, list) => { - let obj = toJSON(tmpl, ['min']); + let obj = parse$d(tmpl, ['min']); list.push(obj); if (obj.min) { - return `yellow: ${obj.min || ''}'`; //no yellow-card emoji + return "yellow: ".concat(obj.min || '', "'"); //no yellow-card emoji } return ''; }, subon: (tmpl, list) => { - let obj = toJSON(tmpl, ['min']); + let obj = parse$d(tmpl, ['min']); list.push(obj); if (obj.min) { - return `sub on: ${obj.min || ''}'`; //no yellow-card emoji + return "sub on: ".concat(obj.min || '', "'"); //no yellow-card emoji } return ''; }, suboff: (tmpl, list) => { - let obj = toJSON(tmpl, ['min']); + let obj = parse$d(tmpl, ['min']); list.push(obj); if (obj.min) { - return `sub off: ${obj.min || ''}'`; //no yellow-card emoji + return "sub off: ".concat(obj.min || '', "'"); //no yellow-card emoji } return ''; @@ -6162,7 +5501,7 @@ //https://en.wikipedia.org/wiki/Template:Sfn sfn: (tmpl, list, parser, alias) => { let order = ['author', 'year', 'location']; - let obj = toJSON(tmpl, order); + let obj = parse$d(tmpl, order); if (alias) { obj.name = obj.template; @@ -6174,7 +5513,7 @@ }, //https://en.wikipedia.org/wiki/Template:Redirect redirect: (tmpl, list) => { - let data = toJSON(tmpl, ['redirect']); + let data = parse$d(tmpl, ['redirect']); let lines = data.list || []; let links = []; @@ -6195,12 +5534,12 @@ }, //https://en.wikipedia.org/wiki/Template:Sister_project_links 'sister project links': (tmpl, list) => { - let data = toJSON(tmpl); //rename 'wd' to 'wikidata' + let data = parse$d(tmpl); //rename 'wd' to 'wikidata' let links = {}; - Object.keys(_lib$3.sisterProjects).forEach(k => { + Object.keys(lib$2.sisterProjects).forEach(k => { if (data.hasOwnProperty(k) === true) { - links[_lib$3.sisterProjects[k]] = data[k]; //.text(); + links[lib$2.sisterProjects[k]] = data[k]; //.text(); } }); let obj = { @@ -6212,11 +5551,11 @@ }, //https://en.wikipedia.org/wiki/Template:Subject_bar 'subject bar': (tmpl, list) => { - let data = toJSON(tmpl); + let data = parse$d(tmpl); Object.keys(data).forEach(k => { //rename 'voy' to 'wikivoyage' - if (_lib$3.sisterProjects.hasOwnProperty(k)) { - data[_lib$3.sisterProjects[k]] = data[k]; + if (lib$2.sisterProjects.hasOwnProperty(k)) { + data[lib$2.sisterProjects[k]] = data[k]; delete data[k]; } }); @@ -6230,14 +5569,14 @@ //amazingly, this one does not obey any known patterns //https://en.wikipedia.org/wiki/Template:Gallery gallery: (tmpl, list) => { - let obj = toJSON(tmpl); + let obj = parse$d(tmpl); let images = (obj.list || []).filter(line => /^ *File ?:/.test(line)); images = images.map(file => { let img = { file: file }; // todo: add lang and domain information - return new Image_1(img).json(); + return new Image$3(img).json(); }); obj = { template: 'gallery', @@ -6248,7 +5587,7 @@ }, //https://en.wikipedia.org/wiki/Template:Sky sky: (tmpl, list) => { - let obj = toJSON(tmpl, ['asc_hours', 'asc_minutes', 'asc_seconds', 'dec_sign', 'dec_degrees', 'dec_minutes', 'dec_seconds', 'distance']); + let obj = parse$d(tmpl, ['asc_hours', 'asc_minutes', 'asc_seconds', 'dec_sign', 'dec_degrees', 'dec_minutes', 'dec_seconds', 'distance']); let template = { template: 'sky', ascension: { @@ -6272,7 +5611,7 @@ // parsing code. 'medical cases chart': (tmpl, list) => { let order = ['date', 'deathsExpr', 'recoveriesExpr', 'casesExpr', '4thExpr', '5thExpr', 'col1', 'col1Change', 'col2', 'col2Change']; - let obj = toJSON(tmpl); + let obj = parse$d(tmpl); obj.data = obj.data || ''; let rows = obj.data.split('\n'); // Mimic row parsing in _buildBars in the Lua source, from the following // line on: @@ -6323,7 +5662,7 @@ return ''; }, graph: (tmpl, list) => { - let data = toJSON(tmpl); + let data = parse$d(tmpl); if (data.x) { data.x = data.x.split(',').map(str => str.trim()); @@ -6345,7 +5684,7 @@ }, //https://en.wikipedia.org/wiki/Template:Historical_populations 'historical populations': (tmpl, list) => { - let data = toJSON(tmpl); + let data = parse$d(tmpl); data.list = data.list || []; let years = []; @@ -6367,7 +5706,7 @@ 'weather box': (tmpl, list) => { const hasMonth = /^jan /i; const isYear = /^year /i; - let obj = toJSON(tmpl); + let obj = parse$d(tmpl); const monthList = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']; let byMonth = {}; let properties = Object.keys(obj).filter(k => hasMonth.test(k)); @@ -6375,10 +5714,10 @@ properties.forEach(prop => { byMonth[prop] = []; monthList.forEach(m => { - let key = `${m} ${prop}`; + let key = "".concat(m, " ").concat(prop); if (obj.hasOwnProperty(key)) { - let num = _lib$3.toNumber(obj[key]); + let num = lib$2.toNumber(obj[key]); delete obj[key]; byMonth[prop].push(num); } @@ -6402,8 +5741,8 @@ //The 36 parameters are: 12 monthly highs (C), 12 lows (total 24) plus an optional 12 monthly rain/precipitation //https://en.wikipedia.org/wiki/Template:Weather_box/concise_C 'weather box/concise c': (tmpl, list) => { - let obj = toJSON(tmpl); - obj.list = obj.list.map(s => _lib$3.toNumber(s)); + let obj = parse$d(tmpl); + obj.list = obj.list.map(s => lib$2.toNumber(s)); obj.byMonth = { 'high c': obj.list.slice(0, 12), 'low c': obj.list.slice(12, 24), @@ -6415,8 +5754,8 @@ return ''; }, 'weather box/concise f': (tmpl, list) => { - let obj = toJSON(tmpl); - obj.list = obj.list.map(s => _lib$3.toNumber(s)); + let obj = parse$d(tmpl); + obj.list = obj.list.map(s => lib$2.toNumber(s)); obj.byMonth = { 'high f': obj.list.slice(0, 12), 'low f': obj.list.slice(12, 24), @@ -6429,7 +5768,7 @@ }, //https://en.wikipedia.org/wiki/Template:Climate_chart 'climate chart': (tmpl, list) => { - let lines = toJSON(tmpl).list || []; + let lines = parse$d(tmpl).list || []; let title = lines[0]; let source = lines[38]; lines = lines.slice(1); //amazingly, they use '−' symbol here instead of negatives... @@ -6445,9 +5784,9 @@ for (let i = 0; i < 36; i += 3) { months.push({ - low: _lib$3.toNumber(lines[i]), - high: _lib$3.toNumber(lines[i + 1]), - precip: _lib$3.toNumber(lines[i + 2]) + low: lib$2.toNumber(lines[i]), + high: lib$2.toNumber(lines[i + 1]), + precip: lib$2.toNumber(lines[i + 2]) }); } @@ -6463,19 +5802,8 @@ return ''; } }; - functions$1.ipa; - functions$1.ipac; - functions$1.quote; - functions$1.yel; - functions$1.subon; - functions$1.suboff; - functions$1.sfn; - functions$1.redirect; - functions$1.gallery; - functions$1.sky; - functions$1.graph; - let templates$4 = { + let templates$6 = { //https://en.wikipedia.org/wiki/Category:External_link_templates 'find a grave': ['id', 'name', 'work', 'last', 'first', 'date', 'accessdate'], congbio: ['id', 'name', 'date'], @@ -6493,8 +5821,8 @@ geo: ['lat', 'lon', 'zoom'] //https://en.wikivoyage.org/wiki/Template:Geo }; - templates$4 = Object.assign(templates$4, idName_1, idTitle_1, functions$1); - var dataOnly = templates$4; + templates$6 = Object.assign(templates$6, idName_1, idTitle_1, functions$1); + var dataOnly = templates$6; var shorthand = { mlbplayer: { @@ -6539,37 +5867,31 @@ // }, }; - shorthand.mlbplayer; - shorthand.syntaxhighlight; - shorthand.samp; - shorthand.sub; - shorthand.sup; - shorthand.chem2; - shorthand.ill; - shorthand.abbr; - let templates$3 = { + const parse$c = toJSON$4; + const lib$1 = _lib$3; + let templates$5 = { // https://en.wikipedia.org/wiki/Template:Math math: (tmpl, list) => { - let obj = toJSON(tmpl, ['formula']); + let obj = parse$c(tmpl, ['formula']); list.push(obj); return '\n\n' + (obj.formula || '') + '\n\n'; }, isbn: (tmpl, list) => { let order = ['id', 'id2', 'id3']; - let obj = toJSON(tmpl, order); + let obj = parse$c(tmpl, order); list.push(obj); return 'ISBN: ' + (obj.id || ''); }, //https://en.wikipedia.org/wiki/Template:Based_on 'based on': (tmpl, list) => { - let obj = toJSON(tmpl, ['title', 'author']); + let obj = parse$c(tmpl, ['title', 'author']); list.push(obj); - return `${obj.title} by ${obj.author || ''}`; + return "".concat(obj.title, " by ").concat(obj.author || ''); }, //barrels of oil https://en.wikipedia.org/wiki/Template:Bbl_to_t 'bbl to t': (tmpl, list) => { - let obj = toJSON(tmpl, ['barrels']); + let obj = parse$c(tmpl, ['barrels']); list.push(obj); if (obj.barrels === '0') { @@ -6580,9 +5902,9 @@ }, //minor planet - https://en.wikipedia.org/wiki/Template:MPC mpc: (tmpl, list) => { - let obj = toJSON(tmpl, ['number', 'text']); + let obj = parse$c(tmpl, ['number', 'text']); list.push(obj); - return `[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ${obj.text || obj.number}]`; + return "[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ".concat(obj.text || obj.number, "]"); }, pengoal: (tmpl, list) => { list.push({ @@ -6598,15 +5920,15 @@ }, // https://en.wikipedia.org/wiki/Template:Ordered_list 'ordered list': (tmpl, list) => { - let obj = toJSON(tmpl); + let obj = parse$c(tmpl); list.push(obj); obj.list = obj.list || []; - let lines = obj.list.map((str, i) => `${i + 1}. ${str}`); + let lines = obj.list.map((str, i) => "".concat(i + 1, ". ").concat(str)); return lines.join('\n\n'); }, // https://en.wikipedia.org/wiki/Template:Title_year 'title year': (tmpl, _list, _alias, _parse, doc) => { - let obj = toJSON(tmpl, ['match', 'nomatch', 'page']); + let obj = parse$c(tmpl, ['match', 'nomatch', 'page']); let title = obj.page || doc.title(); if (title) { @@ -6621,7 +5943,7 @@ }, // https://en.wikipedia.org/wiki/Template:Title_century 'title century': (tmpl, _list, _alias, _parse, doc) => { - let obj = toJSON(tmpl, ['match', 'nomatch', 'page']); + let obj = parse$c(tmpl, ['match', 'nomatch', 'page']); let title = obj.page || doc.title(); if (title) { @@ -6636,7 +5958,7 @@ }, // https://en.wikipedia.org/wiki/Template:Title_decade 'title decade': (tmpl, _list, _alias, _parse, doc) => { - let obj = toJSON(tmpl, ['match', 'nomatch', 'page']); + let obj = parse$c(tmpl, ['match', 'nomatch', 'page']); let title = obj.page || doc.title(); if (title) { @@ -6651,12 +5973,12 @@ }, //https://en.wikipedia.org/wiki/Template:Nihongo nihongo: (tmpl, list) => { - let obj = toJSON(tmpl, ['english', 'kanji', 'romaji', 'extra']); + let obj = parse$c(tmpl, ['english', 'kanji', 'romaji', 'extra']); list.push(obj); let str = obj.english || obj.romaji || ''; if (obj.kanji) { - str += ` (${obj.kanji})`; + str += " (".concat(obj.kanji, ")"); } return str; @@ -6664,15 +5986,15 @@ //https://en.wikipedia.org/wiki/Template:Marriage //this one creates a template, and an inline response marriage: (tmpl, list) => { - let data = toJSON(tmpl, ['spouse', 'from', 'to', 'end']); + let data = parse$c(tmpl, ['spouse', 'from', 'to', 'end']); list.push(data); let str = data.spouse || ''; if (data.from) { if (data.to) { - str += ` (m. ${data.from}-${data.to})`; + str += " (m. ".concat(data.from, "-").concat(data.to, ")"); } else { - str += ` (m. ${data.from})`; + str += " (m. ".concat(data.from, ")"); } } @@ -6680,7 +6002,7 @@ }, //'red' card - {{sent off|cards|min1|min2}} 'sent off': (tmpl, list) => { - let obj = toJSON(tmpl, ['cards']); + let obj = parse$c(tmpl, ['cards']); let result = { template: 'sent off', cards: obj.cards, @@ -6691,7 +6013,7 @@ return 'sent off: ' + mins; }, transl: (tmpl, list) => { - let obj = toJSON(tmpl, ['lang', 'text', 'text2']); // support 3-param + let obj = parse$c(tmpl, ['lang', 'text', 'text2']); // support 3-param if (obj.text2) { obj.iso = obj.text; @@ -6704,12 +6026,12 @@ }, //show/hide: https://en.wikipedia.org/wiki/Template:Collapsible_list 'collapsible list': (tmpl, list) => { - let obj = toJSON(tmpl); + let obj = parse$c(tmpl); list.push(obj); let str = ''; if (obj.title) { - str += `'''${obj.title}'''` + '\n\n'; + str += "'''".concat(obj.title, "'''") + '\n\n'; } if (!obj.list) { @@ -6729,7 +6051,7 @@ }, //https://en.wikipedia.org/wiki/Template:Columns-list 'columns-list': (tmpl, list) => { - let arr = toJSON(tmpl).list || []; + let arr = parse$c(tmpl).list || []; let str = arr[0] || ''; let lines = str.split(/\n/).filter(f => f); lines = lines.map(s => s.replace(/\*/, '')); @@ -6742,7 +6064,7 @@ }, //https://en.wikipedia.org/wiki/Template:Height - {{height|ft=6|in=1}} height: (tmpl, list) => { - let obj = toJSON(tmpl); + let obj = parse$c(tmpl); list.push(obj); let result = []; let units = ['m', 'cm', 'ft', 'in']; //order matters @@ -6756,7 +6078,7 @@ }, //https://en.wikipedia.org/wiki/Template:Sic sic: (tmpl, list) => { - let obj = toJSON(tmpl, ['one', 'two', 'three']); + let obj = parse$c(tmpl, ['one', 'two', 'three']); let word = (obj.one || '') + (obj.two || ''); //support '[sic?]' if (obj.one === '?') { @@ -6772,11 +6094,11 @@ return word; } - return `${word} [sic]`; + return "".concat(word, " [sic]"); }, // inrconvert: (tmpl, list) => { - let o = toJSON(tmpl, ['rupee_value', 'currency_formatting']); + let o = parse$c(tmpl, ['rupee_value', 'currency_formatting']); list.push(o); const mults = { k: 1000, @@ -6793,12 +6115,12 @@ o.rupee_value = o.rupee_value * multiplier; } - return `inr ${o.rupee_value || ''}`; + return "inr ".concat(o.rupee_value || ''); }, //fraction - https://en.wikipedia.org/wiki/Template:Sfrac frac: (tmpl, list) => { let order = ['a', 'b', 'c']; - let obj = toJSON(tmpl, order); + let obj = parse$c(tmpl, order); let data = { template: 'sfrac' }; @@ -6818,13 +6140,13 @@ list.push(data); if (data.integer) { - return `${data.integer} ${data.numerator}⁄${data.denominator}`; + return "".concat(data.integer, " ").concat(data.numerator, "\u2044").concat(data.denominator); } - return `${data.numerator}⁄${data.denominator}`; + return "".concat(data.numerator, "\u2044").concat(data.denominator); }, 'winning percentage': (tmpl, list) => { - let obj = toJSON(tmpl, ['wins', 'losses', 'ties']); + let obj = parse$c(tmpl, ['wins', 'losses', 'ties']); list.push(obj); let wins = Number(obj.wins); let losses = Number(obj.losses); @@ -6839,7 +6161,7 @@ wins += ties / 2; } - let num = _lib$3.percentage({ + let num = lib$1.percentage({ numerator: wins, denominator: games, decimals: 1 @@ -6849,14 +6171,14 @@ return ''; } - return `.${num * 10}`; + return ".".concat(num * 10); }, winlosspct: (tmpl, list) => { - let obj = toJSON(tmpl, ['wins', 'losses']); + let obj = parse$c(tmpl, ['wins', 'losses']); list.push(obj); let wins = Number(obj.wins); let losses = Number(obj.losses); - let num = _lib$3.percentage({ + let num = lib$1.percentage({ numerator: wins, denominator: wins + losses, decimals: 1 @@ -6866,13 +6188,13 @@ return ''; } - num = `.${num * 10}`; - return `${wins || 0} || ${losses || 0} || ${num || '-'}`; + num = ".".concat(num * 10); + return "".concat(wins || 0, " || ").concat(losses || 0, " || ").concat(num || '-'); }, //https://en.wikipedia.org/wiki/Template:Video_game_release 'video game release': (tmpl, list) => { let order = ['region', 'date', 'region2', 'date2', 'region3', 'date3', 'region4', 'date4']; - let obj = toJSON(tmpl, order); + let obj = parse$c(tmpl, order); let template = { template: 'video game release', releases: [] @@ -6888,23 +6210,24 @@ } list.push(template); - let str = template.releases.map(o => `${o.region}: ${o.date || ''}`).join('\n\n'); + let str = template.releases.map(o => "".concat(o.region, ": ").concat(o.date || '')).join('\n\n'); return '\n' + str + '\n'; }, // https://en.m.wikipedia.org/wiki/Template:USS uss: (tmpl, list) => { - let obj = toJSON(tmpl, ['name', 'id']); + let obj = parse$c(tmpl, ['name', 'id']); list.push(obj); if (obj.id) { - return `[[USS ${obj.name} (${obj.id})|USS ''${obj.name}'' (${obj.id})]]`; + return "[[USS ".concat(obj.name, " (").concat(obj.id, ")|USS ''").concat(obj.name, "'' (").concat(obj.id, ")]]"); } - return `[[USS ${obj.name}|USS ''${obj.name}'']]`; + return "[[USS ".concat(obj.name, "|USS ''").concat(obj.name, "'']]"); } }; - var functions = templates$3; + var functions = templates$5; + const parse$b = toJSON$4; const codes$1 = { '£': 'GB£', // https://en.wikipedia.org/wiki/Template:GBP @@ -7033,7 +6356,7 @@ }; const parseCurrency = (tmpl, list) => { - let o = toJSON(tmpl, ['amount', 'code']); + let o = parse$b(tmpl, ['amount', 'code']); list.push(o); let code = o.template || ''; @@ -7055,7 +6378,7 @@ o.code = code = 'gbp'; } - let str = `${codes$1[code] || ''}${o.amount || ''}`; //support unknown currencies after the number - like '5 BTC' + let str = "".concat(codes$1[code] || '').concat(o.amount || ''); //support unknown currencies after the number - like '5 BTC' if (o.code && !codes$1[o.code.toLowerCase()]) { str += ' ' + o.code; @@ -7064,14 +6387,14 @@ return str; }; - let templates$2 = { + let templates$4 = { currency: parseCurrency }; //and the others fit the same pattern Object.keys(codes$1).forEach(k => { - templates$2[k] = parseCurrency; + templates$4[k] = parseCurrency; }); - var currency = templates$2; + var currency = templates$4; const toOrdinal = function (i) { let j = i % 10; @@ -7098,7 +6421,7 @@ const year = day * 365; const getEpoch = function (obj) { - return new Date(`${obj.year}-${obj.month || 0}-${obj.date || 1}`).getTime(); + return new Date("".concat(obj.year, "-").concat(obj.month || 0, "-").concat(obj.date || 1)).getTime(); }; //very rough! @@ -7170,7 +6493,6 @@ toOrdinal: toOrdinal }; - //assorted parsing methods for date/time templates const months$1 = [undefined, //1-based months.. :/ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; const monthName = months$1.reduce((h, str, i) => { @@ -7235,13 +6557,13 @@ if (date.month !== undefined && months$1.hasOwnProperty(date.month) === true) { if (date.date === undefined) { //January 1995 - str = `${months$1[date.month]} ${date.year}`; + str = "".concat(months$1[date.month], " ").concat(date.year); } else { //January 5, 1995 - str = `${months$1[date.month]} ${date.date}, ${date.year}`; //add times, if available + str = "".concat(months$1[date.month], " ").concat(date.date, ", ").concat(date.year); //add times, if available if (date.hour !== undefined && date.minute !== undefined) { - let time = `${pad(date.hour)}:${pad(date.minute)}`; + let time = "".concat(pad(date.hour), ":").concat(pad(date.minute)); if (date.second !== undefined) { time = time + ':' + pad(date.second); @@ -7251,7 +6573,7 @@ } if (date.tz) { - str += ` (${date.tz})`; + str += " (".concat(date.tz, ")"); } } } @@ -7264,7 +6586,10 @@ ymd: ymd }; // console.log(toText(ymd([2018, 3, 28]))); - const delta = _lib$2.delta; //wrap it up as a template + const strip = _strip; + const parse$a = toJSON$4; + const delta = _lib$2.delta; + const fmt = _format; //wrap it up as a template const template$1 = function (date) { return { @@ -7274,9 +6599,9 @@ }; const getBoth = function (tmpl) { - tmpl = _strip(tmpl); + tmpl = strip(tmpl); let arr = tmpl.split('|'); - let from = _format.ymd(arr.slice(1, 4)); + let from = fmt.ymd(arr.slice(1, 4)); let to = arr.slice(4, 7); //assume now, if 'to' is empty if (to.length === 0) { @@ -7284,34 +6609,34 @@ to = [d.getFullYear(), d.getMonth(), d.getDate()]; } - to = _format.ymd(to); + to = fmt.ymd(to); return { from: from, to: to }; }; - const parsers = { + const parsers$1 = { //generic {{date|year|month|date}} template date: (tmpl, list) => { let order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'timezone']; - let obj = toJSON(tmpl, order); - let data = _format.ymd([obj.year, obj.month, obj.date || obj.day]); - obj.text = _format.toText(data); //make the replacement string + let obj = parse$a(tmpl, order); + let data = fmt.ymd([obj.year, obj.month, obj.date || obj.day]); + obj.text = fmt.toText(data); //make the replacement string if (obj.timezone) { if (obj.timezone === 'Z') { obj.timezone = 'UTC'; } - obj.text += ` (${obj.timezone})`; + obj.text += " (".concat(obj.timezone, ")"); } if (obj.hour && obj.minute) { if (obj.second) { - obj.text = `${obj.hour}:${obj.minute}:${obj.second}, ` + obj.text; + obj.text = "".concat(obj.hour, ":").concat(obj.minute, ":").concat(obj.second, ", ") + obj.text; } else { - obj.text = `${obj.hour}:${obj.minute}, ` + obj.text; + obj.text = "".concat(obj.hour, ":").concat(obj.minute, ", ") + obj.text; } } @@ -7324,7 +6649,7 @@ //support parsing of 'February 10, 1992' natural_date: (tmpl, list) => { let order = ['text']; - let obj = toJSON(tmpl, order); + let obj = parse$a(tmpl, order); let str = obj.text || ''; // - just a year let date = {}; @@ -7350,7 +6675,7 @@ //just grab the first value, and assume it's a year one_year: (tmpl, list) => { let order = ['year']; - let obj = toJSON(tmpl, order); + let obj = parse$a(tmpl, order); let year = Number(obj.year); list.push(template$1({ year: year @@ -7360,17 +6685,17 @@ //assume 'y|m|d' | 'y|m|d' // {{BirthDeathAge|B|1976|6|6|1990|8|8}} two_dates: (tmpl, list) => { let order = ['b', 'birth_year', 'birth_month', 'birth_date', 'death_year', 'death_month', 'death_date']; - let obj = toJSON(tmpl, order); //'b' means show birth-date, otherwise show death-date + let obj = parse$a(tmpl, order); //'b' means show birth-date, otherwise show death-date if (obj.b && obj.b.toLowerCase() === 'b') { - let date = _format.ymd([obj.birth_year, obj.birth_month, obj.birth_date]); + let date = fmt.ymd([obj.birth_year, obj.birth_month, obj.birth_date]); list.push(template$1(date)); - return _format.toText(date); + return fmt.toText(date); } - let date = _format.ymd([obj.death_year, obj.death_month, obj.death_date]); + let date = fmt.ymd([obj.death_year, obj.death_month, obj.death_date]); list.push(template$1(date)); - return _format.toText(date); + return fmt.toText(date); }, age: tmpl => { let d = getBoth(tmpl); @@ -7470,8 +6795,12 @@ return arr.join(', '); } }; - var _parsers = parsers; + var _parsers = parsers$1; + const parsers = _parsers; + const parse$9 = toJSON$4; + const lib = _lib$2; + const format = _format; const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; //date- templates we support var dates = { @@ -7481,7 +6810,7 @@ }, currentdayname: () => { let d = new Date(); - return _lib$2.days[d.getDay()]; + return lib.days[d.getDay()]; }, currentmonth: () => { let d = new Date(); @@ -7507,86 +6836,86 @@ }, 'time ago': tmpl => { let order = ['date', 'fmt']; - let time = toJSON(tmpl, order).date; - return _lib$2.timeSince(time); + let time = parse$9(tmpl, order).date; + return lib.timeSince(time); }, //https://en.wikipedia.org/wiki/Template:Birth_date_and_age 'birth date and age': (tmpl, list) => { let order = ['year', 'month', 'day']; - let obj = toJSON(tmpl, order); //support 'one property' version + let obj = parse$9(tmpl, order); //support 'one property' version if (obj.year && /[a-z]/i.test(obj.year)) { - return _parsers.natural_date(tmpl, list); + return parsers.natural_date(tmpl, list); } list.push(obj); - obj = _format.ymd([obj.year, obj.month, obj.day]); - return _format.toText(obj); + obj = format.ymd([obj.year, obj.month, obj.day]); + return format.toText(obj); }, 'birth year and age': (tmpl, list) => { let order = ['birth_year', 'birth_month']; - let obj = toJSON(tmpl, order); //support 'one property' version + let obj = parse$9(tmpl, order); //support 'one property' version if (obj.death_year && /[a-z]/i.test(obj.death_year)) { - return _parsers.natural_date(tmpl, list); + return parsers.natural_date(tmpl, list); } list.push(obj); let age = new Date().getFullYear() - parseInt(obj.birth_year, 10); - obj = _format.ymd([obj.birth_year, obj.birth_month]); - let str = _format.toText(obj); + obj = format.ymd([obj.birth_year, obj.birth_month]); + let str = format.toText(obj); if (age) { - str += ` (age ${age})`; + str += " (age ".concat(age, ")"); } return str; }, 'death year and age': (tmpl, list) => { let order = ['death_year', 'birth_year', 'death_month']; - let obj = toJSON(tmpl, order); //support 'one property' version + let obj = parse$9(tmpl, order); //support 'one property' version if (obj.death_year && /[a-z]/i.test(obj.death_year)) { - return _parsers.natural_date(tmpl, list); + return parsers.natural_date(tmpl, list); } list.push(obj); - obj = _format.ymd([obj.death_year, obj.death_month]); - return _format.toText(obj); + obj = format.ymd([obj.death_year, obj.death_month]); + return format.toText(obj); }, //https://en.wikipedia.org/wiki/Template:Birth_date_and_age2 'birth date and age2': (tmpl, list) => { let order = ['at_year', 'at_month', 'at_day', 'birth_year', 'birth_month', 'birth_day']; - let obj = toJSON(tmpl, order); + let obj = parse$9(tmpl, order); list.push(obj); - obj = _format.ymd([obj.birth_year, obj.birth_month, obj.birth_day]); - return _format.toText(obj); + obj = format.ymd([obj.birth_year, obj.birth_month, obj.birth_day]); + return format.toText(obj); }, //https://en.wikipedia.org/wiki/Template:Birth_based_on_age_as_of_date 'birth based on age as of date': (tmpl, list) => { let order = ['age', 'year', 'month', 'day']; - let obj = toJSON(tmpl, order); + let obj = parse$9(tmpl, order); list.push(obj); let age = parseInt(obj.age, 10); let year = parseInt(obj.year, 10); let born = year - age; if (born && age) { - return `${born} (age ${obj.age})`; + return "".concat(born, " (age ").concat(obj.age, ")"); } - return `(age ${obj.age})`; + return "(age ".concat(obj.age, ")"); }, //https://en.wikipedia.org/wiki/Template:Death_date_and_given_age 'death date and given age': (tmpl, list) => { let order = ['year', 'month', 'day', 'age']; - let obj = toJSON(tmpl, order); + let obj = parse$9(tmpl, order); list.push(obj); - obj = _format.ymd([obj.year, obj.month, obj.day]); - let str = _format.toText(obj); + obj = format.ymd([obj.year, obj.month, obj.day]); + let str = format.toText(obj); if (obj.age) { - str += ` (age ${obj.age})`; + str += " (age ".concat(obj.age, ")"); } return str; @@ -7597,7 +6926,7 @@ tmpl = tmpl.replace(/\|format=[ymd]+/i, ''); tmpl = tmpl.replace(/\|abbr=(on|off)/i, ''); let order = ['year', 'month', 'date', 'bc']; - let obj = toJSON(tmpl, order); + let obj = parse$9(tmpl, order); if (obj.date && obj.month && obj.year) { //render 'june 5 2018' @@ -7626,52 +6955,42 @@ //https://en.wikipedia.org/wiki/Template:Time time: () => { let d = new Date(); - let obj = _format.ymd([d.getFullYear(), d.getMonth(), d.getDate()]); - return _format.toText(obj); + let obj = format.ymd([d.getFullYear(), d.getMonth(), d.getDate()]); + return format.toText(obj); }, // https://en.wikipedia.org/wiki/Template:MILLENNIUM millennium: tmpl => { - let obj = toJSON(tmpl, ['year']); + let obj = parse$9(tmpl, ['year']); let year = Number(obj.year); year = parseInt(year / 1000, 10) + 1; if (obj.abbr && obj.abbr === 'y') { if (year < 0) { - return `${_lib$2.toOrdinal(Math.abs(year))} BC`; + return "".concat(lib.toOrdinal(Math.abs(year)), " BC"); } - return `${_lib$2.toOrdinal(year)}`; + return "".concat(lib.toOrdinal(year)); } - return `${_lib$2.toOrdinal(year)} millennium`; + return "".concat(lib.toOrdinal(year), " millennium"); }, //date/age/time templates - start: _parsers.date, - 'start-date': _parsers.natural_date, - birthdeathage: _parsers.two_dates, - age: _parsers.age, - 'age nts': _parsers.age, - 'age in years': _parsers['diff-y'], - 'age in years and months': _parsers['diff-ym'], - 'age in years, months and days': _parsers['diff-ymd'], - 'age in years and days': _parsers['diff-yd'], - 'age in days': _parsers['diff-d'] // 'birth date and age2': date, + start: parsers.date, + 'start-date': parsers.natural_date, + birthdeathage: parsers.two_dates, + age: parsers.age, + 'age nts': parsers.age, + 'age in years': parsers['diff-y'], + 'age in years and months': parsers['diff-ym'], + 'age in years, months and days': parsers['diff-ymd'], + 'age in years and days': parsers['diff-yd'], + 'age in days': parsers['diff-d'] // 'birth date and age2': date, // 'age in years, months, weeks and days': true, // 'age as of date': true, }; - dates.currentday; - dates.currentdayname; - dates.currentmonth; - dates.currentyear; - dates.monthyear; - dates.dts; - dates.time; - dates.millennium; - dates.start; - dates.birthdeathage; - dates.age; + const parse$8 = toJSON$4; /** * converts DMS (decimal-minute-second) geo format to lat/lng format. * major thank you to https://github.com/gmaclennan/parse-dms and https://github.com/WSDOT-GIS/dms-js 👏 @@ -7780,8 +7099,8 @@ return obj; }; - const parseCoor = function (tmpl) { - let obj = toJSON(tmpl); + const parseCoor$1 = function (tmpl) { + let obj = parse$8(tmpl); obj = parseParams(obj); let tmp = findLatLng(obj.list); obj.lat = round(tmp.lat); @@ -7793,15 +7112,16 @@ //console.log(parseDms([4, 27, 32, 'W'])); - var _lib$1 = parseCoor; // {{Coor title dms|dd|mm|ss|N/S|dd|mm|ss|E/W|template parameters}} + var _lib$1 = parseCoor$1; // {{Coor title dms|dd|mm|ss|N/S|dd|mm|ss|E/W|template parameters}} - const templates$1 = { + const parseCoor = _lib$1; + const templates$3 = { coord: (tmpl, list) => { - let obj = _lib$1(tmpl); + let obj = parseCoor(tmpl); list.push(obj); //display inline, by default if (!obj.display || obj.display.indexOf('inline') !== -1) { - return `${obj.lat || ''}°N, ${obj.lon || ''}°W`; + return "".concat(obj.lat || '', "\xB0N, ").concat(obj.lon || '', "\xB0W"); } return ''; @@ -7811,10 +7131,12 @@ //{{coord|dd|mm|N/S|dd|mm|E/W|coordinate parameters|template parameters}} //{{coord|dd|mm|ss|N/S|dd|mm|ss|E/W|coordinate parameters|template parameters}} - var geo = templates$1; + var geo = templates$3; + + const parse$7 = toJSON$4; const generic = function (tmpl, list, _parser, alias) { - let obj = toJSON(tmpl); + let obj = parse$7(tmpl); if (alias) { obj.name = obj.template; @@ -7843,6 +7165,7 @@ }; var misc_1 = misc; + const parse$6 = toJSON$4; const codes = { adx: 'adx', //https://en.wikipedia.org/wiki/Template:Abu_Dhabi_Securities_Exchange @@ -8047,7 +7370,7 @@ }; const parseStockExchange = (tmpl, list) => { - let o = toJSON(tmpl, ['ticketnumber', 'code']); + let o = parse$6(tmpl, ['ticketnumber', 'code']); list.push(o); let code = o.template || ''; @@ -8059,7 +7382,7 @@ let str = codes[code] || ''; if (o.ticketnumber) { - str = `${str}: ${o.ticketnumber}`; + str = "".concat(str, ": ").concat(o.ticketnumber); } if (o.code && !codes[o.code.toLowerCase()]) { @@ -8076,6 +7399,8 @@ }); var stockExchanges = exchanges; + const parse$5 = toJSON$4; + const zeroPad = function (num) { num = String(num); @@ -8087,11 +7412,11 @@ }; const parseTeam = function (obj, round, team) { - if (obj[`rd${round}-team${zeroPad(team)}`]) { + if (obj["rd".concat(round, "-team").concat(zeroPad(team))]) { team = zeroPad(team); } - let score = obj[`rd${round}-score${team}`]; + let score = obj["rd".concat(round, "-score").concat(team)]; let num = Number(score); if (isNaN(num) === false) { @@ -8099,23 +7424,23 @@ } return { - team: obj[`rd${round}-team${team}`], + team: obj["rd".concat(round, "-team").concat(team)], score: score, - seed: obj[`rd${round}-seed${team}`] + seed: obj["rd".concat(round, "-seed").concat(team)] }; }; // https://en.wikipedia.org/wiki/Category:Tournament_bracket_templates //these are weird. - const playoffBracket = function (tmpl) { + const playoffBracket$1 = function (tmpl) { let rounds = []; - let obj = toJSON(tmpl); //try some rounds + let obj = parse$5(tmpl); //try some rounds for (let i = 1; i < 7; i += 1) { let round = []; for (let t = 1; t < 16; t += 2) { - let key = `rd${i}-team`; + let key = "rd".concat(i, "-team"); if (obj[key + t] || obj[key + zeroPad(t)]) { let one = parseTeam(obj, i, t); @@ -8137,19 +7462,22 @@ }; }; - var _lib = playoffBracket; + var _lib = playoffBracket$1; + const parse$4 = toJSON$4; + const flags = flags$2; + const playoffBracket = _lib; let sports = { //playoff brackets '4teambracket': function (tmpl, list) { - let obj = _lib(tmpl); + let obj = playoffBracket(tmpl); list.push(obj); return ''; }, player: (tmpl, list) => { - let res = toJSON(tmpl, ['number', 'country', 'name', 'dl']); + let res = parse$4(tmpl, ['number', 'country', 'name', 'dl']); list.push(res); - let str = `[[${res.name}]]`; + let str = "[[".concat(res.name, "]]"); if (res.country) { let country = (res.country || '').toLowerCase(); @@ -8168,7 +7496,7 @@ }, //https://en.wikipedia.org/wiki/Template:Goal goal: (tmpl, list) => { - let res = toJSON(tmpl); + let res = parse$4(tmpl); let obj = { template: 'goal', data: [] @@ -8189,7 +7517,7 @@ let note = o.note; if (note) { - note = ` (${note})`; + note = " (".concat(note, ")"); } return o.min + "'" + note; @@ -8199,18 +7527,18 @@ //a transcluded sports module - https://en.m.wikipedia.org/w/index.php?title=Special:WhatLinksHere/Module:Sports_table // https://en.wikipedia.org/wiki/Template:2020–21_NHL_North_Division_standings 'sports table': (tmpl, list) => { - let obj = toJSON(tmpl); + let obj = parse$4(tmpl); let byTeam = {}; let teams = Object.keys(obj).filter(k => /^team[0-9]/.test(k)).map(k => obj[k].toLowerCase()); teams.forEach(team => { byTeam[team] = { - name: obj[`name_${team}`], - win: Number(obj[`win_${team}`]) || 0, - loss: Number(obj[`loss_${team}`]) || 0, - tie: Number(obj[`tie_${team}`]) || 0, - otloss: Number(obj[`otloss_${team}`]) || 0, - goals_for: Number(obj[`gf_${team}`]) || 0, - goals_against: Number(obj[`ga_${team}`]) || 0 + name: obj["name_".concat(team)], + win: Number(obj["win_".concat(team)]) || 0, + loss: Number(obj["loss_".concat(team)]) || 0, + tie: Number(obj["tie_".concat(team)]) || 0, + otloss: Number(obj["otloss_".concat(team)]) || 0, + goals_for: Number(obj["gf_".concat(team)]) || 0, + goals_against: Number(obj["ga_".concat(team)]) || 0 }; }); let res = { @@ -8225,38 +7553,43 @@ var textAndData = Object.assign({}, shorthand, functions, currency, dates, geo, misc_1, stockExchanges, _lib, sports_1, _lib, sports_1); - let templates = Object.assign({}, textOnly, dataOnly, textAndData); - Object.keys(aliases_1).forEach(k => { + const aliases = aliases_1; + let templates$2 = Object.assign({}, textOnly, dataOnly, textAndData); + Object.keys(aliases).forEach(k => { // if (templates[aliases[k]] === undefined) { // console.error(`Missing template: '${aliases[k]}'`) // } - templates[k] = templates[aliases_1[k]]; + templates$2[k] = templates$2[aliases[k]]; }); - var custom = templates; // console.log(Object.keys(templates).length) + var custom = templates$2; // console.log(Object.keys(templates).length) + const ignore = _ignore; + const infobox = _infobox; + const templates$1 = custom; + const toJSON$2 = toJSON$4; const { isArray: isArray$2, isObject - } = helpers; + } = helpers$1; const nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; //this gets all the {{template}} objects and decides how to parse them - const parseTemplate = function (tmpl, doc) { + const parseTemplate$1 = function (tmpl, doc) { let name = tmpl.name; // dont bother with some junk templates - if (_ignore.hasOwnProperty(name) === true) { + if (ignore.hasOwnProperty(name) === true) { return ['']; } //{{infobox settlement...}} - if (_infobox.isInfobox(name) === true) { - let obj = toJSON(tmpl.body, [], 'raw'); // list.push(infobox.format(obj)) + if (infobox.isInfobox(name) === true) { + let obj = toJSON$2(tmpl.body, [], 'raw'); // list.push(infobox.format(obj)) - return ['', _infobox.format(obj)]; + return ['', infobox.format(obj)]; } //cite book, cite arxiv... if (/^cite [a-z]/.test(name) === true) { - let obj = toJSON(tmpl.body); + let obj = toJSON$2(tmpl.body); obj.type = obj.template; obj.template = 'citation'; // list.push(obj) @@ -8265,45 +7598,45 @@ //parse some known templates - if (custom.hasOwnProperty(name) === true) { + if (templates$1.hasOwnProperty(name) === true) { //handle number-syntax - if (typeof custom[name] === 'number') { - let obj = toJSON(tmpl.body, nums); - let key = String(custom[name]); + if (typeof templates$1[name] === 'number') { + let obj = toJSON$2(tmpl.body, nums); + let key = String(templates$1[name]); return [obj[key] || '']; } //handle string-syntax - if (typeof custom[name] === 'string') { - return [custom[name]]; + if (typeof templates$1[name] === 'string') { + return [templates$1[name]]; } //handle array sytax - if (isArray$2(custom[name]) === true) { - let obj = toJSON(tmpl.body, custom[name]); // list.push(obj) + if (isArray$2(templates$1[name]) === true) { + let obj = toJSON$2(tmpl.body, templates$1[name]); // list.push(obj) return ['', obj]; } //handle object sytax - if (isObject(custom[name]) === true) { - let obj = toJSON(tmpl.body, custom[name].props); // list.push(obj) + if (isObject(templates$1[name]) === true) { + let obj = toJSON$2(tmpl.body, templates$1[name].props); // list.push(obj) - return [obj[custom[name].out], obj]; + return [obj[templates$1[name].out], obj]; } //handle function syntax - if (typeof custom[name] === 'function') { + if (typeof templates$1[name] === 'function') { // let json = toJSON(tmpl.body) //(tmpl, list, alias, doc) let arr = []; - let txt = custom[name](tmpl.body, arr, toJSON, null, doc); + let txt = templates$1[name](tmpl.body, arr, toJSON$2, null, doc); return [txt, arr[0]]; } } //an unknown template with data, so just keep it. - let json = toJSON(tmpl.body); + let json = toJSON$2(tmpl.body); if (Object.keys(json).length === 0) { // list.push(json) @@ -8314,9 +7647,11 @@ return ['', json]; }; - var parse$3 = parseTemplate; + var parse$3 = parseTemplate$1; + + const encode = encode$4; //turn an infobox into some nice json - const toJson = function (infobox, options) { + const toJson$1 = function (infobox, options) { let json = Object.keys(infobox.data).reduce((h, k) => { if (infobox.data[k]) { h[k] = infobox.data[k].json(); @@ -8332,20 +7667,24 @@ return json; }; - var toJson_1 = toJson; + var toJson_1 = toJson$1; + const toJson = toJson_1; + const Image$2 = Image_1; const { isArray: isArray$1 - } = helpers; + } = helpers$1; + const Sentence = Sentence_1; - const normalize = (str = '') => { + const normalize = function () { + let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; str = str.toLowerCase(); str = str.replace(/[-_]/g, ' '); return str.trim(); }; //a formal key-value data table about a topic - const Infobox = function (obj, wiki) { + const Infobox$1 = function (obj, wiki) { this._type = obj.type; this.domain = obj.domain; Object.defineProperty(this, 'data', { @@ -8390,7 +7729,7 @@ obj.text = ''; obj.domain = this.domain; // add domain information for image - return new Image_1(obj); + return new Image$2(obj); }, get: function (keys) { let allKeys = Object.keys(this.data); @@ -8406,7 +7745,7 @@ } } - return new Sentence_1(); + return new Sentence(); } if (isArray$1(keys)) { @@ -8421,18 +7760,18 @@ } } - return new Sentence_1(); + return new Sentence(); }); } - return new Sentence_1(); + return new Sentence(); }, text: function () { return ''; }, json: function (options) { options = options || {}; - return toJson_1(this, options); + return toJson(this, options); }, wikitext: function () { return this.wiki || ''; @@ -8449,12 +7788,12 @@ }; //aliases Object.keys(methods$1).forEach(k => { - Infobox.prototype[k] = methods$1[k]; + Infobox$1.prototype[k] = methods$1[k]; }); - Infobox.prototype.data = Infobox.prototype.keyValue; - Infobox.prototype.template = Infobox.prototype.type; - Infobox.prototype.images = Infobox.prototype.image; - var Infobox_1 = Infobox; + Infobox$1.prototype.data = Infobox$1.prototype.keyValue; + Infobox$1.prototype.template = Infobox$1.prototype.type; + Infobox$1.prototype.images = Infobox$1.prototype.image; + var Infobox_1 = Infobox$1; const toText = _04Sentence.fromText; const methods = { @@ -8470,7 +7809,9 @@ } }; - const Template = function (data, text = '', wiki = '') { + const Template$2 = function (data) { + let text = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + let wiki = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; Object.defineProperty(this, 'data', { enumerable: false, value: data @@ -8486,10 +7827,13 @@ }; Object.keys(methods).forEach(k => { - Template.prototype[k] = methods[k]; + Template$2.prototype[k] = methods[k]; }); - var Template_1 = Template; + var Template_1 = Template$2; + const Infobox = Infobox_1; + const Reference = Reference_1; + const Template$1 = Template_1; const isCitation = /^(cite |citation)/i; const referenceTypes = { citation: true, @@ -8499,7 +7843,7 @@ }; // split Infoboxes from templates and references - const sortOut = function (list, domain) { + const sortOut$1 = function (list, domain) { let res = { infoboxes: [], templates: [], @@ -8511,7 +7855,7 @@ let kind = json.template || json.type || json.name; // is it a Reference? if (referenceTypes[kind] === true || isCitation.test(kind) === true) { - res.references.push(new Reference_1(json, obj.wiki)); + res.references.push(new Reference(json, obj.wiki)); return; } // is it an Infobox? @@ -8521,22 +7865,26 @@ json.data = json.data || {}; //validate it a little - res.infoboxes.push(new Infobox_1(json, obj.wiki)); + res.infoboxes.push(new Infobox(json, obj.wiki)); return; } // otherwise, it's just a template - res.templates.push(new Template_1(json, obj.text, obj.wiki)); + res.templates.push(new Template$1(json, obj.text, obj.wiki)); }); return res; }; - var sortOut_1 = sortOut; + var sortOut_1 = sortOut$1; + + const findTemplates = _01Nested; + const parseTemplate = parse$3; + const sortOut = sortOut_1; // return a flat list of all {{templates}} const allTemplates = function (wiki, doc) { let list = []; //nested data-structure of templates - let nested = _01Nested(wiki); //recursive template-parser + let nested = findTemplates(wiki); //recursive template-parser const parseNested = function (obj, parent) { obj.parent = parent; //do tail-first recursion @@ -8546,7 +7894,7 @@ } //parse template into json, return replacement wikitext - let [text, json] = parse$3(obj, doc); + let [text, json] = parseTemplate(obj, doc); obj.wiki = text; if (json) { @@ -8595,7 +7943,7 @@ infoboxes, references, templates - } = sortOut_1(list, domain); //sort-out the templates we decide to keep + } = sortOut(list, domain); //sort-out the templates we decide to keep section._infoboxes = section._infoboxes || []; section._references = section._references || []; @@ -8608,7 +7956,8 @@ var template = process; - const parseSentence$1 = _04Sentence.fromText; //okay, is a xml-tag, with newline-separated data, somehow pivoted by '|'... + const parseSentence$1 = _04Sentence.fromText; + const Image$1 = Image_1; //okay, is a xml-tag, with newline-separated data, somehow pivoted by '|'... //all deities help us. truly -> https://en.wikipedia.org/wiki/Help:Gallery_tag //- not to be confused with https://en.wikipedia.org/wiki/Template:Gallery... @@ -8620,7 +7969,7 @@ * @param {Section} section */ - const parseGallery = function (catcher, doc, section) { + const parseGallery$1 = function (catcher, doc, section) { catcher.text = catcher.text.replace(/]*)>([\s\S]+)<\/gallery>/g, (_, attrs, inside) => { let images = inside.split(/\n/g); images = images.filter(str => str && str.trim() !== ''); //parse the line, which has an image and sometimes a caption @@ -8632,7 +7981,7 @@ lang: doc.lang(), domain: doc.domain() }; - let img = new Image_1(obj).json(); + let img = new Image$1(obj).json(); let caption = arr.slice(1).join('|'); if (caption !== '') { @@ -8655,8 +8004,9 @@ }); }; - var gallery = parseGallery; + var gallery = parseGallery$1; + const parseTemplates = template; /** * parses out the `Election_box` template from the wiki text * @@ -8667,14 +8017,14 @@ * @param {object} catcher an object to provide and catch data */ - const parseElection = function (catcher) { + const parseElection$1 = function (catcher) { catcher.text = catcher.text.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi, tmpl => { let data = { _wiki: tmpl, _templates: [] }; //put it through our full template parser.. - template(data); //okay, pull it apart into something sensible.. + parseTemplates(data); //okay, pull it apart into something sensible.. let templates = data._templates.map(t => t.json()); @@ -8696,8 +8046,9 @@ }); }; - var election = parseElection; + var election = parseElection$1; + const tableParser$2 = parse$i; const keys = { coach: ['team', 'year', 'g', 'w', 'l', 'w-l%', 'finish', 'pg', 'pw', 'pl', 'pw-l%'], player: ['year', 'team', 'gp', 'gs', 'mpg', 'fg%', '3p%', 'ft%', 'rpg', 'apg', 'spg', 'bpg', 'ppg'], @@ -8710,14 +8061,14 @@ * @param {object} catcher */ - const parseNBA = function (catcher) { + const parseNBA$1 = function (catcher) { catcher.text = catcher.text.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi, (tmpl, name) => { tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); tmpl = tmpl.replace(/\{\{s-end\}\}/, ''); name = name.toLowerCase().trim(); let headers = '! ' + keys[name].join(' !! '); let table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - let rows = parse$5(table); + let rows = tableParser$2(table); rows = rows.map(row => { Object.keys(row).forEach(k => { row[k] = row[k].text(); @@ -8733,8 +8084,9 @@ }); }; - var nba = parseNBA; + var nba = parseNBA$1; + const tableParser$1 = parse$i; //https://en.wikipedia.org/wiki/Template:MLB_game_log_section //this is pretty nuts const whichHeadings = function (tmpl) { @@ -8761,14 +8113,14 @@ */ - const parseMlb = function (catcher) { + const parseMlb$1 = function (catcher) { catcher.text = catcher.text.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi, tmpl => { let headings = whichHeadings(tmpl); tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); tmpl = tmpl.replace(/\{\{mlb game log (section|month) end\}\}/i, ''); let headers = '! ' + headings.join(' !! '); let table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - let rows = parse$5(table); + let rows = tableParser$1(table); rows = rows.map(row => { Object.keys(row).forEach(k => { row[k] = row[k].text(); @@ -8784,8 +8136,9 @@ }); }; - var mlb = parseMlb; + var mlb = parseMlb$1; + const tableParser = parse$i; let headings = ['res', 'record', 'opponent', 'method', 'event', 'date', 'round', 'time', 'location', 'notes']; /** * @@ -8795,13 +8148,13 @@ * @param {object} catcher */ - const parseMMA = function (catcher) { + const parseMMA$1 = function (catcher) { catcher.text = catcher.text.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi, tmpl => { tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); tmpl = tmpl.replace(/\{\{end\}\}/i, ''); let headers = '! ' + headings.join(' !! '); let table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - let rows = parse$5(table); + let rows = tableParser(table); rows = rows.map(row => { Object.keys(row).forEach(k => { row[k] = row[k].text(); @@ -8817,7 +8170,7 @@ }); }; - var mma = parseMMA; + var mma = parseMMA$1; const parseSentence = _04Sentence.fromText; /** @@ -8830,7 +8183,7 @@ * @param {object} catcher */ - const parseMath = function (catcher) { + const parseMath$1 = function (catcher) { catcher.text = catcher.text.replace(/]*)>([\s\S]+)<\/math>/g, (_, attrs, inside) => { //clean it up a little? let formula = parseSentence(inside).text(); @@ -8858,8 +8211,15 @@ }); }; - var math = parseMath; + var math = parseMath$1; + const parseGallery = gallery; + const parseElection = election; + const parseNBA = nba; + const parseMlb = mlb; + const parseMMA = mma; + const parseMath = math; + const Template = Template_1; /** * parses out non standard templates * @@ -8878,19 +8238,21 @@ templates: [], text: section._wiki }; - election(res); - gallery(res, doc, section); - math(res); - mlb(res); - mma(res); - nba(res); // turn them into Template objects - - res.templates = res.templates.map(obj => new Template_1(obj)); + parseElection(res); + parseGallery(res, doc, section); + parseMath(res); + parseMlb(res); + parseMMA(res); + parseNBA(res); // turn them into Template objects + + res.templates = res.templates.map(obj => new Template(obj)); return res; }; var startToEnd = xmlTemplates; + const toJSON$1 = toJson$6; + const setDefaults$1 = setDefaults_1; const parse$2 = { heading: heading, table: table, @@ -8913,7 +8275,7 @@ * @class */ - class Section { + class Section$1 { /** * the stuff between headings - 'History' section for example * @@ -9389,7 +8751,7 @@ text(options) { - options = setDefaults_1(options, defaults$2); + options = setDefaults$1(options, defaults$2); return this.paragraphs().map(p => p.text(options)).join('\n\n'); } /** @@ -9411,13 +8773,13 @@ json(options) { - options = setDefaults_1(options, defaults$2); - return toJson$4(this, options); + options = setDefaults$1(options, defaults$2); + return toJSON$1(this, options); } } - Section.prototype.citations = Section.prototype.references; // aliases + Section$1.prototype.citations = Section$1.prototype.references; // aliases const singular$1 = { sentences: 'sentence', @@ -9435,7 +8797,7 @@ Object.keys(singular$1).forEach(k => { let sing = singular$1[k]; - Section.prototype[sing] = function (clue) { + Section$1.prototype[sing] = function (clue) { let arr = this[k](clue); if (typeof clue === 'number') { @@ -9445,9 +8807,11 @@ return arr[0] || null; }; }); - var Section_1 = Section; + var Section_1 = Section$1; - const isReference = new RegExp('^(' + i18n.references.join('|') + '):?', 'i'); + const Section = Section_1; + const i18n$1 = i18n$6; + const isReference = new RegExp('^(' + i18n$1.references.join('|') + '):?', 'i'); const section_reg = /(?:\n|^)(={2,5}.{1,200}?={2,5})/g; //interpret ==heading== lines const parse$1 = { @@ -9515,7 +8879,7 @@ }; //figure-out title and depth parse$1.heading(data, heading); - sections.push(new Section_1(data, doc)); + sections.push(new Section(data, doc)); } //remove empty references section @@ -9524,6 +8888,7 @@ var _02Section = parseSections; + const i18n = i18n$6; const cat_reg = new RegExp('\\[\\[:?(' + i18n.categories.join('|') + '):(.{2,178}?)]](w{0,10})', 'gi'); const cat_remove_reg = new RegExp('^\\[\\[:?(' + i18n.categories.join('|') + '):', 'gi'); @@ -9550,6 +8915,13 @@ var categories = parse_categories; + const sectionMap = _sectionMap; + const toJSON = toJson$9; + const isDisambig = isDisambig_1; + const setDefaults = setDefaults_1; + const Image = Image_1; + const redirects = redirects$1; + const preProcess = preProcess_1; const parse = { section: _02Section, categories: categories @@ -9567,7 +8939,7 @@ * @class */ - class Document { + class Document$2 { /** * The constructor for the document class * This function starts parsing the wiki text and sets the options in the class @@ -9610,7 +8982,7 @@ } //give ourselves a little head-start - this._wiki = preProcess_1(this._wiki); //pull-out [[category:whatevers]] + this._wiki = preProcess(this._wiki); //pull-out [[category:whatevers]] const [categories, newWiki] = parse.categories(this._wiki); this._categories = categories; @@ -9737,7 +9109,7 @@ title = title.replace(/ /g, '_'); title = encodeURIComponent(title); - return `https://${lang}.${domain}/wiki/${title}`; + return "https://".concat(lang, ".").concat(domain, "/wiki/").concat(title); } /** * If an namespace is given then it sets the namespace and returns the given namespace @@ -9783,7 +9155,7 @@ isDisambiguation() { - return isDisambig_1(this); + return isDisambig(this); } /** * If a clue is available return the category at that index @@ -9884,7 +9256,7 @@ images(clue) { - let arr = _sectionMap(this, 'images', null); //grab image from infobox, first + let arr = sectionMap(this, 'images', null); //grab image from infobox, first this.infoboxes().forEach(info => { let img = info.image(); @@ -9898,10 +9270,10 @@ if (obj.data.template === 'gallery') { obj.data.images = obj.data.images || []; obj.data.images.forEach(img => { - if (!(img instanceof Image_1)) { + if (!(img instanceof Image)) { img.language = this.language(); img.domain = this.domain(); - img = new Image_1(img); + img = new Image(img); } arr.push(img); @@ -9924,7 +9296,7 @@ links(clue) { - return _sectionMap(this, 'links', clue); + return sectionMap(this, 'links', clue); } /** * Return all inter wiki links or if a clue is provided only the inter wiki link at that index @@ -9935,7 +9307,7 @@ interwiki(clue) { - return _sectionMap(this, 'interwiki', clue); + return sectionMap(this, 'interwiki', clue); } /** * If a clue is available return the list at that index @@ -9947,7 +9319,7 @@ lists(clue) { - return _sectionMap(this, 'lists', clue); + return sectionMap(this, 'lists', clue); } /** * If a clue is available return the tables at that index @@ -9959,7 +9331,7 @@ tables(clue) { - return _sectionMap(this, 'tables', clue); + return sectionMap(this, 'tables', clue); } /** * If a clue is available return the template at that index @@ -9971,7 +9343,7 @@ templates(clue) { - return _sectionMap(this, 'templates', clue); + return sectionMap(this, 'templates', clue); } /** * If a clue is available return the references at that index @@ -9983,7 +9355,7 @@ references(clue) { - return _sectionMap(this, 'references', clue); + return sectionMap(this, 'references', clue); } /** * Returns the 0th or clue-th reference @@ -10006,7 +9378,7 @@ coordinates(clue) { - return _sectionMap(this, 'coordinates', clue); + return sectionMap(this, 'coordinates', clue); } /** * If clue is unidentified then it returns all infoboxes @@ -10019,7 +9391,7 @@ infoboxes(clue) { - let arr = _sectionMap(this, 'infoboxes', clue); //sort them by biggest-first + let arr = sectionMap(this, 'infoboxes', clue); //sort them by biggest-first arr = arr.sort((a, b) => { if (Object.keys(a.data).length > Object.keys(b.data).length) { @@ -10039,7 +9411,7 @@ text(options) { - options = setDefaults_1(options, defaults$1); //nah, skip these. + options = setDefaults(options, defaults$1); //nah, skip these. if (this.isRedirect() === true) { return ''; @@ -10057,8 +9429,8 @@ json(options) { - options = setDefaults_1(options, defaults$1); - return toJson$6(this, options); + options = setDefaults(options, defaults$1); + return toJSON(this, options); } /** * return original wiki markup @@ -10113,24 +9485,25 @@ Object.keys(singular).forEach(k => { let sing = singular[k]; - Document.prototype[sing] = function (clue) { + Document$2.prototype[sing] = function (clue) { let arr = this[k](clue); return arr[0] || null; }; }); - Document.prototype.lang = Document.prototype.language; - Document.prototype.ns = Document.prototype.namespace; - Document.prototype.plaintext = Document.prototype.text; - Document.prototype.isDisambig = Document.prototype.isDisambiguation; - Document.prototype.citations = Document.prototype.references; - Document.prototype.redirectsTo = Document.prototype.redirectTo; - Document.prototype.redirect = Document.prototype.redirectTo; - Document.prototype.redirects = Document.prototype.redirectTo; - var Document_1 = Document; - + Document$2.prototype.lang = Document$2.prototype.language; + Document$2.prototype.ns = Document$2.prototype.namespace; + Document$2.prototype.plaintext = Document$2.prototype.text; + Document$2.prototype.isDisambig = Document$2.prototype.isDisambiguation; + Document$2.prototype.citations = Document$2.prototype.references; + Document$2.prototype.redirectsTo = Document$2.prototype.redirectTo; + Document$2.prototype.redirect = Document$2.prototype.redirectTo; + Document$2.prototype.redirects = Document$2.prototype.redirectTo; + var Document_1 = Document$2; + + const Document$1 = Document_1; const { isArray - } = helpers; + } = helpers$1; /** * this function puts all responses into proper Document objects * @@ -10140,12 +9513,12 @@ * @returns {null| Document | Document[]} null if there are no results or Document if there is one responses and Document array if there are multiple responses */ - const parseDoc = function (res, title) { + const parseDoc$1 = function (res, title) { // filter out undefined res = res.filter(o => o); // put all the responses into Document formats let docs = res.map(o => { - return new Document_1(o.wiki, o.meta); + return new Document$1(o.wiki, o.meta); }); // if the list is empty than there are no results if (docs.length === 0) { @@ -10160,7 +9533,7 @@ return docs; }; - var parseDoc_1 = parseDoc; + var parseDoc_1 = parseDoc$1; /** * factory for header options @@ -10169,7 +9542,8 @@ * @param {object} options * @returns {object} the generated options */ - const makeHeaders = function (options) { + + const makeHeaders$1 = function (options) { let agent = options.userAgent || options['User-Agent'] || options['Api-User-Agent'] || 'User of the wtf_wikipedia library'; let origin; @@ -10192,8 +9566,14 @@ }; }; - var _headers = makeHeaders; + var _headers = makeHeaders$1; + const unfetch$1 = require$$0__default["default"]; + const parseUrl = parseUrl_1; + const makeUrl = makeUrl_1; + const getResult = getResult_1; + const parseDoc = parseDoc_1; + const makeHeaders = _headers; const isUrl = /^https?:\/\//; /** * @typedef fetchDefaults @@ -10233,7 +9613,7 @@ * @returns {Promise} either null if the pages is not found, Document if you asked for one result, and a array of Documents if you asked for multiple pages */ - const fetch$1 = function (title, options, callback) { + const fetch$2 = function (title, options, callback) { // support lang as 2nd param if (typeof options === 'string') { options = { @@ -10248,15 +9628,15 @@ if (typeof title === 'string' && isUrl.test(title)) { options = { ...options, - ...parseUrl_1(title) + ...parseUrl(title) }; } - const url = makeUrl_1(options); - const headers = _headers(options); - return isomorphicUnfetch__default['default'](url, headers).then(res => res.json()).then(res => { - let data = getResult_1(res, options); - data = parseDoc_1(data, title); + const url = makeUrl(options); + const headers = makeHeaders(options); + return unfetch$1(url, headers).then(res => res.json()).then(res => { + let data = getResult(res, options); + data = parseDoc(data, title); if (callback) { callback(null, data); @@ -10274,10 +9654,11 @@ }); }; - var _fetch = fetch$1; + var _fetch = fetch$2; - var _version = '9.0.1'; + var _version = '9.0.2'; + const unfetch = require$$0__default["default"]; /** * use the native client-side fetch function * @@ -10288,15 +9669,19 @@ */ const request = function (url, opts) { - return isomorphicUnfetch__default['default'](url, opts).then(function (res) { + return unfetch(url, opts).then(function (res) { return res.json(); }); }; - var fetch = request; + var fetch$1 = request; + + const fetch = _fetch; + const version = _version; + const Document = Document_1; //the main 'factory' exported method const wtf = function (wiki, options) { - return new Document_1(wiki, options); + return new Document(wiki, options); }; //export classes for plugin development @@ -10312,23 +9697,25 @@ Reference: Reference_1, Table: Table_1, Template: Template_1, - http: fetch, + http: fetch$1, wtf: wtf }; + let templates = custom; + let infoboxes = _infoboxes; wtf.fetch = function (title, options, cb) { - return _fetch(title, options, cb); + return fetch(title, options, cb); }; wtf.extend = function (fn) { - fn(models, custom, _infoboxes); + fn(models, templates, infoboxes); return this; }; wtf.plugin = wtf.extend; - wtf.version = _version; + wtf.version = version; var src = wtf; return src; -}))); +})); diff --git a/builds/wtf_wikipedia.mjs b/builds/wtf_wikipedia.mjs index f6668a2e..d3b7bfc7 100644 --- a/builds/wtf_wikipedia.mjs +++ b/builds/wtf_wikipedia.mjs @@ -1,5 +1,5 @@ -/* wtf_wikipedia 9.0.1 MIT */ -import isomorphicUnfetch from 'isomorphic-unfetch'; +/* wtf_wikipedia 9.0.2 MIT */ +import require$$0 from 'isomorphic-unfetch'; /** * Parses out the domain and title from a url @@ -8,7 +8,8 @@ import isomorphicUnfetch from 'isomorphic-unfetch'; * @param {string} url The url that will be parsed * @returns {{domain: string, title: string}} The domain and title of a url */ -const parseUrl = function (url) { + +const parseUrl$1 = function (url) { let parsed = new URL(url); let title = parsed.pathname.replace(/^\/(wiki\/)?/, ''); title = decodeURIComponent(title); @@ -18,7 +19,7 @@ const parseUrl = function (url) { }; }; -var parseUrl_1 = parseUrl; +var parseUrl_1 = parseUrl$1; /** * capitalizes the input @@ -29,6 +30,7 @@ var parseUrl_1 = parseUrl; * @param {string} [str] the string that will be capitalized * @returns {string} the capitalized string */ + function capitalise(str) { if (str && typeof str === 'string') { return str.charAt(0).toUpperCase() + str.slice(1); @@ -81,7 +83,7 @@ function isObject$1(x) { return x && Object.prototype.toString.call(x) === '[object Object]'; } -var helpers = { +var helpers$1 = { capitalise, trim_whitespace: trim_whitespace$1, isArray: isArray$4, @@ -90,7 +92,7 @@ var helpers = { const { isArray: isArray$3 -} = helpers; +} = helpers$1; const isInterWiki = /(wikibooks|wikidata|wikimedia|wikinews|wikipedia|wikiquote|wikisource|wikispecies|wikiversity|wikivoyage|wiktionary|foundation|meta)\.org/; const defaults$c = { action: 'query', @@ -112,7 +114,10 @@ const defaults$c = { */ const toQueryString = function (obj) { - return Object.entries(obj).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join('&'); + return Object.entries(obj).map(_ref => { + let [key, value] = _ref; + return "".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(value)); + }).join('&'); }; /** * cleans and prepares the tile by replacing the spaces with underscores (_) and trimming the white spaces of the ends @@ -135,7 +140,7 @@ const cleanTitle = page => { */ -const makeUrl = function (options) { +const makeUrl$1 = function (options) { let params = Object.assign({}, defaults$c); //default url let apiPath = ''; //add support for third party apis @@ -143,9 +148,9 @@ const makeUrl = function (options) { if (options.domain) { //wikimedia is the only api that uses `/w/api` as its path. other wikis use other paths let path = isInterWiki.test(options.domain) ? 'w/api.php' : options.path; - apiPath = `https://${options.domain}/${path}?`; + apiPath = "https://".concat(options.domain, "/").concat(path, "?"); } else if (options.lang && options.wiki) { - apiPath = `https://${options.lang}.${options.wiki}.org/w/api.php?`; + apiPath = "https://".concat(options.lang, ".").concat(options.wiki, ".org/w/api.php?"); } else { return ''; } @@ -174,10 +179,10 @@ const makeUrl = function (options) { } //make it! - return `${apiPath}${toQueryString(params)}`; + return "".concat(apiPath).concat(toQueryString(params)); }; -var makeUrl_1 = makeUrl; +var makeUrl_1 = makeUrl$1; /** * parses the media wiki api response to something we can use @@ -189,7 +194,9 @@ var makeUrl_1 = makeUrl; * @param {object} [options] * @returns {*} result */ -const getResult = function (data, options = {}) { + +const getResult$1 = function (data) { + let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; //get all the pagesIds from the result let pages = Object.keys(data.query.pages); // map over the pageIds to parse out all the information @@ -212,7 +219,7 @@ const getResult = function (data, options = {}) { let domain = options.domain; if (!domain && options.wiki) { - domain = `${options.wiki}.org`; + domain = "".concat(options.wiki, ".org"); } let meta = Object.assign({}, options, { @@ -230,7 +237,7 @@ const getResult = function (data, options = {}) { }); }; -var getResult_1 = getResult; +var getResult_1 = getResult$1; /** * helper for looping around all sections of a document @@ -241,7 +248,8 @@ var getResult_1 = getResult; * @param {string | number} [clue] the clue that will be used with the function * @returns {Array|*} the array of item at the index of the clue */ -const sectionMap = function (doc, fn, clue) { + +const sectionMap$1 = function (doc, fn, clue) { let arr = []; doc.sections().forEach(sec => { let list = []; @@ -268,7 +276,7 @@ const sectionMap = function (doc, fn, clue) { return arr; }; -var _sectionMap = sectionMap; +var _sectionMap = sectionMap$1; /** * applies the the key values of defaults to options @@ -278,12 +286,14 @@ var _sectionMap = sectionMap; * @param {object} defaults the defaults * @returns {object} the user options with the defaults applied */ -const setDefaults = function (options, defaults) { + +const setDefaults$a = function (options, defaults) { return Object.assign({}, defaults, options); }; -var setDefaults_1 = setDefaults; +var setDefaults_1 = setDefaults$a; +const setDefaults$9 = setDefaults_1; /** * @typedef DocumentToJsonOptions * @property {boolean | undefined} title @@ -328,8 +338,8 @@ const defaults$b = { * @returns {documentToJsonReturn} */ -const toJSON$3 = function (doc, options) { - options = setDefaults_1(options, defaults$b); +const toJSON$8 = function (doc, options) { + options = setDefaults$9(options, defaults$b); /** * @type {documentToJsonReturn} */ @@ -382,7 +392,7 @@ const toJSON$3 = function (doc, options) { return data; }; -var toJson$6 = toJSON$3; +var toJson$9 = toJSON$8; var categories$1 = ['category', //en 'abdeeling', // pdc @@ -614,8 +624,8 @@ var disambig_templates = ['dab', //en // 'သဵင်မိူၼ် တူၼ်ႈထႅဝ်ပႅၵ်ႇ', //shn ]; -// used in titles to denote disambiguation pages // see 'Football_(disambiguation)' + var disambig_titles = ['disambiguation', //en 'homonymie', //fr 'توضيح', //ar @@ -678,7 +688,7 @@ var images = ['file', //en 'ファイル' //ja ]; -var infoboxes = ['infobox', //en +var infoboxes$2 = ['infobox', //en 'anfo', //mwl 'anuāmapa', //haw 'bilgi kutusu', //tr @@ -743,7 +753,7 @@ var infoboxes = ['infobox', //en '明細' //zh_yue ]; -var redirects$1 = ['adkas', //br +var redirects$2 = ['adkas', //br 'aýdaw', 'doorverwijzing', //nl 'ohjaus', 'patrz', //pl 'přesměruj', 'redirección', 'redireccion', 'redirección', //es @@ -778,14 +788,13 @@ var references = ['references', 'reference', 'einzelnachweise', 'referencias', ' * disambig: string[] * }} */ - -var i18n = { +var i18n$6 = { categories: categories$1, disambig_templates: disambig_templates, disambig_titles: disambig_titles, images: images, - infoboxes: infoboxes, - redirects: redirects$1, + infoboxes: infoboxes$2, + redirects: redirects$2, references: references //specials: [ //'спэцыяльныя', //'especial', @@ -836,16 +845,17 @@ var i18n = { }; -//alt disambig-templates en-wikipedia uses let d = ' disambiguation'; -const templates$a = ['dab', 'dab', 'disamb', 'disambig', 'geodis', 'hndis', 'setindex', 'ship index', 'split dab', 'sport index', 'wp disambig', 'disambiguation cleanup', 'airport' + d, 'biology' + d, 'call sign' + d, 'caselaw' + d, 'chinese title' + d, 'genus' + d, 'hospital' + d, 'lake index', 'letter' + d, 'letter-number combination' + d, 'mathematical' + d, 'military unit' + d, 'mountainindex', 'number' + d, 'phonetics' + d, 'place name' + d, 'portal' + d, 'road' + d, 'school' + d, 'species latin name abbreviation' + d, 'species latin name' + d, 'station' + d, 'synagogue' + d, 'taxonomic authority' + d, 'taxonomy' + d].reduce((h, str) => { +const templates$c = ['dab', 'dab', 'disamb', 'disambig', 'geodis', 'hndis', 'setindex', 'ship index', 'split dab', 'sport index', 'wp disambig', 'disambiguation cleanup', 'airport' + d, 'biology' + d, 'call sign' + d, 'caselaw' + d, 'chinese title' + d, 'genus' + d, 'hospital' + d, 'lake index', 'letter' + d, 'letter-number combination' + d, 'mathematical' + d, 'military unit' + d, 'mountainindex', 'number' + d, 'phonetics' + d, 'place name' + d, 'portal' + d, 'road' + d, 'school' + d, 'species latin name abbreviation' + d, 'species latin name' + d, 'station' + d, 'synagogue' + d, 'taxonomic authority' + d, 'taxonomy' + d].reduce((h, str) => { h[str] = true; return h; }, {}); -var _disambig = templates$a; +var _disambig = templates$c; -const inTitle = new RegExp('. \\((' + i18n.disambig_titles.join('|') + ')\\)$', 'i'); -const i18n_templates = i18n.disambig_templates.reduce((h, str) => { +const i18n$5 = i18n$6; +const alt_disambig = _disambig; +const inTitle = new RegExp('. \\((' + i18n$5.disambig_titles.join('|') + ')\\)$', 'i'); +const i18n_templates = i18n$5.disambig_templates.reduce((h, str) => { h[str] = true; return h; }, {}); // look for '... may refer to' @@ -874,11 +884,11 @@ const byText = function (s) { */ -const isDisambig = function (doc) { +const isDisambig$1 = function (doc) { // check for a {{disambig}} template let templates = doc.templates().map(tmpl => tmpl.json()); let found = templates.find(obj => { - return _disambig.hasOwnProperty(obj.template) || i18n_templates.hasOwnProperty(obj.template); + return alt_disambig.hasOwnProperty(obj.template) || i18n_templates.hasOwnProperty(obj.template); }); if (found) { @@ -900,8 +910,9 @@ const isDisambig = function (doc) { return false; }; -var isDisambig_1 = isDisambig; +var isDisambig_1 = isDisambig$1; +const setDefaults$8 = setDefaults_1; const defaults$a = { caption: true, alt: true, @@ -910,8 +921,8 @@ const defaults$a = { url: true }; // -const toJson$5 = function (img, options) { - options = setDefaults_1(options, defaults$a); +const toJson$8 = function (img, options) { + options = setDefaults$8(options, defaults$a); let json = { file: img.file() }; @@ -940,8 +951,9 @@ const toJson$5 = function (img, options) { return json; }; -var toJson_1$3 = toJson$5; +var toJson_1$3 = toJson$8; +const toJson$7 = toJson_1$3; const server = 'wikipedia.org'; const encodeTitle = function (file) { @@ -961,7 +973,7 @@ const makeSrc = function (file) { }; //the class for our image generation functions -const Image = function (data) { +const Image$5 = function (data) { Object.defineProperty(this, 'data', { enumerable: false, value: data @@ -1000,8 +1012,8 @@ const methods$8 = { // let lang = 'en' //this.language() || 'en' //hmm: get actual language? let fileName = makeSrc(this.file()); let domain = this.data.domain || server; - let path = `wiki/Special:Redirect/file`; - return `https://${domain}/${path}/${fileName}`; + let path = "wiki/Special:Redirect/file"; + return "https://".concat(domain, "/").concat(path, "/").concat(fileName); }, thumbnail(size) { @@ -1021,7 +1033,7 @@ const methods$8 = { json: function (options) { options = options || {}; - return toJson_1$3(this, options); + return toJson$7(this, options); }, text: function () { return ''; @@ -1031,13 +1043,13 @@ const methods$8 = { } }; Object.keys(methods$8).forEach(k => { - Image.prototype[k] = methods$8[k]; + Image$5.prototype[k] = methods$8[k]; }); -Image.prototype.src = Image.prototype.url; -Image.prototype.thumb = Image.prototype.thumbnail; -var Image_1 = Image; +Image$5.prototype.src = Image$5.prototype.url; +Image$5.prototype.thumb = Image$5.prototype.thumbnail; +var Image_1 = Image$5; -var languages = { +var languages$4 = { aa: 'Afar', //Afar ab: 'Аҧсуа', @@ -1545,249 +1557,6 @@ var languages = { zu: 'isiZulu' //Zulu }; -languages.aa; -languages.ab; -languages.af; -languages.ak; -languages.als; -languages.am; -languages.an; -languages.ang; -languages.ar; -languages.arc; -languages.as; -languages.ast; -languages.av; -languages.ay; -languages.az; -languages.ba; -languages.bar; -languages.bcl; -languages.be; -languages.bg; -languages.bh; -languages.bi; -languages.bm; -languages.bn; -languages.bo; -languages.bpy; -languages.br; -languages.bs; -languages.bug; -languages.bxr; -languages.ca; -languages.cdo; -languages.ce; -languages.ceb; -languages.ch; -languages.cho; -languages.chr; -languages.chy; -languages.co; -languages.cr; -languages.cs; -languages.csb; -languages.cu; -languages.cv; -languages.cy; -languages.da; -languages.de; -languages.diq; -languages.dsb; -languages.dv; -languages.dz; -languages.ee; -languages.far; -languages.el; -languages.en; -languages.eo; -languages.es; -languages.et; -languages.eu; -languages.ext; -languages.ff; -languages.fi; -languages.fj; -languages.fo; -languages.fr; -languages.frp; -languages.fur; -languages.fy; -languages.ga; -languages.gan; -languages.gd; -languages.gil; -languages.gl; -languages.gn; -languages.got; -languages.gu; -languages.gv; -languages.ha; -languages.hak; -languages.haw; -languages.he; -languages.hi; -languages.ho; -languages.hr; -languages.ht; -languages.hu; -languages.hy; -languages.hz; -languages.ia; -languages.id; -languages.ie; -languages.ig; -languages.ii; -languages.ik; -languages.ilo; -languages.io; -languages.is; -languages.it; -languages.iu; -languages.ja; -languages.jbo; -languages.jv; -languages.ka; -languages.kg; -languages.ki; -languages.kj; -languages.kk; -languages.kl; -languages.km; -languages.kn; -languages.khw; -languages.ko; -languages.kr; -languages.ks; -languages.ksh; -languages.ku; -languages.kv; -languages.kw; -languages.ky; -languages.la; -languages.lad; -languages.lan; -languages.lb; -languages.lg; -languages.li; -languages.lij; -languages.lmo; -languages.ln; -languages.lo; -languages.lt; -languages.lv; -languages.mg; -languages.man; -languages.mh; -languages.mi; -languages.min; -languages.mk; -languages.ml; -languages.mn; -languages.mo; -languages.mr; -languages.ms; -languages.mt; -languages.mus; -languages.my; -languages.na; -languages.nah; -languages.nap; -languages.nd; -languages.nds; -languages.ne; -languages.ng; -languages.nl; -languages.nn; -languages.no; -languages.nr; -languages.nso; -languages.nrm; -languages.nv; -languages.ny; -languages.oc; -languages.oj; -languages.om; -languages.or; -languages.os; -languages.pa; -languages.pag; -languages.pam; -languages.pap; -languages.pdc; -languages.pi; -languages.pih; -languages.pl; -languages.pms; -languages.ps; -languages.pt; -languages.qu; -languages.rm; -languages.rmy; -languages.rn; -languages.ro; -languages.ru; -languages.rw; -languages.sa; -languages.sc; -languages.scn; -languages.sco; -languages.sd; -languages.se; -languages.sg; -languages.sh; -languages.si; -languages.simple; -languages.sk; -languages.sl; -languages.sm; -languages.sn; -languages.so; -languages.sq; -languages.sr; -languages.ss; -languages.st; -languages.su; -languages.sv; -languages.sw; -languages.ta; -languages.te; -languages.tet; -languages.tg; -languages.th; -languages.ti; -languages.tk; -languages.tl; -languages.tlh; -languages.tn; -languages.to; -languages.tpi; -languages.tr; -languages.ts; -languages.tt; -languages.tum; -languages.tw; -languages.ty; -languages.udm; -languages.ug; -languages.uk; -languages.ur; -languages.uz; -languages.ve; -languages.vi; -languages.vec; -languages.vls; -languages.vo; -languages.wa; -languages.war; -languages.wo; -languages.xal; -languages.xh; -languages.yi; -languages.yo; -languages.za; -languages.zh; -languages.zu; const wp = '.wikipedia.org/wiki/$1'; const wm = '.wikimedia.org/wiki/$1'; @@ -2252,453 +2021,14 @@ var interwiki$1 = { v: 'en.wikiversity.org/wiki/$1', voy: 'en.wikivoyage.org/wiki/$1' }; -interwiki$1.acronym; -interwiki$1.advisory; -interwiki$1.advogato; -interwiki$1.aew; -interwiki$1.appropedia; -interwiki$1.aquariumwiki; -interwiki$1.arborwiki; -interwiki$1.arxiv; -interwiki$1.atmwiki; -interwiki$1.baden; -interwiki$1.battlestarwiki; -interwiki$1.bcnbio; -interwiki$1.beacha; -interwiki$1.betawiki; -interwiki$1.bibcode; -interwiki$1.bibliowiki; -interwiki$1.bluwiki; -interwiki$1.blw; -interwiki$1.botwiki; -interwiki$1.boxrec; -interwiki$1.brickwiki; -interwiki$1.bugzilla; -interwiki$1.bulba; -interwiki$1.c; -interwiki$1.c2; -interwiki$1.c2find; -interwiki$1.cache; -interwiki$1.cellwiki; -interwiki$1.centralwikia; -interwiki$1.chej; -interwiki$1.choralwiki; -interwiki$1.citizendium; -interwiki$1.ckwiss; -interwiki$1.comixpedia; -interwiki$1.commons; -interwiki$1.communityscheme; -interwiki$1.communitywiki; -interwiki$1.comune; -interwiki$1.creativecommons; -interwiki$1.creativecommonswiki; -interwiki$1.cxej; -interwiki$1.dcc; -interwiki$1.dcdatabase; -interwiki$1.dcma; -interwiki$1.debian; -interwiki$1.delicious; -interwiki$1.devmo; -interwiki$1.dictionary; -interwiki$1.dict; -interwiki$1.disinfopedia; -interwiki$1.distributedproofreaders; -interwiki$1.distributedproofreadersca; -interwiki$1.dmoz; -interwiki$1.dmozs; -interwiki$1.doi; -interwiki$1.donate; -interwiki$1.doom_wiki; -interwiki$1.download; -interwiki$1.dbdump; -interwiki$1.dpd; -interwiki$1.drae; -interwiki$1.dreamhost; -interwiki$1.drumcorpswiki; -interwiki$1.dwjwiki; -interwiki$1.ecoreality; -interwiki$1.ecxei; -interwiki$1.elibre; -interwiki$1.emacswiki; -interwiki$1.encyc; -interwiki$1.energiewiki; -interwiki$1.englyphwiki; -interwiki$1.enkol; -interwiki$1.eokulturcentro; -interwiki$1.esolang; -interwiki$1.etherpad; -interwiki$1.ethnologue; -interwiki$1.ethnologuefamily; -interwiki$1.evowiki; -interwiki$1.exotica; -interwiki$1.fanimutationwiki; -interwiki$1.fedora; -interwiki$1.finalfantasy; -interwiki$1.finnix; -interwiki$1.flickruser; -interwiki$1.flickrphoto; -interwiki$1.floralwiki; -interwiki$1.foldoc; -interwiki$1.foundation; -interwiki$1.foundationsite; -interwiki$1.foxwiki; -interwiki$1.freebio; -interwiki$1.freebsdman; -interwiki$1.freeculturewiki; -interwiki$1.freedomdefined; -interwiki$1.freefeel; -interwiki$1.freekiwiki; -interwiki$1.freesoft; -interwiki$1.ganfyd; -interwiki$1.gardenology; -interwiki$1.gausswiki; -interwiki$1.gentoo; -interwiki$1.genwiki; -interwiki$1.gerrit; -interwiki$1.git; -interwiki$1.google; -interwiki$1.googledefine; -interwiki$1.googlegroups; -interwiki$1.guildwarswiki; -interwiki$1.guildwiki; -interwiki$1.guc; -interwiki$1.gucprefix; -interwiki$1.gutenberg; -interwiki$1.gutenbergwiki; -interwiki$1.hackerspaces; -interwiki$1.h2wiki; -interwiki$1.hammondwiki; -interwiki$1.hdl; -interwiki$1.heraldik; -interwiki$1.heroeswiki; -interwiki$1.horizonlabs; -interwiki$1.hrwiki; -interwiki$1.hrfwiki; -interwiki$1.hupwiki; -interwiki$1.iarchive; -interwiki$1.imdbname; -interwiki$1.imdbtitle; -interwiki$1.imdbcompany; -interwiki$1.imdbcharacter; -interwiki$1.incubator; -interwiki$1.infosecpedia; -interwiki$1.infosphere; -interwiki$1.issn; -interwiki$1.iuridictum; -interwiki$1.jaglyphwiki; -interwiki$1.jefo; -interwiki$1.jerseydatabase; -interwiki$1.jira; -interwiki$1.jspwiki; -interwiki$1.jstor; -interwiki$1.kamelo; -interwiki$1.karlsruhe; -interwiki$1.kinowiki; -interwiki$1.komicawiki; -interwiki$1.kontuwiki; -interwiki$1.wikitech; -interwiki$1.libreplanet; -interwiki$1.linguistlist; -interwiki$1.linuxwiki; -interwiki$1.linuxwikide; -interwiki$1.liswiki; -interwiki$1.literateprograms; -interwiki$1.livepedia; -interwiki$1.localwiki; -interwiki$1.lojban; -interwiki$1.lostpedia; -interwiki$1.lqwiki; -interwiki$1.luxo; -interwiki$1.mail; -interwiki$1.mailarchive; -interwiki$1.mariowiki; -interwiki$1.marveldatabase; -interwiki$1.meatball; -interwiki$1.mw; -interwiki$1.mediazilla; -interwiki$1.memoryalpha; -interwiki$1.metawiki; -interwiki$1.metawikimedia; -interwiki$1.metawikipedia; -interwiki$1.mineralienatlas; -interwiki$1.moinmoin; -interwiki$1.monstropedia; -interwiki$1.mosapedia; -interwiki$1.mozcom; -interwiki$1.mozillawiki; -interwiki$1.mozillazinekb; -interwiki$1.musicbrainz; -interwiki$1.mediawikiwiki; -interwiki$1.mwod; -interwiki$1.mwot; -interwiki$1.nkcells; -interwiki$1.nara; -interwiki$1.nosmoke; -interwiki$1.nost; -interwiki$1.nostalgia; -interwiki$1.oeis; -interwiki$1.oldwikisource; -interwiki$1.olpc; -interwiki$1.omegawiki; -interwiki$1.onelook; -interwiki$1.openlibrary; -interwiki$1.openstreetmap; -interwiki$1.openwetware; -interwiki$1.opera7wiki; -interwiki$1.organicdesign; -interwiki$1.orthodoxwiki; -interwiki$1.osmwiki; -interwiki$1.otrs; -interwiki$1.otrswiki; -interwiki$1.ourmedia; -interwiki$1.outreach; -interwiki$1.outreachwiki; -interwiki$1.owasp; -interwiki$1.panawiki; -interwiki$1.patwiki; -interwiki$1.personaltelco; -interwiki$1.petscan; -interwiki$1.phab; -interwiki$1.phabricator; -interwiki$1.phwiki; -interwiki$1.phpwiki; -interwiki$1.planetmath; -interwiki$1.pmeg; -interwiki$1.pmid; -interwiki$1.pokewiki; -interwiki$1.policy; -interwiki$1.proofwiki; -interwiki$1.pyrev; -interwiki$1.pythoninfo; -interwiki$1.pythonwiki; -interwiki$1.pywiki; -interwiki$1.psycle; -interwiki$1.quality; -interwiki$1.quarry; -interwiki$1.regiowiki; -interwiki$1.rev; -interwiki$1.revo; -interwiki$1.rfc; -interwiki$1.rheinneckar; -interwiki$1.robowiki; -interwiki$1.rodovid; -interwiki$1.reuterswiki; -interwiki$1.rowiki; -interwiki$1.rt; -interwiki$1.s23wiki; -interwiki$1.scholar; -interwiki$1.schoolswp; -interwiki$1.scores; -interwiki$1.scoutwiki; -interwiki$1.scramble; -interwiki$1.seapig; -interwiki$1.seattlewiki; -interwiki$1.slwiki; -interwiki$1.senseislibrary; -interwiki$1.sharemap; -interwiki$1.silcode; -interwiki$1.slashdot; -interwiki$1.sourceforge; -interwiki$1.spcom; -interwiki$1.species; -interwiki$1.squeak; -interwiki$1.stats; -interwiki$1.stewardry; -interwiki$1.strategy; -interwiki$1.strategywiki; -interwiki$1.sulutil; -interwiki$1.swtrain; -interwiki$1.svn; -interwiki$1.swinbrain; -interwiki$1.tabwiki; -interwiki$1.tclerswiki; -interwiki$1.technorati; -interwiki$1.tenwiki; -interwiki$1.testwiki; -interwiki$1.testwikidata; -interwiki$1.test2wiki; -interwiki$1.tfwiki; -interwiki$1.thelemapedia; -interwiki$1.theopedia; -interwiki$1.thinkwiki; -interwiki$1.ticket; -interwiki$1.tmbw; -interwiki$1.tmnet; -interwiki$1.tmwiki; -interwiki$1.toolforge; -interwiki$1.toollabs; -interwiki$1.tools; -interwiki$1.tswiki; -interwiki$1.translatewiki; -interwiki$1.tviv; -interwiki$1.tvtropes; -interwiki$1.twiki; -interwiki$1.tyvawiki; -interwiki$1.umap; -interwiki$1.uncyclopedia; -interwiki$1.unihan; -interwiki$1.unreal; -interwiki$1.urbandict; -interwiki$1.usej; -interwiki$1.usemod; -interwiki$1.usability; -interwiki$1.utrs; -interwiki$1.vikidia; -interwiki$1.vlos; -interwiki$1.vkol; -interwiki$1.voipinfo; -interwiki$1.votewiki; -interwiki$1.werelate; -interwiki$1.wg; -interwiki$1.wikia; -interwiki$1.wikiasite; -interwiki$1.wikiapiary; -interwiki$1.wikibooks; -interwiki$1.wikichristian; -interwiki$1.wikicities; -interwiki$1.wikicity; -interwiki$1.wikiconference; -interwiki$1.wikidata; -interwiki$1.wikif1; -interwiki$1.wikifur; -interwiki$1.wikihow; -interwiki$1.wikiindex; -interwiki$1.wikilemon; -interwiki$1.wikilivres; -interwiki$1.wikilivresru; -interwiki$1.wikimedia; -interwiki$1.wikinews; -interwiki$1.wikinfo; -interwiki$1.wikinvest; -interwiki$1.wikiotics; -interwiki$1.wikipapers; -interwiki$1.wikipedia; -interwiki$1.wikipediawikipedia; -interwiki$1.wikiquote; -interwiki$1.wikisophia; -interwiki$1.wikisource; -interwiki$1.wikispecies; -interwiki$1.wikispot; -interwiki$1.wikiskripta; -interwiki$1.labsconsole; -interwiki$1.wikiti; -interwiki$1.wikiversity; -interwiki$1.wikivoyage; -interwiki$1.betawikiversity; -interwiki$1.wikiwikiweb; -interwiki$1.wiktionary; -interwiki$1.wipipedia; -interwiki$1.wlug; -interwiki$1.wmam; -interwiki$1.wmar; -interwiki$1.wmat; -interwiki$1.wmau; -interwiki$1.wmbd; -interwiki$1.wmbe; -interwiki$1.wmbr; -interwiki$1.wmca; -interwiki$1.wmch; -interwiki$1.wmcl; -interwiki$1.wmcn; -interwiki$1.wmco; -interwiki$1.wmcz; -interwiki$1.wmdc; -interwiki$1.securewikidc; -interwiki$1.wmde; -interwiki$1.wmdk; -interwiki$1.wmee; -interwiki$1.wmec; -interwiki$1.wmes; -interwiki$1.wmet; -interwiki$1.wmfdashboard; -interwiki$1.wmfi; -interwiki$1.wmfr; -interwiki$1.wmge; -interwiki$1.wmhi; -interwiki$1.wmhk; -interwiki$1.wmhu; -interwiki$1.wmid; -interwiki$1.wmil; -interwiki$1.wmin; -interwiki$1.wmit; -interwiki$1.wmke; -interwiki$1.wmmk; -interwiki$1.wmmx; -interwiki$1.wmnl; -interwiki$1.wmnyc; -interwiki$1.wmno; -interwiki$1.wmph; -interwiki$1.wmpl; -interwiki$1.wmpt; -interwiki$1.wmpunjabi; -interwiki$1.wmromd; -interwiki$1.wmrs; -interwiki$1.wmru; -interwiki$1.wmse; -interwiki$1.wmsk; -interwiki$1.wmtr; -interwiki$1.wmtw; -interwiki$1.wmua; -interwiki$1.wmuk; -interwiki$1.wmve; -interwiki$1.wmza; -interwiki$1.wm2005; -interwiki$1.wm2006; -interwiki$1.wm2007; -interwiki$1.wm2008; -interwiki$1.wm2009; -interwiki$1.wm2010; -interwiki$1.wm2011; -interwiki$1.wm2012; -interwiki$1.wm2013; -interwiki$1.wm2014; -interwiki$1.wm2015; -interwiki$1.wm2016; -interwiki$1.wm2017; -interwiki$1.wm2018; -interwiki$1.wmania; -interwiki$1.wikimania; -interwiki$1.wmteam; -interwiki$1.wmf; -interwiki$1.wmfblog; -interwiki$1.wmdeblog; -interwiki$1.wookieepedia; -interwiki$1.wowwiki; -interwiki$1.wqy; -interwiki$1.wurmpedia; -interwiki$1.viaf; -interwiki$1.zrhwiki; -interwiki$1.zum; -interwiki$1.zwiki; -interwiki$1.m; -interwiki$1.meta; -interwiki$1.sep11; -interwiki$1.d; -interwiki$1.minnan; -interwiki$1.nb; -interwiki$1.nan; -interwiki$1.vro; -interwiki$1.cmn; -interwiki$1.lzh; -interwiki$1.rup; -interwiki$1.gsw; -interwiki$1.sgs; -interwiki$1.egl; -interwiki$1.w; -interwiki$1.wikt; -interwiki$1.q; -interwiki$1.b; -interwiki$1.n; -interwiki$1.s; -interwiki$1.chapter; -interwiki$1.v; -interwiki$1.voy; +const languages$3 = languages$4; //some colon symbols are valid links, like `America: That place` //so we have to whitelist allowable interwiki links -//add language prefixes too.. -Object.keys(languages).forEach(k => { - interwiki$1[k] = k + '.wikipedia.org/wiki/$1'; +const interwikis = interwiki$1; //add language prefixes too.. + +Object.keys(languages$3).forEach(k => { + interwikis[k] = k + '.wikipedia.org/wiki/$1'; }); //this is predictably very complicated. // https://meta.wikimedia.org/wiki/Help:Interwiki_linking @@ -2718,7 +2048,7 @@ const parseInterwiki = function (obj) { if (site.indexOf(':') !== -1) { let [, wiki, lang] = site.match(/^:?(.*):(.*)/); //only allow interwikis to these specific places - if (interwiki$1.hasOwnProperty(wiki) && languages.hasOwnProperty(lang) === false) { + if (interwikis.hasOwnProperty(wiki) && languages$3.hasOwnProperty(lang) === false) { return obj; } @@ -2727,7 +2057,7 @@ const parseInterwiki = function (obj) { lang: lang }; } else { - if (interwiki$1.hasOwnProperty(site) === false) { + if (interwikis.hasOwnProperty(site) === false) { return obj; } @@ -2742,6 +2072,7 @@ const parseInterwiki = function (obj) { var interwiki = parseInterwiki; +const parse_interwiki = interwiki; const ignore_links = /^:?(category|catégorie|kategorie|categoría|categoria|categorie|kategoria|تصنيف|image|file|fichier|datei|media):/i; const external_link = /\[(https?|news|ftp|mailto|gopher|irc)(:\/\/[^\]| ]{4,1500})([| ].*?)?\]/g; const link_reg = /\[\[(.{0,160}?)\]\]([a-z]+)?/gi; //allow dangling suffixes - "[[flanders]]s" @@ -2801,7 +2132,7 @@ const internal_links = function (links, str) { return ''; }); //grab any fr:Paris parts - obj = interwiki(obj); + obj = parse_interwiki(obj); if (obj.wiki) { obj.type = 'interwiki'; @@ -2847,9 +2178,12 @@ const parse_links = function (str) { return links; }; -var parse$8 = parse_links; +var parse$m = parse_links; -const REDIRECT_REGEX = new RegExp('^[ \n\t]*?#(' + i18n.redirects.join('|') + ') *?(\\[\\[.{2,180}?\\]\\])', 'i'); +const i18n$4 = i18n$6; +const parseLink = parse$m; //pulls target link out of redirect page + +const REDIRECT_REGEX = new RegExp('^[ \n\t]*?#(' + i18n$4.redirects.join('|') + ') *?(\\[\\[.{2,180}?\\]\\])', 'i'); const isRedirect = function (wiki) { //too long to be a redirect? @@ -2860,34 +2194,34 @@ const isRedirect = function (wiki) { return REDIRECT_REGEX.test(wiki); }; -const parse$7 = function (wiki) { +const parse$l = function (wiki) { let m = wiki.match(REDIRECT_REGEX); if (m && m[2]) { - let links = parse$8(m[2]) || []; + let links = parseLink(m[2]) || []; return links[0]; } return {}; }; -var redirects = { +var redirects$1 = { isRedirect: isRedirect, - parse: parse$7 + parse: parse$l }; -//okay, i know you're not supposed to regex html, but... //https://en.wikipedia.org/wiki/Help:HTML_in_wikitext //these are things we throw-away //these will mess-up if they're nested, but they're not usually. -const ignore$1 = ['table', 'code', 'score', 'data', 'categorytree', 'charinsert', 'hiero', 'imagemap', 'inputbox', 'nowiki', 'poem', 'references', 'source', 'syntaxhighlight', 'timeline']; -const openTag = `< ?(${ignore$1.join('|')}) ?[^>]{0,200}?>`; -const closeTag = `< ?/ ?(${ignore$1.join('|')}) ?>`; + +const ignore$2 = ['table', 'code', 'score', 'data', 'categorytree', 'charinsert', 'hiero', 'imagemap', 'inputbox', 'nowiki', 'poem', 'references', 'source', 'syntaxhighlight', 'timeline']; +const openTag = "< ?(".concat(ignore$2.join('|'), ") ?[^>]{0,200}?>"); +const closeTag = "< ?/ ?(".concat(ignore$2.join('|'), ") ?>"); const anyChar = '\\s\\S'; //including newline -const noThanks = new RegExp(`${openTag}[${anyChar}]+?${closeTag}`, 'gi'); +const noThanks = new RegExp("".concat(openTag, "[").concat(anyChar, "]+?").concat(closeTag), 'gi'); -const kill_xml = function (wiki) { +const kill_xml$1 = function (wiki) { //( tags are parsed in Section class) - luckily, refs can't be recursive. //types of html/xml that we want to trash completely. wiki = wiki.replace(noThanks, ' '); //some xml-like fragments we can also kill @@ -2898,11 +2232,11 @@ const kill_xml = function (wiki) { wiki = wiki.replace(/ ?< ?(ref) [a-zA-Z0-9=" ]{2,100}\/ ?> ?/g, ' '); // // convert these html tags to known formatting - wiki = wiki.replace(/(.*?)<\/i>/g, `''$1''`); - wiki = wiki.replace(/(.*?)<\/b>/g, `'''$1'''`); // these are better-handled with templates + wiki = wiki.replace(/(.*?)<\/i>/g, "''$1''"); + wiki = wiki.replace(/(.*?)<\/b>/g, "'''$1'''"); // these are better-handled with templates - wiki = wiki.replace(/(.*?)<\/sub>/g, `{{sub|$1}}`); - wiki = wiki.replace(/(.*?)<\/sup>/g, `{{sup|$1}}`); //some formatting xml, we'll keep their insides though + wiki = wiki.replace(/(.*?)<\/sub>/g, "{{sub|$1}}"); + wiki = wiki.replace(/(.*?)<\/sup>/g, "{{sup|$1}}"); //some formatting xml, we'll keep their insides though wiki = wiki.replace(/ ?<[ /]?(p|sub|sup|span|nowiki|div|table|br|tr|td|th|pre|pre2|hr)[ /]?> ?/g, ' '); //, @@ -2915,8 +2249,9 @@ const kill_xml = function (wiki) { return wiki.trim(); }; -var kill_xml_1 = kill_xml; +var kill_xml_1 = kill_xml$1; +const kill_xml = kill_xml_1; /** * removes unnecessary strings from the wikitext * it is mostly-formatting stuff can be cleaned-up first, to make life easier @@ -2926,7 +2261,7 @@ var kill_xml_1 = kill_xml; * @returns {string} the processed text */ -function preProcess(wiki) { +function preProcess$1(wiki) { //remove comments wiki = wiki.replace(//g, ''); wiki = wiki.replace(/__(NOTOC|NOEDITSECTION|FORCETOC|TOC)__/gi, ''); //signitures @@ -2944,7 +2279,7 @@ function preProcess(wiki) { wiki = wiki.replace(/ /g, ' '); //give it the inglorious send-off it deserves.. - wiki = kill_xml_1(wiki); //({{template}},{{template}}) leaves empty parentheses + wiki = kill_xml(wiki); //({{template}},{{template}}) leaves empty parentheses wiki = wiki.replace(/\([,;: ]+\)/g, ''); //these templates just screw things up, too @@ -2952,11 +2287,11 @@ function preProcess(wiki) { return wiki; } -var preProcess_1 = preProcess; +var preProcess_1 = preProcess$1; -//dumpster-dive throws everything into mongodb - github.com/spencermountain/dumpster-dive //mongo has some opinions about what characters are allowed as keys and ids. //https://stackoverflow.com/questions/12397118/mongodb-dot-in-key-name/30254815#30254815 + const specialChar = /[\\.$]/; /** * this function encodes a string to make it mongodb compatible. @@ -2977,7 +2312,8 @@ const encodeStr = function (str) { return str; }; -const encodeObj = function (obj = {}) { +const encodeObj = function () { + let obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; let keys = Object.keys(obj); for (let i = 0; i < keys.length; i += 1) { @@ -2994,10 +2330,12 @@ const encodeObj = function (obj = {}) { return obj; }; -var encode = { +var encode$4 = { encodeObj: encodeObj }; +const setDefaults$7 = setDefaults_1; +const encode$3 = encode$4; const defaults$9 = { headers: true, depth: true, @@ -3016,8 +2354,8 @@ const defaults$9 = { * @returns {object} */ -const toJSON$2 = function (section, options) { - options = setDefaults_1(options, defaults$9); +const toJSON$7 = function (section, options) { + options = setDefaults$7(options, defaults$9); /** * @type {object} */ @@ -3067,7 +2405,7 @@ const toJSON$2 = function (section, options) { data.templates = templates; //encode them, for mongodb if (options.encode === true) { - data.templates.forEach(t => encode.encodeObj(t)); + data.templates.forEach(t => encode$3.encodeObj(t)); } } } //infobox json data @@ -3107,13 +2445,14 @@ const toJSON$2 = function (section, options) { return data; }; -var toJson$4 = toJSON$2; +var toJson$6 = toJSON$7; +const wikis = interwiki$1; const defaults$8 = { type: 'internal' }; -const Link = function (data) { +const Link$1 = function (data) { data = data || {}; data = Object.assign({}, defaults$8, data); Object.defineProperty(this, 'data', { @@ -3211,14 +2550,14 @@ const methods$7 = { let wiki = this.wiki(); url = 'https://en.wikipedia.org/wiki/$1'; - if (interwiki$1.hasOwnProperty(wiki)) { - url = 'http://' + interwiki$1[this.wiki()]; + if (wikis.hasOwnProperty(wiki)) { + url = 'http://' + wikis[this.wiki()]; } url = url.replace(/\$1/g, page); } else { //internal link - url = `./${this.page()}`; + url = "./".concat(this.page()); } //add anchor on the end @@ -3230,10 +2569,12 @@ const methods$7 = { } }; Object.keys(methods$7).forEach(k => { - Link.prototype[k] = methods$7[k]; + Link$1.prototype[k] = methods$7[k]; }); -var Link_1 = Link; +var Link_1 = Link$1; +const Link = Link_1; +const parseLinks$1 = parse$m; // const i18n = require('../_data/i18n') // const cat_reg = new RegExp('\\[\\[:?(' + i18n.categories.join('|') + '):[^\\]\\]]{2,80}\\]\\]', 'gi') //return only rendered text of wiki links @@ -3245,11 +2586,11 @@ const removeLinks = function (line) { const getLinks = function (data) { let wiki = data.text; - let links = parse$8(wiki) || []; + let links = parseLinks$1(wiki) || []; data.links = links.map(link => { wiki = wiki.replace(link.raw, link.text || link.page || ''); // delete link.raw - return new Link_1(link); + return new Link(link); }); wiki = removeLinks(wiki); data.text = wiki; @@ -3257,7 +2598,6 @@ const getLinks = function (data) { var link = getLinks; -//handle the bold/italics const formatting = function (obj) { let bolds = []; let italics = []; @@ -3270,8 +2610,8 @@ const formatting = function (obj) { }); //''''four'''' → bold with quotes wiki = wiki.replace(/''''(.{0,200}?)''''/g, (a, b) => { - bolds.push(`'${b}'`); - return `'${b}'`; + bolds.push("'".concat(b, "'")); + return "'".concat(b, "'"); }); //'''bold''' wiki = wiki.replace(/'''(.{0,200}?)'''/g, (a, b) => { @@ -3301,6 +2641,7 @@ const formatting = function (obj) { var formatting_1 = formatting; +const setDefaults$6 = setDefaults_1; const isNumber = /^[0-9,.]+$/; const defaults$7 = { text: true, @@ -3309,8 +2650,8 @@ const defaults$7 = { numbers: true }; -const toJSON$1 = function (s, options) { - options = setDefaults_1(options, defaults$7); +const toJSON$6 = function (s, options) { + options = setDefaults$6(options, defaults$7); let data = {}; let text = s.text(); @@ -3338,9 +2679,12 @@ const toJSON$1 = function (s, options) { return data; }; -var toJson$3 = toJSON$1; +var toJson$5 = toJSON$6; + +const toJSON$5 = toJson$5; //where we store the formatting, link, date information -const Sentence = function (data = {}) { +const Sentence$2 = function () { + let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; Object.defineProperty(this, 'data', { enumerable: false, value: data @@ -3387,7 +2731,7 @@ const methods$6 = { return this.data.text || ''; }, json: function (options) { - return toJson$3(this, options); + return toJSON$5(this, options); }, wikitext: function () { return this.data.wiki || ''; @@ -3397,7 +2741,7 @@ const methods$6 = { } }; Object.keys(methods$6).forEach(k => { - Sentence.prototype[k] = methods$6[k]; + Sentence$2.prototype[k] = methods$6[k]; }); // aliases const singular$3 = { @@ -3408,7 +2752,7 @@ const singular$3 = { Object.keys(singular$3).forEach(k => { let sing = singular$3[k]; - Sentence.prototype[sing] = function (clue) { + Sentence$2.prototype[sing] = function (clue) { let arr = this[k](clue); if (typeof clue === 'number') { @@ -3418,10 +2762,9 @@ Object.keys(singular$3).forEach(k => { return arr[0]; }; }); -Sentence.prototype.plaintext = Sentence.prototype.text; -var Sentence_1 = Sentence; +Sentence$2.prototype.plaintext = Sentence$2.prototype.text; +var Sentence_1 = Sentence$2; -//these are used for the sentence-splitter var _abbreviations = ['ad', 'adj', 'adm', 'adv', 'al', 'alta', 'approx', 'apr', 'apt', 'arc', 'ariz', 'assn', 'asst', 'atty', 'aug', 'ave', 'ba', 'bc', 'bl', 'bldg', 'blvd', 'brig', 'bros', 'ca', 'cal', 'calif', 'capt', 'cca', 'cg', 'cl', 'cm', 'cmdr', 'co', 'col', 'colo', 'comdr', 'conn', 'corp', 'cpl', 'cres', 'ct', 'cyn', 'dak', 'dec', 'def', 'dept', 'det', 'dg', 'dist', 'dl', 'dm', 'dr', 'ea', 'eg', 'eng', 'esp', 'esq', 'est', 'etc', 'ex', 'exp', 'feb', 'fem', 'fig', 'fl oz', 'fl', 'fla', 'fm', 'fr', 'ft', 'fy', 'ga', 'gal', 'gb', 'gen', 'gov', 'hg', 'hon', 'hr', 'hrs', 'hwy', 'hz', 'ia', 'ida', 'ie', 'inc', 'inf', 'jan', 'jd', 'jr', 'jul', 'jun', 'kan', 'kans', 'kb', 'kg', 'km', 'kmph', 'lat', 'lb', 'lit', 'llb', 'lm', 'lng', 'lt', 'ltd', 'lx', 'ma', 'maj', 'mar', 'masc', 'mb', 'md', 'messrs', 'mg', 'mi', 'min', 'minn', 'misc', 'mister', 'ml', 'mlle', 'mm', 'mme', 'mph', 'mps', 'mr', 'mrs', 'ms', 'mstr', 'mt', 'neb', 'nebr', 'nee', 'no', 'nov', 'oct', 'okla', 'ont', 'op', 'ord', 'oz', 'pa', 'pd', 'penn', 'penna', 'phd', 'pl', 'pp', 'pref', 'prob', 'prof', 'pron', 'ps', 'psa', 'pseud', 'pt', 'pvt', 'qt', 'que', 'rb', 'rd', 'rep', 'reps', 'res', 'rev', 'sask', 'sec', 'sen', 'sens', 'sep', 'sept', 'sfc', 'sgt', 'sir', 'situ', 'sq ft', 'sq', 'sr', 'ss', 'st', 'supt', 'surg', 'tb', 'tbl', 'tbsp', 'tce', 'td', 'tel', 'temp', 'tenn', 'tex', 'tsp', 'univ', 'usafa', 'ut', 'va', 'vb', 'ver', 'vet', 'vitro', 'vivo', 'vol', 'vs', 'vt', 'wis', 'wisc', 'wr', 'wy', 'wyo', 'yb', 'µg']; //@spencermountain MIT @@ -3429,10 +2772,11 @@ var _abbreviations = ['ad', 'adj', 'adm', 'adv', 'al', 'alta', 'approx', 'apr', // Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc. // @spencermountain 2015 MIT -const abbreviations = _abbreviations.concat('[^]][^]]'); -const abbrev_reg = new RegExp("(^| |')(" + abbreviations.join('|') + `)[.!?] ?$`, 'i'); -const acronym_reg = /[ .'][A-Z].? *?$/i; -const elipses_reg = /\.{3,} +?$/; +const literalAbbreviations = _abbreviations; +const abbreviations = literalAbbreviations.concat('[^]][^]]'); +const abbrev_reg = new RegExp("(^| |')(" + abbreviations.join('|') + ")[.!?] ?$", 'i'); +const acronym_reg = /[ .'][A-Z].? *$/i; +const elipses_reg = /\.{3,} +$/; const circa_reg = / c\.\s$/; const hasWord = /\p{Letter}/iu; //turn a nested array into one array @@ -3550,8 +2894,13 @@ const sentence_parser = function (text) { return sentences; }; -var parse$6 = sentence_parser; +var parse$k = sentence_parser; +const helpers = helpers$1; +const parseLinks = link; +const parseFmt = formatting_1; +const Sentence$1 = Sentence_1; +const sentenceParser = parse$k; /** * This function removes some final characters from the sentence * @@ -3584,18 +2933,18 @@ function fromText(str) { text: str }; //pull-out the [[links]] - link(obj); + parseLinks(obj); obj.text = postprocess(obj.text); //pull-out the bolds and ''italics'' - obj = formatting_1(obj); //pull-out things like {{start date|...}} + obj = parseFmt(obj); //pull-out things like {{start date|...}} - return new Sentence_1(obj); + return new Sentence$1(obj); } //used for consistency with other class-definitions const byParagraph = function (paragraph) { //array of texts - let sentences = parse$6(paragraph.wiki); //sentence objects + let sentences = sentenceParser(paragraph.wiki); //sentence objects sentences = sentences.map(fromText); //remove :indented first line, as it is often a disambiguation @@ -3619,23 +2968,23 @@ var _04Sentence = { * @param {string} tmpl the string to be striped * @returns {string} the striped string */ -const strip = function (tmpl) { + +const strip$3 = function (tmpl) { tmpl = tmpl.replace(/^\{\{/, ''); tmpl = tmpl.replace(/\}\}$/, ''); return tmpl; }; -var _strip = strip; +var _strip = strip$3; -//normalize template names -const fmtName = function (name) { +const fmtName$2 = function (name) { name = (name || '').trim(); name = name.toLowerCase(); name = name.replace(/_/g, ' '); return name; }; -var _fmtName = fmtName; +var _fmtName = fmtName$2; /** * turn {{name|one|two|three}} into [name, one, two, three] @@ -3644,7 +2993,8 @@ var _fmtName = fmtName; * @param {string} tmpl the template text * @returns {string[]} a array containing all the split parameters */ -const pipeSplitter = function (tmpl) { + +const pipeSplitter$1 = function (tmpl) { //start with a naive '|' split let arr = tmpl.split(/\n?\|/); //we've split by '|', which is pretty lame //look for broken-up links and fix them :/ @@ -3677,10 +3027,10 @@ const pipeSplitter = function (tmpl) { return arr; }; -var _01PipeSplitter = pipeSplitter; +var _01PipeSplitter = pipeSplitter$1; -//every value in {{tmpl|a|b|c}} needs a name //here we come up with names for them + const hasKey = /^[\p{Letter}0-9._\- '()]+=/iu; //templates with these properties are asking for trouble const reserved = { @@ -3726,9 +3076,10 @@ const parseKey = function (str) { */ -const keyMaker = function (arr, order) { +const keyMaker$1 = function (arr, order) { let keyIndex = 0; - return arr.reduce((h, str = '') => { + return arr.reduce(function (h) { + let str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; str = str.trim(); //support named keys - 'foo=bar' if (hasKey.test(str) === true) { @@ -3754,7 +3105,7 @@ const keyMaker = function (arr, order) { }, {}); }; -var _02KeyMaker = keyMaker; +var _02KeyMaker = keyMaker$1; const whoCares = { classname: true, @@ -3772,7 +3123,7 @@ const whoCares = { colwidth: true }; //remove wiki-cruft & some styling info from templates -const cleanup$1 = function (obj) { +const cleanup$2 = function (obj) { Object.keys(obj).forEach(k => { if (whoCares[k.toLowerCase()] === true) { delete obj[k]; @@ -3786,9 +3137,14 @@ const cleanup$1 = function (obj) { return obj; }; -var _03Cleanup = cleanup$1; +var _03Cleanup = cleanup$2; +const strip$2 = _strip; +const fmtName$1 = _fmtName; const parseSentence$7 = _04Sentence.fromText; +const pipeSplitter = _01PipeSplitter; +const keyMaker = _02KeyMaker; +const cleanup$1 = _03Cleanup; /** * most templates just want plaintext... * @@ -3821,16 +3177,18 @@ const makeFormat = function (str, fmt) { */ -const parser = function (tmpl, order = [], fmt) { +const parser = function (tmpl) { + let order = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + let fmt = arguments.length > 2 ? arguments[2] : undefined; //remove {{}}'s and split based on pipes - tmpl = _strip(tmpl || ''); - let arr = _01PipeSplitter(tmpl); //get template name + tmpl = strip$2(tmpl || ''); + let arr = pipeSplitter(tmpl); //get template name let name = arr.shift(); //name each value - let obj = _02KeyMaker(arr, order); //remove wiki-junk + let obj = keyMaker(arr, order); //remove wiki-junk - obj = _03Cleanup(obj); //is this a infobox/reference? + obj = cleanup$1(obj); //is this a infobox/reference? //let known = isKnown(obj); //using '|1=content' is an escaping-thing.. @@ -3850,15 +3208,17 @@ const parser = function (tmpl, order = [], fmt) { }); //add the template name if (name) { - obj.template = _fmtName(name); + obj.template = fmtName$1(name); } return obj; }; -var toJSON = parser; +var toJSON$4 = parser; -const Reference = function (data, wiki) { +const encode$2 = encode$4; //also called 'citations' + +const Reference$2 = function (data, wiki) { Object.defineProperty(this, 'data', { enumerable: false, value: data @@ -3900,30 +3260,34 @@ const methods$5 = { wikitext: function () { return this.wiki || ''; }, - json: function (options = {}) { + json: function () { + let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; let json = this.data || {}; //encode them, for mongodb if (options.encode === true) { json = Object.assign({}, json); - json = encode.encodeObj(json); + json = encode$2.encodeObj(json); } return json; } }; Object.keys(methods$5).forEach(k => { - Reference.prototype[k] = methods$5[k]; + Reference$2.prototype[k] = methods$5[k]; }); -var Reference_1 = Reference; +var Reference_1 = Reference$2; -const parseSentence$6 = _04Sentence.fromText; //structured Cite templates - {{Cite.. +const parse$j = toJSON$4; //const parse = require('../../templates/wikipedia/page').citation; + +const parseSentence$6 = _04Sentence.fromText; +const Reference$1 = Reference_1; //structured Cite templates - {{Cite.. const hasCitation = function (str) { return /^ *\{\{ *(cite|citation)/i.test(str) && /\}\} *$/.test(str) && /citation needed/i.test(str) === false; }; const parseCitation = function (tmpl) { - let obj = toJSON(tmpl); + let obj = parse$j(tmpl); obj.type = obj.template.replace(/cite /, ''); obj.template = 'citation'; return obj; @@ -3992,7 +3356,7 @@ const parseRefs = function (section) { wiki = wiki.replace(/ ?<[ /]?[a-z0-9]{1,8}[a-z0-9=" ]{2,20}[ /]?> ?/g, ' '); // - section._references = references.map(obj => new Reference_1(obj.json, obj.wiki)); + section._references = references.map(obj => new Reference$1(obj.json, obj.wiki)); section._wiki = wiki; }; @@ -4000,8 +3364,9 @@ var reference = parseRefs; const { trim_whitespace -} = helpers; +} = helpers$1; const parseSentence$5 = _04Sentence.fromText; +const parseReferences = reference; const heading_reg = /^(={1,5})(.{1,200}?)={1,5}$/; /** * @typedef fakeSection @@ -4037,7 +3402,7 @@ const parseHeading = function (section, str) { let obj = { _wiki: title }; - reference(obj); + parseReferences(obj); title = obj._wiki; //trim leading/trailing whitespace title = trim_whitespace(title); @@ -4054,7 +3419,6 @@ const parseHeading = function (section, str) { var heading = parseHeading; -//remove top-bottoms const cleanup = function (lines) { lines = lines.filter(line => { //a '|+' row is a 'table caption', remove it. @@ -4077,7 +3441,7 @@ const cleanup = function (lines) { }; //turn newline seperated into '|-' seperated -const findRows = function (lines) { +const findRows$1 = function (lines) { let rows = []; let row = []; lines = cleanup(lines); @@ -4116,7 +3480,7 @@ const findRows = function (lines) { return rows; }; -var _findRows = findRows; +var _findRows = findRows$1; const getRowSpan = /.*rowspan *= *["']?([0-9]+)["']?[ |]*/; const getColSpan = /.*colspan *= *["']?([0-9]+)["']?[ |]*/; //colspans stretch ←left/right→ @@ -4172,15 +3536,17 @@ const doRowSpan = function (rows) { }; // -const handleSpans = function (rows) { +const handleSpans$1 = function (rows) { rows = doColSpan(rows); rows = doRowSpan(rows); return rows; }; -var _spans = handleSpans; +var _spans = handleSpans$1; const parseSentence$4 = _04Sentence.fromText; +const findRows = _findRows; +const handleSpans = _spans; const isHeading = /^!/; //common ones const headings$1 = { @@ -4237,7 +3603,8 @@ const removeMidSpans = function (rows) { }; //'!' starts a header-row -const findHeaders = function (rows = []) { +const findHeaders = function () { + let rows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; let headers = []; // is the first-row just a ton of colspan? if (skipSpanRow(rows[0])) { @@ -4311,10 +3678,10 @@ const firstRowHeader = function (rows) { }; //turn a {|...table string into an array of arrays -const parseTable = function (wiki) { +const parseTable$1 = function (wiki) { let lines = wiki.replace(/\r/g, '').replace(/\n(\s*[^|!{\s])/g, ' $1') //remove unecessary newlines .split(/\n/).map(l => l.trim()); - let rows = _findRows(lines); + let rows = findRows(lines); rows = rows.filter(r => r); if (rows.length === 0) { @@ -4324,7 +3691,7 @@ const parseTable = function (wiki) { rows = removeMidSpans(rows); //support colspan, rowspan... - rows = _spans(rows); //grab the header rows + rows = handleSpans(rows); //grab the header rows let headers = findHeaders(rows); @@ -4348,9 +3715,11 @@ const parseTable = function (wiki) { return table; }; -var parse$5 = parseTable; +var parse$i = parseTable$1; + +const encode$1 = encode$4; // -const toJson$2 = function (tables, options) { +const toJson$4 = function (tables, options) { return tables.map(table => { let row = {}; Object.keys(table).forEach(k => { @@ -4358,18 +3727,21 @@ const toJson$2 = function (tables, options) { }); //encode them, for mongodb if (options.encode === true) { - row = encode.encodeObj(row); + row = encode$1.encodeObj(row); } return row; }); }; -var toJson_1$2 = toJson$2; +var toJson_1$2 = toJson$4; +const setDefaults$5 = setDefaults_1; +const toJson$3 = toJson_1$2; const defaults$6 = {}; -const normalize$1 = function (key = '') { +const normalize$1 = function () { + let key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; key = key.toLowerCase(); key = key.replace(/[_-]/g, ' '); key = key.replace(/\(.*?\)/, ''); @@ -4377,7 +3749,8 @@ const normalize$1 = function (key = '') { return key; }; -const Table = function (data, wiki = '') { +const Table$1 = function (data) { + let wiki = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; Object.defineProperty(this, 'data', { enumerable: false, value: data @@ -4450,8 +3823,8 @@ const methods$4 = { }, json(options) { - options = setDefaults_1(options, defaults$6); - return toJson_1$2(this.data, options); + options = setDefaults$5(options, defaults$6); + return toJson$3(this.data, options); }, text() { @@ -4466,9 +3839,12 @@ const methods$4 = { methods$4.keyvalue = methods$4.keyValue; methods$4.keyval = methods$4.keyValue; Object.keys(methods$4).forEach(k => { - Table.prototype[k] = methods$4[k]; + Table$1.prototype[k] = methods$4[k]; }); -var Table_1 = Table; +var Table_1 = Table$1; + +const parseTable = parse$i; +const Table = Table_1; //const table_reg = /\{\|[\s\S]+?\|\}/g; //the largest-cities table is ~70k chars. const openReg = /^\s*\{\|/; const closeReg = /^\s*\|\}/; //tables can be recursive, so looky-here. @@ -4507,10 +3883,10 @@ const findTables = function (section) { //also re-remove a newline at the end of the table (awkward) wiki = wiki.replace(str + '\n', ''); wiki = wiki.replace(str, ''); - let data = parse$5(str); + let data = parseTable(str); if (data && data.length > 0) { - tables.push(new Table_1(data, str)); + tables.push(new Table(data, str)); } } }); @@ -4524,12 +3900,13 @@ const findTables = function (section) { var table = findTables; +const setDefaults$4 = setDefaults_1; const defaults$5 = { sentences: true }; -const toJson$1 = function (p, options) { - options = setDefaults_1(options, defaults$5); +const toJson$2 = function (p, options) { + options = setDefaults$4(options, defaults$5); let data = {}; if (options.sentences === true) { @@ -4539,15 +3916,17 @@ const toJson$1 = function (p, options) { return data; }; -var toJson_1$1 = toJson$1; +var toJson_1$1 = toJson$2; +const toJSON$3 = toJson_1$1; +const setDefaults$3 = setDefaults_1; const defaults$4 = { sentences: true, lists: true, images: true }; -const Paragraph = function (data) { +const Paragraph$1 = function (data) { Object.defineProperty(this, 'data', { enumerable: false, value: data @@ -4595,7 +3974,7 @@ const methods$3 = { }, text: function (options) { - options = setDefaults_1(options, defaults$4); + options = setDefaults$3(options, defaults$4); let str = this.sentences().map(s => s.text(options)).join(' '); this.lists().forEach(list => { str += '\n' + list.text(); @@ -4603,8 +3982,8 @@ const methods$3 = { return str; }, json: function (options) { - options = setDefaults_1(options, defaults$4); - return toJson_1$1(this, options); + options = setDefaults$3(options, defaults$4); + return toJSON$3(this, options); }, wikitext: function () { return this.data.wiki; @@ -4612,7 +3991,7 @@ const methods$3 = { }; methods$3.citations = methods$3.references; Object.keys(methods$3).forEach(k => { - Paragraph.prototype[k] = methods$3[k]; + Paragraph$1.prototype[k] = methods$3[k]; }); // aliases const singular$2 = { @@ -4626,7 +4005,7 @@ const singular$2 = { Object.keys(singular$2).forEach(k => { let sing = singular$2[k]; - Paragraph.prototype[sing] = function (clue) { + Paragraph$1.prototype[sing] = function (clue) { let arr = this[k](clue); if (typeof clue === 'number') { @@ -4636,7 +4015,7 @@ Object.keys(singular$2).forEach(k => { return arr[0]; }; }); -var Paragraph_1 = Paragraph; +var Paragraph_1 = Paragraph$1; const opener = '['; const closer = ']'; @@ -4651,7 +4030,7 @@ const closer = ']'; * @returns {string[]} all the links in the text */ -function nested_find(text) { +function nested_find$1(text) { let out = []; let last = []; const chars = text.split(''); @@ -4704,12 +4083,16 @@ function nested_find(text) { return out; } -var nested_find_1 = nested_find; +var nested_find_1 = nested_find$1; -const parseSentence$3 = _04Sentence.fromText; //regexes: +const i18n$3 = i18n$6; +const Image$4 = Image_1; +const parseTemplate$3 = toJSON$4; +const parseSentence$3 = _04Sentence.fromText; +const nested_find = nested_find_1; //regexes: -const isFile = new RegExp('(' + i18n.images.join('|') + '):', 'i'); -let fileNames = `(${i18n.images.join('|')})`; +const isFile = new RegExp('(' + i18n$3.images.join('|') + '):', 'i'); +let fileNames = "(".concat(i18n$3.images.join('|'), ")"); const file_reg = new RegExp(fileNames + ':(.+?)[\\||\\]]', 'iu'); //style directives for Wikipedia:Extended_image_syntax const imgLayouts = { @@ -4736,7 +4119,7 @@ const oneImage = function (img, doc) { return null; } - let file = `${m[1]}:${m[2] || ''}`; + let file = "".concat(m[1], ":").concat(m[2] || ''); file = file.trim(); //titlecase it let title = file.charAt(0).toUpperCase() + file.substring(1); //spaces to underscores @@ -4755,7 +4138,7 @@ const oneImage = function (img, doc) { img = img.replace(/\]\]$/, ''); //https://en.wikipedia.org/wiki/Wikipedia:Extended_image_syntax //- [[File:Name|Type|Border|Location|Alignment|Size|link=Link|alt=Alt|lang=Langtag|Caption]] - let imgData = toJSON(img); + let imgData = parseTemplate$3(img); let arr = imgData.list || []; //parse-out alt text, if explicitly given if (imgData.alt) { @@ -4769,7 +4152,7 @@ const oneImage = function (img, doc) { obj.caption = parseSentence$3(arr[arr.length - 1]); } - return new Image_1(obj); + return new Image$4(obj); } return null; @@ -4778,7 +4161,7 @@ const oneImage = function (img, doc) { const parseImages = function (paragraph, doc) { let wiki = paragraph.wiki; //parse+remove scary '[[ [[]] ]]' stuff - let matches = nested_find_1(wiki); + let matches = nested_find(wiki); matches.forEach(function (s) { if (isFile.test(s) === true) { paragraph.images = paragraph.images || []; @@ -4796,6 +4179,7 @@ const parseImages = function (paragraph, doc) { var image = parseImages; +const setDefaults$2 = setDefaults_1; const defaults$3 = {}; const toText$2 = (list, options) => { @@ -4805,7 +4189,8 @@ const toText$2 = (list, options) => { }).join('\n'); }; -const List = function (data, wiki = '') { +const List$1 = function (data) { + let wiki = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; Object.defineProperty(this, 'data', { enumerable: false, value: data @@ -4839,7 +4224,7 @@ const methods$2 = { }, json(options) { - options = setDefaults_1(options, defaults$3); + options = setDefaults$2(options, defaults$3); return this.lines().map(s => s.json(options)); }, @@ -4853,10 +4238,11 @@ const methods$2 = { }; Object.keys(methods$2).forEach(k => { - List.prototype[k] = methods$2[k]; + List$1.prototype[k] = methods$2[k]; }); -var List_1 = List; +var List_1 = List$1; +const List = List_1; const parseSentence$2 = _04Sentence.fromText; const list_reg = /^[#*:;|]+/; const bullet_reg = /^\*+[^:,|]{4}/; @@ -4925,15 +4311,16 @@ const parseList = function (paragraph) { } } - paragraph.lists = lists.map(l => new List_1(l, wiki)); + paragraph.lists = lists.map(l => new List(l, wiki)); paragraph.wiki = theRest.join('\n'); }; var list$1 = parseList; +const Paragraph = Paragraph_1; const parseSentences = _04Sentence.byParagraph; const twoNewLines = /\r?\n\r?\n/; -const parse$4 = { +const parse$h = { image: image, list: list$1 }; @@ -4951,12 +4338,12 @@ const parseParagraphs = function (section, doc) { images: [] }; //parse the lists - parse$4.list(paragraph); //parse images + parse$h.list(paragraph); //parse images - parse$4.image(paragraph, doc); //parse the sentences + parse$h.image(paragraph, doc); //parse the sentences parseSentences(paragraph); - return new Paragraph_1(paragraph); + return new Paragraph(paragraph); }); section._wiki = wiki; section._paragraphs = paragraphs; @@ -4967,7 +4354,7 @@ var _03Paragraph = parseParagraphs; const open = '{'; const close = '}'; //grab all first-level recursions of '{{...}}' -const findFlat = function (wiki) { +const findFlat$1 = function (wiki) { let depth = 0; let list = []; let carry = []; @@ -5011,11 +4398,12 @@ const findFlat = function (wiki) { return list; }; -var _02Flat = findFlat; +var _02Flat = findFlat$1; +const fmtName = _fmtName; //get the name of the template //templates are usually '{{name|stuff}}' -const getName = function (tmpl) { +const getName$1 = function (tmpl) { let name = null; //{{name|foo}} if (/^\{\{[^\n]+\|/.test(tmpl)) { @@ -5030,22 +4418,24 @@ const getName = function (tmpl) { if (name) { name = name.replace(/:.*/, ''); - name = _fmtName(name); + name = fmtName(name); } return name || null; }; -var _getName = getName; +var _getName = getName$1; +const findFlat = _02Flat; +const getName = _getName; const hasTemplate = /\{\{/; -const parseTemplate$1 = function (tmpl) { +const parseTemplate$2 = function (tmpl) { // this is some unexplained Lua thing tmpl = tmpl.replace(/#invoke:/, ''); return { body: tmpl, - name: _getName(tmpl), + name: getName(tmpl), children: [] }; }; @@ -5055,8 +4445,8 @@ const doEach = function (obj) { let wiki = obj.body.substr(2); wiki = wiki.replace(/\}\}$/, ''); // get our child templates - obj.children = _02Flat(wiki); - obj.children = obj.children.map(parseTemplate$1); + obj.children = findFlat(wiki); + obj.children = obj.children.map(parseTemplate$2); if (obj.children.length === 0) { return obj; @@ -5076,16 +4466,15 @@ const doEach = function (obj) { }; // return a nested structure of all templates -const findTemplates = function (wiki) { - let list = _02Flat(wiki); - list = list.map(parseTemplate$1); +const findTemplates$1 = function (wiki) { + let list = findFlat(wiki); + list = list.map(parseTemplate$2); list = list.map(doEach); return list; }; -var _01Nested = findTemplates; +var _01Nested = findTemplates$1; -//we explicitly ignore these, because they sometimes have resolve some data const list = [//https://en.wikipedia.org/wiki/category:templates_with_no_visible_output 'anchor', 'defaultsort', 'use list-defined references', 'void', //https://en.wikipedia.org/wiki/Category:Protection_templates 'pp', 'pp-move-indef', 'pp-semi-indef', 'pp-vandalism', //https://en.wikipedia.org/wiki/Template:R @@ -5110,11 +4499,11 @@ const list = [//https://en.wikipedia.org/wiki/category:templates_with_no_visible // 'weasel inline', //https://en.wikipedia.org/wiki/Template:End 'pope list end', 'shipwreck list end', 'starbox end', 'end box', 'end', 's-end']; -const ignore = list.reduce((h, str) => { +const ignore$1 = list.reduce((h, str) => { h[str] = true; return h; }, {}); -var _ignore = ignore; +var _ignore = ignore$1; var _infoboxes = { 'gnf protein box': true, @@ -5153,24 +4542,10 @@ var _infoboxes = { 'hockey team start': true, mlbbioret: true }; -_infoboxes.editnotice; -_infoboxes.geobox; -_infoboxes.hybridbox; -_infoboxes.ichnobox; -_infoboxes.infraspeciesbox; -_infoboxes.mycomorphbox; -_infoboxes.oobox; -_infoboxes.speciesbox; -_infoboxes.subspeciesbox; -_infoboxes.taxobox; -_infoboxes.nhlteamseason; -_infoboxes.edencharacter; -_infoboxes.samurai; -_infoboxes.protein; -_infoboxes.ordination; -_infoboxes.mlbbioret; - -const i18nReg = new RegExp('^(subst.)?(' + i18n.infoboxes.join('|') + ')[: \n]', 'i'); //some looser ones + +const i18n$2 = i18n$6; +const infoboxes$1 = _infoboxes; +const i18nReg = new RegExp('^(subst.)?(' + i18n$2.infoboxes.join('|') + ')[: \n]', 'i'); //some looser ones const startReg = /^infobox /i; const endReg = / infobox$/i; @@ -5180,7 +4555,7 @@ const yearIn = /^year in [A-Z]/i; //some known ones from const isInfobox = function (name) { //known - if (_infoboxes.hasOwnProperty(name) === true) { + if (infoboxes$1.hasOwnProperty(name) === true) { return true; } @@ -5201,7 +4576,8 @@ const isInfobox = function (name) { }; //turns template data into good infobox data -const fmtInfobox = function (obj = {}) { +const fmtInfobox = function () { + let obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; let m = obj.template.match(i18nReg); let type = obj.template; @@ -5227,7 +4603,9 @@ var _infobox = { format: fmtInfobox }; -let aliases = { +const languages$2 = languages$4; //aliases + +let aliases$1 = { imdb: 'imdb name', 'imdb episodess': 'imdb episode', localday: 'currentday', @@ -5275,17 +4653,17 @@ let multi = { // Polish, {{IPAc-pl}} {{IPAc-pl|'|sz|cz|e|ć|i|n}} → [ˈʂt͡ʂɛt͡ɕin] // Portuguese, {{IPAc-pt}} {{IPAc-pt|p|o|<|r|t|u|'|g|a|l|lang=pt}} and {{IPAc-pt|b|r|a|'|s|i|l|lang=br}} → [puɾtuˈɣaɫ] and [bɾaˈsiw] -Object.keys(languages).forEach(lang => { - aliases['ipa-' + lang] = 'ipa'; - aliases['ipac-' + lang] = 'ipac'; +Object.keys(languages$2).forEach(lang => { + aliases$1['ipa-' + lang] = 'ipa'; + aliases$1['ipac-' + lang] = 'ipac'; }); // add each alias in Object.keys(multi).forEach(k => { multi[k].forEach(str => { - aliases[str] = k; + aliases$1[str] = k; }); }); -var aliases_1 = aliases; +var aliases_1 = aliases$1; var hardcoded = { '·': '·', @@ -5328,22 +4706,10 @@ var hardcoded = { loss: '▼', gain: '▲' }; -hardcoded.dot; -hardcoded.middot; -hardcoded.ndash; -hardcoded.mdash; -hardcoded.ibeam; -hardcoded.ampersand; -hardcoded.snds; -hardcoded.snd; -hardcoded.bracket; -hardcoded.asterisk; -hardcoded.clear; -hardcoded.profit; -hardcoded.loss; -hardcoded.gain; - -let templates$9 = { + +const languages$1 = languages$4; //grab the first, second or third pipe.. + +let templates$b = { p1: 0, p2: 1, p3: 2, @@ -5365,13 +4731,15 @@ let zeros = ['defn', 'lino', //https://en.wikipedia.org/wiki/Template:Linum 'taste', 'monthname', 'baseball secondary style', 'lang-de', 'nowrap', 'nobr', 'big', 'cquote', 'pull quote', 'small', 'smaller', 'midsize', 'larger', 'big', 'kbd', 'bigger', 'large', 'mono', 'strongbad', 'stronggood', 'huge', 'xt', 'xt2', '!xt', 'xtn', 'xtd', 'dc', 'dcr', 'mxt', '!mxt', 'mxtn', 'mxtd', 'bxt', '!bxt', 'bxtn', 'bxtd', 'delink', //https://en.wikipedia.org/wiki/Template:Delink 'pre', 'var', 'mvar', 'pre2', 'code']; zeros.forEach(k => { - templates$9[k] = 0; + templates$b[k] = 0; }); //https://en.wikipedia.org/wiki/Category:Lang-x_templates -Object.keys(languages).forEach(k => { - templates$9['lang-' + k] = 0; +Object.keys(languages$1).forEach(k => { + templates$b['lang-' + k] = 0; }); -var shorthand$1 = templates$9; +var shorthand$1 = templates$b; + +const languages = languages$4; //simply num/denom * 100 const percentage = function (obj) { if (!obj.numerator && !obj.denominator) { @@ -5390,7 +4758,9 @@ const percentage = function (obj) { return Number(perc); }; -const toNumber = function (str = '') { +const toNumber = function () { + let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + if (typeof str === 'number') { return str; } @@ -5450,33 +4820,36 @@ var _lib$3 = { toNumber: toNumber }; +const parse$g = toJSON$4; +const strip$1 = _strip; +const lib$3 = _lib$3; var functions$2 = { //https://en.wikipedia.org/wiki/Template:Ra ra: tmpl => { - let obj = toJSON(tmpl, ['hours', 'minutes', 'seconds']); + let obj = parse$g(tmpl, ['hours', 'minutes', 'seconds']); return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); }, //https://en.wikipedia.org/wiki/Template:Deg2HMS deg2hms: tmpl => { //this template should do the conversion - let obj = toJSON(tmpl, ['degrees']); + let obj = parse$g(tmpl, ['degrees']); return (obj.degrees || '') + '°'; }, hms2deg: tmpl => { //this template should do the conversion too - let obj = toJSON(tmpl, ['hours', 'minutes', 'seconds']); + let obj = parse$g(tmpl, ['hours', 'minutes', 'seconds']); return [obj.hours || 0, obj.minutes || 0, obj.seconds || 0].join(':'); }, decdeg: tmpl => { //this template should do the conversion too - let obj = toJSON(tmpl, ['deg', 'min', 'sec', 'hem', 'rnd']); + let obj = parse$g(tmpl, ['deg', 'min', 'sec', 'hem', 'rnd']); return (obj.deg || obj.degrees) + '°'; }, //https://en.wikipedia.org/wiki/Template:Sortname sortname: tmpl => { let order = ['first', 'last', 'target', 'sort']; - let obj = toJSON(tmpl, order); - let name = `${obj.first || ''} ${obj.last || ''}`; + let obj = parse$g(tmpl, order); + let name = "".concat(obj.first || '', " ").concat(obj.last || ''); name = name.trim(); if (obj.nolink) { @@ -5484,22 +4857,22 @@ var functions$2 = { } if (obj.dab) { - name += ` (${obj.dab})`; + name += " (".concat(obj.dab, ")"); if (obj.target) { - obj.target += ` (${obj.dab})`; + obj.target += " (".concat(obj.dab, ")"); } } if (obj.target) { - return `[[${obj.target}|${name}]]`; + return "[[".concat(obj.target, "|").concat(name, "]]"); } - return `[[${name}]]`; + return "[[".concat(name, "]]"); }, // https://en.wikipedia.org/wiki/Template:First_word 'first word': tmpl => { - let obj = toJSON(tmpl, ['text']); + let obj = parse$g(tmpl, ['text']); let str = obj.text; if (obj.sep) { @@ -5510,50 +4883,50 @@ var functions$2 = { }, trunc: tmpl => { let order = ['str', 'len']; - let obj = toJSON(tmpl, order); + let obj = parse$g(tmpl, order); return obj.str.substr(0, obj.len); }, 'str mid': tmpl => { let order = ['str', 'start', 'end']; - let obj = toJSON(tmpl, order); + let obj = parse$g(tmpl, order); let start = parseInt(obj.start, 10) - 1; let end = parseInt(obj.end, 10); return obj.str.substr(start, end); }, reign: tmpl => { let order = ['start', 'end']; - let obj = toJSON(tmpl, order); - return `(r. ${obj.start} – ${obj.end})`; + let obj = parse$g(tmpl, order); + return "(r. ".concat(obj.start, " \u2013 ").concat(obj.end, ")"); }, circa: tmpl => { - let obj = toJSON(tmpl, ['year']); - return `c. ${obj.year}`; + let obj = parse$g(tmpl, ['year']); + return "c.\u2009".concat(obj.year); }, // https://en.wikipedia.org/wiki/Template:Decade_link 'decade link': tmpl => { - let obj = toJSON(tmpl, ['year']); - return `${obj.year}|${obj.year}s`; + let obj = parse$g(tmpl, ['year']); + return "".concat(obj.year, "|").concat(obj.year, "s"); }, // https://en.wikipedia.org/wiki/Template:Decade decade: tmpl => { - let obj = toJSON(tmpl, ['year']); + let obj = parse$g(tmpl, ['year']); let year = Number(obj.year); year = parseInt(year / 10, 10) * 10; // round to decade - return `${year}s`; + return "".concat(year, "s"); }, // https://en.wikipedia.org/wiki/Template:Century century: tmpl => { - let obj = toJSON(tmpl, ['year']); + let obj = parse$g(tmpl, ['year']); let year = Number(obj.year); year = parseInt(year / 100, 10) + 1; - return `${year}`; + return "".concat(year); }, //https://en.wikipedia.org/wiki/Template:Radic radic: tmpl => { let order = ['after', 'before']; - let obj = toJSON(tmpl, order); - return `${obj.before || ''}√${obj.after || ''}`; + let obj = parse$g(tmpl, order); + return "".concat(obj.before || '', "\u221A").concat(obj.after || ''); }, 'medical cases chart/row': tmpl => { // Deprecated template; we keep it. @@ -5562,12 +4935,12 @@ var functions$2 = { //https://en.wikipedia.org/wiki/Template:OldStyleDate oldstyledate: tmpl => { let order = ['date', 'year']; - let obj = toJSON(tmpl, order); + let obj = parse$g(tmpl, order); return obj.year ? obj.date + ' ' + obj.year : obj.date; }, //formatting things - https://en.wikipedia.org/wiki/Template:Nobold braces: tmpl => { - let obj = toJSON(tmpl, ['text']); + let obj = parse$g(tmpl, ['text']); let attrs = ''; if (obj.list) { @@ -5577,44 +4950,44 @@ var functions$2 = { return '{{' + (obj.text || '') + attrs + '}}'; }, hlist: tmpl => { - let obj = toJSON(tmpl); + let obj = parse$g(tmpl); obj.list = obj.list || []; return obj.list.join(' · '); }, pagelist: tmpl => { - let arr = toJSON(tmpl).list || []; + let arr = parse$g(tmpl).list || []; return arr.join(', '); }, //actually rendering these links removes the text. //https://en.wikipedia.org/wiki/Template:Catlist catlist: tmpl => { - let arr = toJSON(tmpl).list || []; + let arr = parse$g(tmpl).list || []; return arr.join(', '); }, //https://en.wikipedia.org/wiki/Template:Br_separated_entries 'br separated entries': tmpl => { - let arr = toJSON(tmpl).list || []; + let arr = parse$g(tmpl).list || []; return arr.join('\n\n'); }, 'comma separated entries': tmpl => { - let arr = toJSON(tmpl).list || []; + let arr = parse$g(tmpl).list || []; return arr.join(', '); }, //https://en.wikipedia.org/wiki/Template:Bare_anchored_list 'anchored list': tmpl => { - let arr = toJSON(tmpl).list || []; - arr = arr.map((str, i) => `${i + 1}. ${str}`); + let arr = parse$g(tmpl).list || []; + arr = arr.map((str, i) => "".concat(i + 1, ". ").concat(str)); return arr.join('\n\n'); }, 'bulleted list': tmpl => { - let arr = toJSON(tmpl).list || []; + let arr = parse$g(tmpl).list || []; arr = arr.filter(f => f); arr = arr.map(str => '• ' + str); return arr.join('\n\n'); }, //a strange, newline-based list - https://en.wikipedia.org/wiki/Template:Plainlist plainlist: tmpl => { - tmpl = _strip(tmpl); + tmpl = strip$1(tmpl); let arr = tmpl.split('|').slice(1); //remove the title arr = arr.join('|').split(/\n ?\* ?/); //split on newline @@ -5624,15 +4997,15 @@ var functions$2 = { }, //https://en.wikipedia.org/wiki/Template:Term term: tmpl => { - let obj = toJSON(tmpl, ['term']); - return `${obj.term}:`; + let obj = parse$g(tmpl, ['term']); + return "".concat(obj.term, ":"); }, linum: tmpl => { - let obj = toJSON(tmpl, ['num', 'text']); - return `${obj.num}. ${obj.text}`; + let obj = parse$g(tmpl, ['num', 'text']); + return "".concat(obj.num, ". ").concat(obj.text); }, 'block indent': tmpl => { - let obj = toJSON(tmpl); + let obj = parse$g(tmpl); if (obj['1']) { return '\n' + obj['1'] + '\n'; @@ -5642,39 +5015,39 @@ var functions$2 = { }, //https://en.wikipedia.org/wiki/Template:Lbs lbs: tmpl => { - let obj = toJSON(tmpl, ['text']); - return `[[${obj.text} Lifeboat Station|${obj.text}]]`; + let obj = parse$g(tmpl, ['text']); + return "[[".concat(obj.text, " Lifeboat Station|").concat(obj.text, "]]"); }, //Foo-class lbc: tmpl => { - let obj = toJSON(tmpl, ['text']); - return `[[${obj.text}-class lifeboat|${obj.text}-class]]`; + let obj = parse$g(tmpl, ['text']); + return "[[".concat(obj.text, "-class lifeboat|").concat(obj.text, "-class]]"); }, lbb: tmpl => { - let obj = toJSON(tmpl, ['text']); - return `[[${obj.text}-class lifeboat|${obj.text}]]`; + let obj = parse$g(tmpl, ['text']); + return "[[".concat(obj.text, "-class lifeboat|").concat(obj.text, "]]"); }, //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting '#dateformat': tmpl => { tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON(tmpl, ['date', 'format']); + let obj = parse$g(tmpl, ['date', 'format']); return obj.date; }, //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting lc: tmpl => { tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON(tmpl, ['text']); + let obj = parse$g(tmpl, ['text']); return (obj.text || '').toLowerCase(); }, //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting uc: tmpl => { tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON(tmpl, ['text']); + let obj = parse$g(tmpl, ['text']); return (obj.text || '').toUpperCase(); }, lcfirst: tmpl => { tmpl = tmpl.replace(/:/, '|'); - let text = toJSON(tmpl, ['text']).text; + let text = parse$g(tmpl, ['text']).text; if (!text) { return ''; @@ -5684,7 +5057,7 @@ var functions$2 = { }, ucfirst: tmpl => { tmpl = tmpl.replace(/:/, '|'); - let text = toJSON(tmpl, ['text']).text; + let text = parse$g(tmpl, ['text']).text; if (!text) { return ''; @@ -5694,29 +5067,29 @@ var functions$2 = { }, padleft: tmpl => { tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON(tmpl, ['text', 'num']); + let obj = parse$g(tmpl, ['text', 'num']); let text = obj.text || ''; return text.padStart(obj.num, obj.str || '0'); }, padright: tmpl => { tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON(tmpl, ['text', 'num']); + let obj = parse$g(tmpl, ['text', 'num']); let text = obj.text || ''; return text.padEnd(obj.num, obj.str || '0'); }, //https://en.wikipedia.org/wiki/Template:Abbrlink abbrlink: tmpl => { - let obj = toJSON(tmpl, ['abbr', 'page']); + let obj = parse$g(tmpl, ['abbr', 'page']); if (obj.page) { - return `[[${obj.page}|${obj.abbr}]]`; + return "[[".concat(obj.page, "|").concat(obj.abbr, "]]"); } - return `[[${obj.abbr}]]`; + return "[[".concat(obj.abbr, "]]"); }, // https://en.wikipedia.org/wiki/Template:Own own: tmpl => { - let obj = toJSON(tmpl, ['author']); + let obj = parse$g(tmpl, ['author']); let str = 'Own work'; if (obj.author) { @@ -5728,7 +5101,7 @@ var functions$2 = { //https://www.mediawiki.org/wiki/Help:Magic_words#Formatting formatnum: tmpl => { tmpl = tmpl.replace(/:/, '|'); - let obj = toJSON(tmpl, ['number']); + let obj = parse$g(tmpl, ['number']); let str = obj.number || ''; str = str.replace(/,/g, ''); let num = Number(str); @@ -5737,47 +5110,47 @@ var functions$2 = { //https://en.wikipedia.org/wiki/Template:Frac frac: tmpl => { let order = ['a', 'b', 'c']; - let obj = toJSON(tmpl, order); + let obj = parse$g(tmpl, order); if (obj.c) { - return `${obj.a} ${obj.b}/${obj.c}`; + return "".concat(obj.a, " ").concat(obj.b, "/").concat(obj.c); } if (obj.b) { - return `${obj.a}/${obj.b}`; + return "".concat(obj.a, "/").concat(obj.b); } - return `1/${obj.b}`; + return "1/".concat(obj.b); }, //https://en.wikipedia.org/wiki/Template:Convert#Ranges_of_values convert: tmpl => { let order = ['num', 'two', 'three', 'four']; - let obj = toJSON(tmpl, order); //todo: support plural units + let obj = parse$g(tmpl, order); //todo: support plural units if (obj.two === '-' || obj.two === 'to' || obj.two === 'and') { if (obj.four) { - return `${obj.num} ${obj.two} ${obj.three} ${obj.four}`; + return "".concat(obj.num, " ").concat(obj.two, " ").concat(obj.three, " ").concat(obj.four); } - return `${obj.num} ${obj.two} ${obj.three}`; + return "".concat(obj.num, " ").concat(obj.two, " ").concat(obj.three); } - return `${obj.num} ${obj.two}`; + return "".concat(obj.num, " ").concat(obj.two); }, // Large number of aliases - https://en.wikipedia.org/wiki/Template:Tl tl: tmpl => { let order = ['first', 'second']; - let obj = toJSON(tmpl, order); + let obj = parse$g(tmpl, order); return obj.second || obj.first; }, //this one's a little different won: tmpl => { - let data = toJSON(tmpl, ['text']); - return data.place || data.text || _lib$3.titlecase(data.template); + let data = parse$g(tmpl, ['text']); + return data.place || data.text || lib$3.titlecase(data.template); }, //a convulated way to make a xml tag - https://en.wikipedia.org/wiki/Template:Tag tag: tmpl => { - let obj = toJSON(tmpl, ['tag', 'open']); + let obj = parse$g(tmpl, ['tag', 'open']); const ignore = { span: true, div: true, @@ -5790,7 +5163,7 @@ var functions$2 = { return obj.content || ''; } - return `<${obj.tag} ${obj.attribs || ''}>${obj.content || ''}`; + return "<".concat(obj.tag, " ").concat(obj.attribs || '', ">").concat(obj.content || '', ""); } return ''; @@ -5799,7 +5172,7 @@ var functions$2 = { plural: tmpl => { tmpl = tmpl.replace(/plural:/, 'plural|'); let order = ['num', 'word']; - let obj = toJSON(tmpl, order); + let obj = parse$g(tmpl, order); let num = Number(obj.num); let word = obj.word; @@ -5815,11 +5188,11 @@ var functions$2 = { }, //https://en.wikipedia.org/wiki/Template:DEC dec: tmpl => { - let obj = toJSON(tmpl, ['degrees', 'minutes', 'seconds']); + let obj = parse$g(tmpl, ['degrees', 'minutes', 'seconds']); let str = (obj.degrees || 0) + '°'; if (obj.minutes) { - str += obj.minutes + `′`; + str += obj.minutes + "\u2032"; } if (obj.seconds) { @@ -5830,7 +5203,7 @@ var functions$2 = { }, //https://en.wikipedia.org/wiki/Template:Val val: tmpl => { - let obj = toJSON(tmpl, ['number', 'uncertainty']); + let obj = parse$g(tmpl, ['number', 'uncertainty']); let num = obj.number; if (num && Number(num)) { @@ -5856,8 +5229,8 @@ var functions$2 = { }, //{{percentage | numerator | denominator | decimals to round to (zero or greater) }} percentage: tmpl => { - let obj = toJSON(tmpl, ['numerator', 'denominator', 'decimals']); - let num = _lib$3.percentage(obj); + let obj = parse$g(tmpl, ['numerator', 'denominator', 'decimals']); + let num = lib$3.percentage(obj); if (num === null) { return ''; @@ -5867,8 +5240,8 @@ var functions$2 = { }, // {{Percent-done|done=N|total=N|digits=N}} 'percent-done': tmpl => { - let obj = toJSON(tmpl, ['done', 'total', 'digits']); - let num = _lib$3.percentage({ + let obj = parse$g(tmpl, ['done', 'total', 'digits']); + let num = lib$3.percentage({ numerator: obj.done, denominator: obj.total, decimals: obj.digits @@ -5878,225 +5251,191 @@ var functions$2 = { return ''; } - return `${obj.done} (${num}%) done`; - } -}; -functions$2.ra; -functions$2.deg2hms; -functions$2.hms2deg; -functions$2.decdeg; -functions$2.sortname; -functions$2.trunc; -functions$2.reign; -functions$2.circa; -functions$2.decade; -functions$2.century; -functions$2.radic; -functions$2.oldstyledate; -functions$2.braces; -functions$2.hlist; -functions$2.pagelist; -functions$2.catlist; -functions$2.plainlist; -functions$2.term; -functions$2.linum; -functions$2.lbs; -functions$2.lbc; -functions$2.lbb; -functions$2.lc; -functions$2.uc; -functions$2.lcfirst; -functions$2.ucfirst; -functions$2.padleft; -functions$2.padright; -functions$2.abbrlink; -functions$2.own; -functions$2.formatnum; -functions$2.frac; -functions$2.convert; -functions$2.tl; -functions$2.won; -functions$2.tag; -functions$2.plural; -functions$2.dec; -functions$2.val; -functions$2.percentage; - -var flags = [['🇦🇩', 'and', 'andorra'], ['🇦🇪', 'are', 'united arab emirates'], ['🇦🇫', 'afg', 'afghanistan'], ['🇦🇬', 'atg', 'antigua and barbuda'], ['🇦🇮', 'aia', 'anguilla'], ['🇦🇱', 'alb', 'albania'], ['🇦🇲', 'arm', 'armenia'], ['🇦🇴', 'ago', 'angola'], ['🇦🇶', 'ata', 'antarctica'], ['🇦🇷', 'arg', 'argentina'], ['🇦🇸', 'asm', 'american samoa'], ['🇦🇹', 'aut', 'austria'], ['🇦🇺', 'aus', 'australia'], ['🇦🇼', 'abw', 'aruba'], ['🇦🇽', 'ala', 'åland islands'], ['🇦🇿', 'aze', 'azerbaijan'], ['🇧🇦', 'bih', 'bosnia and herzegovina'], ['🇧🇧', 'brb', 'barbados'], ['🇧🇩', 'bgd', 'bangladesh'], ['🇧🇪', 'bel', 'belgium'], ['🇧🇫', 'bfa', 'burkina faso'], ['🇧🇬', 'bgr', 'bulgaria'], ['🇧🇬', 'bul', 'bulgaria'], //dupe + return "".concat(obj.done, " (").concat(num, "%) done"); + } +}; + +var flags$2 = [['🇦🇩', 'and', 'andorra'], ['🇦🇪', 'are', 'united arab emirates'], ['🇦🇫', 'afg', 'afghanistan'], ['🇦🇬', 'atg', 'antigua and barbuda'], ['🇦🇮', 'aia', 'anguilla'], ['🇦🇱', 'alb', 'albania'], ['🇦🇲', 'arm', 'armenia'], ['🇦🇴', 'ago', 'angola'], ['🇦🇶', 'ata', 'antarctica'], ['🇦🇷', 'arg', 'argentina'], ['🇦🇸', 'asm', 'american samoa'], ['🇦🇹', 'aut', 'austria'], ['🇦🇺', 'aus', 'australia'], ['🇦🇼', 'abw', 'aruba'], ['🇦🇽', 'ala', 'åland islands'], ['🇦🇿', 'aze', 'azerbaijan'], ['🇧🇦', 'bih', 'bosnia and herzegovina'], ['🇧🇧', 'brb', 'barbados'], ['🇧🇩', 'bgd', 'bangladesh'], ['🇧🇪', 'bel', 'belgium'], ['🇧🇫', 'bfa', 'burkina faso'], ['🇧🇬', 'bgr', 'bulgaria'], ['🇧🇬', 'bul', 'bulgaria'], //dupe ['🇧🇭', 'bhr', 'bahrain'], ['🇧🇮', 'bdi', 'burundi'], ['🇧🇯', 'ben', 'benin'], ['🇧🇱', 'blm', 'saint barthélemy'], ['🇧🇲', 'bmu', 'bermuda'], ['🇧🇳', 'brn', 'brunei darussalam'], ['🇧🇴', 'bol', 'bolivia'], ['🇧🇶', 'bes', 'bonaire, sint eustatius and saba'], ['🇧🇷', 'bra', 'brazil'], ['🇧🇸', 'bhs', 'bahamas'], ['🇧🇹', 'btn', 'bhutan'], ['🇧🇻', 'bvt', 'bouvet island'], ['🇧🇼', 'bwa', 'botswana'], ['🇧🇾', 'blr', 'belarus'], ['🇧🇿', 'blz', 'belize'], ['🇨🇦', 'can', 'canada'], ['🇨🇨', 'cck', 'cocos (keeling) islands'], ['🇨🇩', 'cod', 'congo'], ['🇨🇫', 'caf', 'central african republic'], ['🇨🇬', 'cog', 'congo'], ['🇨🇭', 'che', 'switzerland'], ['🇨🇮', 'civ', 'côte d\'ivoire'], ['🇨🇰', 'cok', 'cook islands'], ['🇨🇱', 'chl', 'chile'], ['🇨🇲', 'cmr', 'cameroon'], ['🇨🇳', 'chn', 'china'], ['🇨🇴', 'col', 'colombia'], ['🇨🇷', 'cri', 'costa rica'], ['🇨🇺', 'cub', 'cuba'], ['🇨🇻', 'cpv', 'cape verde'], ['🇨🇼', 'cuw', 'curaçao'], ['🇨🇽', 'cxr', 'christmas island'], ['🇨🇾', 'cyp', 'cyprus'], ['🇨🇿', 'cze', 'czech republic'], ['🇩🇪', 'deu', 'germany'], ['🇩🇪', 'ger', 'germany'], //alias ['🇩🇯', 'dji', 'djibouti'], ['🇩🇰', 'dnk', 'denmark'], ['🇩🇲', 'dma', 'dominica'], ['🇩🇴', 'dom', 'dominican republic'], ['🇩🇿', 'dza', 'algeria'], ['🇪🇨', 'ecu', 'ecuador'], ['🇪🇪', 'est', 'estonia'], ['🇪🇬', 'egy', 'egypt'], ['🇪🇭', 'esh', 'western sahara'], ['🇪🇷', 'eri', 'eritrea'], ['🇪🇸', 'esp', 'spain'], ['🇪🇹', 'eth', 'ethiopia'], ['🇫🇮', 'fin', 'finland'], ['🇫🇯', 'fji', 'fiji'], ['🇫🇰', 'flk', 'falkland islands (malvinas)'], ['🇫🇲', 'fsm', 'micronesia'], ['🇫🇴', 'fro', 'faroe islands'], ['🇫🇷', 'fra', 'france'], ['🇬🇦', 'gab', 'gabon'], ['🇬🇧', 'gbr', 'united kingdom'], ['🇬🇩', 'grd', 'grenada'], //['🇬🇪', 'geo', 'georgia'], ['🇬🇫', 'guf', 'french guiana'], ['🇬🇬', 'ggy', 'guernsey'], ['🇬🇭', 'gha', 'ghana'], ['🇬🇮', 'gib', 'gibraltar'], ['🇬🇱', 'grl', 'greenland'], ['🇬🇲', 'gmb', 'gambia'], ['🇬🇳', 'gin', 'guinea'], ['🇬🇵', 'glp', 'guadeloupe'], ['🇬🇶', 'gnq', 'equatorial guinea'], ['🇬🇷', 'grc', 'greece'], ['🇬🇸', 'sgs', 'south georgia'], ['🇬🇹', 'gtm', 'guatemala'], ['🇬🇺', 'gum', 'guam'], ['🇬🇼', 'gnb', 'guinea-bissau'], ['🇬🇾', 'guy', 'guyana'], ['🇭🇰', 'hkg', 'hong kong'], ['🇭🇲', 'hmd', 'heard island and mcdonald islands'], ['🇭🇳', 'hnd', 'honduras'], ['🇭🇷', 'hrv', 'croatia'], ['🇭🇹', 'hti', 'haiti'], ['🇭🇺', 'hun', 'hungary'], ['🇮🇩', 'idn', 'indonesia'], ['🇮🇪', 'irl', 'ireland'], ['🇮🇱', 'isr', 'israel'], ['🇮🇲', 'imn', 'isle of man'], ['🇮🇳', 'ind', 'india'], ['🇮🇴', 'iot', 'british indian ocean territory'], ['🇮🇶', 'irq', 'iraq'], ['🇮🇷', 'irn', 'iran'], ['🇮🇸', 'isl', 'iceland'], ['🇮🇹', 'ita', 'italy'], ['🇯🇪', 'jey', 'jersey'], ['🇯🇲', 'jam', 'jamaica'], ['🇯🇴', 'jor', 'jordan'], ['🇯🇵', 'jpn', 'japan'], ['🇰🇪', 'ken', 'kenya'], ['🇰🇬', 'kgz', 'kyrgyzstan'], ['🇰🇭', 'khm', 'cambodia'], ['🇰🇮', 'kir', 'kiribati'], ['🇰🇲', 'com', 'comoros'], ['🇰🇳', 'kna', 'saint kitts and nevis'], ['🇰🇵', 'prk', 'north korea'], ['🇰🇷', 'kor', 'south korea'], ['🇰🇼', 'kwt', 'kuwait'], ['🇰🇾', 'cym', 'cayman islands'], ['🇰🇿', 'kaz', 'kazakhstan'], ['🇱🇦', 'lao', 'lao people\'s democratic republic'], ['🇱🇧', 'lbn', 'lebanon'], ['🇱🇨', 'lca', 'saint lucia'], ['🇱🇮', 'lie', 'liechtenstein'], ['🇱🇰', 'lka', 'sri lanka'], ['🇱🇷', 'lbr', 'liberia'], ['🇱🇸', 'lso', 'lesotho'], ['🇱🇹', 'ltu', 'lithuania'], ['🇱🇺', 'lux', 'luxembourg'], ['🇱🇻', 'lva', 'latvia'], ['🇱🇾', 'lby', 'libya'], ['🇲🇦', 'mar', 'morocco'], ['🇲🇨', 'mco', 'monaco'], ['🇲🇩', 'mda', 'moldova'], ['🇲🇪', 'mne', 'montenegro'], ['🇲🇫', 'maf', 'saint martin (french part)'], ['🇲🇬', 'mdg', 'madagascar'], ['🇲🇭', 'mhl', 'marshall islands'], ['🇲🇰', 'mkd', 'macedonia'], ['🇲🇱', 'mli', 'mali'], ['🇲🇲', 'mmr', 'myanmar'], ['🇲🇳', 'mng', 'mongolia'], ['🇲🇴', 'mac', 'macao'], ['🇲🇵', 'mnp', 'northern mariana islands'], ['🇲🇶', 'mtq', 'martinique'], ['🇲🇷', 'mrt', 'mauritania'], ['🇲🇸', 'msr', 'montserrat'], ['🇲🇹', 'mlt', 'malta'], ['🇲🇺', 'mus', 'mauritius'], ['🇲🇻', 'mdv', 'maldives'], ['🇲🇼', 'mwi', 'malawi'], ['🇲🇽', 'mex', 'mexico'], ['🇲🇾', 'mys', 'malaysia'], ['🇲🇿', 'moz', 'mozambique'], ['🇳🇦', 'nam', 'namibia'], ['🇳🇨', 'ncl', 'new caledonia'], ['🇳🇪', 'ner', 'niger'], ['🇳🇫', 'nfk', 'norfolk island'], ['🇳🇬', 'nga', 'nigeria'], ['🇳🇮', 'nic', 'nicaragua'], ['🇳🇱', 'nld', 'netherlands'], ['🇳🇴', 'nor', 'norway'], ['🇳🇵', 'npl', 'nepal'], ['🇳🇷', 'nru', 'nauru'], ['🇳🇺', 'niu', 'niue'], ['🇳🇿', 'nzl', 'new zealand'], ['🇴🇲', 'omn', 'oman'], ['🇵🇦', 'pan', 'panama'], ['🇵🇪', 'per', 'peru'], ['🇵🇫', 'pyf', 'french polynesia'], ['🇵🇬', 'png', 'papua new guinea'], ['🇵🇭', 'phl', 'philippines'], ['🇵🇰', 'pak', 'pakistan'], ['🇵🇱', 'pol', 'poland'], ['🇵🇲', 'spm', 'saint pierre and miquelon'], ['🇵🇳', 'pcn', 'pitcairn'], ['🇵🇷', 'pri', 'puerto rico'], ['🇵🇸', 'pse', 'palestinian territory'], ['🇵🇹', 'prt', 'portugal'], ['🇵🇼', 'plw', 'palau'], ['🇵🇾', 'pry', 'paraguay'], ['🇶🇦', 'qat', 'qatar'], ['🇷🇪', 'reu', 'réunion'], ['🇷🇴', 'rou', 'romania'], ['🇷🇸', 'srb', 'serbia'], ['🇷🇺', 'rus', 'russia'], ['🇷🇼', 'rwa', 'rwanda'], ['🇸🇦', 'sau', 'saudi arabia'], ['🇸🇧', 'slb', 'solomon islands'], ['🇸🇨', 'syc', 'seychelles'], ['🇸🇩', 'sdn', 'sudan'], ['🇸🇪', 'swe', 'sweden'], ['🇸🇬', 'sgp', 'singapore'], ['🇸🇭', 'shn', 'saint helena, ascension and tristan da cunha'], ['🇸🇮', 'svn', 'slovenia'], ['🇸🇯', 'sjm', 'svalbard and jan mayen'], ['🇸🇰', 'svk', 'slovakia'], ['🇸🇱', 'sle', 'sierra leone'], ['🇸🇲', 'smr', 'san marino'], ['🇸🇳', 'sen', 'senegal'], ['🇸🇴', 'som', 'somalia'], ['🇸🇷', 'sur', 'suriname'], ['🇸🇸', 'ssd', 'south sudan'], ['🇸🇹', 'stp', 'sao tome and principe'], ['🇸🇻', 'slv', 'el salvador'], ['🇸🇽', 'sxm', 'sint maarten (dutch part)'], ['🇸🇾', 'syr', 'syrian arab republic'], ['🇸🇿', 'swz', 'swaziland'], ['🇹🇨', 'tca', 'turks and caicos islands'], ['🇹🇩', 'tcd', 'chad'], ['🇹🇫', 'atf', 'french southern territories'], ['🇹🇬', 'tgo', 'togo'], ['🇹🇭', 'tha', 'thailand'], ['🇹🇯', 'tjk', 'tajikistan'], ['🇹🇰', 'tkl', 'tokelau'], ['🇹🇱', 'tls', 'timor-leste'], ['🇹🇲', 'tkm', 'turkmenistan'], ['🇹🇳', 'tun', 'tunisia'], ['🇹🇴', 'ton', 'tonga'], ['🇹🇷', 'tur', 'turkey'], ['🇹🇹', 'tto', 'trinidad and tobago'], ['🇹🇻', 'tuv', 'tuvalu'], ['🇹🇼', 'twn', 'taiwan'], ['🇹🇿', 'tza', 'tanzania'], ['🇺🇦', 'ukr', 'ukraine'], ['🇺🇬', 'uga', 'uganda'], ['🇺🇲', 'umi', 'united states minor outlying islands'], ['🇺🇸', 'us', 'united states'], //alias ['🇺🇸', 'usa', 'united states'], ['🇺🇾', 'ury', 'uruguay'], ['🇺🇿', 'uzb', 'uzbekistan'], ['🇻🇦', 'vat', 'vatican city'], ['🇻🇨', 'vct', 'saint vincent and the grenadines'], ['🇻🇪', 'ven', 'venezuela'], ['🇻🇬', 'vgb', 'virgin islands, british'], ['🇻🇮', 'vir', 'virgin islands, u.s.'], ['🇻🇳', 'vnm', 'viet nam'], ['🇻🇺', 'vut', 'vanuatu'], ['🇼🇫', 'wlf', 'wallis and futuna'], ['🇼🇸', 'wsm', 'samoa'], ['🇾🇪', 'yem', 'yemen'], ['🇾🇹', 'myt', 'mayotte'], ['🇿🇦', 'zaf', 'south africa'], ['🇿🇲', 'zmb', 'zambia'], ['🇿🇼 ', 'zwe', 'zimbabwe'], //others (later unicode versions) ['🇺🇳', 'un', 'united nations'], ['🏴󠁧󠁢󠁥󠁮󠁧󠁿󠁧󠁢󠁥󠁮󠁧󠁿', 'eng', 'england'], ['🏴󠁧󠁢󠁳󠁣󠁴󠁿', 'sct', 'scotland'], ['🏴󠁧󠁢󠁷󠁬󠁳󠁿', 'wal', 'wales'], ['🇪🇺', 'eu', 'european union']]; -let templates$8 = { +const parse$f = toJSON$4; +const flags$1 = flags$2; +let templates$a = { //https://en.wikipedia.org/wiki/Template:Flag // {{flag|USA}} → USA flag: tmpl => { let order = ['flag', 'variant']; - let obj = toJSON(tmpl, order); + let obj = parse$f(tmpl, order); let name = obj.flag || ''; obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; let flag = found[0] || ''; - return `${flag} [[${found[2]}|${name}]]`; + return "".concat(flag, " [[").concat(found[2], "|").concat(name, "]]"); }, // {{flagcountry|USA}} → United States flagcountry: tmpl => { let order = ['flag', 'variant']; - let obj = toJSON(tmpl, order); + let obj = parse$f(tmpl, order); obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; let flag = found[0] || ''; - return `${flag} [[${found[2]}]]`; + return "".concat(flag, " [[").concat(found[2], "]]"); }, // (unlinked flag-country) flagcu: tmpl => { let order = ['flag', 'variant']; - let obj = toJSON(tmpl, order); + let obj = parse$f(tmpl, order); obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; let flag = found[0] || ''; - return `${flag} ${found[2]}`; + return "".concat(flag, " ").concat(found[2]); }, //https://en.wikipedia.org/wiki/Template:Flagicon // {{flagicon|USA}} → United States flagicon: tmpl => { let order = ['flag', 'variant']; - let obj = toJSON(tmpl, order); + let obj = parse$f(tmpl, order); obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]); if (!found) { return ''; } - return `[[${found[2]}|${found[0]}]]`; + return "[[".concat(found[2], "|").concat(found[0], "]]"); }, //unlinked flagicon flagdeco: tmpl => { let order = ['flag', 'variant']; - let obj = toJSON(tmpl, order); + let obj = parse$f(tmpl, order); obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]) || []; return found[0] || ''; }, //same, but a soccer team fb: tmpl => { let order = ['flag', 'variant']; - let obj = toJSON(tmpl, order); + let obj = parse$f(tmpl, order); obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]); if (!found) { return ''; } - return `${found[0]} [[${found[2]} national football team|${found[2]}]]`; + return "".concat(found[0], " [[").concat(found[2], " national football team|").concat(found[2], "]]"); }, fbicon: tmpl => { let order = ['flag', 'variant']; - let obj = toJSON(tmpl, order); + let obj = parse$f(tmpl, order); obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]); if (!found) { return ''; } - return ` [[${found[2]} national football team|${found[0]}]]`; + return " [[".concat(found[2], " national football team|").concat(found[0], "]]"); }, flagathlete: tmpl => { let order = ['name', 'flag', 'variant']; - let obj = toJSON(tmpl, order); + let obj = parse$f(tmpl, order); obj.flag = (obj.flag || '').toLowerCase(); - let found = flags.find(a => obj.flag === a[1] || obj.flag === a[2]); + let found = flags$1.find(a => obj.flag === a[1] || obj.flag === a[2]); if (!found) { - return `[[${obj.name || ''}]]`; + return "[[".concat(obj.name || '', "]]"); } - return `${found[0]} [[${obj.name || ''}]] (${found[1].toUpperCase()})`; + return "".concat(found[0], " [[").concat(obj.name || '', "]] (").concat(found[1].toUpperCase(), ")"); } }; //support {{can}} -flags.forEach(a => { - templates$8[a[1]] = () => { +flags$1.forEach(a => { + templates$a[a[1]] = () => { return a[0]; }; }); -var flags_1 = templates$8; +var flags_1 = templates$a; +const parse$e = toJSON$4; const titlecase = _lib$3.titlecase; //https://en.wikipedia.org/wiki/Template:Yes -let templates$7 = {}; +let templates$9 = {}; let cells = ['rh', 'rh2', 'yes', 'no', 'maybe', 'eliminated', 'lost', 'safe', 'active', 'site active', 'coming soon', 'good', 'won', 'nom', 'sho', 'longlisted', 'tba', 'success', 'operational', 'failure', 'partial', 'regional', 'maybecheck', 'partial success', 'partial failure', 'okay', 'yes-no', 'some', 'nonpartisan', 'pending', 'unofficial', 'unofficial2', 'usually', 'rarely', 'sometimes', 'any', 'varies', 'black', 'non-album single', 'unreleased', 'unknown', 'perhaps', 'depends', 'included', 'dropped', 'terminated', 'beta', 'table-experimental', 'free', 'proprietary', 'nonfree', 'needs', 'nightly', 'release-candidate', 'planned', 'scheduled', 'incorrect', 'no result', 'cmain', 'calso starring', 'crecurring', 'cguest', 'not yet', 'optional']; cells.forEach(str => { - templates$7[str] = tmpl => { - let data = toJSON(tmpl, ['text']); + templates$9[str] = tmpl => { + let data = parse$e(tmpl, ['text']); return data.text || titlecase(data.template); }; }); //these ones have a text result let moreCells = [['active fire', 'Active'], ['site active', 'Active'], ['site inactive', 'Inactive'], ['yes2', ''], ['no2', ''], ['ya', '✅'], ['na', '❌'], ['nom', 'Nominated'], ['sho', 'Shortlisted'], ['tba', 'TBA'], ['maybecheck', '✔️'], ['okay', 'Neutral'], ['n/a', 'N/A'], ['sdash', '—'], ['dunno', '?'], ['draw', ''], ['cnone', ''], ['nocontest', '']]; moreCells.forEach(a => { - templates$7[a[0]] = tmpl => { - let data = toJSON(tmpl, ['text']); + templates$9[a[0]] = tmpl => { + let data = parse$e(tmpl, ['text']); return data.text || a[1]; }; }); -var tableCell = templates$7; +var tableCell = templates$9; var textOnly = Object.assign({}, hardcoded, shorthand$1, functions$2, flags_1, tableCell); -let templates$6 = {}; // these all have ['id', 'name'] +let templates$8 = {}; // these all have ['id', 'name'] let idName = ['goodreads author', 'twitter', 'facebook', 'instagram', 'tumblr', 'pinterest', 'espn nfl', 'espn nhl', 'espn fc', 'hockeydb', 'fifa player', 'worldcat', 'worldcat id', 'nfl player', 'ted speaker', 'playmate']; idName.forEach(name => { - templates$6[name] = ['id', 'name']; + templates$8[name] = ['id', 'name']; }); -var idName_1 = templates$6; +var idName_1 = templates$8; -let templates$5 = {}; // these all have ['id', 'title', 'description', 'section'] +let templates$7 = {}; // these all have ['id', 'title', 'description', 'section'] let idTitle = ['imdb title', //https://en.wikipedia.org/wiki/Template:IMDb_title 'imdb name', 'imdb episode', 'imdb event', 'afi film', 'allmovie title', 'allgame', 'tcmdb title', 'discogs artist', 'discogs label', 'discogs release', 'discogs master', 'librivox author', 'musicbrainz artist', 'musicbrainz label', 'musicbrainz recording', 'musicbrainz release', 'musicbrainz work', 'youtube', 'goodreads book', 'dmoz' //https://en.wikipedia.org/wiki/Template:DMOZ ]; idTitle.forEach(name => { - templates$5[name] = ['id', 'title', 'description', 'section']; + templates$7[name] = ['id', 'title', 'description', 'section']; }); -var idTitle_1 = templates$5; +var idTitle_1 = templates$7; +const parse$d = toJSON$4; +const Image$3 = Image_1; +const lib$2 = _lib$3; var functions$1 = { // https://en.wikipedia.org/wiki/Template:IPA ipa: (tmpl, list) => { - let obj = toJSON(tmpl, ['transcription', 'lang', 'audio']); - obj.lang = _lib$3.getLang(obj.template); + let obj = parse$d(tmpl, ['transcription', 'lang', 'audio']); + obj.lang = lib$2.getLang(obj.template); obj.template = 'ipa'; list.push(obj); return ''; }, //https://en.wikipedia.org/wiki/Template:IPAc-en ipac: (tmpl, list) => { - let obj = toJSON(tmpl); + let obj = parse$d(tmpl); obj.transcription = (obj.list || []).join(','); delete obj.list; - obj.lang = _lib$3.getLang(obj.template); + obj.lang = lib$2.getLang(obj.template); obj.template = 'ipac'; list.push(obj); return ''; }, quote: (tmpl, list) => { let order = ['text', 'author']; - let obj = toJSON(tmpl, order); + let obj = parse$d(tmpl, order); list.push(obj); //create plaintext version if (obj.text) { - let str = `"${obj.text}"`; + let str = "\"".concat(obj.text, "\""); if (obj.author) { str += '\n\n'; - str += ` - ${obj.author}`; + str += " - ".concat(obj.author); } return str + '\n'; @@ -6107,7 +5446,7 @@ var functions$1 = { //this one sucks - https://en.wikipedia.org/wiki/Template:GNIS 'cite gnis': (tmpl, list) => { let order = ['id', 'name', 'type']; - let obj = toJSON(tmpl, order); + let obj = parse$d(tmpl, order); obj.type = 'gnis'; obj.template = 'citation'; list.push(obj); @@ -6115,38 +5454,38 @@ var functions$1 = { }, 'spoken wikipedia': (tmpl, list) => { let order = ['file', 'date']; - let obj = toJSON(tmpl, order); + let obj = parse$d(tmpl, order); obj.template = 'audio'; list.push(obj); return ''; }, //yellow card yel: (tmpl, list) => { - let obj = toJSON(tmpl, ['min']); + let obj = parse$d(tmpl, ['min']); list.push(obj); if (obj.min) { - return `yellow: ${obj.min || ''}'`; //no yellow-card emoji + return "yellow: ".concat(obj.min || '', "'"); //no yellow-card emoji } return ''; }, subon: (tmpl, list) => { - let obj = toJSON(tmpl, ['min']); + let obj = parse$d(tmpl, ['min']); list.push(obj); if (obj.min) { - return `sub on: ${obj.min || ''}'`; //no yellow-card emoji + return "sub on: ".concat(obj.min || '', "'"); //no yellow-card emoji } return ''; }, suboff: (tmpl, list) => { - let obj = toJSON(tmpl, ['min']); + let obj = parse$d(tmpl, ['min']); list.push(obj); if (obj.min) { - return `sub off: ${obj.min || ''}'`; //no yellow-card emoji + return "sub off: ".concat(obj.min || '', "'"); //no yellow-card emoji } return ''; @@ -6154,7 +5493,7 @@ var functions$1 = { //https://en.wikipedia.org/wiki/Template:Sfn sfn: (tmpl, list, parser, alias) => { let order = ['author', 'year', 'location']; - let obj = toJSON(tmpl, order); + let obj = parse$d(tmpl, order); if (alias) { obj.name = obj.template; @@ -6166,7 +5505,7 @@ var functions$1 = { }, //https://en.wikipedia.org/wiki/Template:Redirect redirect: (tmpl, list) => { - let data = toJSON(tmpl, ['redirect']); + let data = parse$d(tmpl, ['redirect']); let lines = data.list || []; let links = []; @@ -6187,12 +5526,12 @@ var functions$1 = { }, //https://en.wikipedia.org/wiki/Template:Sister_project_links 'sister project links': (tmpl, list) => { - let data = toJSON(tmpl); //rename 'wd' to 'wikidata' + let data = parse$d(tmpl); //rename 'wd' to 'wikidata' let links = {}; - Object.keys(_lib$3.sisterProjects).forEach(k => { + Object.keys(lib$2.sisterProjects).forEach(k => { if (data.hasOwnProperty(k) === true) { - links[_lib$3.sisterProjects[k]] = data[k]; //.text(); + links[lib$2.sisterProjects[k]] = data[k]; //.text(); } }); let obj = { @@ -6204,11 +5543,11 @@ var functions$1 = { }, //https://en.wikipedia.org/wiki/Template:Subject_bar 'subject bar': (tmpl, list) => { - let data = toJSON(tmpl); + let data = parse$d(tmpl); Object.keys(data).forEach(k => { //rename 'voy' to 'wikivoyage' - if (_lib$3.sisterProjects.hasOwnProperty(k)) { - data[_lib$3.sisterProjects[k]] = data[k]; + if (lib$2.sisterProjects.hasOwnProperty(k)) { + data[lib$2.sisterProjects[k]] = data[k]; delete data[k]; } }); @@ -6222,14 +5561,14 @@ var functions$1 = { //amazingly, this one does not obey any known patterns //https://en.wikipedia.org/wiki/Template:Gallery gallery: (tmpl, list) => { - let obj = toJSON(tmpl); + let obj = parse$d(tmpl); let images = (obj.list || []).filter(line => /^ *File ?:/.test(line)); images = images.map(file => { let img = { file: file }; // todo: add lang and domain information - return new Image_1(img).json(); + return new Image$3(img).json(); }); obj = { template: 'gallery', @@ -6240,7 +5579,7 @@ var functions$1 = { }, //https://en.wikipedia.org/wiki/Template:Sky sky: (tmpl, list) => { - let obj = toJSON(tmpl, ['asc_hours', 'asc_minutes', 'asc_seconds', 'dec_sign', 'dec_degrees', 'dec_minutes', 'dec_seconds', 'distance']); + let obj = parse$d(tmpl, ['asc_hours', 'asc_minutes', 'asc_seconds', 'dec_sign', 'dec_degrees', 'dec_minutes', 'dec_seconds', 'distance']); let template = { template: 'sky', ascension: { @@ -6264,7 +5603,7 @@ var functions$1 = { // parsing code. 'medical cases chart': (tmpl, list) => { let order = ['date', 'deathsExpr', 'recoveriesExpr', 'casesExpr', '4thExpr', '5thExpr', 'col1', 'col1Change', 'col2', 'col2Change']; - let obj = toJSON(tmpl); + let obj = parse$d(tmpl); obj.data = obj.data || ''; let rows = obj.data.split('\n'); // Mimic row parsing in _buildBars in the Lua source, from the following // line on: @@ -6315,7 +5654,7 @@ var functions$1 = { return ''; }, graph: (tmpl, list) => { - let data = toJSON(tmpl); + let data = parse$d(tmpl); if (data.x) { data.x = data.x.split(',').map(str => str.trim()); @@ -6337,7 +5676,7 @@ var functions$1 = { }, //https://en.wikipedia.org/wiki/Template:Historical_populations 'historical populations': (tmpl, list) => { - let data = toJSON(tmpl); + let data = parse$d(tmpl); data.list = data.list || []; let years = []; @@ -6359,7 +5698,7 @@ var functions$1 = { 'weather box': (tmpl, list) => { const hasMonth = /^jan /i; const isYear = /^year /i; - let obj = toJSON(tmpl); + let obj = parse$d(tmpl); const monthList = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']; let byMonth = {}; let properties = Object.keys(obj).filter(k => hasMonth.test(k)); @@ -6367,10 +5706,10 @@ var functions$1 = { properties.forEach(prop => { byMonth[prop] = []; monthList.forEach(m => { - let key = `${m} ${prop}`; + let key = "".concat(m, " ").concat(prop); if (obj.hasOwnProperty(key)) { - let num = _lib$3.toNumber(obj[key]); + let num = lib$2.toNumber(obj[key]); delete obj[key]; byMonth[prop].push(num); } @@ -6394,8 +5733,8 @@ var functions$1 = { //The 36 parameters are: 12 monthly highs (C), 12 lows (total 24) plus an optional 12 monthly rain/precipitation //https://en.wikipedia.org/wiki/Template:Weather_box/concise_C 'weather box/concise c': (tmpl, list) => { - let obj = toJSON(tmpl); - obj.list = obj.list.map(s => _lib$3.toNumber(s)); + let obj = parse$d(tmpl); + obj.list = obj.list.map(s => lib$2.toNumber(s)); obj.byMonth = { 'high c': obj.list.slice(0, 12), 'low c': obj.list.slice(12, 24), @@ -6407,8 +5746,8 @@ var functions$1 = { return ''; }, 'weather box/concise f': (tmpl, list) => { - let obj = toJSON(tmpl); - obj.list = obj.list.map(s => _lib$3.toNumber(s)); + let obj = parse$d(tmpl); + obj.list = obj.list.map(s => lib$2.toNumber(s)); obj.byMonth = { 'high f': obj.list.slice(0, 12), 'low f': obj.list.slice(12, 24), @@ -6421,7 +5760,7 @@ var functions$1 = { }, //https://en.wikipedia.org/wiki/Template:Climate_chart 'climate chart': (tmpl, list) => { - let lines = toJSON(tmpl).list || []; + let lines = parse$d(tmpl).list || []; let title = lines[0]; let source = lines[38]; lines = lines.slice(1); //amazingly, they use '−' symbol here instead of negatives... @@ -6437,9 +5776,9 @@ var functions$1 = { for (let i = 0; i < 36; i += 3) { months.push({ - low: _lib$3.toNumber(lines[i]), - high: _lib$3.toNumber(lines[i + 1]), - precip: _lib$3.toNumber(lines[i + 2]) + low: lib$2.toNumber(lines[i]), + high: lib$2.toNumber(lines[i + 1]), + precip: lib$2.toNumber(lines[i + 2]) }); } @@ -6455,19 +5794,8 @@ var functions$1 = { return ''; } }; -functions$1.ipa; -functions$1.ipac; -functions$1.quote; -functions$1.yel; -functions$1.subon; -functions$1.suboff; -functions$1.sfn; -functions$1.redirect; -functions$1.gallery; -functions$1.sky; -functions$1.graph; -let templates$4 = { +let templates$6 = { //https://en.wikipedia.org/wiki/Category:External_link_templates 'find a grave': ['id', 'name', 'work', 'last', 'first', 'date', 'accessdate'], congbio: ['id', 'name', 'date'], @@ -6485,8 +5813,8 @@ let templates$4 = { geo: ['lat', 'lon', 'zoom'] //https://en.wikivoyage.org/wiki/Template:Geo }; -templates$4 = Object.assign(templates$4, idName_1, idTitle_1, functions$1); -var dataOnly = templates$4; +templates$6 = Object.assign(templates$6, idName_1, idTitle_1, functions$1); +var dataOnly = templates$6; var shorthand = { mlbplayer: { @@ -6531,37 +5859,31 @@ var shorthand = { // }, }; -shorthand.mlbplayer; -shorthand.syntaxhighlight; -shorthand.samp; -shorthand.sub; -shorthand.sup; -shorthand.chem2; -shorthand.ill; -shorthand.abbr; -let templates$3 = { +const parse$c = toJSON$4; +const lib$1 = _lib$3; +let templates$5 = { // https://en.wikipedia.org/wiki/Template:Math math: (tmpl, list) => { - let obj = toJSON(tmpl, ['formula']); + let obj = parse$c(tmpl, ['formula']); list.push(obj); return '\n\n' + (obj.formula || '') + '\n\n'; }, isbn: (tmpl, list) => { let order = ['id', 'id2', 'id3']; - let obj = toJSON(tmpl, order); + let obj = parse$c(tmpl, order); list.push(obj); return 'ISBN: ' + (obj.id || ''); }, //https://en.wikipedia.org/wiki/Template:Based_on 'based on': (tmpl, list) => { - let obj = toJSON(tmpl, ['title', 'author']); + let obj = parse$c(tmpl, ['title', 'author']); list.push(obj); - return `${obj.title} by ${obj.author || ''}`; + return "".concat(obj.title, " by ").concat(obj.author || ''); }, //barrels of oil https://en.wikipedia.org/wiki/Template:Bbl_to_t 'bbl to t': (tmpl, list) => { - let obj = toJSON(tmpl, ['barrels']); + let obj = parse$c(tmpl, ['barrels']); list.push(obj); if (obj.barrels === '0') { @@ -6572,9 +5894,9 @@ let templates$3 = { }, //minor planet - https://en.wikipedia.org/wiki/Template:MPC mpc: (tmpl, list) => { - let obj = toJSON(tmpl, ['number', 'text']); + let obj = parse$c(tmpl, ['number', 'text']); list.push(obj); - return `[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ${obj.text || obj.number}]`; + return "[https://minorplanetcenter.net/db_search/show_object?object_id=P/2011+NO1 ".concat(obj.text || obj.number, "]"); }, pengoal: (tmpl, list) => { list.push({ @@ -6590,15 +5912,15 @@ let templates$3 = { }, // https://en.wikipedia.org/wiki/Template:Ordered_list 'ordered list': (tmpl, list) => { - let obj = toJSON(tmpl); + let obj = parse$c(tmpl); list.push(obj); obj.list = obj.list || []; - let lines = obj.list.map((str, i) => `${i + 1}. ${str}`); + let lines = obj.list.map((str, i) => "".concat(i + 1, ". ").concat(str)); return lines.join('\n\n'); }, // https://en.wikipedia.org/wiki/Template:Title_year 'title year': (tmpl, _list, _alias, _parse, doc) => { - let obj = toJSON(tmpl, ['match', 'nomatch', 'page']); + let obj = parse$c(tmpl, ['match', 'nomatch', 'page']); let title = obj.page || doc.title(); if (title) { @@ -6613,7 +5935,7 @@ let templates$3 = { }, // https://en.wikipedia.org/wiki/Template:Title_century 'title century': (tmpl, _list, _alias, _parse, doc) => { - let obj = toJSON(tmpl, ['match', 'nomatch', 'page']); + let obj = parse$c(tmpl, ['match', 'nomatch', 'page']); let title = obj.page || doc.title(); if (title) { @@ -6628,7 +5950,7 @@ let templates$3 = { }, // https://en.wikipedia.org/wiki/Template:Title_decade 'title decade': (tmpl, _list, _alias, _parse, doc) => { - let obj = toJSON(tmpl, ['match', 'nomatch', 'page']); + let obj = parse$c(tmpl, ['match', 'nomatch', 'page']); let title = obj.page || doc.title(); if (title) { @@ -6643,12 +5965,12 @@ let templates$3 = { }, //https://en.wikipedia.org/wiki/Template:Nihongo nihongo: (tmpl, list) => { - let obj = toJSON(tmpl, ['english', 'kanji', 'romaji', 'extra']); + let obj = parse$c(tmpl, ['english', 'kanji', 'romaji', 'extra']); list.push(obj); let str = obj.english || obj.romaji || ''; if (obj.kanji) { - str += ` (${obj.kanji})`; + str += " (".concat(obj.kanji, ")"); } return str; @@ -6656,15 +5978,15 @@ let templates$3 = { //https://en.wikipedia.org/wiki/Template:Marriage //this one creates a template, and an inline response marriage: (tmpl, list) => { - let data = toJSON(tmpl, ['spouse', 'from', 'to', 'end']); + let data = parse$c(tmpl, ['spouse', 'from', 'to', 'end']); list.push(data); let str = data.spouse || ''; if (data.from) { if (data.to) { - str += ` (m. ${data.from}-${data.to})`; + str += " (m. ".concat(data.from, "-").concat(data.to, ")"); } else { - str += ` (m. ${data.from})`; + str += " (m. ".concat(data.from, ")"); } } @@ -6672,7 +5994,7 @@ let templates$3 = { }, //'red' card - {{sent off|cards|min1|min2}} 'sent off': (tmpl, list) => { - let obj = toJSON(tmpl, ['cards']); + let obj = parse$c(tmpl, ['cards']); let result = { template: 'sent off', cards: obj.cards, @@ -6683,7 +6005,7 @@ let templates$3 = { return 'sent off: ' + mins; }, transl: (tmpl, list) => { - let obj = toJSON(tmpl, ['lang', 'text', 'text2']); // support 3-param + let obj = parse$c(tmpl, ['lang', 'text', 'text2']); // support 3-param if (obj.text2) { obj.iso = obj.text; @@ -6696,12 +6018,12 @@ let templates$3 = { }, //show/hide: https://en.wikipedia.org/wiki/Template:Collapsible_list 'collapsible list': (tmpl, list) => { - let obj = toJSON(tmpl); + let obj = parse$c(tmpl); list.push(obj); let str = ''; if (obj.title) { - str += `'''${obj.title}'''` + '\n\n'; + str += "'''".concat(obj.title, "'''") + '\n\n'; } if (!obj.list) { @@ -6721,7 +6043,7 @@ let templates$3 = { }, //https://en.wikipedia.org/wiki/Template:Columns-list 'columns-list': (tmpl, list) => { - let arr = toJSON(tmpl).list || []; + let arr = parse$c(tmpl).list || []; let str = arr[0] || ''; let lines = str.split(/\n/).filter(f => f); lines = lines.map(s => s.replace(/\*/, '')); @@ -6734,7 +6056,7 @@ let templates$3 = { }, //https://en.wikipedia.org/wiki/Template:Height - {{height|ft=6|in=1}} height: (tmpl, list) => { - let obj = toJSON(tmpl); + let obj = parse$c(tmpl); list.push(obj); let result = []; let units = ['m', 'cm', 'ft', 'in']; //order matters @@ -6748,7 +6070,7 @@ let templates$3 = { }, //https://en.wikipedia.org/wiki/Template:Sic sic: (tmpl, list) => { - let obj = toJSON(tmpl, ['one', 'two', 'three']); + let obj = parse$c(tmpl, ['one', 'two', 'three']); let word = (obj.one || '') + (obj.two || ''); //support '[sic?]' if (obj.one === '?') { @@ -6764,11 +6086,11 @@ let templates$3 = { return word; } - return `${word} [sic]`; + return "".concat(word, " [sic]"); }, // inrconvert: (tmpl, list) => { - let o = toJSON(tmpl, ['rupee_value', 'currency_formatting']); + let o = parse$c(tmpl, ['rupee_value', 'currency_formatting']); list.push(o); const mults = { k: 1000, @@ -6785,12 +6107,12 @@ let templates$3 = { o.rupee_value = o.rupee_value * multiplier; } - return `inr ${o.rupee_value || ''}`; + return "inr ".concat(o.rupee_value || ''); }, //fraction - https://en.wikipedia.org/wiki/Template:Sfrac frac: (tmpl, list) => { let order = ['a', 'b', 'c']; - let obj = toJSON(tmpl, order); + let obj = parse$c(tmpl, order); let data = { template: 'sfrac' }; @@ -6810,13 +6132,13 @@ let templates$3 = { list.push(data); if (data.integer) { - return `${data.integer} ${data.numerator}⁄${data.denominator}`; + return "".concat(data.integer, " ").concat(data.numerator, "\u2044").concat(data.denominator); } - return `${data.numerator}⁄${data.denominator}`; + return "".concat(data.numerator, "\u2044").concat(data.denominator); }, 'winning percentage': (tmpl, list) => { - let obj = toJSON(tmpl, ['wins', 'losses', 'ties']); + let obj = parse$c(tmpl, ['wins', 'losses', 'ties']); list.push(obj); let wins = Number(obj.wins); let losses = Number(obj.losses); @@ -6831,7 +6153,7 @@ let templates$3 = { wins += ties / 2; } - let num = _lib$3.percentage({ + let num = lib$1.percentage({ numerator: wins, denominator: games, decimals: 1 @@ -6841,14 +6163,14 @@ let templates$3 = { return ''; } - return `.${num * 10}`; + return ".".concat(num * 10); }, winlosspct: (tmpl, list) => { - let obj = toJSON(tmpl, ['wins', 'losses']); + let obj = parse$c(tmpl, ['wins', 'losses']); list.push(obj); let wins = Number(obj.wins); let losses = Number(obj.losses); - let num = _lib$3.percentage({ + let num = lib$1.percentage({ numerator: wins, denominator: wins + losses, decimals: 1 @@ -6858,13 +6180,13 @@ let templates$3 = { return ''; } - num = `.${num * 10}`; - return `${wins || 0} || ${losses || 0} || ${num || '-'}`; + num = ".".concat(num * 10); + return "".concat(wins || 0, " || ").concat(losses || 0, " || ").concat(num || '-'); }, //https://en.wikipedia.org/wiki/Template:Video_game_release 'video game release': (tmpl, list) => { let order = ['region', 'date', 'region2', 'date2', 'region3', 'date3', 'region4', 'date4']; - let obj = toJSON(tmpl, order); + let obj = parse$c(tmpl, order); let template = { template: 'video game release', releases: [] @@ -6880,23 +6202,24 @@ let templates$3 = { } list.push(template); - let str = template.releases.map(o => `${o.region}: ${o.date || ''}`).join('\n\n'); + let str = template.releases.map(o => "".concat(o.region, ": ").concat(o.date || '')).join('\n\n'); return '\n' + str + '\n'; }, // https://en.m.wikipedia.org/wiki/Template:USS uss: (tmpl, list) => { - let obj = toJSON(tmpl, ['name', 'id']); + let obj = parse$c(tmpl, ['name', 'id']); list.push(obj); if (obj.id) { - return `[[USS ${obj.name} (${obj.id})|USS ''${obj.name}'' (${obj.id})]]`; + return "[[USS ".concat(obj.name, " (").concat(obj.id, ")|USS ''").concat(obj.name, "'' (").concat(obj.id, ")]]"); } - return `[[USS ${obj.name}|USS ''${obj.name}'']]`; + return "[[USS ".concat(obj.name, "|USS ''").concat(obj.name, "'']]"); } }; -var functions = templates$3; +var functions = templates$5; +const parse$b = toJSON$4; const codes$1 = { '£': 'GB£', // https://en.wikipedia.org/wiki/Template:GBP @@ -7025,7 +6348,7 @@ const codes$1 = { }; const parseCurrency = (tmpl, list) => { - let o = toJSON(tmpl, ['amount', 'code']); + let o = parse$b(tmpl, ['amount', 'code']); list.push(o); let code = o.template || ''; @@ -7047,7 +6370,7 @@ const parseCurrency = (tmpl, list) => { o.code = code = 'gbp'; } - let str = `${codes$1[code] || ''}${o.amount || ''}`; //support unknown currencies after the number - like '5 BTC' + let str = "".concat(codes$1[code] || '').concat(o.amount || ''); //support unknown currencies after the number - like '5 BTC' if (o.code && !codes$1[o.code.toLowerCase()]) { str += ' ' + o.code; @@ -7056,14 +6379,14 @@ const parseCurrency = (tmpl, list) => { return str; }; -let templates$2 = { +let templates$4 = { currency: parseCurrency }; //and the others fit the same pattern Object.keys(codes$1).forEach(k => { - templates$2[k] = parseCurrency; + templates$4[k] = parseCurrency; }); -var currency = templates$2; +var currency = templates$4; const toOrdinal = function (i) { let j = i % 10; @@ -7090,7 +6413,7 @@ const month = day * 30; const year = day * 365; const getEpoch = function (obj) { - return new Date(`${obj.year}-${obj.month || 0}-${obj.date || 1}`).getTime(); + return new Date("".concat(obj.year, "-").concat(obj.month || 0, "-").concat(obj.date || 1)).getTime(); }; //very rough! @@ -7162,7 +6485,6 @@ var _lib$2 = { toOrdinal: toOrdinal }; -//assorted parsing methods for date/time templates const months$1 = [undefined, //1-based months.. :/ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; const monthName = months$1.reduce((h, str, i) => { @@ -7227,13 +6549,13 @@ const toText$1 = function (date) { if (date.month !== undefined && months$1.hasOwnProperty(date.month) === true) { if (date.date === undefined) { //January 1995 - str = `${months$1[date.month]} ${date.year}`; + str = "".concat(months$1[date.month], " ").concat(date.year); } else { //January 5, 1995 - str = `${months$1[date.month]} ${date.date}, ${date.year}`; //add times, if available + str = "".concat(months$1[date.month], " ").concat(date.date, ", ").concat(date.year); //add times, if available if (date.hour !== undefined && date.minute !== undefined) { - let time = `${pad(date.hour)}:${pad(date.minute)}`; + let time = "".concat(pad(date.hour), ":").concat(pad(date.minute)); if (date.second !== undefined) { time = time + ':' + pad(date.second); @@ -7243,7 +6565,7 @@ const toText$1 = function (date) { } if (date.tz) { - str += ` (${date.tz})`; + str += " (".concat(date.tz, ")"); } } } @@ -7256,7 +6578,10 @@ var _format = { ymd: ymd }; // console.log(toText(ymd([2018, 3, 28]))); -const delta = _lib$2.delta; //wrap it up as a template +const strip = _strip; +const parse$a = toJSON$4; +const delta = _lib$2.delta; +const fmt = _format; //wrap it up as a template const template$1 = function (date) { return { @@ -7266,9 +6591,9 @@ const template$1 = function (date) { }; const getBoth = function (tmpl) { - tmpl = _strip(tmpl); + tmpl = strip(tmpl); let arr = tmpl.split('|'); - let from = _format.ymd(arr.slice(1, 4)); + let from = fmt.ymd(arr.slice(1, 4)); let to = arr.slice(4, 7); //assume now, if 'to' is empty if (to.length === 0) { @@ -7276,34 +6601,34 @@ const getBoth = function (tmpl) { to = [d.getFullYear(), d.getMonth(), d.getDate()]; } - to = _format.ymd(to); + to = fmt.ymd(to); return { from: from, to: to }; }; -const parsers = { +const parsers$1 = { //generic {{date|year|month|date}} template date: (tmpl, list) => { let order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'timezone']; - let obj = toJSON(tmpl, order); - let data = _format.ymd([obj.year, obj.month, obj.date || obj.day]); - obj.text = _format.toText(data); //make the replacement string + let obj = parse$a(tmpl, order); + let data = fmt.ymd([obj.year, obj.month, obj.date || obj.day]); + obj.text = fmt.toText(data); //make the replacement string if (obj.timezone) { if (obj.timezone === 'Z') { obj.timezone = 'UTC'; } - obj.text += ` (${obj.timezone})`; + obj.text += " (".concat(obj.timezone, ")"); } if (obj.hour && obj.minute) { if (obj.second) { - obj.text = `${obj.hour}:${obj.minute}:${obj.second}, ` + obj.text; + obj.text = "".concat(obj.hour, ":").concat(obj.minute, ":").concat(obj.second, ", ") + obj.text; } else { - obj.text = `${obj.hour}:${obj.minute}, ` + obj.text; + obj.text = "".concat(obj.hour, ":").concat(obj.minute, ", ") + obj.text; } } @@ -7316,7 +6641,7 @@ const parsers = { //support parsing of 'February 10, 1992' natural_date: (tmpl, list) => { let order = ['text']; - let obj = toJSON(tmpl, order); + let obj = parse$a(tmpl, order); let str = obj.text || ''; // - just a year let date = {}; @@ -7342,7 +6667,7 @@ const parsers = { //just grab the first value, and assume it's a year one_year: (tmpl, list) => { let order = ['year']; - let obj = toJSON(tmpl, order); + let obj = parse$a(tmpl, order); let year = Number(obj.year); list.push(template$1({ year: year @@ -7352,17 +6677,17 @@ const parsers = { //assume 'y|m|d' | 'y|m|d' // {{BirthDeathAge|B|1976|6|6|1990|8|8}} two_dates: (tmpl, list) => { let order = ['b', 'birth_year', 'birth_month', 'birth_date', 'death_year', 'death_month', 'death_date']; - let obj = toJSON(tmpl, order); //'b' means show birth-date, otherwise show death-date + let obj = parse$a(tmpl, order); //'b' means show birth-date, otherwise show death-date if (obj.b && obj.b.toLowerCase() === 'b') { - let date = _format.ymd([obj.birth_year, obj.birth_month, obj.birth_date]); + let date = fmt.ymd([obj.birth_year, obj.birth_month, obj.birth_date]); list.push(template$1(date)); - return _format.toText(date); + return fmt.toText(date); } - let date = _format.ymd([obj.death_year, obj.death_month, obj.death_date]); + let date = fmt.ymd([obj.death_year, obj.death_month, obj.death_date]); list.push(template$1(date)); - return _format.toText(date); + return fmt.toText(date); }, age: tmpl => { let d = getBoth(tmpl); @@ -7462,8 +6787,12 @@ const parsers = { return arr.join(', '); } }; -var _parsers = parsers; +var _parsers = parsers$1; +const parsers = _parsers; +const parse$9 = toJSON$4; +const lib = _lib$2; +const format = _format; const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; //date- templates we support var dates = { @@ -7473,7 +6802,7 @@ var dates = { }, currentdayname: () => { let d = new Date(); - return _lib$2.days[d.getDay()]; + return lib.days[d.getDay()]; }, currentmonth: () => { let d = new Date(); @@ -7499,86 +6828,86 @@ var dates = { }, 'time ago': tmpl => { let order = ['date', 'fmt']; - let time = toJSON(tmpl, order).date; - return _lib$2.timeSince(time); + let time = parse$9(tmpl, order).date; + return lib.timeSince(time); }, //https://en.wikipedia.org/wiki/Template:Birth_date_and_age 'birth date and age': (tmpl, list) => { let order = ['year', 'month', 'day']; - let obj = toJSON(tmpl, order); //support 'one property' version + let obj = parse$9(tmpl, order); //support 'one property' version if (obj.year && /[a-z]/i.test(obj.year)) { - return _parsers.natural_date(tmpl, list); + return parsers.natural_date(tmpl, list); } list.push(obj); - obj = _format.ymd([obj.year, obj.month, obj.day]); - return _format.toText(obj); + obj = format.ymd([obj.year, obj.month, obj.day]); + return format.toText(obj); }, 'birth year and age': (tmpl, list) => { let order = ['birth_year', 'birth_month']; - let obj = toJSON(tmpl, order); //support 'one property' version + let obj = parse$9(tmpl, order); //support 'one property' version if (obj.death_year && /[a-z]/i.test(obj.death_year)) { - return _parsers.natural_date(tmpl, list); + return parsers.natural_date(tmpl, list); } list.push(obj); let age = new Date().getFullYear() - parseInt(obj.birth_year, 10); - obj = _format.ymd([obj.birth_year, obj.birth_month]); - let str = _format.toText(obj); + obj = format.ymd([obj.birth_year, obj.birth_month]); + let str = format.toText(obj); if (age) { - str += ` (age ${age})`; + str += " (age ".concat(age, ")"); } return str; }, 'death year and age': (tmpl, list) => { let order = ['death_year', 'birth_year', 'death_month']; - let obj = toJSON(tmpl, order); //support 'one property' version + let obj = parse$9(tmpl, order); //support 'one property' version if (obj.death_year && /[a-z]/i.test(obj.death_year)) { - return _parsers.natural_date(tmpl, list); + return parsers.natural_date(tmpl, list); } list.push(obj); - obj = _format.ymd([obj.death_year, obj.death_month]); - return _format.toText(obj); + obj = format.ymd([obj.death_year, obj.death_month]); + return format.toText(obj); }, //https://en.wikipedia.org/wiki/Template:Birth_date_and_age2 'birth date and age2': (tmpl, list) => { let order = ['at_year', 'at_month', 'at_day', 'birth_year', 'birth_month', 'birth_day']; - let obj = toJSON(tmpl, order); + let obj = parse$9(tmpl, order); list.push(obj); - obj = _format.ymd([obj.birth_year, obj.birth_month, obj.birth_day]); - return _format.toText(obj); + obj = format.ymd([obj.birth_year, obj.birth_month, obj.birth_day]); + return format.toText(obj); }, //https://en.wikipedia.org/wiki/Template:Birth_based_on_age_as_of_date 'birth based on age as of date': (tmpl, list) => { let order = ['age', 'year', 'month', 'day']; - let obj = toJSON(tmpl, order); + let obj = parse$9(tmpl, order); list.push(obj); let age = parseInt(obj.age, 10); let year = parseInt(obj.year, 10); let born = year - age; if (born && age) { - return `${born} (age ${obj.age})`; + return "".concat(born, " (age ").concat(obj.age, ")"); } - return `(age ${obj.age})`; + return "(age ".concat(obj.age, ")"); }, //https://en.wikipedia.org/wiki/Template:Death_date_and_given_age 'death date and given age': (tmpl, list) => { let order = ['year', 'month', 'day', 'age']; - let obj = toJSON(tmpl, order); + let obj = parse$9(tmpl, order); list.push(obj); - obj = _format.ymd([obj.year, obj.month, obj.day]); - let str = _format.toText(obj); + obj = format.ymd([obj.year, obj.month, obj.day]); + let str = format.toText(obj); if (obj.age) { - str += ` (age ${obj.age})`; + str += " (age ".concat(obj.age, ")"); } return str; @@ -7589,7 +6918,7 @@ var dates = { tmpl = tmpl.replace(/\|format=[ymd]+/i, ''); tmpl = tmpl.replace(/\|abbr=(on|off)/i, ''); let order = ['year', 'month', 'date', 'bc']; - let obj = toJSON(tmpl, order); + let obj = parse$9(tmpl, order); if (obj.date && obj.month && obj.year) { //render 'june 5 2018' @@ -7618,52 +6947,42 @@ var dates = { //https://en.wikipedia.org/wiki/Template:Time time: () => { let d = new Date(); - let obj = _format.ymd([d.getFullYear(), d.getMonth(), d.getDate()]); - return _format.toText(obj); + let obj = format.ymd([d.getFullYear(), d.getMonth(), d.getDate()]); + return format.toText(obj); }, // https://en.wikipedia.org/wiki/Template:MILLENNIUM millennium: tmpl => { - let obj = toJSON(tmpl, ['year']); + let obj = parse$9(tmpl, ['year']); let year = Number(obj.year); year = parseInt(year / 1000, 10) + 1; if (obj.abbr && obj.abbr === 'y') { if (year < 0) { - return `${_lib$2.toOrdinal(Math.abs(year))} BC`; + return "".concat(lib.toOrdinal(Math.abs(year)), " BC"); } - return `${_lib$2.toOrdinal(year)}`; + return "".concat(lib.toOrdinal(year)); } - return `${_lib$2.toOrdinal(year)} millennium`; + return "".concat(lib.toOrdinal(year), " millennium"); }, //date/age/time templates - start: _parsers.date, - 'start-date': _parsers.natural_date, - birthdeathage: _parsers.two_dates, - age: _parsers.age, - 'age nts': _parsers.age, - 'age in years': _parsers['diff-y'], - 'age in years and months': _parsers['diff-ym'], - 'age in years, months and days': _parsers['diff-ymd'], - 'age in years and days': _parsers['diff-yd'], - 'age in days': _parsers['diff-d'] // 'birth date and age2': date, + start: parsers.date, + 'start-date': parsers.natural_date, + birthdeathage: parsers.two_dates, + age: parsers.age, + 'age nts': parsers.age, + 'age in years': parsers['diff-y'], + 'age in years and months': parsers['diff-ym'], + 'age in years, months and days': parsers['diff-ymd'], + 'age in years and days': parsers['diff-yd'], + 'age in days': parsers['diff-d'] // 'birth date and age2': date, // 'age in years, months, weeks and days': true, // 'age as of date': true, }; -dates.currentday; -dates.currentdayname; -dates.currentmonth; -dates.currentyear; -dates.monthyear; -dates.dts; -dates.time; -dates.millennium; -dates.start; -dates.birthdeathage; -dates.age; +const parse$8 = toJSON$4; /** * converts DMS (decimal-minute-second) geo format to lat/lng format. * major thank you to https://github.com/gmaclennan/parse-dms and https://github.com/WSDOT-GIS/dms-js 👏 @@ -7772,8 +7091,8 @@ const parseParams = function (obj) { return obj; }; -const parseCoor = function (tmpl) { - let obj = toJSON(tmpl); +const parseCoor$1 = function (tmpl) { + let obj = parse$8(tmpl); obj = parseParams(obj); let tmp = findLatLng(obj.list); obj.lat = round(tmp.lat); @@ -7785,15 +7104,16 @@ const parseCoor = function (tmpl) { //console.log(parseDms([4, 27, 32, 'W'])); -var _lib$1 = parseCoor; // {{Coor title dms|dd|mm|ss|N/S|dd|mm|ss|E/W|template parameters}} +var _lib$1 = parseCoor$1; // {{Coor title dms|dd|mm|ss|N/S|dd|mm|ss|E/W|template parameters}} -const templates$1 = { +const parseCoor = _lib$1; +const templates$3 = { coord: (tmpl, list) => { - let obj = _lib$1(tmpl); + let obj = parseCoor(tmpl); list.push(obj); //display inline, by default if (!obj.display || obj.display.indexOf('inline') !== -1) { - return `${obj.lat || ''}°N, ${obj.lon || ''}°W`; + return "".concat(obj.lat || '', "\xB0N, ").concat(obj.lon || '', "\xB0W"); } return ''; @@ -7803,10 +7123,12 @@ const templates$1 = { //{{coord|dd|mm|N/S|dd|mm|E/W|coordinate parameters|template parameters}} //{{coord|dd|mm|ss|N/S|dd|mm|ss|E/W|coordinate parameters|template parameters}} -var geo = templates$1; +var geo = templates$3; + +const parse$7 = toJSON$4; const generic = function (tmpl, list, _parser, alias) { - let obj = toJSON(tmpl); + let obj = parse$7(tmpl); if (alias) { obj.name = obj.template; @@ -7835,6 +7157,7 @@ const misc = { }; var misc_1 = misc; +const parse$6 = toJSON$4; const codes = { adx: 'adx', //https://en.wikipedia.org/wiki/Template:Abu_Dhabi_Securities_Exchange @@ -8039,7 +7362,7 @@ const codes = { }; const parseStockExchange = (tmpl, list) => { - let o = toJSON(tmpl, ['ticketnumber', 'code']); + let o = parse$6(tmpl, ['ticketnumber', 'code']); list.push(o); let code = o.template || ''; @@ -8051,7 +7374,7 @@ const parseStockExchange = (tmpl, list) => { let str = codes[code] || ''; if (o.ticketnumber) { - str = `${str}: ${o.ticketnumber}`; + str = "".concat(str, ": ").concat(o.ticketnumber); } if (o.code && !codes[o.code.toLowerCase()]) { @@ -8068,6 +7391,8 @@ Object.keys(codes).forEach(k => { }); var stockExchanges = exchanges; +const parse$5 = toJSON$4; + const zeroPad = function (num) { num = String(num); @@ -8079,11 +7404,11 @@ const zeroPad = function (num) { }; const parseTeam = function (obj, round, team) { - if (obj[`rd${round}-team${zeroPad(team)}`]) { + if (obj["rd".concat(round, "-team").concat(zeroPad(team))]) { team = zeroPad(team); } - let score = obj[`rd${round}-score${team}`]; + let score = obj["rd".concat(round, "-score").concat(team)]; let num = Number(score); if (isNaN(num) === false) { @@ -8091,23 +7416,23 @@ const parseTeam = function (obj, round, team) { } return { - team: obj[`rd${round}-team${team}`], + team: obj["rd".concat(round, "-team").concat(team)], score: score, - seed: obj[`rd${round}-seed${team}`] + seed: obj["rd".concat(round, "-seed").concat(team)] }; }; // https://en.wikipedia.org/wiki/Category:Tournament_bracket_templates //these are weird. -const playoffBracket = function (tmpl) { +const playoffBracket$1 = function (tmpl) { let rounds = []; - let obj = toJSON(tmpl); //try some rounds + let obj = parse$5(tmpl); //try some rounds for (let i = 1; i < 7; i += 1) { let round = []; for (let t = 1; t < 16; t += 2) { - let key = `rd${i}-team`; + let key = "rd".concat(i, "-team"); if (obj[key + t] || obj[key + zeroPad(t)]) { let one = parseTeam(obj, i, t); @@ -8129,19 +7454,22 @@ const playoffBracket = function (tmpl) { }; }; -var _lib = playoffBracket; +var _lib = playoffBracket$1; +const parse$4 = toJSON$4; +const flags = flags$2; +const playoffBracket = _lib; let sports = { //playoff brackets '4teambracket': function (tmpl, list) { - let obj = _lib(tmpl); + let obj = playoffBracket(tmpl); list.push(obj); return ''; }, player: (tmpl, list) => { - let res = toJSON(tmpl, ['number', 'country', 'name', 'dl']); + let res = parse$4(tmpl, ['number', 'country', 'name', 'dl']); list.push(res); - let str = `[[${res.name}]]`; + let str = "[[".concat(res.name, "]]"); if (res.country) { let country = (res.country || '').toLowerCase(); @@ -8160,7 +7488,7 @@ let sports = { }, //https://en.wikipedia.org/wiki/Template:Goal goal: (tmpl, list) => { - let res = toJSON(tmpl); + let res = parse$4(tmpl); let obj = { template: 'goal', data: [] @@ -8181,7 +7509,7 @@ let sports = { let note = o.note; if (note) { - note = ` (${note})`; + note = " (".concat(note, ")"); } return o.min + "'" + note; @@ -8191,18 +7519,18 @@ let sports = { //a transcluded sports module - https://en.m.wikipedia.org/w/index.php?title=Special:WhatLinksHere/Module:Sports_table // https://en.wikipedia.org/wiki/Template:2020–21_NHL_North_Division_standings 'sports table': (tmpl, list) => { - let obj = toJSON(tmpl); + let obj = parse$4(tmpl); let byTeam = {}; let teams = Object.keys(obj).filter(k => /^team[0-9]/.test(k)).map(k => obj[k].toLowerCase()); teams.forEach(team => { byTeam[team] = { - name: obj[`name_${team}`], - win: Number(obj[`win_${team}`]) || 0, - loss: Number(obj[`loss_${team}`]) || 0, - tie: Number(obj[`tie_${team}`]) || 0, - otloss: Number(obj[`otloss_${team}`]) || 0, - goals_for: Number(obj[`gf_${team}`]) || 0, - goals_against: Number(obj[`ga_${team}`]) || 0 + name: obj["name_".concat(team)], + win: Number(obj["win_".concat(team)]) || 0, + loss: Number(obj["loss_".concat(team)]) || 0, + tie: Number(obj["tie_".concat(team)]) || 0, + otloss: Number(obj["otloss_".concat(team)]) || 0, + goals_for: Number(obj["gf_".concat(team)]) || 0, + goals_against: Number(obj["ga_".concat(team)]) || 0 }; }); let res = { @@ -8217,38 +7545,43 @@ var sports_1 = sports; var textAndData = Object.assign({}, shorthand, functions, currency, dates, geo, misc_1, stockExchanges, _lib, sports_1, _lib, sports_1); -let templates = Object.assign({}, textOnly, dataOnly, textAndData); -Object.keys(aliases_1).forEach(k => { +const aliases = aliases_1; +let templates$2 = Object.assign({}, textOnly, dataOnly, textAndData); +Object.keys(aliases).forEach(k => { // if (templates[aliases[k]] === undefined) { // console.error(`Missing template: '${aliases[k]}'`) // } - templates[k] = templates[aliases_1[k]]; + templates$2[k] = templates$2[aliases[k]]; }); -var custom = templates; // console.log(Object.keys(templates).length) +var custom = templates$2; // console.log(Object.keys(templates).length) +const ignore = _ignore; +const infobox = _infobox; +const templates$1 = custom; +const toJSON$2 = toJSON$4; const { isArray: isArray$2, isObject -} = helpers; +} = helpers$1; const nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; //this gets all the {{template}} objects and decides how to parse them -const parseTemplate = function (tmpl, doc) { +const parseTemplate$1 = function (tmpl, doc) { let name = tmpl.name; // dont bother with some junk templates - if (_ignore.hasOwnProperty(name) === true) { + if (ignore.hasOwnProperty(name) === true) { return ['']; } //{{infobox settlement...}} - if (_infobox.isInfobox(name) === true) { - let obj = toJSON(tmpl.body, [], 'raw'); // list.push(infobox.format(obj)) + if (infobox.isInfobox(name) === true) { + let obj = toJSON$2(tmpl.body, [], 'raw'); // list.push(infobox.format(obj)) - return ['', _infobox.format(obj)]; + return ['', infobox.format(obj)]; } //cite book, cite arxiv... if (/^cite [a-z]/.test(name) === true) { - let obj = toJSON(tmpl.body); + let obj = toJSON$2(tmpl.body); obj.type = obj.template; obj.template = 'citation'; // list.push(obj) @@ -8257,45 +7590,45 @@ const parseTemplate = function (tmpl, doc) { //parse some known templates - if (custom.hasOwnProperty(name) === true) { + if (templates$1.hasOwnProperty(name) === true) { //handle number-syntax - if (typeof custom[name] === 'number') { - let obj = toJSON(tmpl.body, nums); - let key = String(custom[name]); + if (typeof templates$1[name] === 'number') { + let obj = toJSON$2(tmpl.body, nums); + let key = String(templates$1[name]); return [obj[key] || '']; } //handle string-syntax - if (typeof custom[name] === 'string') { - return [custom[name]]; + if (typeof templates$1[name] === 'string') { + return [templates$1[name]]; } //handle array sytax - if (isArray$2(custom[name]) === true) { - let obj = toJSON(tmpl.body, custom[name]); // list.push(obj) + if (isArray$2(templates$1[name]) === true) { + let obj = toJSON$2(tmpl.body, templates$1[name]); // list.push(obj) return ['', obj]; } //handle object sytax - if (isObject(custom[name]) === true) { - let obj = toJSON(tmpl.body, custom[name].props); // list.push(obj) + if (isObject(templates$1[name]) === true) { + let obj = toJSON$2(tmpl.body, templates$1[name].props); // list.push(obj) - return [obj[custom[name].out], obj]; + return [obj[templates$1[name].out], obj]; } //handle function syntax - if (typeof custom[name] === 'function') { + if (typeof templates$1[name] === 'function') { // let json = toJSON(tmpl.body) //(tmpl, list, alias, doc) let arr = []; - let txt = custom[name](tmpl.body, arr, toJSON, null, doc); + let txt = templates$1[name](tmpl.body, arr, toJSON$2, null, doc); return [txt, arr[0]]; } } //an unknown template with data, so just keep it. - let json = toJSON(tmpl.body); + let json = toJSON$2(tmpl.body); if (Object.keys(json).length === 0) { // list.push(json) @@ -8306,9 +7639,11 @@ const parseTemplate = function (tmpl, doc) { return ['', json]; }; -var parse$3 = parseTemplate; +var parse$3 = parseTemplate$1; + +const encode = encode$4; //turn an infobox into some nice json -const toJson = function (infobox, options) { +const toJson$1 = function (infobox, options) { let json = Object.keys(infobox.data).reduce((h, k) => { if (infobox.data[k]) { h[k] = infobox.data[k].json(); @@ -8324,20 +7659,24 @@ const toJson = function (infobox, options) { return json; }; -var toJson_1 = toJson; +var toJson_1 = toJson$1; +const toJson = toJson_1; +const Image$2 = Image_1; const { isArray: isArray$1 -} = helpers; +} = helpers$1; +const Sentence = Sentence_1; -const normalize = (str = '') => { +const normalize = function () { + let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; str = str.toLowerCase(); str = str.replace(/[-_]/g, ' '); return str.trim(); }; //a formal key-value data table about a topic -const Infobox = function (obj, wiki) { +const Infobox$1 = function (obj, wiki) { this._type = obj.type; this.domain = obj.domain; Object.defineProperty(this, 'data', { @@ -8382,7 +7721,7 @@ const methods$1 = { obj.text = ''; obj.domain = this.domain; // add domain information for image - return new Image_1(obj); + return new Image$2(obj); }, get: function (keys) { let allKeys = Object.keys(this.data); @@ -8398,7 +7737,7 @@ const methods$1 = { } } - return new Sentence_1(); + return new Sentence(); } if (isArray$1(keys)) { @@ -8413,18 +7752,18 @@ const methods$1 = { } } - return new Sentence_1(); + return new Sentence(); }); } - return new Sentence_1(); + return new Sentence(); }, text: function () { return ''; }, json: function (options) { options = options || {}; - return toJson_1(this, options); + return toJson(this, options); }, wikitext: function () { return this.wiki || ''; @@ -8441,12 +7780,12 @@ const methods$1 = { }; //aliases Object.keys(methods$1).forEach(k => { - Infobox.prototype[k] = methods$1[k]; + Infobox$1.prototype[k] = methods$1[k]; }); -Infobox.prototype.data = Infobox.prototype.keyValue; -Infobox.prototype.template = Infobox.prototype.type; -Infobox.prototype.images = Infobox.prototype.image; -var Infobox_1 = Infobox; +Infobox$1.prototype.data = Infobox$1.prototype.keyValue; +Infobox$1.prototype.template = Infobox$1.prototype.type; +Infobox$1.prototype.images = Infobox$1.prototype.image; +var Infobox_1 = Infobox$1; const toText = _04Sentence.fromText; const methods = { @@ -8462,7 +7801,9 @@ const methods = { } }; -const Template = function (data, text = '', wiki = '') { +const Template$2 = function (data) { + let text = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + let wiki = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; Object.defineProperty(this, 'data', { enumerable: false, value: data @@ -8478,10 +7819,13 @@ const Template = function (data, text = '', wiki = '') { }; Object.keys(methods).forEach(k => { - Template.prototype[k] = methods[k]; + Template$2.prototype[k] = methods[k]; }); -var Template_1 = Template; +var Template_1 = Template$2; +const Infobox = Infobox_1; +const Reference = Reference_1; +const Template$1 = Template_1; const isCitation = /^(cite |citation)/i; const referenceTypes = { citation: true, @@ -8491,7 +7835,7 @@ const referenceTypes = { }; // split Infoboxes from templates and references -const sortOut = function (list, domain) { +const sortOut$1 = function (list, domain) { let res = { infoboxes: [], templates: [], @@ -8503,7 +7847,7 @@ const sortOut = function (list, domain) { let kind = json.template || json.type || json.name; // is it a Reference? if (referenceTypes[kind] === true || isCitation.test(kind) === true) { - res.references.push(new Reference_1(json, obj.wiki)); + res.references.push(new Reference(json, obj.wiki)); return; } // is it an Infobox? @@ -8513,22 +7857,26 @@ const sortOut = function (list, domain) { json.data = json.data || {}; //validate it a little - res.infoboxes.push(new Infobox_1(json, obj.wiki)); + res.infoboxes.push(new Infobox(json, obj.wiki)); return; } // otherwise, it's just a template - res.templates.push(new Template_1(json, obj.text, obj.wiki)); + res.templates.push(new Template$1(json, obj.text, obj.wiki)); }); return res; }; -var sortOut_1 = sortOut; +var sortOut_1 = sortOut$1; + +const findTemplates = _01Nested; +const parseTemplate = parse$3; +const sortOut = sortOut_1; // return a flat list of all {{templates}} const allTemplates = function (wiki, doc) { let list = []; //nested data-structure of templates - let nested = _01Nested(wiki); //recursive template-parser + let nested = findTemplates(wiki); //recursive template-parser const parseNested = function (obj, parent) { obj.parent = parent; //do tail-first recursion @@ -8538,7 +7886,7 @@ const allTemplates = function (wiki, doc) { } //parse template into json, return replacement wikitext - let [text, json] = parse$3(obj, doc); + let [text, json] = parseTemplate(obj, doc); obj.wiki = text; if (json) { @@ -8587,7 +7935,7 @@ const process = function (section, doc) { infoboxes, references, templates - } = sortOut_1(list, domain); //sort-out the templates we decide to keep + } = sortOut(list, domain); //sort-out the templates we decide to keep section._infoboxes = section._infoboxes || []; section._references = section._references || []; @@ -8600,7 +7948,8 @@ const process = function (section, doc) { var template = process; -const parseSentence$1 = _04Sentence.fromText; //okay, is a xml-tag, with newline-separated data, somehow pivoted by '|'... +const parseSentence$1 = _04Sentence.fromText; +const Image$1 = Image_1; //okay, is a xml-tag, with newline-separated data, somehow pivoted by '|'... //all deities help us. truly -> https://en.wikipedia.org/wiki/Help:Gallery_tag //- not to be confused with https://en.wikipedia.org/wiki/Template:Gallery... @@ -8612,7 +7961,7 @@ const parseSentence$1 = _04Sentence.fromText; //okay, is a xml-tag, wi * @param {Section} section */ -const parseGallery = function (catcher, doc, section) { +const parseGallery$1 = function (catcher, doc, section) { catcher.text = catcher.text.replace(/]*)>([\s\S]+)<\/gallery>/g, (_, attrs, inside) => { let images = inside.split(/\n/g); images = images.filter(str => str && str.trim() !== ''); //parse the line, which has an image and sometimes a caption @@ -8624,7 +7973,7 @@ const parseGallery = function (catcher, doc, section) { lang: doc.lang(), domain: doc.domain() }; - let img = new Image_1(obj).json(); + let img = new Image$1(obj).json(); let caption = arr.slice(1).join('|'); if (caption !== '') { @@ -8647,8 +7996,9 @@ const parseGallery = function (catcher, doc, section) { }); }; -var gallery = parseGallery; +var gallery = parseGallery$1; +const parseTemplates = template; /** * parses out the `Election_box` template from the wiki text * @@ -8659,14 +8009,14 @@ var gallery = parseGallery; * @param {object} catcher an object to provide and catch data */ -const parseElection = function (catcher) { +const parseElection$1 = function (catcher) { catcher.text = catcher.text.replace(/\{\{election box begin([\s\S]+?)\{\{election box end\}\}/gi, tmpl => { let data = { _wiki: tmpl, _templates: [] }; //put it through our full template parser.. - template(data); //okay, pull it apart into something sensible.. + parseTemplates(data); //okay, pull it apart into something sensible.. let templates = data._templates.map(t => t.json()); @@ -8688,8 +8038,9 @@ const parseElection = function (catcher) { }); }; -var election = parseElection; +var election = parseElection$1; +const tableParser$2 = parse$i; const keys = { coach: ['team', 'year', 'g', 'w', 'l', 'w-l%', 'finish', 'pg', 'pw', 'pl', 'pw-l%'], player: ['year', 'team', 'gp', 'gs', 'mpg', 'fg%', '3p%', 'ft%', 'rpg', 'apg', 'spg', 'bpg', 'ppg'], @@ -8702,14 +8053,14 @@ const keys = { * @param {object} catcher */ -const parseNBA = function (catcher) { +const parseNBA$1 = function (catcher) { catcher.text = catcher.text.replace(/\{\{nba (coach|player|roster) statistics start([\s\S]+?)\{\{s-end\}\}/gi, (tmpl, name) => { tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); tmpl = tmpl.replace(/\{\{s-end\}\}/, ''); name = name.toLowerCase().trim(); let headers = '! ' + keys[name].join(' !! '); let table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - let rows = parse$5(table); + let rows = tableParser$2(table); rows = rows.map(row => { Object.keys(row).forEach(k => { row[k] = row[k].text(); @@ -8725,8 +8076,9 @@ const parseNBA = function (catcher) { }); }; -var nba = parseNBA; +var nba = parseNBA$1; +const tableParser$1 = parse$i; //https://en.wikipedia.org/wiki/Template:MLB_game_log_section //this is pretty nuts const whichHeadings = function (tmpl) { @@ -8753,14 +8105,14 @@ const whichHeadings = function (tmpl) { */ -const parseMlb = function (catcher) { +const parseMlb$1 = function (catcher) { catcher.text = catcher.text.replace(/\{\{mlb game log (section|month)[\s\S]+?\{\{mlb game log (section|month) end\}\}/gi, tmpl => { let headings = whichHeadings(tmpl); tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); tmpl = tmpl.replace(/\{\{mlb game log (section|month) end\}\}/i, ''); let headers = '! ' + headings.join(' !! '); let table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - let rows = parse$5(table); + let rows = tableParser$1(table); rows = rows.map(row => { Object.keys(row).forEach(k => { row[k] = row[k].text(); @@ -8776,8 +8128,9 @@ const parseMlb = function (catcher) { }); }; -var mlb = parseMlb; +var mlb = parseMlb$1; +const tableParser = parse$i; let headings = ['res', 'record', 'opponent', 'method', 'event', 'date', 'round', 'time', 'location', 'notes']; /** * @@ -8787,13 +8140,13 @@ let headings = ['res', 'record', 'opponent', 'method', 'event', 'date', 'round', * @param {object} catcher */ -const parseMMA = function (catcher) { +const parseMMA$1 = function (catcher) { catcher.text = catcher.text.replace(/\{\{mma record start[\s\S]+?\{\{end\}\}/gi, tmpl => { tmpl = tmpl.replace(/^\{\{.*?\}\}/, ''); tmpl = tmpl.replace(/\{\{end\}\}/i, ''); let headers = '! ' + headings.join(' !! '); let table = '{|\n' + headers + '\n' + tmpl + '\n|}'; - let rows = parse$5(table); + let rows = tableParser(table); rows = rows.map(row => { Object.keys(row).forEach(k => { row[k] = row[k].text(); @@ -8809,7 +8162,7 @@ const parseMMA = function (catcher) { }); }; -var mma = parseMMA; +var mma = parseMMA$1; const parseSentence = _04Sentence.fromText; /** @@ -8822,7 +8175,7 @@ const parseSentence = _04Sentence.fromText; * @param {object} catcher */ -const parseMath = function (catcher) { +const parseMath$1 = function (catcher) { catcher.text = catcher.text.replace(/]*)>([\s\S]+)<\/math>/g, (_, attrs, inside) => { //clean it up a little? let formula = parseSentence(inside).text(); @@ -8850,8 +8203,15 @@ const parseMath = function (catcher) { }); }; -var math = parseMath; +var math = parseMath$1; +const parseGallery = gallery; +const parseElection = election; +const parseNBA = nba; +const parseMlb = mlb; +const parseMMA = mma; +const parseMath = math; +const Template = Template_1; /** * parses out non standard templates * @@ -8870,19 +8230,21 @@ const xmlTemplates = function (section, doc) { templates: [], text: section._wiki }; - election(res); - gallery(res, doc, section); - math(res); - mlb(res); - mma(res); - nba(res); // turn them into Template objects - - res.templates = res.templates.map(obj => new Template_1(obj)); + parseElection(res); + parseGallery(res, doc, section); + parseMath(res); + parseMlb(res); + parseMMA(res); + parseNBA(res); // turn them into Template objects + + res.templates = res.templates.map(obj => new Template(obj)); return res; }; var startToEnd = xmlTemplates; +const toJSON$1 = toJson$6; +const setDefaults$1 = setDefaults_1; const parse$2 = { heading: heading, table: table, @@ -8905,7 +8267,7 @@ const defaults$2 = { * @class */ -class Section { +class Section$1 { /** * the stuff between headings - 'History' section for example * @@ -9381,7 +8743,7 @@ class Section { text(options) { - options = setDefaults_1(options, defaults$2); + options = setDefaults$1(options, defaults$2); return this.paragraphs().map(p => p.text(options)).join('\n\n'); } /** @@ -9403,13 +8765,13 @@ class Section { json(options) { - options = setDefaults_1(options, defaults$2); - return toJson$4(this, options); + options = setDefaults$1(options, defaults$2); + return toJSON$1(this, options); } } -Section.prototype.citations = Section.prototype.references; // aliases +Section$1.prototype.citations = Section$1.prototype.references; // aliases const singular$1 = { sentences: 'sentence', @@ -9427,7 +8789,7 @@ const singular$1 = { Object.keys(singular$1).forEach(k => { let sing = singular$1[k]; - Section.prototype[sing] = function (clue) { + Section$1.prototype[sing] = function (clue) { let arr = this[k](clue); if (typeof clue === 'number') { @@ -9437,9 +8799,11 @@ Object.keys(singular$1).forEach(k => { return arr[0] || null; }; }); -var Section_1 = Section; +var Section_1 = Section$1; -const isReference = new RegExp('^(' + i18n.references.join('|') + '):?', 'i'); +const Section = Section_1; +const i18n$1 = i18n$6; +const isReference = new RegExp('^(' + i18n$1.references.join('|') + '):?', 'i'); const section_reg = /(?:\n|^)(={2,5}.{1,200}?={2,5})/g; //interpret ==heading== lines const parse$1 = { @@ -9507,7 +8871,7 @@ const parseSections = function (doc) { }; //figure-out title and depth parse$1.heading(data, heading); - sections.push(new Section_1(data, doc)); + sections.push(new Section(data, doc)); } //remove empty references section @@ -9516,6 +8880,7 @@ const parseSections = function (doc) { var _02Section = parseSections; +const i18n = i18n$6; const cat_reg = new RegExp('\\[\\[:?(' + i18n.categories.join('|') + '):(.{2,178}?)]](w{0,10})', 'gi'); const cat_remove_reg = new RegExp('^\\[\\[:?(' + i18n.categories.join('|') + '):', 'gi'); @@ -9542,6 +8907,13 @@ const parse_categories = function (wiki) { var categories = parse_categories; +const sectionMap = _sectionMap; +const toJSON = toJson$9; +const isDisambig = isDisambig_1; +const setDefaults = setDefaults_1; +const Image = Image_1; +const redirects = redirects$1; +const preProcess = preProcess_1; const parse = { section: _02Section, categories: categories @@ -9559,7 +8931,7 @@ const defaults$1 = { * @class */ -class Document { +class Document$2 { /** * The constructor for the document class * This function starts parsing the wiki text and sets the options in the class @@ -9602,7 +8974,7 @@ class Document { } //give ourselves a little head-start - this._wiki = preProcess_1(this._wiki); //pull-out [[category:whatevers]] + this._wiki = preProcess(this._wiki); //pull-out [[category:whatevers]] const [categories, newWiki] = parse.categories(this._wiki); this._categories = categories; @@ -9729,7 +9101,7 @@ class Document { title = title.replace(/ /g, '_'); title = encodeURIComponent(title); - return `https://${lang}.${domain}/wiki/${title}`; + return "https://".concat(lang, ".").concat(domain, "/wiki/").concat(title); } /** * If an namespace is given then it sets the namespace and returns the given namespace @@ -9775,7 +9147,7 @@ class Document { isDisambiguation() { - return isDisambig_1(this); + return isDisambig(this); } /** * If a clue is available return the category at that index @@ -9876,7 +9248,7 @@ class Document { images(clue) { - let arr = _sectionMap(this, 'images', null); //grab image from infobox, first + let arr = sectionMap(this, 'images', null); //grab image from infobox, first this.infoboxes().forEach(info => { let img = info.image(); @@ -9890,10 +9262,10 @@ class Document { if (obj.data.template === 'gallery') { obj.data.images = obj.data.images || []; obj.data.images.forEach(img => { - if (!(img instanceof Image_1)) { + if (!(img instanceof Image)) { img.language = this.language(); img.domain = this.domain(); - img = new Image_1(img); + img = new Image(img); } arr.push(img); @@ -9916,7 +9288,7 @@ class Document { links(clue) { - return _sectionMap(this, 'links', clue); + return sectionMap(this, 'links', clue); } /** * Return all inter wiki links or if a clue is provided only the inter wiki link at that index @@ -9927,7 +9299,7 @@ class Document { interwiki(clue) { - return _sectionMap(this, 'interwiki', clue); + return sectionMap(this, 'interwiki', clue); } /** * If a clue is available return the list at that index @@ -9939,7 +9311,7 @@ class Document { lists(clue) { - return _sectionMap(this, 'lists', clue); + return sectionMap(this, 'lists', clue); } /** * If a clue is available return the tables at that index @@ -9951,7 +9323,7 @@ class Document { tables(clue) { - return _sectionMap(this, 'tables', clue); + return sectionMap(this, 'tables', clue); } /** * If a clue is available return the template at that index @@ -9963,7 +9335,7 @@ class Document { templates(clue) { - return _sectionMap(this, 'templates', clue); + return sectionMap(this, 'templates', clue); } /** * If a clue is available return the references at that index @@ -9975,7 +9347,7 @@ class Document { references(clue) { - return _sectionMap(this, 'references', clue); + return sectionMap(this, 'references', clue); } /** * Returns the 0th or clue-th reference @@ -9998,7 +9370,7 @@ class Document { coordinates(clue) { - return _sectionMap(this, 'coordinates', clue); + return sectionMap(this, 'coordinates', clue); } /** * If clue is unidentified then it returns all infoboxes @@ -10011,7 +9383,7 @@ class Document { infoboxes(clue) { - let arr = _sectionMap(this, 'infoboxes', clue); //sort them by biggest-first + let arr = sectionMap(this, 'infoboxes', clue); //sort them by biggest-first arr = arr.sort((a, b) => { if (Object.keys(a.data).length > Object.keys(b.data).length) { @@ -10031,7 +9403,7 @@ class Document { text(options) { - options = setDefaults_1(options, defaults$1); //nah, skip these. + options = setDefaults(options, defaults$1); //nah, skip these. if (this.isRedirect() === true) { return ''; @@ -10049,8 +9421,8 @@ class Document { json(options) { - options = setDefaults_1(options, defaults$1); - return toJson$6(this, options); + options = setDefaults(options, defaults$1); + return toJSON(this, options); } /** * return original wiki markup @@ -10105,24 +9477,25 @@ const singular = { Object.keys(singular).forEach(k => { let sing = singular[k]; - Document.prototype[sing] = function (clue) { + Document$2.prototype[sing] = function (clue) { let arr = this[k](clue); return arr[0] || null; }; }); -Document.prototype.lang = Document.prototype.language; -Document.prototype.ns = Document.prototype.namespace; -Document.prototype.plaintext = Document.prototype.text; -Document.prototype.isDisambig = Document.prototype.isDisambiguation; -Document.prototype.citations = Document.prototype.references; -Document.prototype.redirectsTo = Document.prototype.redirectTo; -Document.prototype.redirect = Document.prototype.redirectTo; -Document.prototype.redirects = Document.prototype.redirectTo; -var Document_1 = Document; - +Document$2.prototype.lang = Document$2.prototype.language; +Document$2.prototype.ns = Document$2.prototype.namespace; +Document$2.prototype.plaintext = Document$2.prototype.text; +Document$2.prototype.isDisambig = Document$2.prototype.isDisambiguation; +Document$2.prototype.citations = Document$2.prototype.references; +Document$2.prototype.redirectsTo = Document$2.prototype.redirectTo; +Document$2.prototype.redirect = Document$2.prototype.redirectTo; +Document$2.prototype.redirects = Document$2.prototype.redirectTo; +var Document_1 = Document$2; + +const Document$1 = Document_1; const { isArray -} = helpers; +} = helpers$1; /** * this function puts all responses into proper Document objects * @@ -10132,12 +9505,12 @@ const { * @returns {null| Document | Document[]} null if there are no results or Document if there is one responses and Document array if there are multiple responses */ -const parseDoc = function (res, title) { +const parseDoc$1 = function (res, title) { // filter out undefined res = res.filter(o => o); // put all the responses into Document formats let docs = res.map(o => { - return new Document_1(o.wiki, o.meta); + return new Document$1(o.wiki, o.meta); }); // if the list is empty than there are no results if (docs.length === 0) { @@ -10152,7 +9525,7 @@ const parseDoc = function (res, title) { return docs; }; -var parseDoc_1 = parseDoc; +var parseDoc_1 = parseDoc$1; /** * factory for header options @@ -10161,7 +9534,8 @@ var parseDoc_1 = parseDoc; * @param {object} options * @returns {object} the generated options */ -const makeHeaders = function (options) { + +const makeHeaders$1 = function (options) { let agent = options.userAgent || options['User-Agent'] || options['Api-User-Agent'] || 'User of the wtf_wikipedia library'; let origin; @@ -10184,8 +9558,14 @@ const makeHeaders = function (options) { }; }; -var _headers = makeHeaders; +var _headers = makeHeaders$1; +const unfetch$1 = require$$0; +const parseUrl = parseUrl_1; +const makeUrl = makeUrl_1; +const getResult = getResult_1; +const parseDoc = parseDoc_1; +const makeHeaders = _headers; const isUrl = /^https?:\/\//; /** * @typedef fetchDefaults @@ -10225,7 +9605,7 @@ const defaults = { * @returns {Promise} either null if the pages is not found, Document if you asked for one result, and a array of Documents if you asked for multiple pages */ -const fetch$1 = function (title, options, callback) { +const fetch$2 = function (title, options, callback) { // support lang as 2nd param if (typeof options === 'string') { options = { @@ -10240,15 +9620,15 @@ const fetch$1 = function (title, options, callback) { if (typeof title === 'string' && isUrl.test(title)) { options = { ...options, - ...parseUrl_1(title) + ...parseUrl(title) }; } - const url = makeUrl_1(options); - const headers = _headers(options); - return isomorphicUnfetch(url, headers).then(res => res.json()).then(res => { - let data = getResult_1(res, options); - data = parseDoc_1(data, title); + const url = makeUrl(options); + const headers = makeHeaders(options); + return unfetch$1(url, headers).then(res => res.json()).then(res => { + let data = getResult(res, options); + data = parseDoc(data, title); if (callback) { callback(null, data); @@ -10266,10 +9646,11 @@ const fetch$1 = function (title, options, callback) { }); }; -var _fetch = fetch$1; +var _fetch = fetch$2; -var _version = '9.0.1'; +var _version = '9.0.2'; +const unfetch = require$$0; /** * use the native client-side fetch function * @@ -10280,15 +9661,19 @@ var _version = '9.0.1'; */ const request = function (url, opts) { - return isomorphicUnfetch(url, opts).then(function (res) { + return unfetch(url, opts).then(function (res) { return res.json(); }); }; -var fetch = request; +var fetch$1 = request; + +const fetch = _fetch; +const version = _version; +const Document = Document_1; //the main 'factory' exported method const wtf = function (wiki, options) { - return new Document_1(wiki, options); + return new Document(wiki, options); }; //export classes for plugin development @@ -10304,21 +9689,23 @@ const models = { Reference: Reference_1, Table: Table_1, Template: Template_1, - http: fetch, + http: fetch$1, wtf: wtf }; +let templates = custom; +let infoboxes = _infoboxes; wtf.fetch = function (title, options, cb) { - return _fetch(title, options, cb); + return fetch(title, options, cb); }; wtf.extend = function (fn) { - fn(models, custom, _infoboxes); + fn(models, templates, infoboxes); return this; }; wtf.plugin = wtf.extend; -wtf.version = _version; +wtf.version = version; var src = wtf; export { src as default }; diff --git a/codecov.yml b/codecov.yml index 7302e577..2e489ebf 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,3 +1,11 @@ comment: false branches: - 'master' +codecov: + require_ci_to_pass: no +coverage: + status: + project: + default: + target: 80% # the required coverage value + threshold: 15% # the leniency in hitting the target \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 77610453..3417f12d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,65 +11,71 @@ "license": "MIT", "dependencies": { "isomorphic-unfetch": "^3.1.0", - "path-exists-cli": "2.0.0", - "recursive-install": "1.4.0" + "path-exists-cli": "2.0.0" }, "bin": { "wtf_wikipedia": "cli.js" }, "devDependencies": { - "@babel/core": "7.15.0", - "@babel/preset-env": "7.15.0", - "@rollup/plugin-node-resolve": "13.0.4", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "13.0.6", "amble": "1.3.0", "codecov": "3.8.3", "cross-env": "7.0.3", - "eslint": "7.32.0", - "eslint-plugin-compat": "3.13.0", - "eslint-plugin-regexp": "1.1.0", + "eslint": "8.3.0", + "eslint-plugin-compat": "4.0.0", + "eslint-plugin-regexp": "1.5.0", "nyc": "^15.1.0", - "rollup": "2.56.3", - "rollup-plugin-babel": "4.4.0", - "rollup-plugin-commonjs": "10.1.0", + "recursive-install": "^1.0.1", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-terser": "7.0.2", "shelljs": "0.8.4", "tap-dancer": "0.3.4", - "tape": "5.3.1" + "tape": "5.3.2" }, "engines": { "node": ">=10.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.11", - "license": "MIT", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dependencies": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.15.0", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.15.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.0", - "@babel/helper-module-transforms": "^7.15.0", - "@babel/helpers": "^7.14.8", - "@babel/parser": "^7.15.0", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.15.0", - "@babel/types": "^7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -85,31 +91,13 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { - "version": "7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.15.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -118,36 +106,39 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.15.0", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.15.0", + "@babel/compat-data": "^7.16.0", "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, "engines": { @@ -157,25 +148,18 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-member-expression-to-functions": "^7.15.0", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/helper-replace-supers": "^7.15.0", - "@babel/helper-split-export-declaration": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -185,11 +169,12 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" }, "engines": { @@ -200,9 +185,10 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.2.3", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", "@babel/helper-module-imports": "^7.12.13", @@ -217,106 +203,106 @@ "@babel/core": "^7.4.0-0" } }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.15.0" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-replace-supers": "^7.15.0", - "@babel/helper-simple-access": "^7.14.8", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.9", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.15.0", - "@babel/types": "^7.15.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -324,119 +310,130 @@ }, "node_modules/@babel/helper-plugin-utils": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.14.5", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-wrap-function": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.15.0", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.15.0", - "@babel/types": "^7.15.0" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.14.8", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.14.8" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.9", - "license": "MIT", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.15.3", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.15.0", - "@babel/types": "^7.15.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.14.5", - "license": "MIT", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -445,9 +442,10 @@ } }, "node_modules/@babel/parser": { - "version": "7.15.3", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true, - "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -455,14 +453,30 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -472,12 +486,13 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.14.9", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -488,11 +503,12 @@ } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { @@ -503,11 +519,12 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, @@ -519,9 +536,10 @@ } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -534,9 +552,10 @@ } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -549,9 +568,10 @@ } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -564,9 +584,10 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -579,9 +600,10 @@ } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -594,9 +616,10 @@ } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -609,15 +632,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.14.7", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.14.7", - "@babel/helper-compilation-targets": "^7.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.14.5" + "@babel/plugin-transform-parameters": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -627,9 +651,10 @@ } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -642,12 +667,13 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -658,11 +684,12 @@ } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { @@ -673,12 +700,13 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, @@ -690,11 +718,12 @@ } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { @@ -706,8 +735,9 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -717,8 +747,9 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -728,8 +759,9 @@ }, "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -742,8 +774,9 @@ }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -753,8 +786,9 @@ }, "node_modules/@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -764,8 +798,9 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -775,8 +810,9 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -786,8 +822,9 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -797,8 +834,9 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -808,8 +846,9 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -819,8 +858,9 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -830,8 +870,9 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -841,8 +882,9 @@ }, "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -855,8 +897,9 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -868,9 +911,10 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -882,13 +926,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-module-imports": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" + "@babel/helper-remap-async-to-generator": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -898,9 +943,10 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -912,9 +958,10 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.15.3", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -926,16 +973,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.14.9", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" }, "engines": { @@ -946,9 +994,10 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -960,9 +1009,10 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.14.7", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -974,11 +1024,12 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { @@ -989,9 +1040,10 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1003,11 +1055,12 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { @@ -1018,9 +1071,10 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1032,11 +1086,12 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.14.5", + "@babel/helper-function-name": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { @@ -1047,9 +1102,10 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1061,9 +1117,10 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1075,11 +1132,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, @@ -1091,13 +1149,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.15.0", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.14.8", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1108,14 +1167,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1126,11 +1186,12 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { @@ -1141,11 +1202,12 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.14.9", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -1155,9 +1217,10 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1169,12 +1232,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5" + "@babel/helper-replace-supers": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -1184,9 +1248,10 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.14.5", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1198,9 +1263,10 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1212,9 +1278,10 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, - "license": "MIT", "dependencies": { "regenerator-transform": "^0.14.2" }, @@ -1226,9 +1293,10 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1240,9 +1308,10 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1254,12 +1323,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.14.6", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -1269,9 +1339,10 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1283,9 +1354,10 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1297,9 +1369,10 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1311,9 +1384,10 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1325,11 +1399,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { @@ -1340,30 +1415,32 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.15.0", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.0", + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-async-generator-functions": "^7.14.9", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.14.5", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.14.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.14.5", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", @@ -1378,44 +1455,44 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.14.5", - "@babel/plugin-transform-classes": "^7.14.9", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.14.5", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.15.0", - "@babel/plugin-transform-modules-systemjs": "^7.14.5", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.14.5", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.14.6", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.15.0", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.16.0", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" }, "engines": { @@ -1425,18 +1502,11 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/preset-modules": { - "version": "0.1.4", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -1449,9 +1519,10 @@ } }, "node_modules/@babel/runtime": { - "version": "7.15.3", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, - "license": "MIT", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -1460,41 +1531,32 @@ } }, "node_modules/@babel/template": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/highlight": "^7.14.5" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.15.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.0", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.15.0", - "@babel/types": "^7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1502,23 +1564,13 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/types": { - "version": "7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1526,28 +1578,36 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "0.4.3", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", + "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", + "debug": "^4.3.2", + "espree": "^9.0.0", "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.11.0", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -1558,10 +1618,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -1570,9 +1643,10 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", + "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^1.2.0", "debug": "^4.1.1", @@ -1583,14 +1657,16 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "dev": true, - "license": "BSD-3-Clause" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -1602,23 +1678,131 @@ "node": ">=8" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.2", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/@mdn/browser-compat-data": { - "version": "3.3.14", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "CC0-1.0" + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@mdn/browser-compat-data": { + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-3.3.14.tgz", + "integrity": "sha512-n2RC9d6XatVbWFdHLimzzUJxJ1KY8LdjqrW6YvGPiRmsHkhOUx74/Ct10x5Yo7bC/Jvqx7cDEW8IMPv/+vwEzA==", + "dev": true + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" + } }, "node_modules/@rollup/plugin-node-resolve": { - "version": "13.0.4", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", "dev": true, - "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.1.0", "@types/resolve": "1.17.1", @@ -1636,8 +1820,9 @@ }, "node_modules/@rollup/pluginutils": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, - "license": "MIT", "dependencies": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", @@ -1652,52 +1837,55 @@ }, "node_modules/@rollup/pluginutils/node_modules/estree-walker": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true }, "node_modules/@tootallnate/once": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6" } }, - "node_modules/@types/color-name": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, "node_modules/@types/estree": { "version": "0.0.39", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true }, "node_modules/@types/minimist": { "version": "1.2.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" }, "node_modules/@types/node": { - "version": "14.6.4", - "dev": true, - "license": "MIT" + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", + "dev": true }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" }, "node_modules/@types/resolve": { "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/acorn": { - "version": "7.4.1", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -1707,16 +1895,18 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/agent-base": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, - "license": "MIT", "dependencies": { "debug": "4" }, @@ -1726,8 +1916,9 @@ }, "node_modules/aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -1738,8 +1929,9 @@ }, "node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1753,8 +1945,9 @@ }, "node_modules/amble": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/amble/-/amble-1.3.0.tgz", + "integrity": "sha512-CODkx6oHXpvGTkPechpe9JoZycsQ6xmLrnx4wudkW+gro6HrtAFSThWO5/Nlr0D7UPQolshty9zFVx0890FVbA==", "dev": true, - "license": "MIT", "dependencies": { "chokidar": "3.5.1", "colorette": "1.2.1" @@ -1765,23 +1958,26 @@ }, "node_modules/ansi-colors": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-regex": { - "version": "5.0.0", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { "color-convert": "^1.9.0" }, @@ -1790,9 +1986,10 @@ } }, "node_modules/anymatch": { - "version": "3.1.1", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, - "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -1803,8 +2000,9 @@ }, "node_modules/append-transform": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", "dev": true, - "license": "MIT", "dependencies": { "default-require-extensions": "^3.0.0" }, @@ -1814,59 +2012,50 @@ }, "node_modules/archy": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true }, "node_modules/argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/argv": { "version": "0.0.2", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", "dev": true, "engines": { "node": ">=0.6.10" } }, - "node_modules/array-filter": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/arrify": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "engines": { "node": ">=0.10.0" } }, "node_modules/ast-metadata-inferer": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.7.0.tgz", + "integrity": "sha512-OkMLzd8xelb3gmnp6ToFvvsHLtS6CbagTkFQvQ+ZYFe3/AIl9iKikNR9G7pY3GfOR/2Xc222hwBjzI7HLkE76Q==", "dev": true, - "license": "MIT", "dependencies": { "@mdn/browser-compat-data": "^3.3.14" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/available-typed-arrays": { - "version": "1.0.2", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "dev": true, - "license": "MIT", - "dependencies": { - "array-filter": "^1.0.0" - }, "engines": { "node": ">= 0.4" }, @@ -1876,71 +2065,72 @@ }, "node_modules/babel-plugin-dynamic-import-node": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, - "license": "MIT", "dependencies": { "object.assign": "^4.1.0" } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.2.2", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.2.4", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.14.0" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.2.2", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.2" + "@babel/helper-define-polyfill-provider": "^0.3.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/balanced-match": { - "version": "1.0.0", - "license": "MIT" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/binary-extensions": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/brace-expansion": { "version": "1.1.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1948,8 +2138,9 @@ }, "node_modules/braces": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -1958,15 +2149,16 @@ } }, "node_modules/browserslist": { - "version": "4.16.8", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, - "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001251", - "colorette": "^1.3.0", - "electron-to-chromium": "^1.3.811", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.75" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" @@ -1979,20 +2171,17 @@ "url": "https://opencollective.com/browserslist" } }, - "node_modules/browserslist/node_modules/colorette": { - "version": "1.3.0", - "dev": true, - "license": "MIT" - }, "node_modules/buffer-from": { - "version": "1.1.1", - "dev": true, - "license": "MIT" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "node_modules/builtin-modules": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -2002,8 +2191,9 @@ }, "node_modules/caching-transform": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, - "license": "MIT", "dependencies": { "hasha": "^5.0.0", "make-dir": "^3.0.0", @@ -2016,8 +2206,9 @@ }, "node_modules/call-bind": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -2028,23 +2219,26 @@ }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camelcase": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camelcase-keys": { - "version": "7.0.0", - "license": "MIT", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.1.tgz", + "integrity": "sha512-P331lEls98pW8JLyodNWfzuz91BEDVA4VpW2/SwXnyv2K495tq1N777xzDbFgnEigfA7UIY0xa6PwR/H9jijjA==", "dependencies": { "camelcase": "^6.2.0", "map-obj": "^4.1.0", @@ -2060,7 +2254,8 @@ }, "node_modules/camelcase-keys/node_modules/camelcase": { "version": "6.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "engines": { "node": ">=10" }, @@ -2070,7 +2265,8 @@ }, "node_modules/camelcase-keys/node_modules/type-fest": { "version": "1.4.0", - "license": "(MIT OR CC0-1.0)", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "engines": { "node": ">=10" }, @@ -2079,9 +2275,10 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001252", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true, - "license": "CC-BY-4.0", "funding": { "type": "opencollective", "url": "https://opencollective.com/browserslist" @@ -2089,7 +2286,8 @@ }, "node_modules/chalk": { "version": "2.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -2101,8 +2299,9 @@ }, "node_modules/chokidar": { "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, - "license": "MIT", "dependencies": { "anymatch": "~3.1.1", "braces": "~3.0.2", @@ -2121,33 +2320,30 @@ }, "node_modules/clean-stack": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cliui": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/codecov": { "version": "3.8.3", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.3.tgz", + "integrity": "sha512-Y8Hw+V3HgR7V71xWH2vQ9lyS358CbGCldWlJFR0JirqoGtOoas3R3/OclRTvgUYFK29mmJICDPauVKmpqbwhOA==", + "deprecated": "https://about.codecov.io/blog/codecov-uploader-deprecation-plan/", "dev": true, - "license": "MIT", "dependencies": { "argv": "0.0.2", "ignore-walk": "3.0.4", @@ -2163,67 +2359,78 @@ } }, "node_modules/color-convert": { - "version": "1.9.1", - "license": "MIT", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dependencies": { - "color-name": "^1.1.1" + "color-name": "1.1.3" } }, "node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "node_modules/colorette": { "version": "1.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true }, "node_modules/commander": { "version": "2.20.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "node_modules/comment-parser": { - "version": "1.1.4", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.2.4.tgz", + "integrity": "sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw==", "dev": true, - "license": "MIT", "engines": { - "node": ">= 10.0.0" + "node": ">= 12.0.0" } }, "node_modules/commondir": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true }, "node_modules/concat-map": { "version": "0.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "node_modules/convert-source-map": { - "version": "1.7.0", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.1" } }, "node_modules/core-js": { - "version": "3.16.4", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.1.tgz", + "integrity": "sha512-Tnc7E9iKd/b/ff7GFbhwPVzJzPztGrChB8X8GLqoYGdEOG8IpLnK1xPyo3ZoO3HsK6TodJS58VGPOxA+hLHQMg==", "dev": true, "hasInstallScript": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, "node_modules/core-js-compat": { - "version": "3.16.4", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, - "license": "MIT", "dependencies": { - "browserslist": "^4.16.8", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "funding": { @@ -2233,21 +2440,24 @@ }, "node_modules/core-js-compat/node_modules/semver": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/core-util-is": { "version": "1.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true }, "node_modules/cross-env": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.1" }, @@ -2263,8 +2473,9 @@ }, "node_modules/cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2275,23 +2486,34 @@ } }, "node_modules/debug": { - "version": "4.1.1", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, - "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/decamelize": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "engines": { "node": ">=0.10.0" } }, "node_modules/decamelize-keys": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -2302,15 +2524,17 @@ }, "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "engines": { "node": ">=0.10.0" } }, "node_modules/deep-equal": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "es-get-iterator": "^1.1.1", @@ -2334,26 +2558,30 @@ }, "node_modules/deep-equal/node_modules/isarray": { "version": "2.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true }, "node_modules/deep-is": { - "version": "0.1.3", - "dev": true, - "license": "MIT" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true }, "node_modules/deepmerge": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/default-require-extensions": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", "dev": true, - "license": "MIT", "dependencies": { "strip-bom": "^4.0.0" }, @@ -2363,8 +2591,9 @@ }, "node_modules/define-properties": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, - "license": "MIT", "dependencies": { "object-keys": "^1.0.12" }, @@ -2374,13 +2603,15 @@ }, "node_modules/defined": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true }, "node_modules/doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -2390,8 +2621,9 @@ }, "node_modules/dotignore": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", "dev": true, - "license": "MIT", "dependencies": { "minimatch": "^3.0.4" }, @@ -2400,19 +2632,22 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.826", - "dev": true, - "license": "ISC" + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", + "dev": true }, "node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/enquirer": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1" }, @@ -2422,32 +2657,38 @@ }, "node_modules/error-ex": { "version": "1.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-abstract": { - "version": "1.18.0", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -2458,8 +2699,9 @@ }, "node_modules/es-get-iterator": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.0", @@ -2476,13 +2718,15 @@ }, "node_modules/es-get-iterator/node_modules/isarray": { "version": "2.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true }, "node_modules/es-to-primitive": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, - "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -2497,55 +2741,58 @@ }, "node_modules/es6-error": { "version": "4.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true }, "node_modules/escalade": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "engines": { "node": ">=0.8.0" } }, "node_modules/eslint": { - "version": "7.32.0", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", + "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.0.4", + "@humanwhocodes/config-array": "^0.6.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^7.1.0", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.1.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", + "glob-parent": "^6.0.1", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", @@ -2553,11 +2800,10 @@ "natural-compare": "^1.4.0", "optionator": "^0.9.1", "progress": "^2.0.0", - "regexpp": "^3.1.0", + "regexpp": "^3.2.0", "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -2565,21 +2811,22 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-plugin-compat": { - "version": "3.13.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.0.0.tgz", + "integrity": "sha512-lg9CPq0bsGxNXcLZgxqVAYsUUELIKZPRiwnJJQOHH910zCHEiscO00Sp+w9wflKEa/OtVaYfNhI2jOViRPZtjw==", "dev": true, - "license": "MIT", "dependencies": { "@mdn/browser-compat-data": "^3.3.14", "ast-metadata-inferer": "^0.7.0", "browserslist": "^4.16.8", - "caniuse-lite": "^1.0.30001251", + "caniuse-lite": "^1.0.30001267", "core-js": "^3.16.2", "find-up": "^5.0.0", "lodash.memoize": "4.1.2", @@ -2589,104 +2836,64 @@ "node": ">=9.x" }, "peerDependencies": { - "eslint": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + "eslint": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/eslint-plugin-compat/node_modules/find-up": { - "version": "5.0.0", + "node_modules/eslint-plugin-compat/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, - "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-compat/node_modules/locate-path": { - "version": "6.0.0", + "node_modules/eslint-plugin-regexp": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-1.5.0.tgz", + "integrity": "sha512-OuYlOF6z2VyurEmELUjY58Wqi4TzsWwgF8+XnToItLwSzNHpDuThy/CxWZ6szIcgQ/02plg7/ZAXQ/RPl7uRxQ==", "dev": true, - "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "comment-parser": "^1.1.2", + "eslint-utils": "^3.0.0", + "grapheme-splitter": "^1.0.4", + "jsdoctypeparser": "^9.0.0", + "refa": "^0.9.0", + "regexp-ast-analysis": "^0.3.0", + "regexpp": "^3.2.0", + "scslre": "^0.1.6" }, "engines": { - "node": ">=10" + "node": "^12 || >=14" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-compat/node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-compat/node_modules/p-locate": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-compat/node_modules/semver": { - "version": "7.3.5", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "peerDependencies": { + "eslint": ">=6.0.0" } }, - "node_modules/eslint-plugin-regexp": { - "version": "1.1.0", + "node_modules/eslint-scope": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", + "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", "dev": true, - "license": "MIT", "dependencies": { - "comment-parser": "^1.1.2", - "eslint-utils": "^3.0.0", - "jsdoctypeparser": "^9.0.0", - "refa": "^0.9.0", - "regexp-ast-analysis": "^0.2.4", - "regexpp": "^3.2.0", - "scslre": "^0.1.6" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": "^12 || >=14" - }, - "peerDependencies": { - "eslint": ">=6.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/eslint-plugin-regexp/node_modules/eslint-utils": { + "node_modules/eslint-utils": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "license": "MIT", "dependencies": { "eslint-visitor-keys": "^2.0.0" }, @@ -2700,52 +2907,20 @@ "eslint": ">=5" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, "node_modules/eslint-visitor-keys": { - "version": "2.0.0", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -2756,10 +2931,17 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/eslint/node_modules/chalk": { - "version": "4.1.0", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2773,8 +2955,9 @@ }, "node_modules/eslint/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -2782,10 +2965,17 @@ "node": ">=7.0.0" } }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -2793,10 +2983,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/eslint/node_modules/globals": { - "version": "13.7.0", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -2809,16 +3021,30 @@ }, "node_modules/eslint/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/eslint/node_modules/semver": { - "version": "7.3.4", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2831,8 +3057,9 @@ }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -2842,8 +3069,9 @@ }, "node_modules/eslint/node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -2852,30 +3080,33 @@ } }, "node_modules/espree": { - "version": "7.3.1", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", + "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "acorn": "^7.4.0", + "acorn": "^8.6.0", "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "eslint-visitor-keys": "^3.1.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", "dev": true, - "license": "Apache-2.0", "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -2886,8 +3117,9 @@ }, "node_modules/esquery": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -2895,18 +3127,11 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -2914,67 +3139,68 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, "node_modules/estraverse": { - "version": "4.3.0", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estree-walker": { - "version": "0.6.1", - "dev": true, - "license": "MIT" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true }, "node_modules/esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true }, "node_modules/fast-url-parser": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", "dev": true, - "license": "MIT", "dependencies": { "punycode": "^1.3.2" } }, "node_modules/fast-url-parser/node_modules/punycode": { "version": "1.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "node_modules/file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -2984,8 +3210,9 @@ }, "node_modules/fill-range": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2994,9 +3221,10 @@ } }, "node_modules/find-cache-dir": { - "version": "3.3.1", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -3010,21 +3238,25 @@ } }, "node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dependencies": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/flat-cache": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, - "license": "MIT", "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -3034,27 +3266,31 @@ } }, "node_modules/flatted": { - "version": "3.1.1", - "dev": true, - "license": "ISC" + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "dev": true }, "node_modules/for-each": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, - "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } }, "node_modules/foreach": { "version": "2.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true }, "node_modules/foreground-child": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, - "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^3.0.2" @@ -3064,7 +3300,9 @@ } }, "node_modules/fromentries": { - "version": "1.2.1", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", "dev": true, "funding": [ { @@ -3079,17 +3317,20 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/fs.realpath": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "node_modules/fsevents": { "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "license": "MIT", + "hasInstallScript": true, "optional": true, "os": [ "darwin" @@ -3100,33 +3341,38 @@ }, "node_modules/function-bind": { "version": "1.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/functional-red-black-tree": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true }, "node_modules/gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -3138,15 +3384,34 @@ }, "node_modules/get-package-type": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.0.0" } }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { - "version": "7.1.7", - "license": "ISC", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3164,8 +3429,9 @@ }, "node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -3175,26 +3441,37 @@ }, "node_modules/globals": { "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/graceful-fs": { - "version": "4.2.4", - "license": "ISC" + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true }, "node_modules/hard-rejection": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "engines": { "node": ">=6" } }, "node_modules/has": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dependencies": { "function-bind": "^1.1.1" }, @@ -3204,16 +3481,18 @@ }, "node_modules/has-bigints": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-dynamic-import": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -3223,15 +3502,17 @@ }, "node_modules/has-flag": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "engines": { "node": ">=4" } }, "node_modules/has-symbols": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3241,8 +3522,9 @@ }, "node_modules/has-tostringtag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, - "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -3254,9 +3536,10 @@ } }, "node_modules/hasha": { - "version": "5.2.1", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "dev": true, - "license": "MIT", "dependencies": { "is-stream": "^2.0.0", "type-fest": "^0.8.0" @@ -3269,18 +3552,27 @@ } }, "node_modules/hosted-git-info": { - "version": "2.8.9", - "license": "ISC" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } }, "node_modules/html-escaper": { "version": "2.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, "node_modules/http-proxy-agent": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, - "license": "MIT", "dependencies": { "@tootallnate/once": "1", "agent-base": "6", @@ -3292,8 +3584,9 @@ }, "node_modules/https-proxy-agent": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -3304,24 +3597,27 @@ }, "node_modules/ignore": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/ignore-walk": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", "dev": true, - "license": "ISC", "dependencies": { "minimatch": "^3.0.4" } }, "node_modules/import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -3333,62 +3629,71 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/inflight": { "version": "1.0.6", - "license": "ISC", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "node_modules/inherits": { - "version": "2.0.3", - "license": "ISC" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, - "node_modules/interpret": { - "version": "1.2.0", - "license": "MIT", + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" } }, - "node_modules/invert-kv": { - "version": "1.0.0", - "license": "MIT", + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, "node_modules/is-arguments": { - "version": "1.1.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -3399,20 +3704,26 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "node_modules/is-bigint": { - "version": "1.0.1", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, - "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-binary-path": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -3421,11 +3732,13 @@ } }, "node_modules/is-boolean-object": { - "version": "1.1.0", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -3435,9 +3748,10 @@ } }, "node_modules/is-callable": { - "version": "1.2.3", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3446,8 +3760,9 @@ } }, "node_modules/is-core-module": { - "version": "2.6.0", - "license": "MIT", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", "dependencies": { "has": "^1.0.3" }, @@ -3456,9 +3771,13 @@ } }, "node_modules/is-date-object": { - "version": "1.0.2", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, - "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -3468,24 +3787,27 @@ }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-glob": { - "version": "4.0.1", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -3495,21 +3817,24 @@ }, "node_modules/is-map": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-module": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true }, "node_modules/is-negative-zero": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3519,16 +3844,21 @@ }, "node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { - "version": "1.0.4", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", "dev": true, - "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -3538,28 +3868,26 @@ }, "node_modules/is-plain-obj": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "engines": { "node": ">=0.10.0" } }, "node_modules/is-reference": { - "version": "1.1.4", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, - "license": "MIT", "dependencies": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, - "node_modules/is-reference/node_modules/@types/estree": { - "version": "0.0.39", - "dev": true, - "license": "MIT" - }, "node_modules/is-regex": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -3573,24 +3901,42 @@ }, "node_modules/is-set": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-stream": { - "version": "2.0.0", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-string": { - "version": "1.0.5", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, - "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -3599,11 +3945,12 @@ } }, "node_modules/is-symbol": { - "version": "1.0.3", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, - "license": "MIT", "dependencies": { - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -3613,15 +3960,16 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.5", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", + "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", "dev": true, - "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.2", + "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", - "es-abstract": "^1.18.0-next.2", + "es-abstract": "^1.18.5", "foreach": "^2.0.5", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -3632,67 +3980,84 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "node_modules/is-weakmap": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true, - "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakset": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", + "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-windows": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/isarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "node_modules/isomorphic-unfetch": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", + "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", "dependencies": { "node-fetch": "^2.6.1", "unfetch": "^4.2.0" } }, "node_modules/istanbul-lib-coverage": { - "version": "3.0.0", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-hook": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "append-transform": "^2.0.0" }, @@ -3702,8 +4067,9 @@ }, "node_modules/istanbul-lib-instrument": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.7.5", "@istanbuljs/schema": "^0.1.2", @@ -3714,18 +4080,11 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/istanbul-lib-processinfo": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", "dev": true, - "license": "ISC", "dependencies": { "archy": "^1.0.0", "cross-spawn": "^7.0.0", @@ -3741,8 +4100,9 @@ }, "node_modules/istanbul-lib-report": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", @@ -3754,16 +4114,18 @@ }, "node_modules/istanbul-lib-report/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3772,30 +4134,33 @@ } }, "node_modules/istanbul-lib-source-maps": { - "version": "4.0.0", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", "source-map": "^0.6.1" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-lib-source-maps/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/istanbul-reports": { - "version": "3.0.2", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", + "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -3805,9 +4170,10 @@ } }, "node_modules/jest-worker": { - "version": "26.3.0", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -3819,16 +4185,18 @@ }, "node_modules/jest-worker/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-worker/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3838,12 +4206,14 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -3854,8 +4224,9 @@ }, "node_modules/jsdoctypeparser": { "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", + "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", "dev": true, - "license": "MIT", "bin": { "jsdoctypeparser": "bin/jsdoctypeparser" }, @@ -3865,8 +4236,9 @@ }, "node_modules/jsesc": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, - "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -3876,22 +4248,26 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true }, "node_modules/json5": { - "version": "2.1.3", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.5" }, @@ -3904,25 +4280,17 @@ }, "node_modules/kind-of": { "version": "6.0.3", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "invert-kv": "^1.0.0" - }, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { "node": ">=0.10.0" } }, "node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -3933,85 +4301,51 @@ }, "node_modules/lines-and-columns": { "version": "1.1.6", - "license": "MIT" - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, "node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash.assign": { - "version": "4.2.0", - "license": "MIT" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.debounce": { "version": "4.0.8", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true }, "node_modules/lodash.flattendeep": { "version": "4.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true }, "node_modules/lodash.memoize": { "version": "4.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true }, "node_modules/lodash.merge": { "version": "4.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true }, "node_modules/lru-cache": { "version": "6.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { "yallist": "^4.0.0" }, @@ -4020,17 +4354,19 @@ } }, "node_modules/magic-string": { - "version": "0.25.6", + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, - "license": "MIT", "dependencies": { "sourcemap-codec": "^1.4.4" } }, "node_modules/make-dir": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -4041,17 +4377,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/map-obj": { - "version": "4.2.1", - "license": "MIT", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "engines": { "node": ">=8" }, @@ -4061,7 +4390,8 @@ }, "node_modules/meow": { "version": "10.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.1.tgz", + "integrity": "sha512-uzOAEBTGujHAD6bVzIQQk5kDTgatxmpVmr1pj9QhwsHLEG2AiB+9F08/wmjrZIk4h5pWxERd7+jqGZywYx3ZFw==", "dependencies": { "@types/minimist": "^1.2.2", "camelcase-keys": "^7.0.0", @@ -4084,8 +4414,9 @@ } }, "node_modules/meow/node_modules/decamelize": { - "version": "5.0.0", - "license": "MIT", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", "engines": { "node": ">=10" }, @@ -4093,13 +4424,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/find-up": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, + "node_modules/meow/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "engines": { "node": ">=10" }, @@ -4107,118 +4435,110 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/hosted-git-info": { - "version": "4.0.2", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/meow/node_modules/locate-path": { - "version": "6.0.0", - "license": "MIT", + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "dependencies": { - "p-locate": "^5.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/meow/node_modules/normalize-package-data": { - "version": "3.0.3", - "license": "BSD-2-Clause", + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/meow/node_modules/p-limit": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, - "node_modules/meow/node_modules/p-locate": { - "version": "5.0.0", - "license": "MIT", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", "dependencies": { - "p-limit": "^3.0.2" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "4.x || >=6.0.0" } }, - "node_modules/meow/node_modules/parse-json": { - "version": "5.2.0", - "license": "MIT", + "node_modules/node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "process-on-spawn": "^1.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/read-pkg": { - "version": "6.0.0", - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true }, - "node_modules/meow/node_modules/read-pkg-up": { - "version": "8.0.0", - "license": "MIT", + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dependencies": { - "find-up": "^5.0.0", - "read-pkg": "^6.0.0", - "type-fest": "^1.0.1" + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/meow/node_modules/semver": { + "node_modules/normalize-package-data/node_modules/semver": { "version": "7.3.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -4229,124 +4549,20 @@ "node": ">=10" } }, - "node_modules/meow/node_modules/type-fest": { - "version": "1.4.0", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/yargs-parser": { - "version": "20.2.9", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/min-indent": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "dev": true, - "license": "MIT" - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/node-fetch": { - "version": "2.6.1", - "license": "MIT", - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/node-preload": { - "version": "0.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "process-on-spawn": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-releases": { - "version": "1.1.75", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, "node_modules/normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/nyc": { "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", "dev": true, - "license": "ISC", "dependencies": { "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", @@ -4383,18 +4599,81 @@ "node": ">=8.9" } }, + "node_modules/nyc/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nyc/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/object-inspect": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-is": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -4408,16 +4687,18 @@ }, "node_modules/object-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -4433,15 +4714,18 @@ }, "node_modules/once": { "version": "1.4.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "dependencies": { "wrappy": "1" } }, "node_modules/optionator": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, - "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -4454,45 +4738,39 @@ "node": ">= 0.8.0" } }, - "node_modules/os-locale": { - "version": "1.4.0", - "license": "MIT", - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dependencies": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-map": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, - "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -4502,16 +4780,18 @@ }, "node_modules/p-try": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/package-hash": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", "dev": true, - "license": "ISC", "dependencies": { "graceful-fs": "^4.1.15", "hasha": "^5.0.0", @@ -4524,8 +4804,9 @@ }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -4534,25 +4815,34 @@ } }, "node_modules/parse-json": { - "version": "2.2.0", - "license": "MIT", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dependencies": { - "error-ex": "^1.2.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/path-exists": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "engines": { "node": ">=8" } }, "node_modules/path-exists-cli": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-exists-cli/-/path-exists-cli-2.0.0.tgz", + "integrity": "sha512-qGr0A87KYCznmvabblxyxnzA/MtPZ28wH+4SCMP4tjTFAbzqwvs5xpUZExAYzq5OgHe5vIswzdH5iosCb8YF/Q==", "dependencies": { "meow": "^10.1.1", "path-exists": "^5.0.0" @@ -4569,46 +4859,47 @@ }, "node_modules/path-exists-cli/node_modules/path-exists": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { - "version": "1.0.6", - "license": "MIT" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, - "node_modules/path-type": { - "version": "1.1.0", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "node_modules/picomatch": { - "version": "2.2.2", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -4616,36 +4907,65 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "2.3.0", - "license": "MIT", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/pinkie": { - "version": "2.0.4", - "license": "MIT", + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "license": "MIT", + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "dependencies": { - "pinkie": "^2.0.0" + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { - "find-up": "^4.0.0" + "p-limit": "^2.2.0" }, "engines": { "node": ">=8" @@ -4653,21 +4973,24 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/process-nextick-args": { "version": "2.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "node_modules/process-on-spawn": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", "dev": true, - "license": "MIT", "dependencies": { "fromentries": "^1.2.0" }, @@ -4677,23 +5000,26 @@ }, "node_modules/progress": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/punycode": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/quick-lru": { "version": "5.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "engines": { "node": ">=10" }, @@ -4703,65 +5029,79 @@ }, "node_modules/randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/re-emitter": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", + "dev": true }, "node_modules/read-pkg": { - "version": "1.1.0", - "license": "MIT", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg-up": { - "version": "1.0.1", - "license": "MIT", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "1.1.2", - "license": "MIT", - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "2.1.0", - "license": "MIT", - "dependencies": { - "pinkie-promise": "^2.0.0" - }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -4774,8 +5114,9 @@ }, "node_modules/readdirp": { "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "dev": true, - "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -4785,6 +5126,9 @@ }, "node_modules/rechoir": { "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, "dependencies": { "resolve": "^1.1.6" }, @@ -4793,60 +5137,22 @@ } }, "node_modules/recursive-install": { - "version": "1.4.0", - "license": "MIT", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recursive-install/-/recursive-install-1.0.1.tgz", + "integrity": "sha1-Cukwss8SM1dgtd68YsZHiJxCW5E=", + "dev": true, "dependencies": { - "shelljs": "^0.7.0", - "yargs": "^5.0.0" + "shelljs": "^0.7.0" }, "bin": { "npm-recursive-install": "recursive-install.js" } }, - "node_modules/recursive-install/node_modules/ansi-regex": { - "version": "2.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/recursive-install/node_modules/camelcase": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/recursive-install/node_modules/cliui": { - "version": "3.2.0", - "license": "ISC", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/recursive-install/node_modules/get-caller-file": { - "version": "1.0.3", - "license": "ISC" - }, - "node_modules/recursive-install/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/recursive-install/node_modules/require-main-filename": { - "version": "1.0.1", - "license": "ISC" - }, "node_modules/recursive-install/node_modules/shelljs": { "version": "0.7.8", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -4860,78 +5166,10 @@ "node": ">=0.11.0" } }, - "node_modules/recursive-install/node_modules/string-width": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/recursive-install/node_modules/strip-ansi": { - "version": "3.0.1", - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/recursive-install/node_modules/which-module": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/recursive-install/node_modules/wrap-ansi": { - "version": "2.1.0", - "license": "MIT", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/recursive-install/node_modules/y18n": { - "version": "3.2.2", - "license": "ISC" - }, - "node_modules/recursive-install/node_modules/yargs": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "lodash.assign": "^4.2.0", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "window-size": "^0.2.0", - "y18n": "^3.2.1", - "yargs-parser": "^3.2.0" - } - }, - "node_modules/recursive-install/node_modules/yargs-parser": { - "version": "3.2.0", - "license": "ISC", - "dependencies": { - "camelcase": "^3.0.0", - "lodash.assign": "^4.1.0" - } - }, "node_modules/redent": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", "dependencies": { "indent-string": "^5.0.0", "strip-indent": "^4.0.0" @@ -4945,7 +5183,8 @@ }, "node_modules/redent/node_modules/indent-string": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "engines": { "node": ">=12" }, @@ -4955,23 +5194,26 @@ }, "node_modules/refa": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.9.1.tgz", + "integrity": "sha512-egU8LgFq2VXlAfUi8Jcbr5X38wEOadMFf8tCbshgcpVCYlE7k84pJOSlnvXF+muDB4igkdVMq7Z/kiNPqDT9TA==", "dev": true, - "license": "MIT", "dependencies": { "regexpp": "^3.2.0" } }, "node_modules/regenerate": { "version": "1.4.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, - "license": "MIT", "dependencies": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" }, "engines": { "node": ">=4" @@ -4979,21 +5221,24 @@ }, "node_modules/regenerator-runtime": { "version": "0.13.9", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true }, "node_modules/regenerator-transform": { "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } }, "node_modules/regexp-ast-analysis": { - "version": "0.2.4", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.3.0.tgz", + "integrity": "sha512-11PlbBSUxwWpdj6BdZUKfhDdV9g+cveqHB+BqBQDBD7ZermDBVgtyowUaXTvT0dO3tZYo2bDIr/GoED6X1aYSA==", "dev": true, - "license": "MIT", "dependencies": { "refa": "^0.9.0", "regexpp": "^3.2.0" @@ -5001,8 +5246,9 @@ }, "node_modules/regexp.prototype.flags": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -5016,8 +5262,9 @@ }, "node_modules/regexpp": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -5026,16 +5273,17 @@ } }, "node_modules/regexpu-core": { - "version": "4.7.1", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, - "license": "MIT", "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" @@ -5043,13 +5291,15 @@ }, "node_modules/regjsgen": { "version": "0.5.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true }, "node_modules/regjsparser": { - "version": "0.6.9", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "jsesc": "~0.5.0" }, @@ -5059,6 +5309,8 @@ }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true, "bin": { "jsesc": "bin/jsesc" @@ -5066,8 +5318,9 @@ }, "node_modules/release-zalgo": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", "dev": true, - "license": "ISC", "dependencies": { "es6-error": "^4.0.1" }, @@ -5077,27 +5330,24 @@ }, "node_modules/require-directory": { "version": "2.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-main-filename": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true }, "node_modules/resolve": { "version": "1.20.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, "dependencies": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -5107,25 +5357,28 @@ } }, "node_modules/resolve-from": { - "version": "5.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/resumer": { "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", "dev": true, - "license": "MIT", "dependencies": { "through": "~2.3.4" } }, "node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -5137,9 +5390,10 @@ } }, "node_modules/rollup": { - "version": "2.56.3", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, - "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -5150,46 +5404,20 @@ "fsevents": "~2.3.2" } }, - "node_modules/rollup-plugin-babel": { - "version": "4.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - }, - "peerDependencies": { - "@babel/core": "7 || ^7.0.0-rc.2", - "rollup": ">=0.60.0 <3" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "10.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" - }, - "peerDependencies": { - "rollup": ">=1.12.0" - } - }, "node_modules/rollup-plugin-filesize-check": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-filesize-check/-/rollup-plugin-filesize-check-0.0.1.tgz", + "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true, - "license": "MIT", "peerDependencies": { "rollup": "^1.0.0" } }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.10.4", "jest-worker": "^26.2.1", @@ -5200,52 +5428,62 @@ "rollup": "^2.0.0" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.1", - "dev": true, - "license": "MIT", - "dependencies": { - "estree-walker": "^0.6.1" - } - }, "node_modules/safe-buffer": { - "version": "5.1.1", - "dev": true, - "license": "MIT" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/scslre": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/scslre/-/scslre-0.1.6.tgz", + "integrity": "sha512-JORxVRlQTfjvlOAaiQKebgFElyAm5/W8b50lgaZ0OkEnKnagJW2ufDh3xRfU75UD9z3FGIu1gL1IyR3Poa6Qmw==", "dev": true, - "license": "MIT", "dependencies": { "refa": "^0.9.0", "regexp-ast-analysis": "^0.2.3", "regexpp": "^3.2.0" } }, + "node_modules/scslre/node_modules/regexp-ast-analysis": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.2.4.tgz", + "integrity": "sha512-8L7kOZQaKPxKKAwGuUZxTQtlO3WZ+tiXy4s6G6PKL6trbOXcZoumwC3AOHHFtI/xoSbNxt7jgLvCnP1UADLWqg==", + "dev": true, + "dependencies": { + "refa": "^0.9.0", + "regexpp": "^3.2.0" + } + }, "node_modules/semver": { - "version": "5.7.1", - "license": "ISC", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" } }, "node_modules/serialize-javascript": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/set-blocking": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -5255,16 +5493,18 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/shelljs": { "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -5279,75 +5519,38 @@ }, "node_modules/side-channel": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, - "engines": { - "node": ">=7.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/signal-exit": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", + "dev": true + }, "node_modules/source-map": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { - "version": "0.5.19", + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", "dev": true, - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -5355,21 +5558,24 @@ }, "node_modules/source-map-support/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/sourcemap-codec": { "version": "1.4.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true }, "node_modules/spawn-wrap": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^2.0.0", "is-windows": "^1.0.2", @@ -5384,7 +5590,8 @@ }, "node_modules/spdx-correct": { "version": "3.1.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -5392,24 +5599,28 @@ }, "node_modules/spdx-exceptions": { "version": "2.3.0", - "license": "CC-BY-3.0" + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.6", - "license": "CC0-1.0" + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", + "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==" }, "node_modules/split": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, - "license": "MIT", "dependencies": { "through": "2" }, @@ -5419,46 +5630,51 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "node_modules/stream-events": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", "dev": true, - "license": "MIT", "dependencies": { "stubs": "^3.0.0" } }, "node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string-width": { - "version": "4.2.0", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, "node_modules/string.prototype.trim": { - "version": "1.2.4", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" }, "engines": { "node": ">= 0.4" @@ -5469,8 +5685,9 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -5481,8 +5698,9 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -5492,11 +5710,12 @@ } }, "node_modules/strip-ansi": { - "version": "6.0.0", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" @@ -5504,15 +5723,17 @@ }, "node_modules/strip-bom": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/strip-indent": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "dependencies": { "min-indent": "^1.0.1" }, @@ -5525,8 +5746,9 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -5536,12 +5758,14 @@ }, "node_modules/stubs": { "version": "3.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", + "dev": true }, "node_modules/supports-color": { "version": "5.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { "has-flag": "^3.0.0" }, @@ -5549,49 +5773,11 @@ "node": ">=4" } }, - "node_modules/table": { - "version": "6.0.9", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^8.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "lodash.clonedeep": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/tap-dancer": { "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, - "license": "MIT", "dependencies": { "colorette": "^1.2.2", "tap-in": "3.2.1" @@ -5601,14 +5787,16 @@ } }, "node_modules/tap-dancer/node_modules/colorette": { - "version": "1.3.0", - "dev": true, - "license": "MIT" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true }, "node_modules/tap-in": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, - "license": "MIT", "dependencies": { "re-emitter": "1.1.4", "readable-stream": "2.3.7", @@ -5623,9 +5811,10 @@ } }, "node_modules/tape": { - "version": "5.3.1", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "deep-equal": "^2.0.5", @@ -5633,7 +5822,7 @@ "dotignore": "^0.1.2", "for-each": "^0.3.3", "get-package-type": "^0.1.0", - "glob": "^7.1.7", + "glob": "^7.2.0", "has": "^1.0.3", "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", @@ -5644,22 +5833,18 @@ "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "bin": { "tape": "bin/tape" } }, - "node_modules/tape/node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "license": "ISC" - }, "node_modules/tape/node_modules/resolve": { "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", "dev": true, - "license": "MIT", "dependencies": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -5670,8 +5855,9 @@ }, "node_modules/teeny-request": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.1.tgz", + "integrity": "sha512-iwY6rkW5DDGq8hE2YgNQlKbptYpY5Nn2xecjQiNjOXWbKzPGUfmeUBCSQbbr306d7Z7U2N0TPl+/SwYRfua1Dg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "http-proxy-agent": "^4.0.0", "https-proxy-agent": "^5.0.0", @@ -5685,40 +5871,44 @@ }, "node_modules/teeny-request/node_modules/uuid": { "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/terser": { - "version": "5.3.1", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", + "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" } }, "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true, - "license": "BSD-3-Clause", "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, "node_modules/test-exclude": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, - "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -5730,26 +5920,30 @@ }, "node_modules/text-table": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true }, "node_modules/through": { "version": "2.3.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, "node_modules/to-fast-properties": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -5757,14 +5951,21 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, "node_modules/trim": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", + "dev": true }, "node_modules/trim-newlines": { "version": "4.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.0.2.tgz", + "integrity": "sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==", "engines": { "node": ">=12" }, @@ -5774,8 +5975,9 @@ }, "node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -5785,24 +5987,27 @@ }, "node_modules/type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, - "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/unbox-primitive": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "has-bigints": "^1.0.1", @@ -5815,90 +6020,117 @@ }, "node_modules/unfetch": { "version": "4.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, - "license": "MIT", "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/urlgrey": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-1.0.0.tgz", + "integrity": "sha512-hJfIzMPJmI9IlLkby8QrsCykQ+SXDeO2W5Q9QTW3QpqZVTx4a/K7p8/5q+/isD8vsbVaFgql/gvAoQCRQ2Cb5w==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "fast-url-parser": "^1.1.3" } }, "node_modules/util-deprecate": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "node_modules/uuid": { "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "dev": true, - "license": "MIT", "bin": { "uuid": "bin/uuid" } }, "node_modules/v8-compile-cache": { - "version": "2.2.0", - "dev": true, - "license": "MIT" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true }, "node_modules/validate-npm-package-license": { "version": "3.0.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -5911,8 +6143,9 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, - "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -5926,8 +6159,9 @@ }, "node_modules/which-collection": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", "dev": true, - "license": "MIT", "dependencies": { "is-map": "^2.0.1", "is-set": "^2.0.1", @@ -5940,21 +6174,22 @@ }, "node_modules/which-module": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.4", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", + "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", "dev": true, - "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.2", - "call-bind": "^1.0.0", - "es-abstract": "^1.18.0-next.1", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", "foreach": "^2.0.5", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.1", - "is-typed-array": "^1.1.3" + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.7" }, "engines": { "node": ">= 0.4" @@ -5963,28 +6198,20 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/window-size": { - "version": "0.2.0", - "license": "MIT", - "bin": { - "window-size": "cli.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, "node_modules/word-wrap": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -5995,11 +6222,11 @@ } }, "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.2.1", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" }, "engines": { @@ -6011,8 +6238,9 @@ }, "node_modules/wrap-ansi/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6020,14 +6248,23 @@ "node": ">=7.0.0" } }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/wrappy": { "version": "1.0.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "node_modules/write-file-atomic": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -6036,18 +6273,21 @@ } }, "node_modules/y18n": { - "version": "4.0.1", - "dev": true, - "license": "ISC" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true }, "node_modules/yallist": { "version": "4.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -6066,9 +6306,70 @@ } }, "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, - "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -6079,7 +6380,8 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "engines": { "node": ">=10" }, @@ -6090,111 +6392,112 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.11", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "requires": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.16.0" } }, "@babel/compat-data": { - "version": "7.15.0", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true }, "@babel/core": { - "version": "7.15.0", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.0", - "@babel/helper-module-transforms": "^7.15.0", - "@babel/helpers": "^7.14.8", - "@babel/parser": "^7.15.0", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.15.0", - "@babel/types": "^7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", "semver": "^6.3.0", "source-map": "^0.5.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, - "semver": { - "version": "6.3.0", - "dev": true - } } }, "@babel/generator": { - "version": "7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.15.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-compilation-targets": { - "version": "7.15.0", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.15.0", + "@babel/compat-data": "^7.16.0", "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "browserslist": "^4.17.5", "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } } }, "@babel/helper-create-class-features-plugin": { - "version": "7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-member-expression-to-functions": "^7.15.0", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/helper-replace-supers": "^7.15.0", - "@babel/helper-split-export-declaration": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.2.3", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -6205,198 +6508,251 @@ "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" } }, "@babel/helper-function-name": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" } }, "@babel/helper-hoist-variables": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.15.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-replace-supers": "^7.15.0", - "@babel/helper-simple-access": "^7.14.8", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.9", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.15.0", - "@babel/types": "^7.15.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" } }, "@babel/helper-plugin-utils": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.14.5", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-wrap-function": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.0", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.15.0", - "@babel/types": "^7.15.0" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.14.8", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.14.8" + "@babel/types": "^7.16.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { - "version": "7.14.9" + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" }, "@babel/helper-validator-option": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helpers": { - "version": "7.15.3", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "requires": { - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.15.0", - "@babel/types": "^7.15.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/highlight": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.15.3", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.14.9", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -6404,7 +6760,9 @@ } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -6412,7 +6770,9 @@ } }, "@babel/plugin-proposal-json-strings": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -6420,7 +6780,9 @@ } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -6428,7 +6790,9 @@ } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -6436,7 +6800,9 @@ } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -6444,18 +6810,22 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.14.7", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "requires": { - "@babel/compat-data": "^7.14.7", - "@babel/helper-compilation-targets": "^7.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.14.5" + "@babel/plugin-transform-parameters": "^7.16.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -6463,42 +6833,52 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -6506,6 +6886,8 @@ }, "@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.12.13" @@ -6513,6 +6895,8 @@ }, "@babel/plugin-syntax-class-static-block": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -6520,6 +6904,8 @@ }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -6527,6 +6913,8 @@ }, "@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" @@ -6534,6 +6922,8 @@ }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -6541,6 +6931,8 @@ }, "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -6548,6 +6940,8 @@ }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -6555,6 +6949,8 @@ }, "@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -6562,6 +6958,8 @@ }, "@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -6569,6 +6967,8 @@ }, "@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -6576,6 +6976,8 @@ }, "@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -6583,6 +6985,8 @@ }, "@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -6590,283 +6994,352 @@ }, "@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-module-imports": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" + "@babel/helper-remap-async-to-generator": "^7.16.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.15.3", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.14.9", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.14.7", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.14.5", + "@babel/helper-function-name": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.15.0", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.14.8", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.14.9", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5" + "@babel/helper-replace-supers": "^7.16.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.14.5", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.14.6", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.15.0", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", "dev": true, "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.0", + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-async-generator-functions": "^7.14.9", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.14.5", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.14.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.14.5", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", @@ -6881,55 +7354,51 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.14.5", - "@babel/plugin-transform-classes": "^7.14.9", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.14.5", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.15.0", - "@babel/plugin-transform-modules-systemjs": "^7.14.5", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.14.5", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.14.6", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.15.0", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.16.0", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } } }, "@babel/preset-modules": { - "version": "0.1.4", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -6940,92 +7409,105 @@ } }, "@babel/runtime": { - "version": "7.15.3", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.14.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - } + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.15.0", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.0", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.15.0", - "@babel/types": "^7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - } } }, "@babel/types": { - "version": "7.15.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, "@eslint/eslintrc": { - "version": "0.4.3", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", + "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", "dev": true, "requires": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", + "debug": "^4.3.2", + "espree": "^9.0.0", "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "globals": { - "version": "13.11.0", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", "dev": true, "requires": { "type-fest": "^0.20.2" } }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true } } }, "@humanwhocodes/config-array": { - "version": "0.5.0", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", + "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.0", @@ -7034,11 +7516,15 @@ } }, "@humanwhocodes/object-schema": { - "version": "1.2.0", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "requires": { "camelcase": "^5.3.1", @@ -7046,18 +7532,94 @@ "get-package-type": "^0.1.0", "js-yaml": "^3.13.1", "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, "@istanbuljs/schema": { - "version": "0.1.2", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, "@mdn/browser-compat-data": { "version": "3.3.14", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-3.3.14.tgz", + "integrity": "sha512-n2RC9d6XatVbWFdHLimzzUJxJ1KY8LdjqrW6YvGPiRmsHkhOUx74/Ct10x5Yo7bC/Jvqx7cDEW8IMPv/+vwEzA==", "dev": true }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + } + }, "@rollup/plugin-node-resolve": { - "version": "13.0.4", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -7070,6 +7632,8 @@ }, "@rollup/pluginutils": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "requires": { "@types/estree": "0.0.39", @@ -7079,50 +7643,66 @@ "dependencies": { "estree-walker": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true } } }, "@tootallnate/once": { "version": "1.1.2", - "dev": true - }, - "@types/color-name": { - "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, "@types/estree": { "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, "@types/minimist": { - "version": "1.2.2" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" }, "@types/node": { - "version": "14.6.4", + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", "dev": true }, "@types/normalize-package-data": { - "version": "2.4.1" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" }, "@types/resolve": { "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "dev": true, "requires": { "@types/node": "*" } }, "acorn": { - "version": "7.4.1", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", "dev": true }, "acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "requires": {} }, "agent-base": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "requires": { "debug": "4" @@ -7130,6 +7710,8 @@ }, "aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "requires": { "clean-stack": "^2.0.0", @@ -7138,6 +7720,8 @@ }, "ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -7148,6 +7732,8 @@ }, "amble": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/amble/-/amble-1.3.0.tgz", + "integrity": "sha512-CODkx6oHXpvGTkPechpe9JoZycsQ6xmLrnx4wudkW+gro6HrtAFSThWO5/Nlr0D7UPQolshty9zFVx0890FVbA==", "dev": true, "requires": { "chokidar": "3.5.1", @@ -7156,20 +7742,28 @@ }, "ansi-colors": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, "ansi-regex": { - "version": "5.0.0", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { "color-convert": "^1.9.0" } }, "anymatch": { - "version": "3.1.1", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -7178,6 +7772,8 @@ }, "append-transform": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", "dev": true, "requires": { "default-require-extensions": "^3.0.0" @@ -7185,10 +7781,14 @@ }, "archy": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { "sprintf-js": "~1.0.2" @@ -7196,79 +7796,86 @@ }, "argv": { "version": "0.0.2", - "dev": true - }, - "array-filter": { - "version": "1.0.0", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", "dev": true }, "arrify": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" }, "ast-metadata-inferer": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.7.0.tgz", + "integrity": "sha512-OkMLzd8xelb3gmnp6ToFvvsHLtS6CbagTkFQvQ+ZYFe3/AIl9iKikNR9G7pY3GfOR/2Xc222hwBjzI7HLkE76Q==", "dev": true, "requires": { "@mdn/browser-compat-data": "^3.3.14" } }, - "astral-regex": { - "version": "2.0.0", - "dev": true - }, "available-typed-arrays": { - "version": "1.0.2", - "dev": true, - "requires": { - "array-filter": "^1.0.0" - } + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true }, "babel-plugin-dynamic-import-node": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" } }, "babel-plugin-polyfill-corejs2": { - "version": "0.2.2", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "requires": { "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } } }, "babel-plugin-polyfill-corejs3": { - "version": "0.2.4", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.14.0" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.2.2", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2" + "@babel/helper-define-polyfill-provider": "^0.3.0" } }, "balanced-match": { - "version": "1.0.0" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "binary-extensions": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -7276,38 +7883,42 @@ }, "braces": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { "fill-range": "^7.0.1" } }, "browserslist": { - "version": "4.16.8", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001251", - "colorette": "^1.3.0", - "electron-to-chromium": "^1.3.811", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.75" - }, - "dependencies": { - "colorette": { - "version": "1.3.0", - "dev": true - } + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "buffer-from": { - "version": "1.1.1", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "builtin-modules": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", "dev": true }, "caching-transform": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, "requires": { "hasha": "^5.0.0", @@ -7318,6 +7929,8 @@ }, "call-bind": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -7326,14 +7939,20 @@ }, "callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "camelcase-keys": { - "version": "7.0.0", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.1.tgz", + "integrity": "sha512-P331lEls98pW8JLyodNWfzuz91BEDVA4VpW2/SwXnyv2K495tq1N777xzDbFgnEigfA7UIY0xa6PwR/H9jijjA==", "requires": { "camelcase": "^6.2.0", "map-obj": "^4.1.0", @@ -7342,19 +7961,27 @@ }, "dependencies": { "camelcase": { - "version": "6.2.0" + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" }, "type-fest": { - "version": "1.4.0" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" } } }, "caniuse-lite": { - "version": "1.0.30001252", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true }, "chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -7363,6 +7990,8 @@ }, "chokidar": { "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, "requires": { "anymatch": "~3.1.1", @@ -7377,10 +8006,14 @@ }, "clean-stack": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, "cliui": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { "string-width": "^4.2.0", @@ -7388,11 +8021,10 @@ "wrap-ansi": "^6.2.0" } }, - "code-point-at": { - "version": "1.1.0" - }, "codecov": { "version": "3.8.3", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.3.tgz", + "integrity": "sha512-Y8Hw+V3HgR7V71xWH2vQ9lyS358CbGCldWlJFR0JirqoGtOoas3R3/OclRTvgUYFK29mmJICDPauVKmpqbwhOA==", "dev": true, "requires": { "argv": "0.0.2", @@ -7403,64 +8035,91 @@ } }, "color-convert": { - "version": "1.9.1", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { - "color-name": "^1.1.1" + "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.4" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "colorette": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", "dev": true }, "commander": { "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, "comment-parser": { - "version": "1.1.4", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.2.4.tgz", + "integrity": "sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw==", "dev": true }, "commondir": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "concat-map": { - "version": "0.0.1" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "convert-source-map": { - "version": "1.7.0", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" } }, "core-js": { - "version": "3.16.4", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.1.tgz", + "integrity": "sha512-Tnc7E9iKd/b/ff7GFbhwPVzJzPztGrChB8X8GLqoYGdEOG8IpLnK1xPyo3ZoO3HsK6TodJS58VGPOxA+hLHQMg==", "dev": true }, "core-js-compat": { - "version": "3.16.4", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "requires": { - "browserslist": "^4.16.8", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "dependencies": { "semver": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", "dev": true } } }, "core-util-is": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "cross-env": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, "requires": { "cross-spawn": "^7.0.1" @@ -7468,6 +8127,8 @@ }, "cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -7476,29 +8137,39 @@ } }, "debug": { - "version": "4.1.1", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "decamelize": { - "version": "1.2.0" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, "decamelize-keys": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", "requires": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" }, "dependencies": { "map-obj": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" } } }, "deep-equal": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", "dev": true, "requires": { "call-bind": "^1.0.0", @@ -7520,20 +8191,28 @@ "dependencies": { "isarray": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true } } }, "deep-is": { - "version": "0.1.3", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "deepmerge": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true }, "default-require-extensions": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", "dev": true, "requires": { "strip-bom": "^4.0.0" @@ -7541,6 +8220,8 @@ }, "define-properties": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, "requires": { "object-keys": "^1.0.12" @@ -7548,10 +8229,14 @@ }, "defined": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", "dev": true }, "doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -7559,21 +8244,29 @@ }, "dotignore": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", "dev": true, "requires": { "minimatch": "^3.0.4" } }, "electron-to-chromium": { - "version": "1.3.826", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "emoji-regex": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "enquirer": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "requires": { "ansi-colors": "^4.1.1" @@ -7581,34 +8274,44 @@ }, "error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "requires": { "is-arrayish": "^0.2.1" } }, "es-abstract": { - "version": "1.18.0", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" } }, "es-get-iterator": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -7623,12 +8326,16 @@ "dependencies": { "isarray": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true } } }, "es-to-primitive": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -7638,45 +8345,52 @@ }, "es6-error": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, "escalade": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, "escape-string-regexp": { - "version": "1.0.5" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { - "version": "7.32.0", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", + "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", "dev": true, "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.0.4", + "@humanwhocodes/config-array": "^0.6.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^7.1.0", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.1.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", + "glob-parent": "^6.0.1", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", @@ -7684,24 +8398,33 @@ "natural-compare": "^1.4.0", "optionator": "^0.9.1", "progress": "^2.0.0", - "regexpp": "^3.1.0", + "regexpp": "^3.2.0", "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" } }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "chalk": { - "version": "4.1.0", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -7710,17 +8433,44 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" } }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", "dev": true }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, "globals": { - "version": "13.7.0", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -7728,10 +8478,23 @@ }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "semver": { - "version": "7.3.4", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -7739,6 +8502,8 @@ }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -7746,55 +8511,32 @@ }, "type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true } } }, "eslint-plugin-compat": { - "version": "3.13.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.0.0.tgz", + "integrity": "sha512-lg9CPq0bsGxNXcLZgxqVAYsUUELIKZPRiwnJJQOHH910zCHEiscO00Sp+w9wflKEa/OtVaYfNhI2jOViRPZtjw==", "dev": true, "requires": { "@mdn/browser-compat-data": "^3.3.14", "ast-metadata-inferer": "^0.7.0", "browserslist": "^4.16.8", - "caniuse-lite": "^1.0.30001251", + "caniuse-lite": "^1.0.30001267", "core-js": "^3.16.2", "find-up": "^5.0.0", "lodash.memoize": "4.1.2", "semver": "7.3.5" }, "dependencies": { - "find-up": { - "version": "5.0.0", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "6.0.0", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, "semver": { "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -7803,123 +8545,129 @@ } }, "eslint-plugin-regexp": { - "version": "1.1.0", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-1.5.0.tgz", + "integrity": "sha512-OuYlOF6z2VyurEmELUjY58Wqi4TzsWwgF8+XnToItLwSzNHpDuThy/CxWZ6szIcgQ/02plg7/ZAXQ/RPl7uRxQ==", "dev": true, "requires": { "comment-parser": "^1.1.2", "eslint-utils": "^3.0.0", + "grapheme-splitter": "^1.0.4", "jsdoctypeparser": "^9.0.0", "refa": "^0.9.0", - "regexp-ast-analysis": "^0.2.4", + "regexp-ast-analysis": "^0.3.0", "regexpp": "^3.2.0", "scslre": "^0.1.6" - }, - "dependencies": { - "eslint-utils": { - "version": "3.0.0", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - } } }, "eslint-scope": { - "version": "5.1.1", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", + "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", "dev": true, "requires": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" } }, "eslint-utils": { - "version": "2.1.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "dev": true - } + "eslint-visitor-keys": "^2.0.0" } }, "eslint-visitor-keys": { - "version": "2.0.0", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true }, "espree": { - "version": "7.3.1", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", + "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", "dev": true, "requires": { - "acorn": "^7.4.0", + "acorn": "^8.6.0", "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "eslint-visitor-keys": "^3.1.0" }, "dependencies": { "eslint-visitor-keys": { - "version": "1.3.0", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", "dev": true } } }, "esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "esquery": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "dev": true - } } }, "esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "dev": true - } } }, "estraverse": { - "version": "4.3.0", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, "estree-walker": { - "version": "0.6.1", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, "esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "fast-deep-equal": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, "fast-url-parser": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", "dev": true, "requires": { "punycode": "^1.3.2" @@ -7927,12 +8675,16 @@ "dependencies": { "punycode": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true } } }, "file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { "flat-cache": "^3.0.4" @@ -7940,13 +8692,17 @@ }, "fill-range": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { "to-regex-range": "^5.0.1" } }, "find-cache-dir": { - "version": "3.3.1", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "requires": { "commondir": "^1.0.1", @@ -7955,15 +8711,18 @@ } }, "find-up": { - "version": "4.1.0", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "requires": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "flat-cache": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { "flatted": "^3.1.0", @@ -7971,11 +8730,15 @@ } }, "flatted": { - "version": "3.1.1", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", "dev": true }, "for-each": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, "requires": { "is-callable": "^1.1.3" @@ -7983,10 +8746,14 @@ }, "foreach": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", "dev": true }, "foreground-child": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, "requires": { "cross-spawn": "^7.0.0", @@ -7994,34 +8761,51 @@ } }, "fromentries": { - "version": "1.2.1", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", "dev": true }, "fs.realpath": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "fsevents": { "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, "function-bind": { - "version": "1.1.1" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "functional-red-black-tree": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, "gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, "get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-intrinsic": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -8031,10 +8815,25 @@ }, "get-package-type": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "glob": { - "version": "7.1.7", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8046,6 +8845,8 @@ }, "glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -8053,47 +8854,74 @@ }, "globals": { "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, "graceful-fs": { - "version": "4.2.4" + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true }, "hard-rejection": { - "version": "2.1.0" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" }, "has": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "requires": { "function-bind": "^1.1.1" } }, "has-bigints": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, "has-dynamic-import": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", "dev": true, "requires": { "call-bind": "^1.0.2" } }, "has-flag": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, "has-tostringtag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, "requires": { "has-symbols": "^1.0.2" } }, "hasha": { - "version": "5.2.1", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "dev": true, "requires": { "is-stream": "^2.0.0", @@ -8101,14 +8929,23 @@ } }, "hosted-git-info": { - "version": "2.8.9" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "requires": { + "lru-cache": "^6.0.0" + } }, "html-escaper": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, "http-proxy-agent": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, "requires": { "@tootallnate/once": "1", @@ -8118,6 +8955,8 @@ }, "https-proxy-agent": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "dev": true, "requires": { "agent-base": "6", @@ -8126,10 +8965,14 @@ }, "ignore": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, "ignore-walk": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", "dev": true, "requires": { "minimatch": "^3.0.4" @@ -8137,94 +8980,141 @@ }, "import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "dev": true - } } }, "imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, "inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" } }, "inherits": { - "version": "2.0.3" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, - "interpret": { - "version": "1.2.0" + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } }, - "invert-kv": { - "version": "1.0.0" + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true }, "is-arguments": { - "version": "1.1.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, "requires": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-arrayish": { - "version": "0.2.1" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-bigint": { - "version": "1.0.1", - "dev": true + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } }, "is-binary-path": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "requires": { "binary-extensions": "^2.0.0" } }, "is-boolean-object": { - "version": "1.1.0", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "requires": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-callable": { - "version": "1.2.3", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-core-module": { - "version": "2.6.0", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", "requires": { "has": "^1.0.3" } }, "is-date-object": { - "version": "1.0.2", - "dev": true + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, "is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-glob": { - "version": "4.0.1", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -8232,42 +9122,55 @@ }, "is-map": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true }, "is-module": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, "is-negative-zero": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", "dev": true }, "is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, "is-number-object": { - "version": "1.0.4", - "dev": true + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-plain-obj": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" }, "is-reference": { - "version": "1.1.4", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "requires": { - "@types/estree": "0.0.39" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.39", - "dev": true - } + "@types/estree": "*" } }, "is-regex": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -8276,74 +9179,117 @@ }, "is-set": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true + }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true }, "is-stream": { - "version": "2.0.0", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, "is-string": { - "version": "1.0.5", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-symbol": { - "version": "1.0.3", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "requires": { - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" } }, "is-typed-array": { - "version": "1.1.5", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", + "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", "dev": true, "requires": { - "available-typed-arrays": "^1.0.2", + "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", - "es-abstract": "^1.18.0-next.2", + "es-abstract": "^1.18.5", "foreach": "^2.0.5", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" } }, "is-typedarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "is-utf8": { - "version": "0.2.1" - }, "is-weakmap": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-weakset": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", + "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", "dev": true }, "is-windows": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, "isarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isomorphic-unfetch": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", + "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", "requires": { "node-fetch": "^2.6.1", "unfetch": "^4.2.0" } }, "istanbul-lib-coverage": { - "version": "3.0.0", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true }, "istanbul-lib-hook": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", "dev": true, "requires": { "append-transform": "^2.0.0" @@ -8351,22 +9297,20 @@ }, "istanbul-lib-instrument": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, "requires": { "@babel/core": "^7.7.5", "@istanbuljs/schema": "^0.1.2", "istanbul-lib-coverage": "^3.0.0", "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } } }, "istanbul-lib-processinfo": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", "dev": true, "requires": { "archy": "^1.0.0", @@ -8380,6 +9324,8 @@ }, "istanbul-lib-report": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, "requires": { "istanbul-lib-coverage": "^3.0.0", @@ -8389,10 +9335,14 @@ "dependencies": { "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -8401,7 +9351,9 @@ } }, "istanbul-lib-source-maps": { - "version": "4.0.0", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "requires": { "debug": "^4.1.1", @@ -8411,12 +9363,16 @@ "dependencies": { "source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, "istanbul-reports": { - "version": "3.0.2", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", + "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -8424,7 +9380,9 @@ } }, "jest-worker": { - "version": "26.3.0", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { "@types/node": "*", @@ -8434,10 +9392,14 @@ "dependencies": { "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -8446,10 +9408,14 @@ } }, "js-tokens": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -8458,41 +9424,51 @@ }, "jsdoctypeparser": { "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", + "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", "dev": true }, "jsesc": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, "json-parse-even-better-errors": { - "version": "2.3.1" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, "json5": { - "version": "2.1.3", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, "requires": { "minimist": "^1.2.5" } }, "kind-of": { - "version": "6.0.3" - }, - "lcid": { - "version": "1.0.0", - "requires": { - "invert-kv": "^1.0.0" - } + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { "prelude-ls": "^1.2.1", @@ -8500,72 +9476,54 @@ } }, "lines-and-columns": { - "version": "1.1.6" - }, - "load-json-file": { - "version": "1.1.0", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "requires": { - "is-utf8": "^0.2.0" - } - } - } + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, "locate-path": { - "version": "5.0.0", - "dev": true, + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "requires": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" } }, - "lodash.assign": { - "version": "4.2.0" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "dev": true - }, "lodash.debounce": { "version": "4.0.8", - "dev": true - }, - "lodash.flatten": { - "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, "lodash.flattendeep": { "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, "lodash.memoize": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, "lodash.merge": { "version": "4.6.2", - "dev": true - }, - "lodash.truncate": { - "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, "lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "requires": { "yallist": "^4.0.0" } }, "magic-string": { - "version": "0.25.6", + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, "requires": { "sourcemap-codec": "^1.4.4" @@ -8573,22 +9531,22 @@ }, "make-dir": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } } }, "map-obj": { - "version": "4.2.1" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" }, "meow": { "version": "10.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.1.tgz", + "integrity": "sha512-uzOAEBTGujHAD6bVzIQQk5kDTgatxmpVmr1pj9QhwsHLEG2AiB+9F08/wmjrZIk4h5pWxERd7+jqGZywYx3ZFw==", "requires": { "@types/minimist": "^1.2.2", "camelcase-keys": "^7.0.0", @@ -8605,107 +9563,47 @@ }, "dependencies": { "decamelize": { - "version": "5.0.0" - }, - "find-up": { - "version": "5.0.0", - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "hosted-git-info": { - "version": "4.0.2", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "locate-path": { - "version": "6.0.0", - "requires": { - "p-locate": "^5.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "p-limit": { - "version": "3.1.0", - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "requires": { - "p-limit": "^3.0.2" - } - }, - "parse-json": { - "version": "5.2.0", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "read-pkg": { - "version": "6.0.0", - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^1.0.1" - } - }, - "read-pkg-up": { - "version": "8.0.0", - "requires": { - "find-up": "^5.0.0", - "read-pkg": "^6.0.0", - "type-fest": "^1.0.1" - } - }, - "semver": { - "version": "7.3.5", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==" }, "type-fest": { - "version": "1.4.0" - }, - "yargs-parser": { - "version": "20.2.9" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" } } }, "merge-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, "min-indent": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" }, "minimatch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "minimist-options": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "requires": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -8714,44 +9612,70 @@ }, "ms": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "natural-compare": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, "node-fetch": { - "version": "2.6.1" + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "requires": { + "whatwg-url": "^5.0.0" + } }, "node-preload": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", "dev": true, "requires": { "process-on-spawn": "^1.0.0" } }, "node-releases": { - "version": "1.1.75", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "normalize-package-data": { - "version": "2.5.0", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "number-is-nan": { - "version": "1.0.1" - }, "nyc": { "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", "dev": true, "requires": { "@istanbuljs/load-nyc-config": "^1.0.0", @@ -8781,14 +9705,63 @@ "spawn-wrap": "^2.0.0", "test-exclude": "^6.0.0", "yargs": "^15.0.2" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, "object-inspect": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true }, "object-is": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -8797,10 +9770,14 @@ }, "object-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, "object.assign": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { "call-bind": "^1.0.0", @@ -8811,12 +9788,17 @@ }, "once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } }, "optionator": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { "deep-is": "^0.1.3", @@ -8827,28 +9809,26 @@ "word-wrap": "^1.2.3" } }, - "os-locale": { - "version": "1.4.0", - "requires": { - "lcid": "^1.0.0" - } - }, "p-limit": { - "version": "2.3.0", - "dev": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "requires": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" } }, "p-locate": { - "version": "4.1.0", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "requires": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" } }, "p-map": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, "requires": { "aggregate-error": "^3.0.0" @@ -8856,10 +9836,14 @@ }, "p-try": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "package-hash": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", "dev": true, "requires": { "graceful-fs": "^4.1.15", @@ -8870,83 +9854,139 @@ }, "parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { "callsites": "^3.0.0" } }, "parse-json": { - "version": "2.2.0", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "requires": { - "error-ex": "^1.2.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" } }, "path-exists": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "path-exists-cli": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-exists-cli/-/path-exists-cli-2.0.0.tgz", + "integrity": "sha512-qGr0A87KYCznmvabblxyxnzA/MtPZ28wH+4SCMP4tjTFAbzqwvs5xpUZExAYzq5OgHe5vIswzdH5iosCb8YF/Q==", "requires": { "meow": "^10.1.1", "path-exists": "^5.0.0" }, "dependencies": { "path-exists": { - "version": "5.0.0" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==" } } }, "path-is-absolute": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { - "version": "1.0.6" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, - "path-type": { - "version": "1.1.0", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "picomatch": { - "version": "2.2.2", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, - "pify": { - "version": "2.3.0" - }, - "pinkie": { - "version": "2.0.4" - }, - "pinkie-promise": { - "version": "2.0.1", - "requires": { - "pinkie": "^2.0.0" - } - }, "pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } } }, "prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "process-nextick-args": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "process-on-spawn": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", "dev": true, "requires": { "fromentries": "^1.2.0" @@ -8954,17 +9994,25 @@ }, "progress": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, "punycode": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, "quick-lru": { - "version": "5.1.1" + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" }, "randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { "safe-buffer": "^5.1.0" @@ -8972,40 +10020,49 @@ }, "re-emitter": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "read-pkg": { - "version": "1.1.0", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" + }, + "dependencies": { + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" + } } }, "read-pkg-up": { - "version": "1.0.1", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" }, "dependencies": { - "find-up": { - "version": "1.1.2", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "requires": { - "pinkie-promise": "^2.0.0" - } + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" } } }, "readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -9019,6 +10076,8 @@ }, "readdirp": { "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "dev": true, "requires": { "picomatch": "^2.2.1" @@ -9026,120 +10085,55 @@ }, "rechoir": { "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, "requires": { "resolve": "^1.1.6" } }, "recursive-install": { - "version": "1.4.0", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recursive-install/-/recursive-install-1.0.1.tgz", + "integrity": "sha1-Cukwss8SM1dgtd68YsZHiJxCW5E=", + "dev": true, "requires": { - "shelljs": "^0.7.0", - "yargs": "^5.0.0" + "shelljs": "^0.7.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1" - }, - "camelcase": { - "version": "3.0.0" - }, - "cliui": { - "version": "3.2.0", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "get-caller-file": { - "version": "1.0.3" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "require-main-filename": { - "version": "1.0.1" - }, "shelljs": { "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, "requires": { "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" } - }, - "string-width": { - "version": "1.0.2", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "which-module": { - "version": "1.0.0" - }, - "wrap-ansi": { - "version": "2.1.0", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "y18n": { - "version": "3.2.2" - }, - "yargs": { - "version": "5.0.0", - "requires": { - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "lodash.assign": "^4.2.0", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "window-size": "^0.2.0", - "y18n": "^3.2.1", - "yargs-parser": "^3.2.0" - } - }, - "yargs-parser": { - "version": "3.2.0", - "requires": { - "camelcase": "^3.0.0", - "lodash.assign": "^4.1.0" - } } } }, "redent": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", "requires": { "indent-string": "^5.0.0", "strip-indent": "^4.0.0" }, "dependencies": { "indent-string": { - "version": "5.0.0" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==" } } }, "refa": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.9.1.tgz", + "integrity": "sha512-egU8LgFq2VXlAfUi8Jcbr5X38wEOadMFf8tCbshgcpVCYlE7k84pJOSlnvXF+muDB4igkdVMq7Z/kiNPqDT9TA==", "dev": true, "requires": { "regexpp": "^3.2.0" @@ -9147,28 +10141,38 @@ }, "regenerate": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { - "version": "8.2.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "regenerator-transform": { "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" } }, "regexp-ast-analysis": { - "version": "0.2.4", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.3.0.tgz", + "integrity": "sha512-11PlbBSUxwWpdj6BdZUKfhDdV9g+cveqHB+BqBQDBD7ZermDBVgtyowUaXTvT0dO3tZYo2bDIr/GoED6X1aYSA==", "dev": true, "requires": { "refa": "^0.9.0", @@ -9177,6 +10181,8 @@ }, "regexp.prototype.flags": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -9185,26 +10191,34 @@ }, "regexpp": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "regexpu-core": { - "version": "4.7.1", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { - "version": "0.6.9", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -9212,41 +10226,53 @@ "dependencies": { "jsesc": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true } } }, "release-zalgo": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", "dev": true, "requires": { "es6-error": "^4.0.1" } }, "require-directory": { - "version": "2.1.1" - }, - "require-from-string": { - "version": "2.0.2", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "resolve": { "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, "requires": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, "resolve-from": { - "version": "5.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "resumer": { "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", "dev": true, "requires": { "through": "~2.3.4" @@ -9254,44 +10280,33 @@ }, "rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" } }, "rollup": { - "version": "2.56.3", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "requires": { "fsevents": "~2.3.2" } }, - "rollup-plugin-babel": { - "version": "4.4.0", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "dev": true, - "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" - } - }, "rollup-plugin-filesize-check": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-filesize-check/-/rollup-plugin-filesize-check-0.0.1.tgz", + "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true, "requires": {} }, "rollup-plugin-terser": { "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", @@ -9300,41 +10315,60 @@ "terser": "^5.0.0" } }, - "rollup-pluginutils": { - "version": "2.8.1", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } - }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "scslre": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/scslre/-/scslre-0.1.6.tgz", + "integrity": "sha512-JORxVRlQTfjvlOAaiQKebgFElyAm5/W8b50lgaZ0OkEnKnagJW2ufDh3xRfU75UD9z3FGIu1gL1IyR3Poa6Qmw==", "dev": true, "requires": { "refa": "^0.9.0", "regexp-ast-analysis": "^0.2.3", "regexpp": "^3.2.0" + }, + "dependencies": { + "regexp-ast-analysis": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.2.4.tgz", + "integrity": "sha512-8L7kOZQaKPxKKAwGuUZxTQtlO3WZ+tiXy4s6G6PKL6trbOXcZoumwC3AOHHFtI/xoSbNxt7jgLvCnP1UADLWqg==", + "dev": true, + "requires": { + "refa": "^0.9.0", + "regexpp": "^3.2.0" + } + } } }, "semver": { - "version": "5.7.1" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true }, "serialize-javascript": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, "requires": { "randombytes": "^2.1.0" } }, "set-blocking": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { "shebang-regex": "^3.0.0" @@ -9342,10 +10376,14 @@ }, "shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "shelljs": { "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", "dev": true, "requires": { "glob": "^7.0.0", @@ -9355,6 +10393,8 @@ }, "side-channel": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "requires": { "call-bind": "^1.0.0", @@ -9363,40 +10403,21 @@ } }, "signal-exit": { - "version": "3.0.3", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", "dev": true }, - "slice-ansi": { - "version": "4.0.0", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - } - } - }, "source-map": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-support": { - "version": "0.5.19", + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -9405,16 +10426,22 @@ "dependencies": { "source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, "sourcemap-codec": { "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, "spawn-wrap": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", "dev": true, "requires": { "foreground-child": "^2.0.0", @@ -9427,26 +10454,36 @@ }, "spdx-correct": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { - "version": "2.3.0" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { - "version": "3.0.6" + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", + "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==" }, "split": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2" @@ -9454,10 +10491,14 @@ }, "sprintf-js": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, "stream-events": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", "dev": true, "requires": { "stubs": "^3.0.0" @@ -9465,31 +10506,39 @@ }, "string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "string-width": { - "version": "4.2.0", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "string.prototype.trim": { - "version": "1.2.4", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "string.prototype.trimend": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -9498,6 +10547,8 @@ }, "string.prototype.trimstart": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -9505,69 +10556,52 @@ } }, "strip-ansi": { - "version": "6.0.0", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "strip-bom": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true }, "strip-indent": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "requires": { "min-indent": "^1.0.1" } }, "strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "stubs": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", "dev": true }, "supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { "has-flag": "^3.0.0" } }, - "table": { - "version": "6.0.9", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "lodash.clonedeep": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - }, - "dependencies": { - "ajv": { - "version": "8.0.3", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "dev": true - } - } - }, "tap-dancer": { "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "requires": { "colorette": "^1.2.2", @@ -9575,13 +10609,17 @@ }, "dependencies": { "colorette": { - "version": "1.3.0", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true } } }, "tap-in": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "requires": { "re-emitter": "1.1.4", @@ -9591,7 +10629,9 @@ } }, "tape": { - "version": "5.3.1", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -9600,7 +10640,7 @@ "dotignore": "^0.1.2", "for-each": "^0.3.3", "get-package-type": "^0.1.0", - "glob": "^7.1.7", + "glob": "^7.2.0", "has": "^1.0.3", "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", @@ -9611,16 +10651,14 @@ "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "dependencies": { - "inherits": { - "version": "2.0.4", - "dev": true - }, "resolve": { "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", "dev": true, "requires": { "is-core-module": "^2.2.0", @@ -9631,6 +10669,8 @@ }, "teeny-request": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.1.tgz", + "integrity": "sha512-iwY6rkW5DDGq8hE2YgNQlKbptYpY5Nn2xecjQiNjOXWbKzPGUfmeUBCSQbbr306d7Z7U2N0TPl+/SwYRfua1Dg==", "dev": true, "requires": { "http-proxy-agent": "^4.0.0", @@ -9642,27 +10682,35 @@ "dependencies": { "uuid": { "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true } } }, "terser": { - "version": "5.3.1", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", + "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", "dev": true, "requires": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" }, "dependencies": { "source-map": { - "version": "0.6.1", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } }, "test-exclude": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "requires": { "@istanbuljs/schema": "^0.1.2", @@ -9672,32 +10720,51 @@ }, "text-table": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, "through": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, "to-fast-properties": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, "to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { "is-number": "^7.0.0" } }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, "trim": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "trim-newlines": { - "version": "4.0.2" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.0.2.tgz", + "integrity": "sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==" }, "type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { "prelude-ls": "^1.2.1" @@ -9705,10 +10772,14 @@ }, "type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, "typedarray-to-buffer": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "requires": { "is-typedarray": "^1.0.0" @@ -9716,6 +10787,8 @@ }, "unbox-primitive": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -9725,30 +10798,42 @@ } }, "unfetch": { - "version": "4.2.0" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.4", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -9756,6 +10841,8 @@ }, "urlgrey": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-1.0.0.tgz", + "integrity": "sha512-hJfIzMPJmI9IlLkby8QrsCykQ+SXDeO2W5Q9QTW3QpqZVTx4a/K7p8/5q+/isD8vsbVaFgql/gvAoQCRQ2Cb5w==", "dev": true, "requires": { "fast-url-parser": "^1.1.3" @@ -9763,25 +10850,49 @@ }, "util-deprecate": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, "uuid": { "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, "v8-compile-cache": { - "version": "2.2.0", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, "validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -9789,6 +10900,8 @@ }, "which-boxed-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, "requires": { "is-bigint": "^1.0.1", @@ -9800,6 +10913,8 @@ }, "which-collection": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", "dev": true, "requires": { "is-map": "^2.0.1", @@ -9810,30 +10925,34 @@ }, "which-module": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "which-typed-array": { - "version": "1.1.4", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", + "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", "dev": true, "requires": { - "available-typed-arrays": "^1.0.2", - "call-bind": "^1.0.0", - "es-abstract": "^1.18.0-next.1", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", "foreach": "^2.0.5", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.1", - "is-typed-array": "^1.1.3" + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.7" } }, - "window-size": { - "version": "0.2.0" - }, "word-wrap": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, "wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -9842,27 +10961,41 @@ }, "dependencies": { "ansi-styles": { - "version": "4.2.1", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true } } }, "wrappy": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "write-file-atomic": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { "imurmurhash": "^0.1.4", @@ -9872,14 +11005,20 @@ } }, "y18n": { - "version": "4.0.1", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs": { "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "requires": { "cliui": "^6.0.0", @@ -9893,18 +11032,66 @@ "which-module": "^2.0.0", "y18n": "^4.0.0", "yargs-parser": "^18.1.2" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } } }, "yargs-parser": { - "version": "18.1.3", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" }, "yocto-queue": { - "version": "0.1.0" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } } } diff --git a/package.json b/package.json index e2d2d972..b751c4f0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "wtf_wikipedia", "description": "parse wikiscript into json", - "version": "9.0.1", + "version": "9.0.2", "author": "Spencer Kelly (http://spencermounta.in)", "repository": { "type": "git", @@ -46,10 +46,6 @@ "defaults", "not ie <= 11", "not op_mini all", - "node 10", - "node 11", - "node 12", - "node 13", "maintained node versions" ], "files": [ @@ -72,31 +68,30 @@ }, "dependencies": { "isomorphic-unfetch": "^3.1.0", - "path-exists-cli": "2.0.0", - "recursive-install": "1.4.0" + "path-exists-cli": "2.0.0" }, "devDependencies": { - "@babel/core": "7.15.0", - "@babel/preset-env": "7.15.0", - "@rollup/plugin-node-resolve": "13.0.4", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "13.0.6", "amble": "1.3.0", "codecov": "3.8.3", "cross-env": "7.0.3", - "eslint": "7.32.0", - "eslint-plugin-compat": "3.13.0", - "eslint-plugin-regexp": "1.1.0", + "eslint": "8.3.0", + "eslint-plugin-compat": "4.0.0", + "eslint-plugin-regexp": "1.5.0", "nyc": "^15.1.0", - "rollup": "2.56.3", - "rollup-plugin-babel": "4.4.0", - "rollup-plugin-commonjs": "10.1.0", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", "rollup-plugin-terser": "7.0.2", "shelljs": "0.8.4", "tap-dancer": "0.3.4", - "tape": "5.3.1" + "tape": "5.3.2" }, "eslintIgnore": [ "builds/*.js" ], "license": "MIT" -} +} \ No newline at end of file diff --git a/plugins/api/builds/wtf-plugin-api.js b/plugins/api/builds/wtf-plugin-api.js index 94ad3dff..162c0ceb 100644 --- a/plugins/api/builds/wtf-plugin-api.js +++ b/plugins/api/builds/wtf-plugin-api.js @@ -1,633 +1,644 @@ -/* wtf-plugin-api 0.1.0 MIT */ +/* wtf-plugin-api 0.1.1 MIT */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfImage = factory()); -}(this, (function () { 'use strict'; - - var normalize$5 = function (title = '') { - title = title.replace(/ /g, '_'); - title = title.trim(); - title = encodeURIComponent(title); - return title; - }; - - var defaults$7 = { - lang: 'en', - path: 'w/api.php' - }; - - var toUrlParams$7 = function (obj) { - let arr = Object.entries(obj).map(([key, value]) => { - return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`; - }); - return arr.join('&'); - }; - - var fetchOne$3 = function (url, http, prop) { - return http(url).then(res => { - let pages = Object.keys(res.query.pages || {}); - - if (pages.length === 0) { - return { - pages: [], - cursor: null - }; - } - - return { - pages: res.query.pages[pages[0]][prop] || [], - cursor: res.continue - }; - }); - }; - - var _fns = { - normalize: normalize$5, - defaults: defaults$7, - toUrlParams: toUrlParams$7, - fetchOne: fetchOne$3 - }; - - const { - normalize: normalize$4, - defaults: defaults$6, - toUrlParams: toUrlParams$6, - fetchOne: fetchOne$2 - } = _fns; - const params$6 = { - action: 'query', - rdnamespace: 0, - prop: 'redirects', - rdlimit: 500, - format: 'json', - origin: '*', - redirects: true - }; - - const makeUrl$5 = function (title, options, append) { - let url = `https://${options.lang}.wikipedia.org/${options.path}?`; - - if (options.domain) { - url = `https://${options.domain}/${options.path}?`; - } - - url += toUrlParams$6(params$6); - url += `&titles=${normalize$4(title)}`; - - if (append) { - url += append; - } - - return url; - }; - - const getRedirects = async function (title, http) { - let list = []; - let getMore = true; - let append = ''; - - while (getMore) { - let url = makeUrl$5(title, defaults$6, append); - let { - pages, - cursor - } = await fetchOne$2(url, http, 'redirects'); - list = list.concat(pages); - - if (cursor && cursor.rdcontinue) { - append = '&rdcontinue=' + cursor.lhcontinue; - } else { - getMore = false; - } - } - - return list; - }; - - var getRedirects_1 = getRedirects; - - const { - normalize: normalize$3, - defaults: defaults$5, - toUrlParams: toUrlParams$5, - fetchOne: fetchOne$1 - } = _fns; - const params$5 = { - action: 'query', - lhnamespace: 0, - prop: 'linkshere', - lhshow: '!redirect', - lhlimit: 500, - format: 'json', - origin: '*', - redirects: true - }; - - const makeUrl$4 = function (title, options, append) { - let url = `https://${options.lang}.wikipedia.org/${options.path}?`; - - if (options.domain) { - url = `https://${options.domain}/${options.path}?`; - } - - url += toUrlParams$5(params$5); - url += `&titles=${normalize$3(title)}`; - - if (append) { - url += append; - } - - return url; - }; - - const getIncoming = async function (title, http) { - let list = []; - let getMore = true; - let append = ''; - - while (getMore) { - let url = makeUrl$4(title, defaults$5, append); - let { - pages, - cursor - } = await fetchOne$1(url, http, 'linkshere'); - list = list.concat(pages); - - if (cursor && cursor.lhcontinue) { - append = '&lhcontinue=' + cursor.lhcontinue; - } else { - getMore = false; - } - } - - return list; - }; - - var getIncoming_1 = getIncoming; - - const { - normalize: normalize$2, - defaults: defaults$4, - toUrlParams: toUrlParams$4 - } = _fns; - const params$4 = { - action: 'query', - prop: 'pageviews', - format: 'json', - origin: '*', - redirects: true - }; - - const makeUrl$3 = function (title, options, append) { - let url = `https://${options.lang}.wikipedia.org/${options.path}?`; - - if (options.domain) { - url = `https://${options.domain}/${options.path}?`; - } - - url += toUrlParams$4(params$4); - url += `&titles=${normalize$2(title)}`; - - if (append) { - url += append; - } - - return url; - }; - - const getPageViews = function (doc, http) { - let url = makeUrl$3(doc.title(), defaults$4); - return http(url).then(res => { - let pages = Object.keys(res.query.pages || {}); - - if (pages.length === 0) { - return []; - } - - return res.query.pages[pages[0]].pageviews || []; - }); - }; - - var getPageViews_1 = getPageViews; - - const { - normalize: normalize$1, - defaults: defaults$3, - toUrlParams: toUrlParams$3, - fetchOne - } = _fns; - const params$3 = { - action: 'query', - tinamespace: 0, - prop: 'transcludedin', - tilimit: 500, - format: 'json', - origin: '*', - redirects: true - }; - - const makeUrl$2 = function (title, options, append) { - let url = `https://${options.lang}.wikipedia.org/${options.path}?`; - - if (options.domain) { - url = `https://${options.domain}/${options.path}?`; - } - - url += toUrlParams$3(params$3); - url += `&titles=${normalize$1(title)}`; // support custom cursor params - - if (append) { - url += append; - } - - return url; - }; // fetch all the pages that use a specific template - - - const getTransclusions = async function (template, _options, http) { - let list = []; - let getMore = true; - let append = ''; - - while (getMore) { - let url = makeUrl$2(template, defaults$3, append); - let { - pages, - cursor - } = await fetchOne(url, http, 'transcludedin'); - list = list.concat(pages); - - if (cursor && cursor.ticontinue) { - append = '&ticontinue=' + cursor.ticontinue; - } else { - getMore = false; - } - } - - return list; - }; - - var getTransclusions_1 = getTransclusions; - - const { - normalize, - defaults: defaults$2, - toUrlParams: toUrlParams$2 - } = _fns; - const params$2 = { - action: 'query', - list: 'categorymembers', - cmlimit: 500, - cmtype: 'page|subcat', - cmnamespace: 0, - format: 'json', - origin: '*', - redirects: true - }; - - const fetchIt$1 = function (url, http, prop) { - return http(url).then(res => { - let pages = Object.keys(res.query[prop] || {}); - - if (pages.length === 0) { - return { - pages: [], - cursor: null - }; - } - - let arr = pages.map(k => res.query[prop][k]); - return { - pages: arr, - cursor: res.continue - }; - }); - }; - - const makeUrl$1 = function (title, options, append) { - let url = `https://${options.lang}.wikipedia.org/${options.path}?`; - - if (options.domain) { - url = `https://${options.domain}/${options.path}?`; - } - - url += toUrlParams$2(params$2); - - if (/^Category/i.test(title) === false) { - title = 'Category:' + title; - } - - url += `&cmtitle=${normalize(title)}`; - - if (append) { - url += append; - } - - return url; - }; - - const getCategory = async function (title, options, http) { - let list = []; - let getMore = true; - let append = ''; - - while (getMore) { - let url = makeUrl$1(title, defaults$2, append); - let { - pages, - cursor - } = await fetchIt$1(url, http, 'categorymembers'); - list = list.concat(pages); - - if (cursor && cursor.cmcontinue) { - append = '&cmcontinue=' + cursor.lhcontinue; - } else { - getMore = false; - } - } - - return list; - }; - - var getCategory_1 = getCategory; - - const { - defaults: defaults$1, - toUrlParams: toUrlParams$1 - } = _fns; - const params$1 = { - action: 'query', - generator: 'random', - grnnamespace: '0', - prop: 'pageprops', - grnlimit: '1', - rvslots: 'main', - format: 'json', - origin: '*', - redirects: 'true' - }; - - const fetchIt = function (url, http) { - return http(url).then(res => { - let pages = Object.keys(res.query.pages || {}); - - if (pages.length === 0) { - return { - pages: [], - cursor: null - }; - } - - return res.query.pages[pages[0]]; - }); - }; - - const makeUrl = function (options) { - let url = `https://${options.lang}.wikipedia.org/${options.path}?`; - - if (options.domain) { - url = `https://${options.domain}/${options.path}?`; - } - - url += toUrlParams$1(params$1); - return url; - }; - - const getRandom = async function (_options, http) { - let url = makeUrl(defaults$1); - let page = await fetchIt(url, http); - return page; - }; - - var getRandom_1 = getRandom; - - const { - defaults, - toUrlParams - } = _fns; - const params = { - format: 'json', - action: 'query', - generator: 'random', - grnnamespace: 14, - prop: 'revisions', - grnlimit: 1, - origin: '*' - }; - - const randomCategory = function (options = {}, http) { - options = Object.assign({}, defaults, options); - let url = `https://${options.lang}.wikipedia.org/${options.path}?`; - - if (options.domain) { - url = `https://${options.domain}/${options.path}?`; - } - - url += toUrlParams(params); - return http(url).then(res => { - try { - let o = res.query.pages; - let key = Object.keys(o)[0]; - return o[key].title; - } catch (e) { - throw e; - } - }).catch(e => { - console.error(e); - return null; - }); - }; - - var getRandomCategory = randomCategory; - - /* slow 1.1.0 MIT */ - //only do foo promises at a time. - var rateLimit = function rateLimit(arr, fn) { - var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5; - return new Promise(function (resolve, reject) { - //some validation - if (!arr || !fn) { - reject('Error: missing required parameters to rate-limit function'); - return; - } - - if (arr.length === 0) { - resolve([]); - return; - } - - var results = []; - var n = limit - 1; - var pending = 0; //simple recursion, but with then/finally - - var go = function go(i) { - pending += 1; - var p = fn(arr[i]); - - if (!p.then) { - reject('Error: function must return a promise'); - return; - } - - p.then(function (r) { - results[i] = r; - }); - p["catch"](function (e) { - console.error(e); - results[i] = null; - }); - p["finally"](function () { - pending -= 1; - n += 1; //should we keep going? - - if (arr.length >= n + 1) { - go(n); - } else if (pending <= 0) { - //no more to start - are we the last to finish? - resolve(results); - } - }); - }; //fire-off first-n items - - - var init = arr.length < limit ? arr.length : limit; - - for (var i = 0; i < init; i += 1) { - go(i); - } - }); - }; - - var rateLimit_1 = rateLimit; - var methods = { - one: function one(arr, fn) { - return rateLimit_1(arr, fn, 1); - }, - two: function two(arr, fn) { - return rateLimit_1(arr, fn, 2); - }, - three: function three(arr, fn) { - return rateLimit_1(arr, fn, 3); - }, - four: function four(arr, fn) { - return rateLimit_1(arr, fn, 4); - }, - five: function five(arr, fn) { - return rateLimit_1(arr, fn, 5); - }, - ten: function ten(arr, fn) { - return rateLimit_1(arr, fn, 10); - }, - fifteen: function fifteen(arr, fn) { - return rateLimit_1(arr, fn, 15); - } - }; - methods.serial = methods.one; - methods.linear = methods.one; - methods.crawl = methods.three; - methods.walk = methods.five; - methods.run = methods.ten; - methods.sprint = methods.fifteen; - var src$1 = methods; - - var slow$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': src$1 - }); - - function getCjsExportFromNamespace (n) { - return n && n['default'] || n; - } - - var slow = getCjsExportFromNamespace(slow$1); - - const isObject = function (obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; - }; - - const chunkBy = function (arr, chunkSize = 5) { - let groups = []; - - for (let i = 0; i < arr.length; i += chunkSize) { - groups.push(arr.slice(i, i + chunkSize)); - } - - return groups; - }; - - const fetchList = function (pages, options, wtf) { - // support a list of strings, or objects - if (pages[0] && isObject(pages[0])) { - pages = pages.map(o => o.title); - } // fetch in groups of 5 - - - let groups = chunkBy(pages); - - const doit = function (group) { - return wtf.fetch(group, options); //returns a promise - }; //only allow three requests at a time - - - return slow.three(groups, doit).then(res => { - // flatten into one list - return res.reduce((arr, a) => { - arr = arr.concat(a); - return arr; - }); - }); - }; - - var fetchList_1 = fetchList; - - const addMethod = function (models) { - // doc methods - models.Doc.prototype.getRedirects = function () { - return getRedirects_1(this.title(), models.http); - }; - - models.Doc.prototype.getIncoming = function () { - return getIncoming_1(this.title(), models.http); - }; - - models.Doc.prototype.getPageViews = function () { - return getPageViews_1(this, models.http); - }; // constructor methods - - - models.wtf.getRandomPage = function (options) { - return getRandom_1(options, models.http); - }; - - models.wtf.getRandomCategory = function (options) { - return getRandomCategory(options, models.http); - }; - - models.wtf.getTemplatePages = function (template, options) { - return getTransclusions_1(template, options, models.http); - }; - - models.wtf.getCategoryPages = function (category, options) { - return getCategory_1(category, options, models.http); - }; - - models.wtf.fetchList = function (list, options) { - return fetchList_1(list, options, models.wtf); - }; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfImage = factory()); +})(this, (function () { 'use strict'; + + function getDefaultExportFromNamespaceIfNotNamed (n) { + return n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n; + } + + var _fns = {}; + + _fns.normalize = function () { + let title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + title = title.replace(/ /g, '_'); + title = title.trim(); + title = encodeURIComponent(title); + return title; + }; + + _fns.defaults = { + lang: 'en', + path: 'w/api.php' + }; + + _fns.toUrlParams = function (obj) { + let arr = Object.entries(obj).map(_ref => { + let [key, value] = _ref; + return "".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(value)); + }); + return arr.join('&'); + }; + + _fns.fetchOne = function (url, http, prop) { + return http(url).then(res => { + let pages = Object.keys(res.query.pages || {}); + + if (pages.length === 0) { + return { + pages: [], + cursor: null + }; + } + + return { + pages: res.query.pages[pages[0]][prop] || [], + cursor: res.continue + }; + }); + }; + + const { + normalize: normalize$4, + defaults: defaults$6, + toUrlParams: toUrlParams$6, + fetchOne: fetchOne$2 + } = _fns; + const params$6 = { + action: 'query', + rdnamespace: 0, + prop: 'redirects', + rdlimit: 500, + format: 'json', + origin: '*', + redirects: true + }; + + const makeUrl$5 = function (title, options, append) { + let url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); + + if (options.domain) { + url = "https://".concat(options.domain, "/").concat(options.path, "?"); + } + + url += toUrlParams$6(params$6); + url += "&titles=".concat(normalize$4(title)); + + if (append) { + url += append; + } + + return url; + }; + + const getRedirects$1 = async function (title, http) { + let list = []; + let getMore = true; + let append = ''; + + while (getMore) { + let url = makeUrl$5(title, defaults$6, append); + let { + pages, + cursor + } = await fetchOne$2(url, http, 'redirects'); + list = list.concat(pages); + + if (cursor && cursor.rdcontinue) { + append = '&rdcontinue=' + cursor.lhcontinue; + } else { + getMore = false; + } + } + + return list; + }; + + var getRedirects_1 = getRedirects$1; + + const { + normalize: normalize$3, + defaults: defaults$5, + toUrlParams: toUrlParams$5, + fetchOne: fetchOne$1 + } = _fns; + const params$5 = { + action: 'query', + lhnamespace: 0, + prop: 'linkshere', + lhshow: '!redirect', + lhlimit: 500, + format: 'json', + origin: '*', + redirects: true + }; + + const makeUrl$4 = function (title, options, append) { + let url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); + + if (options.domain) { + url = "https://".concat(options.domain, "/").concat(options.path, "?"); + } + + url += toUrlParams$5(params$5); + url += "&titles=".concat(normalize$3(title)); + + if (append) { + url += append; + } + + return url; + }; + + const getIncoming$1 = async function (title, http) { + let list = []; + let getMore = true; + let append = ''; + + while (getMore) { + let url = makeUrl$4(title, defaults$5, append); + let { + pages, + cursor + } = await fetchOne$1(url, http, 'linkshere'); + list = list.concat(pages); + + if (cursor && cursor.lhcontinue) { + append = '&lhcontinue=' + cursor.lhcontinue; + } else { + getMore = false; + } + } + + return list; + }; + + var getIncoming_1 = getIncoming$1; + + const { + normalize: normalize$2, + defaults: defaults$4, + toUrlParams: toUrlParams$4 + } = _fns; + const params$4 = { + action: 'query', + prop: 'pageviews', + format: 'json', + origin: '*', + redirects: true + }; + + const makeUrl$3 = function (title, options, append) { + let url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); + + if (options.domain) { + url = "https://".concat(options.domain, "/").concat(options.path, "?"); + } + + url += toUrlParams$4(params$4); + url += "&titles=".concat(normalize$2(title)); + + if (append) { + url += append; + } + + return url; + }; + + const getPageViews$1 = function (doc, http) { + let url = makeUrl$3(doc.title(), defaults$4); + return http(url).then(res => { + let pages = Object.keys(res.query.pages || {}); + + if (pages.length === 0) { + return []; + } + + return res.query.pages[pages[0]].pageviews || []; + }); + }; + + var getPageViews_1 = getPageViews$1; + + const { + normalize: normalize$1, + defaults: defaults$3, + toUrlParams: toUrlParams$3, + fetchOne + } = _fns; + const params$3 = { + action: 'query', + tinamespace: 0, + prop: 'transcludedin', + tilimit: 500, + format: 'json', + origin: '*', + redirects: true + }; + + const makeUrl$2 = function (title, options, append) { + let url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); + + if (options.domain) { + url = "https://".concat(options.domain, "/").concat(options.path, "?"); + } + + url += toUrlParams$3(params$3); + url += "&titles=".concat(normalize$1(title)); // support custom cursor params + + if (append) { + url += append; + } + + return url; + }; // fetch all the pages that use a specific template + + + const getTransclusions$1 = async function (template, _options, http) { + let list = []; + let getMore = true; + let append = ''; + + while (getMore) { + let url = makeUrl$2(template, defaults$3, append); + let { + pages, + cursor + } = await fetchOne(url, http, 'transcludedin'); + list = list.concat(pages); + + if (cursor && cursor.ticontinue) { + append = '&ticontinue=' + cursor.ticontinue; + } else { + getMore = false; + } + } + + return list; + }; + + var getTransclusions_1 = getTransclusions$1; + + const { + normalize, + defaults: defaults$2, + toUrlParams: toUrlParams$2 + } = _fns; + const params$2 = { + action: 'query', + list: 'categorymembers', + cmlimit: 500, + cmtype: 'page|subcat', + cmnamespace: 0, + format: 'json', + origin: '*', + redirects: true + }; + + const fetchIt$1 = function (url, http, prop) { + return http(url).then(res => { + let pages = Object.keys(res.query[prop] || {}); + + if (pages.length === 0) { + return { + pages: [], + cursor: null + }; + } + + let arr = pages.map(k => res.query[prop][k]); + return { + pages: arr, + cursor: res.continue + }; + }); + }; + + const makeUrl$1 = function (title, options, append) { + let url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); + + if (options.domain) { + url = "https://".concat(options.domain, "/").concat(options.path, "?"); + } + + url += toUrlParams$2(params$2); + + if (/^Category/i.test(title) === false) { + title = 'Category:' + title; + } + + url += "&cmtitle=".concat(normalize(title)); + + if (append) { + url += append; + } + + return url; + }; + + const getCategory$1 = async function (title, options, http) { + let list = []; + let getMore = true; + let append = ''; + + while (getMore) { + let url = makeUrl$1(title, defaults$2, append); + let { + pages, + cursor + } = await fetchIt$1(url, http, 'categorymembers'); + list = list.concat(pages); + + if (cursor && cursor.cmcontinue) { + append = '&cmcontinue=' + cursor.lhcontinue; + } else { + getMore = false; + } + } + + return list; + }; + + var getCategory_1 = getCategory$1; + + const { + defaults: defaults$1, + toUrlParams: toUrlParams$1 + } = _fns; + const params$1 = { + action: 'query', + generator: 'random', + grnnamespace: '0', + prop: 'pageprops', + grnlimit: '1', + rvslots: 'main', + format: 'json', + origin: '*', + redirects: 'true' + }; + + const fetchIt = function (url, http) { + return http(url).then(res => { + let pages = Object.keys(res.query.pages || {}); + + if (pages.length === 0) { + return { + pages: [], + cursor: null + }; + } + + return res.query.pages[pages[0]]; + }); + }; + + const makeUrl = function (options) { + let url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); + + if (options.domain) { + url = "https://".concat(options.domain, "/").concat(options.path, "?"); + } + + url += toUrlParams$1(params$1); + return url; + }; + + const getRandom = async function (_options, http) { + let url = makeUrl(defaults$1); + let page = await fetchIt(url, http); + return page; + }; + + var getRandom_1 = getRandom; + + const { + defaults, + toUrlParams + } = _fns; + const params = { + format: 'json', + action: 'query', + generator: 'random', + grnnamespace: 14, + prop: 'revisions', + grnlimit: 1, + origin: '*' + }; + + const randomCategory = function () { + let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + let http = arguments.length > 1 ? arguments[1] : undefined; + options = Object.assign({}, defaults, options); + let url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); + + if (options.domain) { + url = "https://".concat(options.domain, "/").concat(options.path, "?"); + } + + url += toUrlParams(params); + return http(url).then(res => { + try { + let o = res.query.pages; + let key = Object.keys(o)[0]; + return o[key].title; + } catch (e) { + throw e; + } + }).catch(e => { + console.error(e); + return null; + }); + }; + + var getRandomCategory$1 = randomCategory; + + /* slow 1.1.0 MIT */ + //only do foo promises at a time. + var rateLimit = function rateLimit(arr, fn) { + var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5; + return new Promise(function (resolve, reject) { + //some validation + if (!arr || !fn) { + reject('Error: missing required parameters to rate-limit function'); + return; + } + + if (arr.length === 0) { + resolve([]); + return; + } + + var results = []; + var n = limit - 1; + var pending = 0; //simple recursion, but with then/finally + + var go = function go(i) { + pending += 1; + var p = fn(arr[i]); + + if (!p.then) { + reject('Error: function must return a promise'); + return; + } + + p.then(function (r) { + results[i] = r; + }); + p["catch"](function (e) { + console.error(e); + results[i] = null; + }); + p["finally"](function () { + pending -= 1; + n += 1; //should we keep going? + + if (arr.length >= n + 1) { + go(n); + } else if (pending <= 0) { + //no more to start - are we the last to finish? + resolve(results); + } + }); + }; //fire-off first-n items + + + var init = arr.length < limit ? arr.length : limit; + + for (var i = 0; i < init; i += 1) { + go(i); + } + }); + }; + + var rateLimit_1 = rateLimit; + var methods = { + one: function one(arr, fn) { + return rateLimit_1(arr, fn, 1); + }, + two: function two(arr, fn) { + return rateLimit_1(arr, fn, 2); + }, + three: function three(arr, fn) { + return rateLimit_1(arr, fn, 3); + }, + four: function four(arr, fn) { + return rateLimit_1(arr, fn, 4); + }, + five: function five(arr, fn) { + return rateLimit_1(arr, fn, 5); + }, + ten: function ten(arr, fn) { + return rateLimit_1(arr, fn, 10); + }, + fifteen: function fifteen(arr, fn) { + return rateLimit_1(arr, fn, 15); + } + }; + methods.serial = methods.one; + methods.linear = methods.one; + methods.crawl = methods.three; + methods.walk = methods.five; + methods.run = methods.ten; + methods.sprint = methods.fifteen; + var src$1 = methods; + + var slow$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + 'default': src$1 + }); + + var require$$0 = /*@__PURE__*/getDefaultExportFromNamespaceIfNotNamed(slow$1); + + const slow = require$$0; + + const isObject = function (obj) { + return obj && Object.prototype.toString.call(obj) === '[object Object]'; + }; + + const chunkBy = function (arr) { + let chunkSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5; + let groups = []; + + for (let i = 0; i < arr.length; i += chunkSize) { + groups.push(arr.slice(i, i + chunkSize)); + } + + return groups; + }; + + const fetchList$1 = function (pages, options, wtf) { + // support a list of strings, or objects + if (pages[0] && isObject(pages[0])) { + pages = pages.map(o => o.title); + } // fetch in groups of 5 + + + let groups = chunkBy(pages); + + const doit = function (group) { + return wtf.fetch(group, options); //returns a promise + }; //only allow three requests at a time + + + return slow.three(groups, doit).then(res => { + // flatten into one list + return res.reduce((arr, a) => { + arr = arr.concat(a); + return arr; + }); + }); + }; + + var fetchList_1 = fetchList$1; + + const getRedirects = getRedirects_1; + const getIncoming = getIncoming_1; + const getPageViews = getPageViews_1; + const getTransclusions = getTransclusions_1; + const getCategory = getCategory_1; + const getRandomPage = getRandom_1; + const getRandomCategory = getRandomCategory$1; + const fetchList = fetchList_1; + + const addMethod = function (models) { + // doc methods + models.Doc.prototype.getRedirects = function () { + return getRedirects(this.title(), models.http); + }; + + models.Doc.prototype.getIncoming = function () { + return getIncoming(this.title(), models.http); + }; + + models.Doc.prototype.getPageViews = function () { + return getPageViews(this, models.http); + }; // constructor methods + + + models.wtf.getRandomPage = function (options) { + return getRandomPage(options, models.http); + }; + + models.wtf.getRandomCategory = function (options) { + return getRandomCategory(options, models.http); + }; + + models.wtf.getTemplatePages = function (template, options) { + return getTransclusions(template, options, models.http); + }; + + models.wtf.getCategoryPages = function (category, options) { + return getCategory(category, options, models.http); + }; - models.wtf.getIncoming = function (title) { - return getIncoming_1(title, models.http); - }; + models.wtf.fetchList = function (list, options) { + return fetchList(list, options, models.wtf); + }; - models.wtf.getRedirects = function (title) { - return getRedirects_1(title, models.http); - }; - }; + models.wtf.getIncoming = function (title) { + return getIncoming(title, models.http); + }; - var src = addMethod; + models.wtf.getRedirects = function (title) { + return getRedirects(title, models.http); + }; + }; - return src; + var src = addMethod; -}))); + return src; + +})); //# sourceMappingURL=wtf-plugin-api.js.map diff --git a/plugins/api/builds/wtf-plugin-api.js.map b/plugins/api/builds/wtf-plugin-api.js.map index 73a4a27c..b9eacbc0 100644 --- a/plugins/api/builds/wtf-plugin-api.js.map +++ b/plugins/api/builds/wtf-plugin-api.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-api.js","sources":["../src/_fns.js","../src/getRedirects.js","../src/getIncoming.js","../src/getPageViews.js","../src/getTransclusions.js","../src/getCategory.js","../src/getRandom.js","../src/getRandomCategory.js","../node_modules/slow/builds/slow.mjs","../src/fetchList.js","../src/index.js"],"sourcesContent":["exports.normalize = function (title = '') {\n title = title.replace(/ /g, '_')\n title = title.trim()\n title = encodeURIComponent(title)\n return title\n}\n\nexports.defaults = {\n lang: 'en',\n path: 'w/api.php'\n}\n\nexports.toUrlParams = function (obj) {\n let arr = Object.entries(obj).map(([key, value]) => {\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`\n })\n return arr.join('&')\n}\n\nexports.fetchOne = function (url, http, prop) {\n return http(url).then((res) => {\n let pages = Object.keys(res.query.pages || {})\n if (pages.length === 0) {\n return { pages: [], cursor: null }\n }\n return {\n pages: res.query.pages[pages[0]][prop] || [],\n cursor: res.continue\n }\n })\n}\n","const { normalize, defaults, toUrlParams, fetchOne } = require('./_fns')\n\nconst params = {\n action: 'query',\n rdnamespace: 0,\n prop: 'redirects',\n rdlimit: 500,\n format: 'json',\n origin: '*',\n redirects: true\n}\n\nconst makeUrl = function (title, options, append) {\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n url += `&titles=${normalize(title)}`\n if (append) {\n url += append\n }\n return url\n}\n\nconst getRedirects = async function (title, http) {\n let list = []\n let getMore = true\n let append = ''\n while (getMore) {\n let url = makeUrl(title, defaults, append)\n let { pages, cursor } = await fetchOne(url, http, 'redirects')\n list = list.concat(pages)\n if (cursor && cursor.rdcontinue) {\n append = '&rdcontinue=' + cursor.lhcontinue\n } else {\n getMore = false\n }\n }\n return list\n}\nmodule.exports = getRedirects\n","const { normalize, defaults, toUrlParams, fetchOne } = require('./_fns')\n\nconst params = {\n action: 'query',\n lhnamespace: 0,\n prop: 'linkshere',\n lhshow: '!redirect',\n lhlimit: 500,\n format: 'json',\n origin: '*',\n redirects: true\n}\n\nconst makeUrl = function (title, options, append) {\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n url += `&titles=${normalize(title)}`\n if (append) {\n url += append\n }\n return url\n}\n\nconst getIncoming = async function (title, http) {\n let list = []\n let getMore = true\n let append = ''\n while (getMore) {\n let url = makeUrl(title, defaults, append)\n let { pages, cursor } = await fetchOne(url, http, 'linkshere')\n list = list.concat(pages)\n if (cursor && cursor.lhcontinue) {\n append = '&lhcontinue=' + cursor.lhcontinue\n } else {\n getMore = false\n }\n }\n return list\n}\nmodule.exports = getIncoming\n","const { normalize, defaults, toUrlParams } = require('./_fns')\n\nconst params = {\n action: 'query',\n prop: 'pageviews',\n format: 'json',\n origin: '*',\n redirects: true\n}\n\nconst makeUrl = function (title, options, append) {\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n url += `&titles=${normalize(title)}`\n if (append) {\n url += append\n }\n return url\n}\n\nconst getPageViews = function (doc, http) {\n let url = makeUrl(doc.title(), defaults)\n return http(url).then((res) => {\n let pages = Object.keys(res.query.pages || {})\n if (pages.length === 0) {\n return []\n }\n return res.query.pages[pages[0]].pageviews || []\n })\n}\nmodule.exports = getPageViews\n","const { normalize, defaults, toUrlParams, fetchOne } = require('./_fns')\n\nconst params = {\n action: 'query',\n tinamespace: 0,\n prop: 'transcludedin',\n tilimit: 500,\n format: 'json',\n origin: '*',\n redirects: true\n}\n\nconst makeUrl = function (title, options, append) {\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n url += `&titles=${normalize(title)}`\n // support custom cursor params\n if (append) {\n url += append\n }\n return url\n}\n\n// fetch all the pages that use a specific template\nconst getTransclusions = async function (template, _options, http) {\n let list = []\n let getMore = true\n let append = ''\n while (getMore) {\n let url = makeUrl(template, defaults, append)\n let { pages, cursor } = await fetchOne(url, http, 'transcludedin')\n list = list.concat(pages)\n if (cursor && cursor.ticontinue) {\n append = '&ticontinue=' + cursor.ticontinue\n } else {\n getMore = false\n }\n }\n return list\n}\nmodule.exports = getTransclusions\n","const { normalize, defaults, toUrlParams } = require('./_fns')\n\nconst params = {\n action: 'query',\n list: 'categorymembers',\n cmlimit: 500,\n cmtype: 'page|subcat',\n cmnamespace: 0,\n format: 'json',\n origin: '*',\n redirects: true\n}\n\nconst fetchIt = function (url, http, prop) {\n return http(url).then((res) => {\n let pages = Object.keys(res.query[prop] || {})\n if (pages.length === 0) {\n return { pages: [], cursor: null }\n }\n let arr = pages.map((k) => res.query[prop][k])\n return {\n pages: arr,\n cursor: res.continue\n }\n })\n}\n\nconst makeUrl = function (title, options, append) {\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n if (/^Category/i.test(title) === false) {\n title = 'Category:' + title\n }\n url += `&cmtitle=${normalize(title)}`\n if (append) {\n url += append\n }\n return url\n}\n\nconst getCategory = async function (title, options, http) {\n let list = []\n let getMore = true\n let append = ''\n while (getMore) {\n let url = makeUrl(title, defaults, append)\n let { pages, cursor } = await fetchIt(url, http, 'categorymembers')\n list = list.concat(pages)\n if (cursor && cursor.cmcontinue) {\n append = '&cmcontinue=' + cursor.lhcontinue\n } else {\n getMore = false\n }\n }\n return list\n}\nmodule.exports = getCategory\n","const { defaults, toUrlParams } = require('./_fns')\n\nconst params = {\n action: 'query',\n generator: 'random',\n grnnamespace: '0',\n prop: 'pageprops',\n grnlimit: '1',\n rvslots: 'main',\n format: 'json',\n origin: '*',\n redirects: 'true'\n}\n\nconst fetchIt = function (url, http) {\n return http(url).then((res) => {\n let pages = Object.keys(res.query.pages || {})\n if (pages.length === 0) {\n return { pages: [], cursor: null }\n }\n return res.query.pages[pages[0]]\n })\n}\n\nconst makeUrl = function (options) {\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n return url\n}\n\nconst getRandom = async function (_options, http) {\n let url = makeUrl(defaults)\n let page = await fetchIt(url, http)\n return page\n}\nmodule.exports = getRandom\n","const { defaults, toUrlParams } = require('./_fns')\n\nconst params = {\n format: 'json',\n action: 'query',\n generator: 'random',\n grnnamespace: 14,\n prop: 'revisions',\n grnlimit: 1,\n origin: '*'\n}\n\nconst randomCategory = function (options = {}, http) {\n options = Object.assign({}, defaults, options)\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n return http(url)\n .then((res) => {\n try {\n let o = res.query.pages\n let key = Object.keys(o)[0]\n return o[key].title\n } catch (e) {\n throw e\n }\n })\n .catch((e) => {\n console.error(e)\n return null\n })\n}\nmodule.exports = randomCategory\n","/* slow 1.1.0 MIT */\n//only do foo promises at a time.\nvar rateLimit = function rateLimit(arr, fn) {\n var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;\n return new Promise(function (resolve, reject) {\n //some validation\n if (!arr || !fn) {\n reject('Error: missing required parameters to rate-limit function');\n return;\n }\n\n if (arr.length === 0) {\n resolve([]);\n return;\n }\n\n var results = [];\n var n = limit - 1;\n var pending = 0; //simple recursion, but with then/finally\n\n var go = function go(i) {\n pending += 1;\n var p = fn(arr[i]);\n\n if (!p.then) {\n reject('Error: function must return a promise');\n return;\n }\n\n p.then(function (r) {\n results[i] = r;\n });\n p[\"catch\"](function (e) {\n console.error(e);\n results[i] = null;\n });\n p[\"finally\"](function () {\n pending -= 1;\n n += 1; //should we keep going?\n\n if (arr.length >= n + 1) {\n go(n);\n } else if (pending <= 0) {\n //no more to start - are we the last to finish?\n resolve(results);\n }\n });\n }; //fire-off first-n items\n\n\n var init = arr.length < limit ? arr.length : limit;\n\n for (var i = 0; i < init; i += 1) {\n go(i);\n }\n });\n};\n\nvar rateLimit_1 = rateLimit;\n\nvar methods = {\n one: function one(arr, fn) {\n return rateLimit_1(arr, fn, 1);\n },\n two: function two(arr, fn) {\n return rateLimit_1(arr, fn, 2);\n },\n three: function three(arr, fn) {\n return rateLimit_1(arr, fn, 3);\n },\n four: function four(arr, fn) {\n return rateLimit_1(arr, fn, 4);\n },\n five: function five(arr, fn) {\n return rateLimit_1(arr, fn, 5);\n },\n ten: function ten(arr, fn) {\n return rateLimit_1(arr, fn, 10);\n },\n fifteen: function fifteen(arr, fn) {\n return rateLimit_1(arr, fn, 15);\n }\n};\nmethods.serial = methods.one;\nmethods.linear = methods.one;\nmethods.crawl = methods.three;\nmethods.walk = methods.five;\nmethods.run = methods.ten;\nmethods.sprint = methods.fifteen;\nvar src = methods;\n\nexport default src;\n","const slow = require('slow')\nconst isObject = function (obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]'\n}\n\nconst chunkBy = function (arr, chunkSize = 5) {\n let groups = []\n for (let i = 0; i < arr.length; i += chunkSize) {\n groups.push(arr.slice(i, i + chunkSize))\n }\n return groups\n}\n\nconst fetchList = function (pages, options, wtf) {\n // support a list of strings, or objects\n if (pages[0] && isObject(pages[0])) {\n pages = pages.map((o) => o.title)\n }\n // fetch in groups of 5\n let groups = chunkBy(pages)\n\n const doit = function (group) {\n return wtf.fetch(group, options) //returns a promise\n }\n //only allow three requests at a time\n return slow.three(groups, doit).then((res) => {\n // flatten into one list\n return res.reduce((arr, a) => {\n arr = arr.concat(a)\n return arr\n })\n })\n}\nmodule.exports = fetchList\n","const getRedirects = require('./getRedirects')\nconst getIncoming = require('./getIncoming')\nconst getPageViews = require('./getPageViews')\nconst getTransclusions = require('./getTransclusions')\nconst getCategory = require('./getCategory')\nconst getRandomPage = require('./getRandom')\nconst getRandomCategory = require('./getRandomCategory')\nconst fetchList = require('./fetchList')\n\nconst addMethod = function (models) {\n // doc methods\n models.Doc.prototype.getRedirects = function () {\n return getRedirects(this.title(), models.http)\n }\n models.Doc.prototype.getIncoming = function () {\n return getIncoming(this.title(), models.http)\n }\n models.Doc.prototype.getPageViews = function () {\n return getPageViews(this, models.http)\n }\n\n // constructor methods\n models.wtf.getRandomPage = function (options) {\n return getRandomPage(options, models.http)\n }\n models.wtf.getRandomCategory = function (options) {\n return getRandomCategory(options, models.http)\n }\n models.wtf.getTemplatePages = function (template, options) {\n return getTransclusions(template, options, models.http)\n }\n models.wtf.getCategoryPages = function (category, options) {\n return getCategory(category, options, models.http)\n }\n models.wtf.fetchList = function (list, options) {\n return fetchList(list, options, models.wtf)\n }\n models.wtf.getIncoming = function (title) {\n return getIncoming(title, models.http)\n }\n models.wtf.getRedirects = function (title) {\n return getRedirects(title, models.http)\n }\n}\nmodule.exports = addMethod\n"],"names":["title","replace","trim","encodeURIComponent","lang","path","obj","arr","Object","entries","map","key","value","join","url","http","prop","then","res","pages","keys","query","length","cursor","continue","normalize","defaults","toUrlParams","fetchOne","require$$0","params","action","rdnamespace","rdlimit","format","origin","redirects","makeUrl","options","append","domain","getRedirects","list","getMore","concat","rdcontinue","lhcontinue","lhnamespace","lhshow","lhlimit","getIncoming","getPageViews","doc","pageviews","tinamespace","tilimit","getTransclusions","template","_options","ticontinue","cmlimit","cmtype","cmnamespace","fetchIt","k","test","getCategory","cmcontinue","generator","grnnamespace","grnlimit","rvslots","getRandom","page","randomCategory","assign","o","e","catch","console","error","rateLimit","fn","limit","arguments","undefined","Promise","resolve","reject","results","n","pending","go","i","p","r","init","rateLimit_1","methods","one","two","three","four","five","ten","fifteen","serial","linear","crawl","walk","run","sprint","src","isObject","prototype","toString","call","chunkBy","chunkSize","groups","push","slice","fetchList","wtf","doit","group","fetch","slow","reduce","a","addMethod","models","Doc","getRandomPage","getRandomCategory","getTemplatePages","getCategoryPages","category"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-api.js","sources":["../src/_fns.js","../src/getRedirects.js","../src/getIncoming.js","../src/getPageViews.js","../src/getTransclusions.js","../src/getCategory.js","../src/getRandom.js","../src/getRandomCategory.js","../node_modules/slow/builds/slow.mjs","../src/fetchList.js","../src/index.js"],"sourcesContent":["exports.normalize = function (title = '') {\n title = title.replace(/ /g, '_')\n title = title.trim()\n title = encodeURIComponent(title)\n return title\n}\n\nexports.defaults = {\n lang: 'en',\n path: 'w/api.php'\n}\n\nexports.toUrlParams = function (obj) {\n let arr = Object.entries(obj).map(([key, value]) => {\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`\n })\n return arr.join('&')\n}\n\nexports.fetchOne = function (url, http, prop) {\n return http(url).then((res) => {\n let pages = Object.keys(res.query.pages || {})\n if (pages.length === 0) {\n return { pages: [], cursor: null }\n }\n return {\n pages: res.query.pages[pages[0]][prop] || [],\n cursor: res.continue\n }\n })\n}\n","const { normalize, defaults, toUrlParams, fetchOne } = require('./_fns')\n\nconst params = {\n action: 'query',\n rdnamespace: 0,\n prop: 'redirects',\n rdlimit: 500,\n format: 'json',\n origin: '*',\n redirects: true\n}\n\nconst makeUrl = function (title, options, append) {\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n url += `&titles=${normalize(title)}`\n if (append) {\n url += append\n }\n return url\n}\n\nconst getRedirects = async function (title, http) {\n let list = []\n let getMore = true\n let append = ''\n while (getMore) {\n let url = makeUrl(title, defaults, append)\n let { pages, cursor } = await fetchOne(url, http, 'redirects')\n list = list.concat(pages)\n if (cursor && cursor.rdcontinue) {\n append = '&rdcontinue=' + cursor.lhcontinue\n } else {\n getMore = false\n }\n }\n return list\n}\nmodule.exports = getRedirects\n","const { normalize, defaults, toUrlParams, fetchOne } = require('./_fns')\n\nconst params = {\n action: 'query',\n lhnamespace: 0,\n prop: 'linkshere',\n lhshow: '!redirect',\n lhlimit: 500,\n format: 'json',\n origin: '*',\n redirects: true\n}\n\nconst makeUrl = function (title, options, append) {\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n url += `&titles=${normalize(title)}`\n if (append) {\n url += append\n }\n return url\n}\n\nconst getIncoming = async function (title, http) {\n let list = []\n let getMore = true\n let append = ''\n while (getMore) {\n let url = makeUrl(title, defaults, append)\n let { pages, cursor } = await fetchOne(url, http, 'linkshere')\n list = list.concat(pages)\n if (cursor && cursor.lhcontinue) {\n append = '&lhcontinue=' + cursor.lhcontinue\n } else {\n getMore = false\n }\n }\n return list\n}\nmodule.exports = getIncoming\n","const { normalize, defaults, toUrlParams } = require('./_fns')\n\nconst params = {\n action: 'query',\n prop: 'pageviews',\n format: 'json',\n origin: '*',\n redirects: true\n}\n\nconst makeUrl = function (title, options, append) {\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n url += `&titles=${normalize(title)}`\n if (append) {\n url += append\n }\n return url\n}\n\nconst getPageViews = function (doc, http) {\n let url = makeUrl(doc.title(), defaults)\n return http(url).then((res) => {\n let pages = Object.keys(res.query.pages || {})\n if (pages.length === 0) {\n return []\n }\n return res.query.pages[pages[0]].pageviews || []\n })\n}\nmodule.exports = getPageViews\n","const { normalize, defaults, toUrlParams, fetchOne } = require('./_fns')\n\nconst params = {\n action: 'query',\n tinamespace: 0,\n prop: 'transcludedin',\n tilimit: 500,\n format: 'json',\n origin: '*',\n redirects: true\n}\n\nconst makeUrl = function (title, options, append) {\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n url += `&titles=${normalize(title)}`\n // support custom cursor params\n if (append) {\n url += append\n }\n return url\n}\n\n// fetch all the pages that use a specific template\nconst getTransclusions = async function (template, _options, http) {\n let list = []\n let getMore = true\n let append = ''\n while (getMore) {\n let url = makeUrl(template, defaults, append)\n let { pages, cursor } = await fetchOne(url, http, 'transcludedin')\n list = list.concat(pages)\n if (cursor && cursor.ticontinue) {\n append = '&ticontinue=' + cursor.ticontinue\n } else {\n getMore = false\n }\n }\n return list\n}\nmodule.exports = getTransclusions\n","const { normalize, defaults, toUrlParams } = require('./_fns')\n\nconst params = {\n action: 'query',\n list: 'categorymembers',\n cmlimit: 500,\n cmtype: 'page|subcat',\n cmnamespace: 0,\n format: 'json',\n origin: '*',\n redirects: true\n}\n\nconst fetchIt = function (url, http, prop) {\n return http(url).then((res) => {\n let pages = Object.keys(res.query[prop] || {})\n if (pages.length === 0) {\n return { pages: [], cursor: null }\n }\n let arr = pages.map((k) => res.query[prop][k])\n return {\n pages: arr,\n cursor: res.continue\n }\n })\n}\n\nconst makeUrl = function (title, options, append) {\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n if (/^Category/i.test(title) === false) {\n title = 'Category:' + title\n }\n url += `&cmtitle=${normalize(title)}`\n if (append) {\n url += append\n }\n return url\n}\n\nconst getCategory = async function (title, options, http) {\n let list = []\n let getMore = true\n let append = ''\n while (getMore) {\n let url = makeUrl(title, defaults, append)\n let { pages, cursor } = await fetchIt(url, http, 'categorymembers')\n list = list.concat(pages)\n if (cursor && cursor.cmcontinue) {\n append = '&cmcontinue=' + cursor.lhcontinue\n } else {\n getMore = false\n }\n }\n return list\n}\nmodule.exports = getCategory\n","const { defaults, toUrlParams } = require('./_fns')\n\nconst params = {\n action: 'query',\n generator: 'random',\n grnnamespace: '0',\n prop: 'pageprops',\n grnlimit: '1',\n rvslots: 'main',\n format: 'json',\n origin: '*',\n redirects: 'true'\n}\n\nconst fetchIt = function (url, http) {\n return http(url).then((res) => {\n let pages = Object.keys(res.query.pages || {})\n if (pages.length === 0) {\n return { pages: [], cursor: null }\n }\n return res.query.pages[pages[0]]\n })\n}\n\nconst makeUrl = function (options) {\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n return url\n}\n\nconst getRandom = async function (_options, http) {\n let url = makeUrl(defaults)\n let page = await fetchIt(url, http)\n return page\n}\nmodule.exports = getRandom\n","const { defaults, toUrlParams } = require('./_fns')\n\nconst params = {\n format: 'json',\n action: 'query',\n generator: 'random',\n grnnamespace: 14,\n prop: 'revisions',\n grnlimit: 1,\n origin: '*'\n}\n\nconst randomCategory = function (options = {}, http) {\n options = Object.assign({}, defaults, options)\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += toUrlParams(params)\n return http(url)\n .then((res) => {\n try {\n let o = res.query.pages\n let key = Object.keys(o)[0]\n return o[key].title\n } catch (e) {\n throw e\n }\n })\n .catch((e) => {\n console.error(e)\n return null\n })\n}\nmodule.exports = randomCategory\n","/* slow 1.1.0 MIT */\n//only do foo promises at a time.\nvar rateLimit = function rateLimit(arr, fn) {\n var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;\n return new Promise(function (resolve, reject) {\n //some validation\n if (!arr || !fn) {\n reject('Error: missing required parameters to rate-limit function');\n return;\n }\n\n if (arr.length === 0) {\n resolve([]);\n return;\n }\n\n var results = [];\n var n = limit - 1;\n var pending = 0; //simple recursion, but with then/finally\n\n var go = function go(i) {\n pending += 1;\n var p = fn(arr[i]);\n\n if (!p.then) {\n reject('Error: function must return a promise');\n return;\n }\n\n p.then(function (r) {\n results[i] = r;\n });\n p[\"catch\"](function (e) {\n console.error(e);\n results[i] = null;\n });\n p[\"finally\"](function () {\n pending -= 1;\n n += 1; //should we keep going?\n\n if (arr.length >= n + 1) {\n go(n);\n } else if (pending <= 0) {\n //no more to start - are we the last to finish?\n resolve(results);\n }\n });\n }; //fire-off first-n items\n\n\n var init = arr.length < limit ? arr.length : limit;\n\n for (var i = 0; i < init; i += 1) {\n go(i);\n }\n });\n};\n\nvar rateLimit_1 = rateLimit;\n\nvar methods = {\n one: function one(arr, fn) {\n return rateLimit_1(arr, fn, 1);\n },\n two: function two(arr, fn) {\n return rateLimit_1(arr, fn, 2);\n },\n three: function three(arr, fn) {\n return rateLimit_1(arr, fn, 3);\n },\n four: function four(arr, fn) {\n return rateLimit_1(arr, fn, 4);\n },\n five: function five(arr, fn) {\n return rateLimit_1(arr, fn, 5);\n },\n ten: function ten(arr, fn) {\n return rateLimit_1(arr, fn, 10);\n },\n fifteen: function fifteen(arr, fn) {\n return rateLimit_1(arr, fn, 15);\n }\n};\nmethods.serial = methods.one;\nmethods.linear = methods.one;\nmethods.crawl = methods.three;\nmethods.walk = methods.five;\nmethods.run = methods.ten;\nmethods.sprint = methods.fifteen;\nvar src = methods;\n\nexport default src;\n","const slow = require('slow')\nconst isObject = function (obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]'\n}\n\nconst chunkBy = function (arr, chunkSize = 5) {\n let groups = []\n for (let i = 0; i < arr.length; i += chunkSize) {\n groups.push(arr.slice(i, i + chunkSize))\n }\n return groups\n}\n\nconst fetchList = function (pages, options, wtf) {\n // support a list of strings, or objects\n if (pages[0] && isObject(pages[0])) {\n pages = pages.map((o) => o.title)\n }\n // fetch in groups of 5\n let groups = chunkBy(pages)\n\n const doit = function (group) {\n return wtf.fetch(group, options) //returns a promise\n }\n //only allow three requests at a time\n return slow.three(groups, doit).then((res) => {\n // flatten into one list\n return res.reduce((arr, a) => {\n arr = arr.concat(a)\n return arr\n })\n })\n}\nmodule.exports = fetchList\n","const getRedirects = require('./getRedirects')\nconst getIncoming = require('./getIncoming')\nconst getPageViews = require('./getPageViews')\nconst getTransclusions = require('./getTransclusions')\nconst getCategory = require('./getCategory')\nconst getRandomPage = require('./getRandom')\nconst getRandomCategory = require('./getRandomCategory')\nconst fetchList = require('./fetchList')\n\nconst addMethod = function (models) {\n // doc methods\n models.Doc.prototype.getRedirects = function () {\n return getRedirects(this.title(), models.http)\n }\n models.Doc.prototype.getIncoming = function () {\n return getIncoming(this.title(), models.http)\n }\n models.Doc.prototype.getPageViews = function () {\n return getPageViews(this, models.http)\n }\n\n // constructor methods\n models.wtf.getRandomPage = function (options) {\n return getRandomPage(options, models.http)\n }\n models.wtf.getRandomCategory = function (options) {\n return getRandomCategory(options, models.http)\n }\n models.wtf.getTemplatePages = function (template, options) {\n return getTransclusions(template, options, models.http)\n }\n models.wtf.getCategoryPages = function (category, options) {\n return getCategory(category, options, models.http)\n }\n models.wtf.fetchList = function (list, options) {\n return fetchList(list, options, models.wtf)\n }\n models.wtf.getIncoming = function (title) {\n return getIncoming(title, models.http)\n }\n models.wtf.getRedirects = function (title) {\n return getRedirects(title, models.http)\n }\n}\nmodule.exports = addMethod\n"],"names":["title","replace","trim","encodeURIComponent","lang","path","obj","arr","Object","entries","map","key","value","join","url","http","prop","then","res","pages","keys","query","length","cursor","continue","normalize","defaults","toUrlParams","fetchOne","require$$0","params","action","rdnamespace","rdlimit","format","origin","redirects","makeUrl","options","append","domain","getRedirects","list","getMore","concat","rdcontinue","lhcontinue","getRedirects_1","lhnamespace","lhshow","lhlimit","getIncoming","getIncoming_1","getPageViews","doc","pageviews","getPageViews_1","tinamespace","tilimit","getTransclusions","template","_options","ticontinue","getTransclusions_1","cmlimit","cmtype","cmnamespace","fetchIt","k","test","getCategory","cmcontinue","getCategory_1","generator","grnnamespace","grnlimit","rvslots","getRandom","page","getRandom_1","randomCategory","assign","o","e","catch","console","error","getRandomCategory","rateLimit","fn","limit","arguments","undefined","Promise","resolve","reject","results","n","pending","go","i","p","r","init","rateLimit_1","methods","one","two","three","four","five","ten","fifteen","serial","linear","crawl","walk","run","sprint","src","slow","isObject","prototype","toString","call","chunkBy","chunkSize","groups","push","slice","fetchList","wtf","doit","group","fetch","reduce","a","fetchList_1","require$$1","require$$2","require$$3","require$$4","getRandomPage","require$$5","require$$6","require$$7","addMethod","models","Doc","getTemplatePages","getCategoryPages","category"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/api/builds/wtf-plugin-api.min.js b/plugins/api/builds/wtf-plugin-api.min.js index 02695a68..7e8535ef 100644 --- a/plugins/api/builds/wtf-plugin-api.min.js +++ b/plugins/api/builds/wtf-plugin-api.min.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).wtfImage=e()}(this,(function(){"use strict";var t={normalize:function(t=""){return t=(t=t.replace(/ /g,"_")).trim(),t=encodeURIComponent(t)},defaults:{lang:"en",path:"w/api.php"},toUrlParams:function(t){return Object.entries(t).map((([t,e])=>`${encodeURIComponent(t)}=${encodeURIComponent(e)}`)).join("&")},fetchOne:function(t,e,n){return e(t).then((t=>{let e=Object.keys(t.query.pages||{});return 0===e.length?{pages:[],cursor:null}:{pages:t.query.pages[e[0]][n]||[],cursor:t.continue}}))}};const{normalize:e,defaults:n,toUrlParams:r,fetchOne:o}=t,i={action:"query",rdnamespace:0,prop:"redirects",rdlimit:500,format:"json",origin:"*",redirects:!0},a=function(t,n,o){let a=`https://${n.lang}.wikipedia.org/${n.path}?`;return n.domain&&(a=`https://${n.domain}/${n.path}?`),a+=r(i),a+="&titles="+e(t),o&&(a+=o),a};var c=async function(t,e){let r=[],i=!0,c="";for(;i;){let u=a(t,n,c),{pages:s,cursor:l}=await o(u,e,"redirects");r=r.concat(s),l&&l.rdcontinue?c="&rdcontinue="+l.lhcontinue:i=!1}return r};const{normalize:u,defaults:s,toUrlParams:l,fetchOne:p}=t,f={action:"query",lhnamespace:0,prop:"linkshere",lhshow:"!redirect",lhlimit:500,format:"json",origin:"*",redirects:!0},h=function(t,e,n){let r=`https://${e.lang}.wikipedia.org/${e.path}?`;return e.domain&&(r=`https://${e.domain}/${e.path}?`),r+=l(f),r+="&titles="+u(t),n&&(r+=n),r};var g=async function(t,e){let n=[],r=!0,o="";for(;r;){let i=h(t,s,o),{pages:a,cursor:c}=await p(i,e,"linkshere");n=n.concat(a),c&&c.lhcontinue?o="&lhcontinue="+c.lhcontinue:r=!1}return n};const{normalize:m,defaults:d,toUrlParams:y}=t,w={action:"query",prop:"pageviews",format:"json",origin:"*",redirects:!0};var $=function(t,e){return e(function(t,e,n){let r=`https://${e.lang}.wikipedia.org/${e.path}?`;return e.domain&&(r=`https://${e.domain}/${e.path}?`),r+=y(w),r+="&titles="+m(t),n&&(r+=n),r}(t.title(),d)).then((t=>{let e=Object.keys(t.query.pages||{});return 0===e.length?[]:t.query.pages[e[0]].pageviews||[]}))};const{normalize:v,defaults:j,toUrlParams:b,fetchOne:q}=t,k={action:"query",tinamespace:0,prop:"transcludedin",tilimit:500,format:"json",origin:"*",redirects:!0},O=function(t,e,n){let r=`https://${e.lang}.wikipedia.org/${e.path}?`;return e.domain&&(r=`https://${e.domain}/${e.path}?`),r+=b(k),r+="&titles="+v(t),n&&(r+=n),r};var P=async function(t,e,n){let r=[],o=!0,i="";for(;o;){let e=O(t,j,i),{pages:a,cursor:c}=await q(e,n,"transcludedin");r=r.concat(a),c&&c.ticontinue?i="&ticontinue="+c.ticontinue:o=!1}return r};const{normalize:U,defaults:z,toUrlParams:C}=t,R={action:"query",list:"categorymembers",cmlimit:500,cmtype:"page|subcat",cmnamespace:0,format:"json",origin:"*",redirects:!0},I=function(t,e,n){return e(t).then((t=>{let e=Object.keys(t.query[n]||{});return 0===e.length?{pages:[],cursor:null}:{pages:e.map((e=>t.query[n][e])),cursor:t.continue}}))},_=function(t,e,n){let r=`https://${e.lang}.wikipedia.org/${e.path}?`;return e.domain&&(r=`https://${e.domain}/${e.path}?`),r+=C(R),!1===/^Category/i.test(t)&&(t="Category:"+t),r+="&cmtitle="+U(t),n&&(r+=n),r};var D=async function(t,e,n){let r=[],o=!0,i="";for(;o;){let e=_(t,z,i),{pages:a,cursor:c}=await I(e,n,"categorymembers");r=r.concat(a),c&&c.cmcontinue?i="&cmcontinue="+c.lhcontinue:o=!1}return r};const{defaults:T,toUrlParams:x}=t,E={action:"query",generator:"random",grnnamespace:"0",prop:"pageprops",grnlimit:"1",rvslots:"main",format:"json",origin:"*",redirects:"true"};var L=async function(t,e){let n=function(t){let e=`https://${t.lang}.wikipedia.org/${t.path}?`;return t.domain&&(e=`https://${t.domain}/${t.path}?`),e+=x(E),e}(T);return await function(t,e){return e(t).then((t=>{let e=Object.keys(t.query.pages||{});return 0===e.length?{pages:[],cursor:null}:t.query.pages[e[0]]}))}(n,e)};const{defaults:S,toUrlParams:V}=t,A={format:"json",action:"query",generator:"random",grnnamespace:14,prop:"revisions",grnlimit:1,origin:"*"};var B=function(t={},e){let n=`https://${(t=Object.assign({},S,t)).lang}.wikipedia.org/${t.path}?`;return t.domain&&(n=`https://${t.domain}/${t.path}?`),n+=V(A),e(n).then((t=>{try{let e=t.query.pages;return e[Object.keys(e)[0]].title}catch(t){throw t}})).catch((t=>(console.error(t),null)))},F=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5;return new Promise((function(r,o){if(t&&e)if(0!==t.length)for(var i=[],a=n-1,c=0,u=function n(u){c+=1;var s=e(t[u]);s.then?(s.then((function(t){i[u]=t})),s.catch((function(t){console.error(t),i[u]=null})),s.finally((function(){c-=1,a+=1,t.length>=a+1?n(a):c<=0&&r(i)}))):o("Error: function must return a promise")},s=t.lengtht.title)));let o=function(t,e=5){let n=[];for(let r=0;rt.reduce(((t,e)=>t=t.concat(e)))))};return function(t){t.Doc.prototype.getRedirects=function(){return c(this.title(),t.http)},t.Doc.prototype.getIncoming=function(){return g(this.title(),t.http)},t.Doc.prototype.getPageViews=function(){return $(this,t.http)},t.wtf.getRandomPage=function(e){return L(e,t.http)},t.wtf.getRandomCategory=function(e){return B(e,t.http)},t.wtf.getTemplatePages=function(e,n){return P(e,n,t.http)},t.wtf.getCategoryPages=function(e,n){return D(e,n,t.http)},t.wtf.fetchList=function(e,n){return M(e,n,t.wtf)},t.wtf.getIncoming=function(e){return g(e,t.http)},t.wtf.getRedirects=function(e){return c(e,t.http)}}})); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t="undefined"!=typeof globalThis?globalThis:t||self).wtfImage=n()}(this,(function(){"use strict";function t(t){return t&&Object.prototype.hasOwnProperty.call(t,"default")&&1===Object.keys(t).length?t.default:t}var n={normalize:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return t=t.replace(/ /g,"_"),t=t.trim(),t=encodeURIComponent(t),t},defaults:{lang:"en",path:"w/api.php"},toUrlParams:function(t){return Object.entries(t).map((t=>{let[n,e]=t;return"".concat(encodeURIComponent(n),"=").concat(encodeURIComponent(e))})).join("&")},fetchOne:function(t,n,e){return n(t).then((t=>{let n=Object.keys(t.query.pages||{});return 0===n.length?{pages:[],cursor:null}:{pages:t.query.pages[n[0]][e]||[],cursor:t.continue}}))}};const{normalize:e,defaults:r,toUrlParams:o,fetchOne:c}=n,a={action:"query",rdnamespace:0,prop:"redirects",rdlimit:500,format:"json",origin:"*",redirects:!0},i=function(t,n,r){let c="https://".concat(n.lang,".wikipedia.org/").concat(n.path,"?");return n.domain&&(c="https://".concat(n.domain,"/").concat(n.path,"?")),c+=o(a),c+="&titles=".concat(e(t)),r&&(c+=r),c};var u=async function(t,n){let e=[],o=!0,a="";for(;o;){let u=i(t,r,a),{pages:s,cursor:l}=await c(u,n,"redirects");e=e.concat(s),l&&l.rdcontinue?a="&rdcontinue="+l.lhcontinue:o=!1}return e};const{normalize:s,defaults:l,toUrlParams:p,fetchOne:f}=n,h={action:"query",lhnamespace:0,prop:"linkshere",lhshow:"!redirect",lhlimit:500,format:"json",origin:"*",redirects:!0},g=function(t,n,e){let r="https://".concat(n.lang,".wikipedia.org/").concat(n.path,"?");return n.domain&&(r="https://".concat(n.domain,"/").concat(n.path,"?")),r+=p(h),r+="&titles=".concat(s(t)),e&&(r+=e),r};var m=async function(t,n){let e=[],r=!0,o="";for(;r;){let c=g(t,l,o),{pages:a,cursor:i}=await f(c,n,"linkshere");e=e.concat(a),i&&i.lhcontinue?o="&lhcontinue="+i.lhcontinue:r=!1}return e};const{normalize:d,defaults:y,toUrlParams:w}=n,v={action:"query",prop:"pageviews",format:"json",origin:"*",redirects:!0};var j=function(t,n){return n(function(t,n,e){let r="https://".concat(n.lang,".wikipedia.org/").concat(n.path,"?");return n.domain&&(r="https://".concat(n.domain,"/").concat(n.path,"?")),r+=w(v),r+="&titles=".concat(d(t)),e&&(r+=e),r}(t.title(),y)).then((t=>{let n=Object.keys(t.query.pages||{});return 0===n.length?[]:t.query.pages[n[0]].pageviews||[]}))};const{normalize:b,defaults:q,toUrlParams:O,fetchOne:k}=n,P={action:"query",tinamespace:0,prop:"transcludedin",tilimit:500,format:"json",origin:"*",redirects:!0},U=function(t,n,e){let r="https://".concat(n.lang,".wikipedia.org/").concat(n.path,"?");return n.domain&&(r="https://".concat(n.domain,"/").concat(n.path,"?")),r+=O(P),r+="&titles=".concat(b(t)),e&&(r+=e),r};var z=async function(t,n,e){let r=[],o=!0,c="";for(;o;){let n=U(t,q,c),{pages:a,cursor:i}=await k(n,e,"transcludedin");r=r.concat(a),i&&i.ticontinue?c="&ticontinue="+i.ticontinue:o=!1}return r};const{normalize:C,defaults:R,toUrlParams:I}=n,_={action:"query",list:"categorymembers",cmlimit:500,cmtype:"page|subcat",cmnamespace:0,format:"json",origin:"*",redirects:!0},D=function(t,n,e){return n(t).then((t=>{let n=Object.keys(t.query[e]||{});return 0===n.length?{pages:[],cursor:null}:{pages:n.map((n=>t.query[e][n])),cursor:t.continue}}))},T=function(t,n,e){let r="https://".concat(n.lang,".wikipedia.org/").concat(n.path,"?");return n.domain&&(r="https://".concat(n.domain,"/").concat(n.path,"?")),r+=I(_),!1===/^Category/i.test(t)&&(t="Category:"+t),r+="&cmtitle=".concat(C(t)),e&&(r+=e),r};var x=async function(t,n,e){let r=[],o=!0,c="";for(;o;){let n=T(t,R,c),{pages:a,cursor:i}=await D(n,e,"categorymembers");r=r.concat(a),i&&i.cmcontinue?c="&cmcontinue="+i.lhcontinue:o=!1}return r};const{defaults:E,toUrlParams:L}=n,S={action:"query",generator:"random",grnnamespace:"0",prop:"pageprops",grnlimit:"1",rvslots:"main",format:"json",origin:"*",redirects:"true"};var V=async function(t,n){let e=function(t){let n="https://".concat(t.lang,".wikipedia.org/").concat(t.path,"?");return t.domain&&(n="https://".concat(t.domain,"/").concat(t.path,"?")),n+=L(S),n}(E);return await function(t,n){return n(t).then((t=>{let n=Object.keys(t.query.pages||{});return 0===n.length?{pages:[],cursor:null}:t.query.pages[n[0]]}))}(e,n)};const{defaults:A,toUrlParams:B}=n,F={format:"json",action:"query",generator:"random",grnnamespace:14,prop:"revisions",grnlimit:1,origin:"*"};var G=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;t=Object.assign({},A,t);let e="https://".concat(t.lang,".wikipedia.org/").concat(t.path,"?");return t.domain&&(e="https://".concat(t.domain,"/").concat(t.path,"?")),e+=B(F),n(e).then((t=>{try{let n=t.query.pages;return n[Object.keys(n)[0]].title}catch(t){throw t}})).catch((t=>(console.error(t),null)))},H=function(t,n){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5;return new Promise((function(r,o){if(t&&n)if(0!==t.length)for(var c=[],a=e-1,i=0,u=function e(u){i+=1;var s=n(t[u]);s.then?(s.then((function(t){c[u]=t})),s.catch((function(t){console.error(t),c[u]=null})),s.finally((function(){i-=1,a+=1,t.length>=a+1?e(a):i<=0&&r(c)}))):o("Error: function must return a promise")},s=t.lengtht.title)));let o=function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5,e=[];for(let r=0;rt.reduce(((t,n)=>t=t.concat(n)))))};return function(t){t.Doc.prototype.getRedirects=function(){return N(this.title(),t.http)},t.Doc.prototype.getIncoming=function(){return Q(this.title(),t.http)},t.Doc.prototype.getPageViews=function(){return W(this,t.http)},t.wtf.getRandomPage=function(n){return Z(n,t.http)},t.wtf.getRandomCategory=function(n){return $(n,t.http)},t.wtf.getTemplatePages=function(n,e){return X(n,e,t.http)},t.wtf.getCategoryPages=function(n,e){return Y(n,e,t.http)},t.wtf.fetchList=function(n,e){return tt(n,e,t.wtf)},t.wtf.getIncoming=function(n){return Q(n,t.http)},t.wtf.getRedirects=function(n){return N(n,t.http)}}})); diff --git a/plugins/api/builds/wtf-plugin-api.mjs b/plugins/api/builds/wtf-plugin-api.mjs index 354c1266..6416d792 100644 --- a/plugins/api/builds/wtf-plugin-api.mjs +++ b/plugins/api/builds/wtf-plugin-api.mjs @@ -1,24 +1,32 @@ -/* wtf-plugin-api 0.1.0 MIT */ -var normalize$5 = function (title = '') { +/* wtf-plugin-api 0.1.1 MIT */ +function getDefaultExportFromNamespaceIfNotNamed (n) { + return n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n; +} + +var _fns = {}; + +_fns.normalize = function () { + let title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; title = title.replace(/ /g, '_'); title = title.trim(); title = encodeURIComponent(title); return title; }; -var defaults$7 = { +_fns.defaults = { lang: 'en', path: 'w/api.php' }; -var toUrlParams$7 = function (obj) { - let arr = Object.entries(obj).map(([key, value]) => { - return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`; +_fns.toUrlParams = function (obj) { + let arr = Object.entries(obj).map(_ref => { + let [key, value] = _ref; + return "".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(value)); }); return arr.join('&'); }; -var fetchOne$3 = function (url, http, prop) { +_fns.fetchOne = function (url, http, prop) { return http(url).then(res => { let pages = Object.keys(res.query.pages || {}); @@ -36,13 +44,6 @@ var fetchOne$3 = function (url, http, prop) { }); }; -var _fns = { - normalize: normalize$5, - defaults: defaults$7, - toUrlParams: toUrlParams$7, - fetchOne: fetchOne$3 -}; - const { normalize: normalize$4, defaults: defaults$6, @@ -60,14 +61,14 @@ const params$6 = { }; const makeUrl$5 = function (title, options, append) { - let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + let url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); if (options.domain) { - url = `https://${options.domain}/${options.path}?`; + url = "https://".concat(options.domain, "/").concat(options.path, "?"); } url += toUrlParams$6(params$6); - url += `&titles=${normalize$4(title)}`; + url += "&titles=".concat(normalize$4(title)); if (append) { url += append; @@ -76,7 +77,7 @@ const makeUrl$5 = function (title, options, append) { return url; }; -const getRedirects = async function (title, http) { +const getRedirects$1 = async function (title, http) { let list = []; let getMore = true; let append = ''; @@ -99,7 +100,7 @@ const getRedirects = async function (title, http) { return list; }; -var getRedirects_1 = getRedirects; +var getRedirects_1 = getRedirects$1; const { normalize: normalize$3, @@ -119,14 +120,14 @@ const params$5 = { }; const makeUrl$4 = function (title, options, append) { - let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + let url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); if (options.domain) { - url = `https://${options.domain}/${options.path}?`; + url = "https://".concat(options.domain, "/").concat(options.path, "?"); } url += toUrlParams$5(params$5); - url += `&titles=${normalize$3(title)}`; + url += "&titles=".concat(normalize$3(title)); if (append) { url += append; @@ -135,7 +136,7 @@ const makeUrl$4 = function (title, options, append) { return url; }; -const getIncoming = async function (title, http) { +const getIncoming$1 = async function (title, http) { let list = []; let getMore = true; let append = ''; @@ -158,7 +159,7 @@ const getIncoming = async function (title, http) { return list; }; -var getIncoming_1 = getIncoming; +var getIncoming_1 = getIncoming$1; const { normalize: normalize$2, @@ -174,14 +175,14 @@ const params$4 = { }; const makeUrl$3 = function (title, options, append) { - let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + let url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); if (options.domain) { - url = `https://${options.domain}/${options.path}?`; + url = "https://".concat(options.domain, "/").concat(options.path, "?"); } url += toUrlParams$4(params$4); - url += `&titles=${normalize$2(title)}`; + url += "&titles=".concat(normalize$2(title)); if (append) { url += append; @@ -190,7 +191,7 @@ const makeUrl$3 = function (title, options, append) { return url; }; -const getPageViews = function (doc, http) { +const getPageViews$1 = function (doc, http) { let url = makeUrl$3(doc.title(), defaults$4); return http(url).then(res => { let pages = Object.keys(res.query.pages || {}); @@ -203,7 +204,7 @@ const getPageViews = function (doc, http) { }); }; -var getPageViews_1 = getPageViews; +var getPageViews_1 = getPageViews$1; const { normalize: normalize$1, @@ -222,14 +223,14 @@ const params$3 = { }; const makeUrl$2 = function (title, options, append) { - let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + let url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); if (options.domain) { - url = `https://${options.domain}/${options.path}?`; + url = "https://".concat(options.domain, "/").concat(options.path, "?"); } url += toUrlParams$3(params$3); - url += `&titles=${normalize$1(title)}`; // support custom cursor params + url += "&titles=".concat(normalize$1(title)); // support custom cursor params if (append) { url += append; @@ -239,7 +240,7 @@ const makeUrl$2 = function (title, options, append) { }; // fetch all the pages that use a specific template -const getTransclusions = async function (template, _options, http) { +const getTransclusions$1 = async function (template, _options, http) { let list = []; let getMore = true; let append = ''; @@ -262,7 +263,7 @@ const getTransclusions = async function (template, _options, http) { return list; }; -var getTransclusions_1 = getTransclusions; +var getTransclusions_1 = getTransclusions$1; const { normalize, @@ -300,10 +301,10 @@ const fetchIt$1 = function (url, http, prop) { }; const makeUrl$1 = function (title, options, append) { - let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + let url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); if (options.domain) { - url = `https://${options.domain}/${options.path}?`; + url = "https://".concat(options.domain, "/").concat(options.path, "?"); } url += toUrlParams$2(params$2); @@ -312,7 +313,7 @@ const makeUrl$1 = function (title, options, append) { title = 'Category:' + title; } - url += `&cmtitle=${normalize(title)}`; + url += "&cmtitle=".concat(normalize(title)); if (append) { url += append; @@ -321,7 +322,7 @@ const makeUrl$1 = function (title, options, append) { return url; }; -const getCategory = async function (title, options, http) { +const getCategory$1 = async function (title, options, http) { let list = []; let getMore = true; let append = ''; @@ -344,7 +345,7 @@ const getCategory = async function (title, options, http) { return list; }; -var getCategory_1 = getCategory; +var getCategory_1 = getCategory$1; const { defaults: defaults$1, @@ -378,10 +379,10 @@ const fetchIt = function (url, http) { }; const makeUrl = function (options) { - let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + let url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); if (options.domain) { - url = `https://${options.domain}/${options.path}?`; + url = "https://".concat(options.domain, "/").concat(options.path, "?"); } url += toUrlParams$1(params$1); @@ -410,12 +411,14 @@ const params = { origin: '*' }; -const randomCategory = function (options = {}, http) { +const randomCategory = function () { + let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + let http = arguments.length > 1 ? arguments[1] : undefined; options = Object.assign({}, defaults, options); - let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + let url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); if (options.domain) { - url = `https://${options.domain}/${options.path}?`; + url = "https://".concat(options.domain, "/").concat(options.path, "?"); } url += toUrlParams(params); @@ -433,7 +436,7 @@ const randomCategory = function (options = {}, http) { }); }; -var getRandomCategory = randomCategory; +var getRandomCategory$1 = randomCategory; /* slow 1.1.0 MIT */ //only do foo promises at a time. @@ -526,21 +529,20 @@ methods.sprint = methods.fifteen; var src$1 = methods; var slow$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': src$1 + __proto__: null, + 'default': src$1 }); -function getCjsExportFromNamespace (n) { - return n && n['default'] || n; -} +var require$$0 = /*@__PURE__*/getDefaultExportFromNamespaceIfNotNamed(slow$1); -var slow = getCjsExportFromNamespace(slow$1); +const slow = require$$0; const isObject = function (obj) { return obj && Object.prototype.toString.call(obj) === '[object Object]'; }; -const chunkBy = function (arr, chunkSize = 5) { +const chunkBy = function (arr) { + let chunkSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5; let groups = []; for (let i = 0; i < arr.length; i += chunkSize) { @@ -550,7 +552,7 @@ const chunkBy = function (arr, chunkSize = 5) { return groups; }; -const fetchList = function (pages, options, wtf) { +const fetchList$1 = function (pages, options, wtf) { // support a list of strings, or objects if (pages[0] && isObject(pages[0])) { pages = pages.map(o => o.title); @@ -573,25 +575,34 @@ const fetchList = function (pages, options, wtf) { }); }; -var fetchList_1 = fetchList; +var fetchList_1 = fetchList$1; + +const getRedirects = getRedirects_1; +const getIncoming = getIncoming_1; +const getPageViews = getPageViews_1; +const getTransclusions = getTransclusions_1; +const getCategory = getCategory_1; +const getRandomPage = getRandom_1; +const getRandomCategory = getRandomCategory$1; +const fetchList = fetchList_1; const addMethod = function (models) { // doc methods models.Doc.prototype.getRedirects = function () { - return getRedirects_1(this.title(), models.http); + return getRedirects(this.title(), models.http); }; models.Doc.prototype.getIncoming = function () { - return getIncoming_1(this.title(), models.http); + return getIncoming(this.title(), models.http); }; models.Doc.prototype.getPageViews = function () { - return getPageViews_1(this, models.http); + return getPageViews(this, models.http); }; // constructor methods models.wtf.getRandomPage = function (options) { - return getRandom_1(options, models.http); + return getRandomPage(options, models.http); }; models.wtf.getRandomCategory = function (options) { @@ -599,26 +610,26 @@ const addMethod = function (models) { }; models.wtf.getTemplatePages = function (template, options) { - return getTransclusions_1(template, options, models.http); + return getTransclusions(template, options, models.http); }; models.wtf.getCategoryPages = function (category, options) { - return getCategory_1(category, options, models.http); + return getCategory(category, options, models.http); }; models.wtf.fetchList = function (list, options) { - return fetchList_1(list, options, models.wtf); + return fetchList(list, options, models.wtf); }; models.wtf.getIncoming = function (title) { - return getIncoming_1(title, models.http); + return getIncoming(title, models.http); }; models.wtf.getRedirects = function (title) { - return getRedirects_1(title, models.http); + return getRedirects(title, models.http); }; }; var src = addMethod; -export default src; +export { src as default }; diff --git a/plugins/api/package-lock.json b/plugins/api/package-lock.json index f4f0d216..f9f88171 100644 --- a/plugins/api/package-lock.json +++ b/plugins/api/package-lock.json @@ -12,52 +12,57 @@ "slow": "^1.1.0" }, "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "^13.0.6", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "4.0.0", - "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", - "dev": true + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -74,83 +79,102 @@ } }, "node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -167,193 +191,249 @@ } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "dependencies": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -362,189 +442,278 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=4" @@ -577,6 +746,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -685,452 +869,570 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -1140,55 +1442,59 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1196,55 +1502,236 @@ "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-babel/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-babel/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@rollup/plugin-babel/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^2.42.0" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@types/node": "*" } }, + "node_modules/@rollup/plugin-node-resolve/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, "node_modules/@types/estree": { "version": "0.0.45", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz", @@ -1257,15 +1744,6 @@ "integrity": "sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw==", "dev": true }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1309,13 +1787,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" }, "peerDependencies": { @@ -1323,25 +1801,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1364,16 +1842,16 @@ } }, "node_modules/browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" @@ -1392,12 +1870,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "node_modules/buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, "node_modules/builtin-modules": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", @@ -1421,10 +1893,14 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", - "dev": true + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } }, "node_modules/chalk": { "version": "2.4.2", @@ -1456,9 +1932,9 @@ "dev": true }, "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "node_modules/commander": { @@ -1467,6 +1943,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1483,12 +1965,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "dependencies": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "funding": { @@ -1506,9 +1988,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/debug": { @@ -1555,6 +2037,15 @@ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -1586,33 +2077,37 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.704", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", - "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -1681,12 +2176,6 @@ "node": ">=0.8.0" } }, - "node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1760,10 +2249,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -1775,6 +2289,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { @@ -1807,6 +2324,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1828,6 +2357,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1844,6 +2388,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -1884,9 +2442,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true, "engines": { "node": ">= 0.4" @@ -1968,13 +2526,13 @@ } }, "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -1992,11 +2550,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2047,6 +2617,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -2130,12 +2712,6 @@ "node": ">=6" } }, - "node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -2182,15 +2758,15 @@ "dev": true }, "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2258,15 +2834,33 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "node_modules/randombytes": { @@ -2279,23 +2873,23 @@ } }, "node_modules/re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "node_modules/readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -2306,21 +2900,21 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "dependencies": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" }, "engines": { "node": ">=4" } }, "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "node_modules/regenerator-transform": { @@ -2349,17 +2943,17 @@ } }, "node_modules/regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" @@ -2372,9 +2966,9 @@ "dev": true }, "node_modules/regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -2393,13 +2987,16 @@ } }, "node_modules/resolve": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", - "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "dependencies": { - "is-core-module": "^2.0.0", + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resumer": { @@ -2412,9 +3009,9 @@ } }, "node_modules/rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2423,30 +3020,7 @@ "node": ">=10.0.0" }, "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "node_modules/rollup-plugin-filesize-check": { @@ -2455,28 +3029,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "node_modules/rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "dependencies": { - "rollup-pluginutils": "^2.5.0" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "dependencies": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -2489,15 +3041,6 @@ "terser": "^5.0.0" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2576,9 +3119,9 @@ "dev": true }, "node_modules/split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "dependencies": { "through": "2" @@ -2588,23 +3131,23 @@ } }, "node_modules/string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" }, "engines": { "node": ">= 0.4" @@ -2652,101 +3195,40 @@ } }, "node_modules/tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "dependencies": { - "chalk": "4.1.0", - "tap-out": "3.0.0" + "colorette": "^1.2.2", + "tap-in": "3.2.1" }, "bin": { "tap-dancer": "src/index.js" } }, - "node_modules/tap-dancer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tap-dancer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/tap-dancer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/tap-dancer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "bin": { + "tap-in": "bin/tap-in.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", - "dev": true, - "dependencies": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" - }, - "bin": { - "tap-out": "bin/cmd.js" + "node": ">=8.0.0" } }, "node_modules/tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", @@ -2754,17 +3236,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "bin": { @@ -2826,9 +3310,9 @@ } }, "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "node_modules/unbox-primitive": { @@ -2847,40 +3331,40 @@ } }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, "engines": { "node": ">=4" @@ -2965,35 +3449,35 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" } }, "@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true }, "@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -3003,74 +3487,75 @@ } }, "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -3084,339 +3569,370 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { @@ -3437,6 +3953,15 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -3515,356 +4040,369 @@ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -3874,52 +4412,53 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" } }, "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -3930,52 +4469,183 @@ } }, "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, + "@rollup/plugin-node-resolve": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, "@types/estree": { "version": "0.0.45", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz", @@ -3988,15 +4658,6 @@ "integrity": "sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw==", "dev": true }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -4031,33 +4692,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" } }, "balanced-match": { @@ -4077,16 +4738,16 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "buffer-from": { @@ -4095,12 +4756,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, "builtin-modules": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", @@ -4118,9 +4773,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true }, "chalk": { @@ -4150,9 +4805,9 @@ "dev": true }, "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "commander": { @@ -4161,6 +4816,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -4177,12 +4838,12 @@ } }, "core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "requires": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "dependencies": { @@ -4195,9 +4856,9 @@ } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "debug": { @@ -4240,6 +4901,12 @@ } } }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -4265,33 +4932,37 @@ } }, "electron-to-chromium": { - "version": "1.3.704", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", - "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" } }, "es-get-iterator": { @@ -4341,12 +5012,6 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4404,10 +5069,26 @@ "has-symbols": "^1.0.1" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4439,6 +5120,15 @@ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, + "has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -4451,6 +5141,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4467,6 +5166,17 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -4492,9 +5202,9 @@ } }, "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-core-module": { @@ -4546,13 +5256,13 @@ } }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" } }, "is-set": { @@ -4561,12 +5271,21 @@ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -4595,6 +5314,15 @@ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -4656,12 +5384,6 @@ "minimist": "^1.2.5" } }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -4705,15 +5427,15 @@ "dev": true }, "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true }, "object-is": { @@ -4760,15 +5482,27 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "randombytes": { @@ -4781,23 +5515,23 @@ } }, "re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -4808,18 +5542,18 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "regenerator-transform": { @@ -4842,17 +5576,17 @@ } }, "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { @@ -4862,9 +5596,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -4879,12 +5613,12 @@ } }, "resolve": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", - "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "is-core-module": "^2.0.0", + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -4898,35 +5632,12 @@ } }, "rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "rollup-plugin-filesize-check": { @@ -4935,28 +5646,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "requires": { - "rollup-pluginutils": "^2.5.0" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -4969,15 +5658,6 @@ "terser": "^5.0.0" } }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -5046,32 +5726,32 @@ "dev": true }, "split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "string.prototype.trimend": { @@ -5104,82 +5784,31 @@ } }, "tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "requires": { - "chalk": "4.1.0", - "tap-out": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "colorette": "^1.2.2", + "tap-in": "3.2.1" } }, - "tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", + "tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "requires": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" } }, "tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -5187,17 +5816,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "dependencies": { @@ -5245,9 +5876,9 @@ "dev": true }, "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "unbox-primitive": { @@ -5263,31 +5894,31 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "util-deprecate": { diff --git a/plugins/api/package.json b/plugins/api/package.json index 6ec2af79..ac2fea31 100644 --- a/plugins/api/package.json +++ b/plugins/api/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-api", "description": "wikimedia api plugin for wtf_wikipedia", - "version": "0.1.0", + "version": "0.1.1", "main": "./builds/wtf-plugin-api.js", "unpkg": "./builds/wtf-plugin-api.min.js", "module": "./builds/wtf-plugin-api.mjs", @@ -34,17 +34,16 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "^13.0.6", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "4.0.0", - "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "license": "MIT" -} +} \ No newline at end of file diff --git a/plugins/api/rollup.config.js b/plugins/api/rollup.config.js index ba56fba6..d65b3ad0 100644 --- a/plugins/api/rollup.config.js +++ b/plugins/api/rollup.config.js @@ -1,8 +1,8 @@ -import commonjs from 'rollup-plugin-commonjs' +import commonjs from '@rollup/plugin-commonjs' import { terser } from 'rollup-plugin-terser' -import babel from 'rollup-plugin-babel' +import { babel } from '@rollup/plugin-babel' import sizeCheck from 'rollup-plugin-filesize-check' -import nodeResolve from 'rollup-plugin-node-resolve' +import { nodeResolve } from '@rollup/plugin-node-resolve' import { version } from './package.json' console.log('\n 📦 - running rollup..\n') @@ -15,9 +15,10 @@ export default [ input: 'src/index.js', output: [{ banner: banner, file: `builds/${name}.mjs`, format: 'esm' }], plugins: [ - commonjs(), nodeResolve(), + commonjs({ requireReturnsDefault: "auto" }), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -37,9 +38,10 @@ export default [ } ], plugins: [ - commonjs(), nodeResolve(), + commonjs({ requireReturnsDefault: "auto" }), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -58,9 +60,10 @@ export default [ } ], plugins: [ - commonjs(), nodeResolve(), + commonjs({ requireReturnsDefault: "auto" }), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }), diff --git a/plugins/category/builds/wtf-plugin-category.js b/plugins/category/builds/wtf-plugin-category.js index bfde7cee..1befff43 100644 --- a/plugins/category/builds/wtf-plugin-category.js +++ b/plugins/category/builds/wtf-plugin-category.js @@ -1,209 +1,213 @@ -/* wtf-plugin-category 0.3.0 MIT */ +/* wtf-plugin-category 0.3.1 MIT */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfCategory = factory()); -}(this, (function () { 'use strict'; - - /* slow 1.1.0 MIT */ - //only do foo promises at a time. - var rateLimit = function rateLimit(arr, fn) { - var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5; - return new Promise(function (resolve, reject) { - //some validation - if (!arr || !fn) { - reject('Error: missing required parameters to rate-limit function'); - return; - } - - if (arr.length === 0) { - resolve([]); - return; - } - - var results = []; - var n = limit - 1; - var pending = 0; //simple recursion, but with then/finally - - var go = function go(i) { - pending += 1; - var p = fn(arr[i]); - - if (!p.then) { - reject('Error: function must return a promise'); - return; - } - - p.then(function (r) { - results[i] = r; - }); - p["catch"](function (e) { - console.error(e); - results[i] = null; - }); - p["finally"](function () { - pending -= 1; - n += 1; //should we keep going? - - if (arr.length >= n + 1) { - go(n); - } else if (pending <= 0) { - //no more to start - are we the last to finish? - resolve(results); - } - }); - }; //fire-off first-n items - - - var init = arr.length < limit ? arr.length : limit; - - for (var i = 0; i < init; i += 1) { - go(i); - } - }); - }; - - var rateLimit_1 = rateLimit; - var methods = { - one: function one(arr, fn) { - return rateLimit_1(arr, fn, 1); - }, - two: function two(arr, fn) { - return rateLimit_1(arr, fn, 2); - }, - three: function three(arr, fn) { - return rateLimit_1(arr, fn, 3); - }, - four: function four(arr, fn) { - return rateLimit_1(arr, fn, 4); - }, - five: function five(arr, fn) { - return rateLimit_1(arr, fn, 5); - }, - ten: function ten(arr, fn) { - return rateLimit_1(arr, fn, 10); - }, - fifteen: function fifteen(arr, fn) { - return rateLimit_1(arr, fn, 15); - } - }; - methods.serial = methods.one; - methods.linear = methods.one; - methods.crawl = methods.three; - methods.walk = methods.five; - methods.run = methods.ten; - methods.sprint = methods.fifteen; - var src$1 = methods; - - var slow$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': src$1 - }); - - const defaults = { - lang: 'en', - wiki: 'wikipedia', - domain: null, - path: 'w/api.php' //some 3rd party sites use a weird path - - }; - - const isObject = function (obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; - }; - - const fetchRandom = function (lang, options, http) { - options = options || {}; - options = Object.assign({}, defaults, options); //support lang 2nd param - - if (typeof lang === 'string') { - options.lang = lang; - } else if (isObject(lang)) { - options = Object.assign(options, lang); - } - - let url = `https://${options.lang}.wikipedia.org/${options.path}?`; - - if (options.domain) { - url = `https://${options.domain}/${options.path}?`; - } - - url += `format=json&action=query&generator=random&grnnamespace=14&prop=revisions&grnlimit=1&origin=*`; - return http(url).then(res => { - try { - let o = res.query.pages; - let key = Object.keys(o)[0]; - return o[key].title; - } catch (e) { - throw e; - } - }).catch(e => { - console.error(e); - return null; - }); - }; - - var random = fetchRandom; - - function getCjsExportFromNamespace (n) { - return n && n['default'] || n; - } - - var slow = getCjsExportFromNamespace(slow$1); - - const chunkBy = function (arr, chunkSize = 5) { - let groups = []; - - for (let i = 0; i < arr.length; i += chunkSize) { - groups.push(arr.slice(i, i + chunkSize)); - } - - return groups; - }; - - const fetchCat = function (wtf, cat, lang, opts) { - if (!cat) { - return { - docs: [], - categories: [] - }; - } - - return wtf.category(cat, lang).then(resp => { - let pages = resp.pages.map(o => o.title); - let groups = chunkBy(pages); - - const doit = function (group) { - return wtf.fetch(group, opts); //returns a promise - }; //only allow three requests at a time - - - return slow.three(groups, doit).then(responses => { - //flatten the results - let docs = [].concat.apply([], responses); - return { - docs: docs, - categories: resp.categories - }; - }); - }); - }; - - const plugin = function (models) { - models.wtf.parseCategory = function (cat, lang, opts) { - return fetchCat(models.wtf, cat, lang, opts); - }; - - models.wtf.randomCategory = function (lang, opts) { - return random(lang, opts, models.http); - }; - - models.wtf.fetchCategory = models.wtf.parseCategory; - }; - - var src = plugin; - - return src; - -}))); + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfCategory = factory()); +})(this, (function () { 'use strict'; + + function getDefaultExportFromNamespaceIfNotNamed (n) { + return n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n; + } + + /* slow 1.1.0 MIT */ + //only do foo promises at a time. + var rateLimit = function rateLimit(arr, fn) { + var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5; + return new Promise(function (resolve, reject) { + //some validation + if (!arr || !fn) { + reject('Error: missing required parameters to rate-limit function'); + return; + } + + if (arr.length === 0) { + resolve([]); + return; + } + + var results = []; + var n = limit - 1; + var pending = 0; //simple recursion, but with then/finally + + var go = function go(i) { + pending += 1; + var p = fn(arr[i]); + + if (!p.then) { + reject('Error: function must return a promise'); + return; + } + + p.then(function (r) { + results[i] = r; + }); + p["catch"](function (e) { + console.error(e); + results[i] = null; + }); + p["finally"](function () { + pending -= 1; + n += 1; //should we keep going? + + if (arr.length >= n + 1) { + go(n); + } else if (pending <= 0) { + //no more to start - are we the last to finish? + resolve(results); + } + }); + }; //fire-off first-n items + + + var init = arr.length < limit ? arr.length : limit; + + for (var i = 0; i < init; i += 1) { + go(i); + } + }); + }; + + var rateLimit_1 = rateLimit; + var methods = { + one: function one(arr, fn) { + return rateLimit_1(arr, fn, 1); + }, + two: function two(arr, fn) { + return rateLimit_1(arr, fn, 2); + }, + three: function three(arr, fn) { + return rateLimit_1(arr, fn, 3); + }, + four: function four(arr, fn) { + return rateLimit_1(arr, fn, 4); + }, + five: function five(arr, fn) { + return rateLimit_1(arr, fn, 5); + }, + ten: function ten(arr, fn) { + return rateLimit_1(arr, fn, 10); + }, + fifteen: function fifteen(arr, fn) { + return rateLimit_1(arr, fn, 15); + } + }; + methods.serial = methods.one; + methods.linear = methods.one; + methods.crawl = methods.three; + methods.walk = methods.five; + methods.run = methods.ten; + methods.sprint = methods.fifteen; + var src$1 = methods; + + var slow$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + 'default': src$1 + }); + + var require$$0 = /*@__PURE__*/getDefaultExportFromNamespaceIfNotNamed(slow$1); + + const defaults = { + lang: 'en', + wiki: 'wikipedia', + domain: null, + path: 'w/api.php' //some 3rd party sites use a weird path + + }; + + const isObject = function (obj) { + return obj && Object.prototype.toString.call(obj) === '[object Object]'; + }; + + const fetchRandom = function (lang, options, http) { + options = options || {}; + options = Object.assign({}, defaults, options); //support lang 2nd param + + if (typeof lang === 'string') { + options.lang = lang; + } else if (isObject(lang)) { + options = Object.assign(options, lang); + } + + let url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); + + if (options.domain) { + url = "https://".concat(options.domain, "/").concat(options.path, "?"); + } + + url += "format=json&action=query&generator=random&grnnamespace=14&prop=revisions&grnlimit=1&origin=*"; + return http(url).then(res => { + try { + let o = res.query.pages; + let key = Object.keys(o)[0]; + return o[key].title; + } catch (e) { + throw e; + } + }).catch(e => { + console.error(e); + return null; + }); + }; + + var random$1 = fetchRandom; + + const slow = require$$0; + const random = random$1; + + const chunkBy = function (arr) { + let chunkSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5; + let groups = []; + + for (let i = 0; i < arr.length; i += chunkSize) { + groups.push(arr.slice(i, i + chunkSize)); + } + + return groups; + }; + + const fetchCat = function (wtf, cat, lang, opts) { + if (!cat) { + return { + docs: [], + categories: [] + }; + } + + return wtf.category(cat, lang).then(resp => { + let pages = resp.pages.map(o => o.title); + let groups = chunkBy(pages); + + const doit = function (group) { + return wtf.fetch(group, opts); //returns a promise + }; //only allow three requests at a time + + + return slow.three(groups, doit).then(responses => { + //flatten the results + let docs = [].concat.apply([], responses); + return { + docs: docs, + categories: resp.categories + }; + }); + }); + }; + + const plugin = function (models) { + models.wtf.parseCategory = function (cat, lang, opts) { + return fetchCat(models.wtf, cat, lang, opts); + }; + + models.wtf.randomCategory = function (lang, opts) { + return random(lang, opts, models.http); + }; + + models.wtf.fetchCategory = models.wtf.parseCategory; + }; + + var src = plugin; + + return src; + +})); //# sourceMappingURL=wtf-plugin-category.js.map diff --git a/plugins/category/builds/wtf-plugin-category.js.map b/plugins/category/builds/wtf-plugin-category.js.map index 72067ac9..fc8bfe85 100644 --- a/plugins/category/builds/wtf-plugin-category.js.map +++ b/plugins/category/builds/wtf-plugin-category.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-category.js","sources":["../node_modules/slow/builds/slow.mjs","../src/random.js","../src/index.js"],"sourcesContent":["/* slow 1.1.0 MIT */\n//only do foo promises at a time.\nvar rateLimit = function rateLimit(arr, fn) {\n var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;\n return new Promise(function (resolve, reject) {\n //some validation\n if (!arr || !fn) {\n reject('Error: missing required parameters to rate-limit function');\n return;\n }\n\n if (arr.length === 0) {\n resolve([]);\n return;\n }\n\n var results = [];\n var n = limit - 1;\n var pending = 0; //simple recursion, but with then/finally\n\n var go = function go(i) {\n pending += 1;\n var p = fn(arr[i]);\n\n if (!p.then) {\n reject('Error: function must return a promise');\n return;\n }\n\n p.then(function (r) {\n results[i] = r;\n });\n p[\"catch\"](function (e) {\n console.error(e);\n results[i] = null;\n });\n p[\"finally\"](function () {\n pending -= 1;\n n += 1; //should we keep going?\n\n if (arr.length >= n + 1) {\n go(n);\n } else if (pending <= 0) {\n //no more to start - are we the last to finish?\n resolve(results);\n }\n });\n }; //fire-off first-n items\n\n\n var init = arr.length < limit ? arr.length : limit;\n\n for (var i = 0; i < init; i += 1) {\n go(i);\n }\n });\n};\n\nvar rateLimit_1 = rateLimit;\n\nvar methods = {\n one: function one(arr, fn) {\n return rateLimit_1(arr, fn, 1);\n },\n two: function two(arr, fn) {\n return rateLimit_1(arr, fn, 2);\n },\n three: function three(arr, fn) {\n return rateLimit_1(arr, fn, 3);\n },\n four: function four(arr, fn) {\n return rateLimit_1(arr, fn, 4);\n },\n five: function five(arr, fn) {\n return rateLimit_1(arr, fn, 5);\n },\n ten: function ten(arr, fn) {\n return rateLimit_1(arr, fn, 10);\n },\n fifteen: function fifteen(arr, fn) {\n return rateLimit_1(arr, fn, 15);\n }\n};\nmethods.serial = methods.one;\nmethods.linear = methods.one;\nmethods.crawl = methods.three;\nmethods.walk = methods.five;\nmethods.run = methods.ten;\nmethods.sprint = methods.fifteen;\nvar src = methods;\n\nexport default src;\n","const defaults = {\n lang: 'en',\n wiki: 'wikipedia',\n domain: null,\n path: 'w/api.php' //some 3rd party sites use a weird path\n}\nconst isObject = function (obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]'\n}\n\nconst fetchRandom = function (lang, options, http) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n //support lang 2nd param\n if (typeof lang === 'string') {\n options.lang = lang\n } else if (isObject(lang)) {\n options = Object.assign(options, lang)\n }\n\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += `format=json&action=query&generator=random&grnnamespace=14&prop=revisions&grnlimit=1&origin=*`\n\n return http(url)\n .then((res) => {\n try {\n let o = res.query.pages\n let key = Object.keys(o)[0]\n return o[key].title\n } catch (e) {\n throw e\n }\n })\n .catch((e) => {\n console.error(e)\n return null\n })\n}\nmodule.exports = fetchRandom\n","const slow = require('slow')\nconst random = require('./random')\n\nconst chunkBy = function (arr, chunkSize = 5) {\n let groups = []\n for (let i = 0; i < arr.length; i += chunkSize) {\n groups.push(arr.slice(i, i + chunkSize))\n }\n return groups\n}\n\nconst fetchCat = function (wtf, cat, lang, opts) {\n if (!cat) {\n return { docs: [], categories: [] }\n }\n return wtf.category(cat, lang).then((resp) => {\n let pages = resp.pages.map((o) => o.title)\n let groups = chunkBy(pages)\n\n const doit = function (group) {\n return wtf.fetch(group, opts) //returns a promise\n }\n //only allow three requests at a time\n return slow.three(groups, doit).then((responses) => {\n //flatten the results\n let docs = [].concat.apply([], responses)\n return {\n docs: docs,\n categories: resp.categories\n }\n })\n })\n}\n\nconst plugin = function (models) {\n models.wtf.parseCategory = function (cat, lang, opts) {\n return fetchCat(models.wtf, cat, lang, opts)\n }\n models.wtf.randomCategory = function (lang, opts) {\n return random(lang, opts, models.http)\n }\n models.wtf.fetchCategory = models.wtf.parseCategory\n}\nmodule.exports = plugin\n"],"names":["rateLimit","arr","fn","limit","arguments","length","undefined","Promise","resolve","reject","results","n","pending","go","i","p","then","r","e","console","error","init","rateLimit_1","methods","one","two","three","four","five","ten","fifteen","serial","linear","crawl","walk","run","sprint","src","defaults","lang","wiki","domain","path","isObject","obj","Object","prototype","toString","call","fetchRandom","options","http","assign","url","res","o","query","pages","key","keys","title","catch","chunkBy","chunkSize","groups","push","slice","fetchCat","wtf","cat","opts","docs","categories","category","resp","map","doit","group","fetch","slow","responses","concat","apply","plugin","models","parseCategory","randomCategory","random","fetchCategory"],"mappings":";;;;;;;EAAA;EACA;EACA,IAAIA,SAAS,GAAG,SAASA,SAAT,CAAmBC,GAAnB,EAAwBC,EAAxB,EAA4B;EAC1C,MAAIC,KAAK,GAAGC,SAAS,CAACC,MAAV,GAAmB,CAAnB,IAAwBD,SAAS,CAAC,CAAD,CAAT,KAAiBE,SAAzC,GAAqDF,SAAS,CAAC,CAAD,CAA9D,GAAoE,CAAhF;EACA,SAAO,IAAIG,OAAJ,CAAY,UAAUC,OAAV,EAAmBC,MAAnB,EAA2B;EAC5C;EACA,QAAI,CAACR,GAAD,IAAQ,CAACC,EAAb,EAAiB;EACfO,MAAAA,MAAM,CAAC,2DAAD,CAAN;EACA;EACD;;EAED,QAAIR,GAAG,CAACI,MAAJ,KAAe,CAAnB,EAAsB;EACpBG,MAAAA,OAAO,CAAC,EAAD,CAAP;EACA;EACD;;EAED,QAAIE,OAAO,GAAG,EAAd;EACA,QAAIC,CAAC,GAAGR,KAAK,GAAG,CAAhB;EACA,QAAIS,OAAO,GAAG,CAAd,CAd4C;;EAgB5C,QAAIC,EAAE,GAAG,SAASA,EAAT,CAAYC,CAAZ,EAAe;EACtBF,MAAAA,OAAO,IAAI,CAAX;EACA,UAAIG,CAAC,GAAGb,EAAE,CAACD,GAAG,CAACa,CAAD,CAAJ,CAAV;;EAEA,UAAI,CAACC,CAAC,CAACC,IAAP,EAAa;EACXP,QAAAA,MAAM,CAAC,uCAAD,CAAN;EACA;EACD;;EAEDM,MAAAA,CAAC,CAACC,IAAF,CAAO,UAAUC,CAAV,EAAa;EAClBP,QAAAA,OAAO,CAACI,CAAD,CAAP,GAAaG,CAAb;EACD,OAFD;EAGAF,MAAAA,CAAC,CAAC,OAAD,CAAD,CAAW,UAAUG,CAAV,EAAa;EACtBC,QAAAA,OAAO,CAACC,KAAR,CAAcF,CAAd;EACAR,QAAAA,OAAO,CAACI,CAAD,CAAP,GAAa,IAAb;EACD,OAHD;EAIAC,MAAAA,CAAC,CAAC,SAAD,CAAD,CAAa,YAAY;EACvBH,QAAAA,OAAO,IAAI,CAAX;EACAD,QAAAA,CAAC,IAAI,CAAL,CAFuB;;EAIvB,YAAIV,GAAG,CAACI,MAAJ,IAAcM,CAAC,GAAG,CAAtB,EAAyB;EACvBE,UAAAA,EAAE,CAACF,CAAD,CAAF;EACD,SAFD,MAEO,IAAIC,OAAO,IAAI,CAAf,EAAkB;EACvB;EACAJ,UAAAA,OAAO,CAACE,OAAD,CAAP;EACD;EACF,OAVD;EAWD,KA3BD,CAhB4C;;;EA8C5C,QAAIW,IAAI,GAAGpB,GAAG,CAACI,MAAJ,GAAaF,KAAb,GAAqBF,GAAG,CAACI,MAAzB,GAAkCF,KAA7C;;EAEA,SAAK,IAAIW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGO,IAApB,EAA0BP,CAAC,IAAI,CAA/B,EAAkC;EAChCD,MAAAA,EAAE,CAACC,CAAD,CAAF;EACD;EACF,GAnDM,CAAP;EAoDD,CAtDD;;EAwDA,IAAIQ,WAAW,GAAGtB,SAAlB;EAEA,IAAIuB,OAAO,GAAG;EACZC,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAavB,GAAb,EAAkBC,EAAlB,EAAsB;EACzB,WAAOoB,WAAW,CAACrB,GAAD,EAAMC,EAAN,EAAU,CAAV,CAAlB;EACD,GAHW;EAIZuB,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAaxB,GAAb,EAAkBC,EAAlB,EAAsB;EACzB,WAAOoB,WAAW,CAACrB,GAAD,EAAMC,EAAN,EAAU,CAAV,CAAlB;EACD,GANW;EAOZwB,EAAAA,KAAK,EAAE,SAASA,KAAT,CAAezB,GAAf,EAAoBC,EAApB,EAAwB;EAC7B,WAAOoB,WAAW,CAACrB,GAAD,EAAMC,EAAN,EAAU,CAAV,CAAlB;EACD,GATW;EAUZyB,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc1B,GAAd,EAAmBC,EAAnB,EAAuB;EAC3B,WAAOoB,WAAW,CAACrB,GAAD,EAAMC,EAAN,EAAU,CAAV,CAAlB;EACD,GAZW;EAaZ0B,EAAAA,IAAI,EAAE,SAASA,IAAT,CAAc3B,GAAd,EAAmBC,EAAnB,EAAuB;EAC3B,WAAOoB,WAAW,CAACrB,GAAD,EAAMC,EAAN,EAAU,CAAV,CAAlB;EACD,GAfW;EAgBZ2B,EAAAA,GAAG,EAAE,SAASA,GAAT,CAAa5B,GAAb,EAAkBC,EAAlB,EAAsB;EACzB,WAAOoB,WAAW,CAACrB,GAAD,EAAMC,EAAN,EAAU,EAAV,CAAlB;EACD,GAlBW;EAmBZ4B,EAAAA,OAAO,EAAE,SAASA,OAAT,CAAiB7B,GAAjB,EAAsBC,EAAtB,EAA0B;EACjC,WAAOoB,WAAW,CAACrB,GAAD,EAAMC,EAAN,EAAU,EAAV,CAAlB;EACD;EArBW,CAAd;EAuBAqB,OAAO,CAACQ,MAAR,GAAiBR,OAAO,CAACC,GAAzB;EACAD,OAAO,CAACS,MAAR,GAAiBT,OAAO,CAACC,GAAzB;EACAD,OAAO,CAACU,KAAR,GAAgBV,OAAO,CAACG,KAAxB;EACAH,OAAO,CAACW,IAAR,GAAeX,OAAO,CAACK,IAAvB;EACAL,OAAO,CAACY,GAAR,GAAcZ,OAAO,CAACM,GAAtB;EACAN,OAAO,CAACa,MAAR,GAAiBb,OAAO,CAACO,OAAzB;EACA,IAAIO,KAAG,GAAGd,OAAV;;;;;;;ECzFA,MAAMe,QAAQ,GAAG;EACfC,EAAAA,IAAI,EAAE,IADS;EAEfC,EAAAA,IAAI,EAAE,WAFS;EAGfC,EAAAA,MAAM,EAAE,IAHO;EAIfC,EAAAA,IAAI,EAAE,WAJS;;EAAA,CAAjB;;EAMA,MAAMC,QAAQ,GAAG,UAAUC,GAAV,EAAe;EAC9B,SAAOA,GAAG,IAAIC,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BJ,GAA/B,MAAwC,iBAAtD;EACD,CAFD;;EAIA,MAAMK,WAAW,GAAG,UAAUV,IAAV,EAAgBW,OAAhB,EAAyBC,IAAzB,EAA+B;EACjDD,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;EACAA,EAAAA,OAAO,GAAGL,MAAM,CAACO,MAAP,CAAc,EAAd,EAAkBd,QAAlB,EAA4BY,OAA5B,CAAV,CAFiD;;EAIjD,MAAI,OAAOX,IAAP,KAAgB,QAApB,EAA8B;EAC5BW,IAAAA,OAAO,CAACX,IAAR,GAAeA,IAAf;EACD,GAFD,MAEO,IAAII,QAAQ,CAACJ,IAAD,CAAZ,EAAoB;EACzBW,IAAAA,OAAO,GAAGL,MAAM,CAACO,MAAP,CAAcF,OAAd,EAAuBX,IAAvB,CAAV;EACD;;EAED,MAAIc,GAAG,GAAI,WAAUH,OAAO,CAACX,IAAK,kBAAiBW,OAAO,CAACR,IAAK,GAAhE;;EACA,MAAIQ,OAAO,CAACT,MAAZ,EAAoB;EAClBY,IAAAA,GAAG,GAAI,WAAUH,OAAO,CAACT,MAAO,IAAGS,OAAO,CAACR,IAAK,GAAhD;EACD;;EACDW,EAAAA,GAAG,IAAK,8FAAR;EAEA,SAAOF,IAAI,CAACE,GAAD,CAAJ,CACJrC,IADI,CACEsC,GAAD,IAAS;EACb,QAAI;EACF,UAAIC,CAAC,GAAGD,GAAG,CAACE,KAAJ,CAAUC,KAAlB;EACA,UAAIC,GAAG,GAAGb,MAAM,CAACc,IAAP,CAAYJ,CAAZ,EAAe,CAAf,CAAV;EACA,aAAOA,CAAC,CAACG,GAAD,CAAD,CAAOE,KAAd;EACD,KAJD,CAIE,OAAO1C,CAAP,EAAU;EACV,YAAMA,CAAN;EACD;EACF,GATI,EAUJ2C,KAVI,CAUG3C,CAAD,IAAO;EACZC,IAAAA,OAAO,CAACC,KAAR,CAAcF,CAAd;EACA,WAAO,IAAP;EACD,GAbI,CAAP;EAcD,CA9BD;;EA+BA,UAAc,GAAG+B,WAAjB;;;;;;;;ECtCA,MAAMa,OAAO,GAAG,UAAU7D,GAAV,EAAe8D,SAAS,GAAG,CAA3B,EAA8B;EAC5C,MAAIC,MAAM,GAAG,EAAb;;EACA,OAAK,IAAIlD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGb,GAAG,CAACI,MAAxB,EAAgCS,CAAC,IAAIiD,SAArC,EAAgD;EAC9CC,IAAAA,MAAM,CAACC,IAAP,CAAYhE,GAAG,CAACiE,KAAJ,CAAUpD,CAAV,EAAaA,CAAC,GAAGiD,SAAjB,CAAZ;EACD;;EACD,SAAOC,MAAP;EACD,CAND;;EAQA,MAAMG,QAAQ,GAAG,UAAUC,GAAV,EAAeC,GAAf,EAAoB9B,IAApB,EAA0B+B,IAA1B,EAAgC;EAC/C,MAAI,CAACD,GAAL,EAAU;EACR,WAAO;EAAEE,MAAAA,IAAI,EAAE,EAAR;EAAYC,MAAAA,UAAU,EAAE;EAAxB,KAAP;EACD;;EACD,SAAOJ,GAAG,CAACK,QAAJ,CAAaJ,GAAb,EAAkB9B,IAAlB,EAAwBvB,IAAxB,CAA8B0D,IAAD,IAAU;EAC5C,QAAIjB,KAAK,GAAGiB,IAAI,CAACjB,KAAL,CAAWkB,GAAX,CAAgBpB,CAAD,IAAOA,CAAC,CAACK,KAAxB,CAAZ;EACA,QAAII,MAAM,GAAGF,OAAO,CAACL,KAAD,CAApB;;EAEA,UAAMmB,IAAI,GAAG,UAAUC,KAAV,EAAiB;EAC5B,aAAOT,GAAG,CAACU,KAAJ,CAAUD,KAAV,EAAiBP,IAAjB,CAAP,CAD4B;EAE7B,KAFD,CAJ4C;;;EAQ5C,WAAOS,IAAI,CAACrD,KAAL,CAAWsC,MAAX,EAAmBY,IAAnB,EAAyB5D,IAAzB,CAA+BgE,SAAD,IAAe;;EAElD,UAAIT,IAAI,GAAG,GAAGU,MAAH,CAAUC,KAAV,CAAgB,EAAhB,EAAoBF,SAApB,CAAX;EACA,aAAO;EACLT,QAAAA,IAAI,EAAEA,IADD;EAELC,QAAAA,UAAU,EAAEE,IAAI,CAACF;EAFZ,OAAP;EAID,KAPM,CAAP;EAQD,GAhBM,CAAP;EAiBD,CArBD;;EAuBA,MAAMW,MAAM,GAAG,UAAUC,MAAV,EAAkB;EAC/BA,EAAAA,MAAM,CAAChB,GAAP,CAAWiB,aAAX,GAA2B,UAAUhB,GAAV,EAAe9B,IAAf,EAAqB+B,IAArB,EAA2B;EACpD,WAAOH,QAAQ,CAACiB,MAAM,CAAChB,GAAR,EAAaC,GAAb,EAAkB9B,IAAlB,EAAwB+B,IAAxB,CAAf;EACD,GAFD;;EAGAc,EAAAA,MAAM,CAAChB,GAAP,CAAWkB,cAAX,GAA4B,UAAU/C,IAAV,EAAgB+B,IAAhB,EAAsB;EAChD,WAAOiB,MAAM,CAAChD,IAAD,EAAO+B,IAAP,EAAac,MAAM,CAACjC,IAApB,CAAb;EACD,GAFD;;EAGAiC,EAAAA,MAAM,CAAChB,GAAP,CAAWoB,aAAX,GAA2BJ,MAAM,CAAChB,GAAP,CAAWiB,aAAtC;EACD,CARD;;SASc,GAAGF;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-category.js","sources":["../node_modules/slow/builds/slow.mjs","../src/random.js","../src/index.js"],"sourcesContent":["/* slow 1.1.0 MIT */\n//only do foo promises at a time.\nvar rateLimit = function rateLimit(arr, fn) {\n var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;\n return new Promise(function (resolve, reject) {\n //some validation\n if (!arr || !fn) {\n reject('Error: missing required parameters to rate-limit function');\n return;\n }\n\n if (arr.length === 0) {\n resolve([]);\n return;\n }\n\n var results = [];\n var n = limit - 1;\n var pending = 0; //simple recursion, but with then/finally\n\n var go = function go(i) {\n pending += 1;\n var p = fn(arr[i]);\n\n if (!p.then) {\n reject('Error: function must return a promise');\n return;\n }\n\n p.then(function (r) {\n results[i] = r;\n });\n p[\"catch\"](function (e) {\n console.error(e);\n results[i] = null;\n });\n p[\"finally\"](function () {\n pending -= 1;\n n += 1; //should we keep going?\n\n if (arr.length >= n + 1) {\n go(n);\n } else if (pending <= 0) {\n //no more to start - are we the last to finish?\n resolve(results);\n }\n });\n }; //fire-off first-n items\n\n\n var init = arr.length < limit ? arr.length : limit;\n\n for (var i = 0; i < init; i += 1) {\n go(i);\n }\n });\n};\n\nvar rateLimit_1 = rateLimit;\n\nvar methods = {\n one: function one(arr, fn) {\n return rateLimit_1(arr, fn, 1);\n },\n two: function two(arr, fn) {\n return rateLimit_1(arr, fn, 2);\n },\n three: function three(arr, fn) {\n return rateLimit_1(arr, fn, 3);\n },\n four: function four(arr, fn) {\n return rateLimit_1(arr, fn, 4);\n },\n five: function five(arr, fn) {\n return rateLimit_1(arr, fn, 5);\n },\n ten: function ten(arr, fn) {\n return rateLimit_1(arr, fn, 10);\n },\n fifteen: function fifteen(arr, fn) {\n return rateLimit_1(arr, fn, 15);\n }\n};\nmethods.serial = methods.one;\nmethods.linear = methods.one;\nmethods.crawl = methods.three;\nmethods.walk = methods.five;\nmethods.run = methods.ten;\nmethods.sprint = methods.fifteen;\nvar src = methods;\n\nexport default src;\n","const defaults = {\n lang: 'en',\n wiki: 'wikipedia',\n domain: null,\n path: 'w/api.php' //some 3rd party sites use a weird path\n}\nconst isObject = function (obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]'\n}\n\nconst fetchRandom = function (lang, options, http) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n //support lang 2nd param\n if (typeof lang === 'string') {\n options.lang = lang\n } else if (isObject(lang)) {\n options = Object.assign(options, lang)\n }\n\n let url = `https://${options.lang}.wikipedia.org/${options.path}?`\n if (options.domain) {\n url = `https://${options.domain}/${options.path}?`\n }\n url += `format=json&action=query&generator=random&grnnamespace=14&prop=revisions&grnlimit=1&origin=*`\n\n return http(url)\n .then((res) => {\n try {\n let o = res.query.pages\n let key = Object.keys(o)[0]\n return o[key].title\n } catch (e) {\n throw e\n }\n })\n .catch((e) => {\n console.error(e)\n return null\n })\n}\nmodule.exports = fetchRandom\n","const slow = require('slow')\nconst random = require('./random')\n\nconst chunkBy = function (arr, chunkSize = 5) {\n let groups = []\n for (let i = 0; i < arr.length; i += chunkSize) {\n groups.push(arr.slice(i, i + chunkSize))\n }\n return groups\n}\n\nconst fetchCat = function (wtf, cat, lang, opts) {\n if (!cat) {\n return { docs: [], categories: [] }\n }\n return wtf.category(cat, lang).then((resp) => {\n let pages = resp.pages.map((o) => o.title)\n let groups = chunkBy(pages)\n\n const doit = function (group) {\n return wtf.fetch(group, opts) //returns a promise\n }\n //only allow three requests at a time\n return slow.three(groups, doit).then((responses) => {\n //flatten the results\n let docs = [].concat.apply([], responses)\n return {\n docs: docs,\n categories: resp.categories\n }\n })\n })\n}\n\nconst plugin = function (models) {\n models.wtf.parseCategory = function (cat, lang, opts) {\n return fetchCat(models.wtf, cat, lang, opts)\n }\n models.wtf.randomCategory = function (lang, opts) {\n return random(lang, opts, models.http)\n }\n models.wtf.fetchCategory = models.wtf.parseCategory\n}\nmodule.exports = plugin\n"],"names":["rateLimit","arr","fn","limit","arguments","length","undefined","Promise","resolve","reject","results","n","pending","go","i","p","then","r","e","console","error","init","rateLimit_1","methods","one","two","three","four","five","ten","fifteen","serial","linear","crawl","walk","run","sprint","src","defaults","lang","wiki","domain","path","isObject","obj","Object","prototype","toString","call","fetchRandom","options","http","assign","url","res","o","query","pages","key","keys","title","catch","random","slow","require$$0","require$$1","chunkBy","chunkSize","groups","push","slice","fetchCat","wtf","cat","opts","docs","categories","category","resp","map","doit","group","fetch","responses","concat","apply","plugin","models","parseCategory","randomCategory","fetchCategory"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/category/builds/wtf-plugin-category.min.js b/plugins/category/builds/wtf-plugin-category.min.js index 607363f2..6f7d96fd 100644 --- a/plugins/category/builds/wtf-plugin-category.min.js +++ b/plugins/category/builds/wtf-plugin-category.min.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).wtfCategory=e()}(this,(function(){"use strict";var t=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5;return new Promise((function(r,o){if(t&&e)if(0!==t.length)for(var i=[],a=n-1,u=0,f=function n(f){u+=1;var c=e(t[f]);c.then?(c.then((function(t){i[f]=t})),c.catch((function(t){console.error(t),i[f]=null})),c.finally((function(){u-=1,a+=1,t.length>=a+1?n(a):u<=0&&r(i)}))):o("Error: function must return a promise")},c=t.length{try{let e=t.query.pages;return e[Object.keys(e)[0]].title}catch(t){throw t}})).catch((t=>(console.error(t),null)))};var i,a=(i=Object.freeze({__proto__:null,default:n}))&&i.default||i;return function(t){t.wtf.parseCategory=function(e,n,r){return function(t,e,n,r){return e?t.category(e,n).then((e=>{let n=function(t,e=5){let n=[];for(let r=0;rt.title)));return a.three(n,(function(e){return t.fetch(e,r)})).then((t=>({docs:[].concat.apply([],t),categories:e.categories})))})):{docs:[],categories:[]}}(t.wtf,e,n,r)},t.wtf.randomCategory=function(e,n){return o(e,n,t.http)},t.wtf.fetchCategory=t.wtf.parseCategory}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).wtfCategory=e()}(this,(function(){"use strict";function t(t){return t&&Object.prototype.hasOwnProperty.call(t,"default")&&1===Object.keys(t).length?t.default:t}var e=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5;return new Promise((function(r,o){if(t&&e)if(0!==t.length)for(var i=[],c=n-1,a=0,u=function n(u){a+=1;var f=e(t[u]);f.then?(f.then((function(t){i[u]=t})),f.catch((function(t){console.error(t),i[u]=null})),f.finally((function(){a-=1,c+=1,t.length>=c+1?n(c):a<=0&&r(i)}))):o("Error: function must return a promise")},f=t.length{try{let e=t.query.pages;return e[Object.keys(e)[0]].title}catch(t){throw t}})).catch((t=>(console.error(t),null)))};return function(t){t.wtf.parseCategory=function(e,n,r){return function(t,e,n,r){return e?t.category(e,n).then((e=>{let n=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5,n=[];for(let r=0;rt.title)));return i.three(n,(function(e){return t.fetch(e,r)})).then((t=>({docs:[].concat.apply([],t),categories:e.categories})))})):{docs:[],categories:[]}}(t.wtf,e,n,r)},t.wtf.randomCategory=function(e,n){return c(e,n,t.http)},t.wtf.fetchCategory=t.wtf.parseCategory}})); diff --git a/plugins/category/builds/wtf-plugin-category.mjs b/plugins/category/builds/wtf-plugin-category.mjs index e4d8e7dd..8f5a945d 100644 --- a/plugins/category/builds/wtf-plugin-category.mjs +++ b/plugins/category/builds/wtf-plugin-category.mjs @@ -1,4 +1,8 @@ -/* wtf-plugin-category 0.3.0 MIT */ +/* wtf-plugin-category 0.3.1 MIT */ +function getDefaultExportFromNamespaceIfNotNamed (n) { + return n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n; +} + /* slow 1.1.0 MIT */ //only do foo promises at a time. var rateLimit = function rateLimit(arr, fn) { @@ -90,10 +94,12 @@ methods.sprint = methods.fifteen; var src$1 = methods; var slow$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': src$1 + __proto__: null, + 'default': src$1 }); +var require$$0 = /*@__PURE__*/getDefaultExportFromNamespaceIfNotNamed(slow$1); + const defaults = { lang: 'en', wiki: 'wikipedia', @@ -116,13 +122,13 @@ const fetchRandom = function (lang, options, http) { options = Object.assign(options, lang); } - let url = `https://${options.lang}.wikipedia.org/${options.path}?`; + let url = "https://".concat(options.lang, ".wikipedia.org/").concat(options.path, "?"); if (options.domain) { - url = `https://${options.domain}/${options.path}?`; + url = "https://".concat(options.domain, "/").concat(options.path, "?"); } - url += `format=json&action=query&generator=random&grnnamespace=14&prop=revisions&grnlimit=1&origin=*`; + url += "format=json&action=query&generator=random&grnnamespace=14&prop=revisions&grnlimit=1&origin=*"; return http(url).then(res => { try { let o = res.query.pages; @@ -137,15 +143,13 @@ const fetchRandom = function (lang, options, http) { }); }; -var random = fetchRandom; - -function getCjsExportFromNamespace (n) { - return n && n['default'] || n; -} +var random$1 = fetchRandom; -var slow = getCjsExportFromNamespace(slow$1); +const slow = require$$0; +const random = random$1; -const chunkBy = function (arr, chunkSize = 5) { +const chunkBy = function (arr) { + let chunkSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5; let groups = []; for (let i = 0; i < arr.length; i += chunkSize) { @@ -197,4 +201,4 @@ const plugin = function (models) { var src = plugin; -export default src; +export { src as default }; diff --git a/plugins/category/package-lock.json b/plugins/category/package-lock.json index 695dee92..db8c1b6c 100644 --- a/plugins/category/package-lock.json +++ b/plugins/category/package-lock.json @@ -12,53 +12,57 @@ "slow": "^1.1.0" }, "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "@rollup/plugin-node-resolve": "11.2.1", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "13.0.6", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "4.0.0", - "rollup-plugin-node-resolve": "5.2.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", - "dev": true + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -75,83 +79,102 @@ } }, "node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -168,193 +191,249 @@ } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "dependencies": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -363,189 +442,278 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=4" @@ -578,6 +746,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -686,452 +869,570 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -1141,55 +1442,59 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1197,59 +1502,124 @@ "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "node_modules/@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } } }, - "node_modules/@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" } }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "node_modules/@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", @@ -1263,7 +1633,7 @@ "node": ">= 10.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "rollup": "^2.42.0" } }, "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { @@ -1275,16 +1645,6 @@ "@types/node": "*" } }, - "node_modules/@rollup/plugin-node-resolve/node_modules/resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "dependencies": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } - }, "node_modules/@rollup/pluginutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", @@ -1317,15 +1677,6 @@ "integrity": "sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg==", "dev": true }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1369,13 +1720,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" }, "peerDependencies": { @@ -1383,25 +1734,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1424,16 +1775,16 @@ } }, "node_modules/browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" @@ -1452,12 +1803,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "node_modules/buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, "node_modules/builtin-modules": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", @@ -1481,10 +1826,14 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", - "dev": true + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } }, "node_modules/chalk": { "version": "2.4.2", @@ -1516,9 +1865,9 @@ "dev": true }, "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "node_modules/commander": { @@ -1527,6 +1876,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1543,12 +1898,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "dependencies": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "funding": { @@ -1566,9 +1921,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/debug": { @@ -1655,33 +2010,37 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.704", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", - "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -1750,12 +2109,6 @@ "node": ">=0.8.0" } }, - "node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1829,10 +2182,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -1844,6 +2222,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { @@ -1876,6 +2257,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1897,6 +2290,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1913,6 +2321,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -1953,9 +2375,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true, "engines": { "node": ">= 0.4" @@ -2028,22 +2450,22 @@ } }, "node_modules/is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "dependencies": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -2061,11 +2483,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2116,6 +2550,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -2199,12 +2645,6 @@ "node": ">=6" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -2251,15 +2691,15 @@ "dev": true }, "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2327,9 +2767,15 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "node_modules/picomatch": { @@ -2342,9 +2788,9 @@ } }, "node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "node_modules/randombytes": { @@ -2357,23 +2803,23 @@ } }, "node_modules/re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "node_modules/readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -2384,21 +2830,21 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "dependencies": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" }, "engines": { "node": ">=4" } }, "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "node_modules/regenerator-transform": { @@ -2427,17 +2873,17 @@ } }, "node_modules/regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" @@ -2450,9 +2896,9 @@ "dev": true }, "node_modules/regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -2471,12 +2917,16 @@ } }, "node_modules/resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "dependencies": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resumer": { @@ -2489,9 +2939,9 @@ } }, "node_modules/rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2500,30 +2950,7 @@ "node": ">=10.0.0" }, "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "node_modules/rollup-plugin-filesize-check": { @@ -2532,28 +2959,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "node_modules/rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "dependencies": { - "rollup-pluginutils": "^2.5.0" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "dependencies": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -2566,15 +2971,6 @@ "terser": "^5.0.0" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2653,9 +3049,9 @@ "dev": true }, "node_modules/split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "dependencies": { "through": "2" @@ -2665,23 +3061,23 @@ } }, "node_modules/string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" }, "engines": { "node": ">= 0.4" @@ -2729,101 +3125,40 @@ } }, "node_modules/tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "dependencies": { - "chalk": "4.1.0", - "tap-out": "3.0.0" + "colorette": "^1.2.2", + "tap-in": "3.2.1" }, "bin": { "tap-dancer": "src/index.js" } }, - "node_modules/tap-dancer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tap-dancer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/tap-dancer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/tap-dancer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "bin": { + "tap-in": "bin/tap-in.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", - "dev": true, - "dependencies": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" - }, - "bin": { - "tap-out": "bin/cmd.js" + "node": ">=8.0.0" } }, "node_modules/tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", @@ -2831,17 +3166,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "bin": { @@ -2903,9 +3240,9 @@ } }, "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "node_modules/unbox-primitive": { @@ -2924,40 +3261,40 @@ } }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, "engines": { "node": ">=4" @@ -3042,35 +3379,35 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" } }, "@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true }, "@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -3080,74 +3417,75 @@ } }, "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -3161,339 +3499,370 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, - "@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", - "dev": true - }, + "@babel/parser": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { @@ -3514,6 +3883,15 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -3595,353 +3973,366 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -3951,52 +4342,53 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" } }, "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -4007,56 +4399,89 @@ } }, "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, "@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -4075,16 +4500,6 @@ "requires": { "@types/node": "*" } - }, - "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "requires": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } } } }, @@ -4119,15 +4534,6 @@ "integrity": "sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg==", "dev": true }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -4162,33 +4568,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" } }, "balanced-match": { @@ -4208,16 +4614,16 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "buffer-from": { @@ -4226,12 +4632,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, "builtin-modules": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", @@ -4249,9 +4649,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true }, "chalk": { @@ -4281,9 +4681,9 @@ "dev": true }, "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "commander": { @@ -4292,6 +4692,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -4308,12 +4714,12 @@ } }, "core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "requires": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "dependencies": { @@ -4326,9 +4732,9 @@ } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "debug": { @@ -4402,33 +4808,37 @@ } }, "electron-to-chromium": { - "version": "1.3.704", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", - "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" } }, "es-get-iterator": { @@ -4478,12 +4888,6 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4541,10 +4945,26 @@ "has-symbols": "^1.0.1" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4576,6 +4996,15 @@ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, + "has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -4588,6 +5017,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4604,6 +5042,17 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -4629,9 +5078,9 @@ } }, "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-core-module": { @@ -4674,22 +5123,22 @@ "dev": true }, "is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "requires": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" } }, "is-set": { @@ -4698,12 +5147,21 @@ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -4732,6 +5190,15 @@ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -4793,12 +5260,6 @@ "minimist": "^1.2.5" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -4842,15 +5303,15 @@ "dev": true }, "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true }, "object-is": { @@ -4897,9 +5358,15 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "picomatch": { @@ -4909,9 +5376,9 @@ "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "randombytes": { @@ -4924,23 +5391,23 @@ } }, "re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -4951,18 +5418,18 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "regenerator-transform": { @@ -4985,17 +5452,17 @@ } }, "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { @@ -5005,9 +5472,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -5022,11 +5489,12 @@ } }, "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -5040,35 +5508,12 @@ } }, "rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "rollup-plugin-filesize-check": { @@ -5077,28 +5522,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "requires": { - "rollup-pluginutils": "^2.5.0" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -5111,15 +5534,6 @@ "terser": "^5.0.0" } }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -5188,32 +5602,32 @@ "dev": true }, "split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "string.prototype.trimend": { @@ -5246,82 +5660,31 @@ } }, "tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "requires": { - "chalk": "4.1.0", - "tap-out": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "colorette": "^1.2.2", + "tap-in": "3.2.1" } }, - "tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", + "tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "requires": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" } }, "tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -5329,17 +5692,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "dependencies": { @@ -5387,9 +5752,9 @@ "dev": true }, "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "unbox-primitive": { @@ -5405,31 +5770,31 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "util-deprecate": { diff --git a/plugins/category/package.json b/plugins/category/package.json index f6d8410c..03e0720d 100644 --- a/plugins/category/package.json +++ b/plugins/category/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-category", "description": "i18n plugin for wtf_wikipedia", - "version": "0.3.0", + "version": "0.3.1", "main": "./builds/wtf-plugin-category.js", "unpkg": "./builds/wtf-plugin-category.min.js", "module": "./builds/wtf-plugin-category.mjs", @@ -34,18 +34,16 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "@rollup/plugin-node-resolve": "11.2.1", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "13.0.6", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "4.0.0", - "rollup-plugin-node-resolve": "5.2.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "license": "MIT" -} +} \ No newline at end of file diff --git a/plugins/category/rollup.config.js b/plugins/category/rollup.config.js index ab41ce56..c9fc7653 100644 --- a/plugins/category/rollup.config.js +++ b/plugins/category/rollup.config.js @@ -1,8 +1,8 @@ -import commonjs from 'rollup-plugin-commonjs' +import commonjs from '@rollup/plugin-commonjs' import { terser } from 'rollup-plugin-terser' -import babel from 'rollup-plugin-babel' +import { babel } from '@rollup/plugin-babel' import sizeCheck from 'rollup-plugin-filesize-check' -import resolve from '@rollup/plugin-node-resolve' //import slow +import { nodeResolve } from '@rollup/plugin-node-resolve' //import slow import { version } from './package.json' console.log('\n 📦 - running rollup..\n') @@ -18,9 +18,10 @@ export default [ ], external: ['https'], plugins: [ - resolve(), - commonjs(), + nodeResolve(), + commonjs({ requireReturnsDefault: "auto" }), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -42,9 +43,10 @@ export default [ ], external: ['https'], plugins: [ - resolve(), - commonjs(), + nodeResolve(), + commonjs({ requireReturnsDefault: "auto" }), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -65,9 +67,10 @@ export default [ ], external: ['https'], plugins: [ - resolve(), - commonjs(), + nodeResolve(), + commonjs({ requireReturnsDefault: "auto" }), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }), diff --git a/plugins/classify/builds/wtf-plugin-classify.js b/plugins/classify/builds/wtf-plugin-classify.js index b504b3f8..770e634d 100644 --- a/plugins/classify/builds/wtf-plugin-classify.js +++ b/plugins/classify/builds/wtf-plugin-classify.js @@ -1,9 +1,9 @@ -/* wtf-plugin-classify 1.0.0 MIT */ +/* wtf-plugin-classify 1.0.1 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfClassify = factory()); -}(this, (function () { 'use strict'; +})(this, (function () { 'use strict'; var AmericanFootballPlayer = { name: 'AmericanFootballPlayer', @@ -1557,7 +1557,7 @@ } }; - let schema = { + let schema$1 = { children: { Person: Person, Place: Place, @@ -1583,9 +1583,10 @@ return root; }; - schema = setId(schema, ''); - var schema_1 = schema; + schema$1 = setId(schema$1, ''); + var schema_1 = schema$1; + const schema = schema_1; let mappings$5 = { categories: {}, descriptions: {}, @@ -1653,7 +1654,7 @@ } }; - doNode(schema_1); + doNode(schema); var _dataFns = { patterns: patterns$4, mappings: mappings$5 @@ -1663,7 +1664,7 @@ mappings: mappings$4 } = _dataFns; - const byInfobox = function (doc) { + const byInfobox$1 = function (doc) { let infoboxes = doc.infoboxes(); let found = []; @@ -1686,9 +1687,9 @@ return found; }; - var byInfobox_1 = byInfobox; + var byInfobox_1 = byInfobox$1; - const byPattern = function (str, patterns) { + const byPattern$4 = function (str, patterns) { for (let i = 0; i < patterns.length; i += 1) { let reg = patterns[i][0]; @@ -1700,14 +1701,15 @@ return null; }; - var _byPattern = byPattern; + var _byPattern = byPattern$4; const { patterns: patterns$3, mappings: mappings$3 } = _dataFns; + const byPattern$3 = _byPattern; - const byCategory = function (doc) { + const byCategory$1 = function (doc) { let found = []; let cats = doc.categories(); // clean them up a bit @@ -1730,7 +1732,7 @@ } // loop through our patterns - let match = _byPattern(category, patterns$3.categories); + let match = byPattern$3(category, patterns$3.categories); if (match) { found.push({ @@ -1743,14 +1745,15 @@ return found; }; - var byCategory_1 = byCategory; + var byCategory_1 = byCategory$1; const { patterns: patterns$2, mappings: mappings$2 } = _dataFns; + const byPattern$2 = _byPattern; - const byTemplate = function (doc) { + const byTemplate$1 = function (doc) { let templates = doc.templates().map(tmpl => tmpl.json()); let found = []; @@ -1764,7 +1767,7 @@ }); } else { // try regex-list on it - let type = _byPattern(title, patterns$2.templates); + let type = byPattern$2(title, patterns$2.templates); if (type) { found.push({ @@ -1778,7 +1781,7 @@ return found; }; - var byTemplate_1 = byTemplate; + var byTemplate_1 = byTemplate$1; const { mappings: mappings$1 @@ -1806,15 +1809,16 @@ return found; }; - var bySection = fromSection; + var bySection$1 = fromSection; const { patterns: patterns$1, mappings } = _dataFns; + const byPattern$1 = _byPattern; const paren$1 = /\((.*)\)$/; - const byTitle = function (doc) { + const byTitle$1 = function (doc) { let title = doc.title(); if (!title) { @@ -1841,7 +1845,7 @@ } // look at regex - let match = _byPattern(title, patterns$1.titles); + let match = byPattern$1(title, patterns$1.titles); if (match) { return [{ @@ -1853,20 +1857,21 @@ return []; }; - var byTitle_1 = byTitle; + var byTitle_1 = byTitle$1; const { patterns } = _dataFns; + const byPattern = _byPattern; - const byDescription = function (doc) { + const byDescription$1 = function (doc) { let tmpl = doc.template('short description'); if (tmpl && tmpl.description) { let desc = tmpl.description || ''; desc = desc.toLowerCase(); // loop through our patterns - let match = _byPattern(desc, patterns.descriptions); + let match = byPattern(desc, patterns.descriptions); if (match) { return [{ @@ -1879,7 +1884,7 @@ return []; }; - var byDescription_1 = byDescription; + var byDescription_1 = byDescription$1; const skip = { disambiguation: true, @@ -1891,7 +1896,7 @@ const listOf = /^list of ./; const disambig = /\(disambiguation\)/; - const skipPage = function (doc) { + const skipPage$1 = function (doc) { let title = doc.title() || ''; //look at parentheses like 'Tornado (film)' let m = title.match(paren); @@ -1921,7 +1926,7 @@ return false; }; - var _skip = skipPage; + var _skip = skipPage$1; const topk = function (arr) { let obj = {}; @@ -2002,7 +2007,7 @@ let type = root; if (top) { - type = `${root}/${top[0]}`; // punish for any conflicting children + type = "".concat(root, "/").concat(top[0]); // punish for any conflicting children if (topKids.length > 1) { score *= 0.7; @@ -2022,7 +2027,16 @@ }; }; - var score = getScore; + var score$1 = getScore; + + const byInfobox = byInfobox_1; + const byCategory = byCategory_1; + const byTemplate = byTemplate_1; + const bySection = bySection$1; + const byTitle = byTitle_1; + const byDescription = byDescription_1; + const skipPage = _skip; + const score = score$1; const plugin = function (models) { //add a new method to main class @@ -2030,22 +2044,22 @@ let doc = this; let res = {}; //dont classify these - if (_skip(doc)) { + if (skipPage(doc)) { return score(res); } //look for 'infobox person', etc - res.infobox = byInfobox_1(doc); //look for '{{coord}}' + res.infobox = byInfobox(doc); //look for '{{coord}}' - res.template = byTemplate_1(doc); //look for '==early life==' + res.template = byTemplate(doc); //look for '==early life==' res.section = bySection(doc); //look for 'foo (film)' - res.title = byTitle_1(doc); //look for 'foo (film)' + res.title = byTitle(doc); //look for 'foo (film)' - res.description = byDescription_1(doc); //look for 'Category: 1992 Births', etc + res.description = byDescription(doc); //look for 'Category: 1992 Births', etc - res.category = byCategory_1(doc); + res.category = byCategory(doc); return score(res); }; }; @@ -2054,5 +2068,5 @@ return src; -}))); +})); //# sourceMappingURL=wtf-plugin-classify.js.map diff --git a/plugins/classify/builds/wtf-plugin-classify.js.map b/plugins/classify/builds/wtf-plugin-classify.js.map index dfdca415..cb92d7d7 100644 --- a/plugins/classify/builds/wtf-plugin-classify.js.map +++ b/plugins/classify/builds/wtf-plugin-classify.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-classify.js","sources":["../schema/Person/Athlete/AmericanFootballPlayer.js","../schema/Person/Athlete/BaseballPlayer.js","../schema/Person/Athlete/FootballPlayer.js","../schema/Person/Athlete/BasketballPlayer.js","../schema/Person/Athlete/HockeyPlayer.js","../schema/Person/Athlete/index.js","../schema/Person/Actor.js","../schema/Person/Politician.js","../schema/Person/Musician.js","../schema/Person/Author.js","../schema/Person/index.js","../schema/Place/Jurisdiction/City.js","../schema/Place/Jurisdiction/Country.js","../schema/Place/Jurisdiction/index.js","../schema/Place/Structure/Bridge.js","../schema/Place/Structure/Airport.js","../schema/Place/Structure/index.js","../schema/Place/BodyOfWater.js","../schema/Place/index.js","../schema/Organization/MusicalGroup.js","../schema/Organization/Company.js","../schema/Organization/SportsTeam.js","../schema/Organization/PoliticalParty.js","../schema/Organization/index.js","../schema/Event/Disaster.js","../schema/Event/Election.js","../schema/Event/MilitaryConflict.js","../schema/Event/SportsEvent.js","../schema/Event/index.js","../schema/Creation/CreativeWork/Album.js","../schema/Creation/CreativeWork/Book.js","../schema/Creation/CreativeWork/Film.js","../schema/Creation/CreativeWork/TVShow.js","../schema/Creation/CreativeWork/Play.js","../schema/Creation/CreativeWork/Song.js","../schema/Creation/CreativeWork/VideoGame.js","../schema/Creation/CreativeWork/index.js","../schema/Creation/MedicalCondition.js","../schema/Creation/Organism.js","../schema/Creation/Product.js","../schema/Creation/index.js","../schema/index.js","../schema/_data-fns.js","../src/byInfobox/index.js","../src/_byPattern.js","../src/byCategory/index.js","../src/byTemplate/index.js","../src/bySection/index.js","../src/byTitle/index.js","../src/byDescription/index.js","../src/_skip/index.js","../src/score.js","../src/index.js"],"sourcesContent":["module.exports = {\n name: 'AmericanFootballPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'BaseballPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: ['baseball year'],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'FootballPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'BasketballPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'HockeyPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Athlete',\n //\n properties: {\n leagues: () => {},\n },\n children: {\n AmericanFootballPlayer: require('./AmericanFootballPlayer'),\n BaseballPlayer: require('./BaseballPlayer'),\n FootballPlayer: require('./FootballPlayer'),\n BasketballPlayer: require('./BasketballPlayer'),\n HockeyPlayer: require('./HockeyPlayer'),\n },\n //\n categories: {\n mapping: [],\n patterns: [/sportspeople from ./, /(footballers|cricketers|defencemen|cyclists)/],\n },\n //\n descriptions: {\n patterns: [/(hockey|soccer|backetball|football) player/],\n },\n //\n infoboxes: {\n mapping: [\n 'afl_biography',\n 'alpine_ski_racer',\n 'athlete',\n 'baseball_biography',\n 'basketball_biography',\n 'boxer',\n 'cfl_player',\n 'cricketer',\n 'cyclist',\n 'field_hockey_player',\n 'figure_skater',\n 'gaa_player',\n 'golfer',\n 'gymnast',\n 'ice_hockey_player',\n 'lacrosse_player',\n 'martial_artist',\n 'mlb_player',\n 'nba_biography',\n 'nfl_biography',\n 'nfl_player',\n 'professional_wrestler',\n 'rugby_biography',\n 'rugby_league_biography',\n 'skier',\n 'squash_player',\n 'swimmer',\n 'tennis_biography',\n 'volleyball_biography',\n 'volleyball_player',\n 'hockey team player',\n 'football biography',\n 'baseball biography',\n 'ice hockey player',\n 'nfl player',\n 'basketball biography',\n 'professional wrestler',\n 'tennis biography',\n 'afl biography',\n 'nfl biography',\n 'rugby biography',\n 'rugby league biography',\n 'nba biography',\n 'figure skater',\n 'gaa player',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/sport-bio-stub$/],\n },\n //\n titles: {\n mapping: [\n 'american football player',\n 'football player',\n 'gaelic footballer',\n 'athlete',\n 'boxer',\n 'cricketer',\n 'footballer',\n 'wrestler',\n 'golfer',\n 'swimmer',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Actor',\n //\n children: {},\n properties: {\n films: () => {},\n tv_shows: () => {},\n },\n //\n categories: {\n mapping: ['male actors from new york city'],\n patterns: [/actresses/, /actors from ./, /actor stubs$/, / (actors|actresses)$/],\n },\n //\n descriptions: {\n patterns: [/(actor|actress)/],\n },\n //\n infoboxes: {\n mapping: ['actor'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/actor-stub$/],\n },\n //\n titles: {\n mapping: ['actor', 'actress'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Politician',\n //\n children: {},\n properties: {\n parties: () => {},\n },\n //\n categories: {\n mapping: [\n 'uk mps 2001–05',\n 'uk mps 1997–2001',\n 'uk mps 2005–10',\n 'uk mps 1992–97',\n 'labour party (uk) mps for english constituencies',\n 'conservative party (uk) mps for english constituencies',\n 'uk mps 1987–92',\n 'uk mps 2010–15',\n 'democratic party members of the united states house of representatives',\n 'republican party members of the united states house of representatives',\n 'uk mps 1983–87',\n 'democratic party state governors of the united states',\n 'california republicans',\n 'british secretaries of state',\n 'democratic party united states senators',\n 'uk mps 2015–17',\n 'republican party united states senators',\n 'republican party state governors of the united states',\n 'california democrats',\n 'uk mps 1979–83',\n 'uk mps 2017–',\n ],\n patterns: [\n /politicians from ./,\n /politician stubs$/,\n /. (democrats|republicans|politicians)$/,\n /mayors of ./,\n ],\n },\n //\n descriptions: {\n patterns: [/(politician|member of parliament)/],\n },\n //\n infoboxes: {\n mapping: [\n 'canadianmp',\n 'governor',\n 'indian_politician',\n 'mp',\n 'officeholder',\n 'politician',\n 'politician_(general)',\n 'president',\n 'roman_emperor',\n 'state_representative',\n 'state_senator',\n 'congressman',\n 'prime minister',\n 'indian politician',\n 'senator',\n 'state representative',\n 'state senator',\n 'us cabinet official',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: ['list of united states senators congress'],\n patterns: [/(politician|mayor)-stub$/],\n },\n //\n titles: {\n mapping: [\n 'australian politician',\n 'canadian politician',\n 'politician',\n 'british politician',\n 'governor',\n 'irish politician',\n 'mayor',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Musician',\n //\n children: {},\n properties: {\n groups: () => {},\n instruments: () => {},\n },\n //\n categories: {\n mapping: [\n 'american male guitarists',\n 'american singer-songwriters',\n 'american male singers',\n 'american rock singers',\n 'american rock guitarists',\n '21st-century american singers',\n 'lead guitarists',\n 'african-american musicians',\n 'english male singers',\n 'american male singer-songwriters',\n 'american rock songwriters',\n 'american record producers',\n 'american country singer-songwriters',\n '20th-century american guitarists',\n 'english songwriters',\n '20th-century american pianists',\n 'songwriters from new york (state)',\n 'african-american singers',\n 'american blues singers',\n 'american pop singers',\n 'male guitarists',\n 'american country singers',\n 'blues hall of fame inductees',\n 'american male songwriters',\n 'songwriters from california',\n 'english rock guitarists',\n 'american folk singers',\n 'english rock singers',\n 'english singer-songwriters',\n 'african-american male rappers',\n 'african-american jazz musicians',\n '20th-century english singers',\n 'american female singer-songwriters',\n 'jewish american musicians',\n 'american blues guitarists',\n '20th-century conductors (music)',\n 'american female singers',\n 'american jazz bandleaders',\n 'american jazz pianists',\n 'american soul singers',\n 'american female guitarists',\n 'american multi-instrumentalists',\n 'american country guitarists',\n 'english record producers',\n 'songwriters from texas',\n 'american composers',\n 'singers from california',\n 'american folk guitarists',\n 'lgbt singers',\n 'american buskers',\n 'guitarists from california',\n 'feminist musicians',\n 'big band bandleaders',\n '20th-century composers',\n 'african-american songwriters',\n 'british rhythm and blues boom musicians',\n 'alternative rock singers',\n '21st-century american guitarists',\n 'american alternative rock musicians',\n 'musicians from los angeles',\n 'rhythm guitarists',\n 'american session musicians',\n 'jazz musicians from new orleans',\n 'alternative rock guitarists',\n '20th-century women musicians',\n 'male film score composers',\n 'african-american singer-songwriters',\n 'american jazz singers',\n '21st-century english singers',\n 'singers from new york city',\n 'american acoustic guitarists',\n 'musicians from new york city',\n 'slide guitarists',\n 'guitarists from texas',\n 'vaudeville performers',\n ],\n patterns: [/musicians from ./, /(singers|songwriters|painters|poets)/],\n },\n //\n descriptions: {\n patterns: [/(singer|musicianrapper|drummer)/, /(keyboard|guitar|bass) player/],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/(musician|singer)-stub$/],\n },\n //\n titles: {\n mapping: ['composer', 'musician', 'rapper', 'singer'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Author',\n //\n children: {},\n properties: {\n works: () => {},\n },\n //\n categories: {\n mapping: [\n '20th-century american novelists',\n 'american male novelists',\n 'american film directors',\n '21st-century american novelists',\n 'american film producers',\n 'american male screenwriters',\n 'american science fiction writers',\n '20th-century english novelists',\n 'english male poets',\n 'american male short story writers',\n 'american political writers',\n 'english male novelists',\n '20th-century american writers',\n '19th-century male writers',\n 'american male writers',\n '20th-century women writers',\n '20th-century male writers',\n 'german male writers',\n '21st-century american writers',\n 'french male writers',\n 'jewish american writers',\n 'writers from new york city',\n '21st-century women writers',\n 'english male writers',\n ],\n patterns: [/novelists from ./],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Person',\n children: {\n Athlete: require('./Athlete'),\n Actor: require('./Actor'),\n Politician: require('./Politician'),\n Musician: require('./Musician'),\n Author: require('./Author'),\n },\n properties: {\n birth_date: () => {},\n birth_place: () => {},\n nationality: () => {},\n death_date: () => {},\n death_place: () => {},\n },\n //\n categories: {\n mapping: [\n 'living people',\n 'possibly living people',\n 'year of birth unknown',\n 'fellows of the royal society',\n 'members of the privy council of the united kingdom',\n 'american people of english descent',\n 'guggenheim fellows',\n 'harvard university alumni',\n 'american military personnel of world war ii',\n 'knights bachelor',\n 'american roman catholics',\n 'knights of the garter',\n 'presidential medal of freedom recipients',\n 'commanders of the order of the british empire',\n 'people educated at eton college',\n 'alumni of trinity college, cambridge',\n 'foreign members of the royal society',\n 'american people of scottish descent',\n 'american memoirists',\n 'members of the french academy of sciences',\n 'united states army soldiers',\n 'officers of the order of the british empire',\n 'deaths from pneumonia',\n 'burials at père lachaise cemetery',\n 'deaths from cancer in california',\n 'year of birth missing (living people)',\n 'knights of the golden fleece',\n 'columbia university alumni',\n 'alumni of the university of edinburgh',\n 'american people of russian-jewish descent',\n 'yale university alumni',\n 'american atheists',\n 'people of the tudor period',\n 'tony award winners',\n 'members of the académie française',\n 'united states army officers',\n 'persons of national historic significance (canada)',\n '20th-century american businesspeople',\n 'american television producers',\n 'american journalists',\n 'american male journalists',\n 'american male comedians',\n 'princeton university alumni',\n 'university of paris alumni',\n 'american episcopalians',\n 'american women novelists',\n 'phi beta kappa members',\n '20th-century american poets',\n 'bafta winners (people)',\n \"members of the queen's privy council for canada\",\n 'american presbyterians',\n 'fellows of the american academy of arts and sciences',\n 'members of the united states national academy of sciences',\n 'members of the royal swedish academy of sciences',\n '20th-century american short story writers',\n 'american nobel laureates',\n 'harvard university faculty',\n 'roman catholic monarchs',\n 'popes',\n 'italian popes',\n ],\n patterns: [\n /[0-9]{4} births/,\n /[0-9]{4} deaths/,\n /people of .* descent/,\n /^deaths from /,\n /^(people|philanthropists|writers) from ./,\n / (players|alumni)$/,\n /(alumni|fellows) of .$/,\n /(people|writer) stubs$/,\n /(american|english) (fe)?male ./,\n /(american|english) (architects|people)/,\n ],\n },\n //\n descriptions: {\n patterns: [/(artist|painter|poet|writer|celebrity|activist)/],\n },\n //\n infoboxes: {\n mapping: [\n 'adult_biography',\n 'architect',\n 'chef',\n 'chess_player',\n 'christian_leader',\n 'college_coach',\n 'college_football_player',\n 'comedian',\n 'comics_creator',\n 'criminal',\n 'engineer',\n 'fashion_designer',\n 'football_biography',\n 'gridiron_football_person',\n 'handball_biography',\n 'hindu_leader',\n 'horseracing_personality',\n 'judge',\n 'mass_murderer',\n 'medical_person',\n 'military_person',\n 'model',\n 'monarch',\n 'nascar_driver',\n 'person',\n 'philosopher',\n 'police_officer',\n 'presenter',\n 'racing_driver',\n 'religious_biography',\n 'royalty',\n 'sportsperson',\n 'wrc_driver',\n 'writer',\n 'snooker player',\n 'military person',\n 'college coach',\n 'f1 driver',\n 'gridiron football person',\n 'racing driver',\n 'martial artist',\n 'chinese-language singer and actor',\n 'astronaut',\n 'nascar driver',\n 'adult biography',\n 'coa wide',\n 'chess player',\n 'pageant titleholder',\n\n //religious person\n 'archbishop',\n 'minister',\n 'saint',\n 'bishop',\n 'christian leader',\n 'religious biography',\n // artist\n 'artist',\n 'comics creator',\n // academic\n 'economist',\n 'scholar',\n 'scientist',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'early life',\n 'personal life',\n 'career',\n 'career statistics',\n 'playing career',\n 'life and career',\n 'early life and education',\n 'film and television credits',\n 'filmography',\n 'selected filmography',\n 'works',\n 'life',\n 'family',\n 'political career',\n 'early career',\n 'later life',\n 'early life and career',\n 'later years',\n 'death and legacy',\n 'work',\n 'novels',\n 'later career',\n 'international',\n 'selected works',\n 'writings',\n 'professional career',\n 'retirement',\n 'poetry',\n 'marriage',\n 'electoral history',\n 'military career',\n 'international career',\n 'parliamentary career',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'persondata',\n 'writer',\n 'ted speaker',\n 's-aft',\n 's-bef',\n 's-start',\n 'marriage',\n 's-off',\n 's-par',\n 'internet archive author',\n 'ribbon devices',\n 's-reg',\n 'find a grave',\n 'gutenberg author',\n 's-new',\n 'other people',\n 'medalgold',\n 'medal',\n 'mlby',\n 's-vac',\n 's-hou',\n 'librivox author',\n 'blp sources',\n 's-ppo',\n 'nbay',\n ],\n patterns: [/-bio-stub$/],\n },\n //\n titles: {\n mapping: [\n 'murder victim',\n 'academic',\n 'author',\n 'businessman',\n 'cyclist',\n 'diplomat',\n 'director',\n 'drummer',\n 'journalist',\n 'judge',\n 'minister',\n 'poet',\n 'priest',\n 'american football',\n 'ice hockey',\n 'soccer',\n 'rugby league',\n 'rugby union',\n 'field hockey',\n 'tennis',\n 'writer',\n 'vc',\n 'racing driver',\n 'architect',\n 'comedian',\n 'british army officer',\n 'general',\n 'broadcaster',\n 'engineer',\n 'physician',\n 'soldier',\n 'royal navy officer',\n 'producer',\n 'lawyer',\n 'activist',\n 'inventor',\n\n 'artist',\n 'painter',\n 'cartoonist',\n 'novelist',\n 'photographer',\n 'playwright',\n 'bishop',\n 'theologian',\n 'historian',\n 'philosopher',\n 'mathematician',\n 'astronomer',\n 'economist',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'City',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [\n /^cities and towns in ./,\n /(municipalities|settlements|villages|localities|townships) in ./,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'swiss town',\n 'city japan',\n 'municipality br',\n 'russian town',\n 'south african town 2011',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'sister cities',\n 'neighbourhoods',\n 'churches',\n 'parks and recreation',\n 'public transportation',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Country',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: ['international relations'],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['country'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Jurisdiction',\n children: {\n City: require('./City'),\n Country: require('./Country'),\n },\n properties: {\n population: () => {},\n leader: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n '2010 census',\n '2000 census',\n 'economy',\n 'transportation',\n 'government',\n 'communities',\n 'transport',\n 'culture',\n 'sports',\n 'adjacent counties',\n 'major highways',\n 'notable residents',\n 'tourism',\n 'cities',\n 'population',\n 'unincorporated communities',\n 'infrastructure',\n 'schools',\n 'rail',\n 'census-designated places',\n 'towns',\n 'local government',\n 'points of interest',\n 'attractions',\n 'demographics',\n 'climate',\n 'notable people',\n 'townships',\n 'recreation',\n 'arts and culture',\n 'governance',\n 'administrative divisions',\n 'landmarks',\n 'demography',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Bridge',\n //\n children: {},\n properties: {\n length: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Airport',\n //\n children: {},\n properties: {\n airlines: () => {},\n runways: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Structure',\n //\n children: {\n Bridge: require('./Bridge'),\n Airport: require('./Airport'),\n },\n properties: {\n date_created: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [\n /(buildings|bridges) completed in /,\n /airports established in ./,\n /(airports|bridges) in ./,\n /buildings and structures in ./,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'airport',\n 'bridge',\n 'building',\n 'power_station',\n 'religious_building',\n 'stadium',\n 'uk school',\n 'military structure',\n 'religious building',\n 'shopping mall',\n 'lighthouse',\n 'power station',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'BodyOfWater',\n //\n children: {},\n properties: {},\n //\n categories: {\n mapping: [],\n patterns: [/(rivers|lakes|tributaries) of ./],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['body_of_water', 'lake', 'river', 'sea', 'body of water'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-river-stub$/],\n },\n //\n titles: {\n mapping: ['river'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Place',\n children: {\n Jurisdiction: require('./Jurisdiction'),\n Structure: require('./Structure'),\n BodyOfWater: require('./BodyOfWater'),\n },\n properties: {\n location: () => {},\n coordinates: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [\n /populated places/,\n /landforms of ./,\n /railway stations/,\n /parks in ./,\n / district$/,\n /geography stubs$/,\n /sports venue stubs$/,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'amusement_park',\n 'ancient_site',\n 'australian_place',\n 'casino',\n 'cemetery',\n 'church',\n 'cricket_ground',\n 'dam',\n 'feature_on_mars',\n 'former_country',\n 'former_subdivision',\n 'french_commune',\n 'german_location',\n 'golf_facility',\n 'historic_site',\n 'hospital',\n 'hotel',\n 'islands',\n 'israel_village',\n 'italian_comune',\n 'launch_pad',\n 'military_memorial',\n 'military_structure',\n 'monument',\n 'mountain',\n 'mountain_pass',\n 'mountain_range',\n 'museum',\n 'neighborhood_portland_or',\n 'oil_field',\n 'park',\n 'prison',\n 'province_or_territory_of_canada',\n 'road',\n 'road_small',\n 'russian_inhabited_locality',\n 'russian_town',\n 'russian_urban-type_settlement',\n 'school',\n 'scotland_council_area',\n 'settlement',\n 'shopping_mall',\n 'south_african_subplace_2011',\n 'state',\n 'station',\n 'street',\n 'swiss_town',\n 'temple',\n 'town_at',\n 'u.s._metropolitan_area',\n 'u.s._state',\n 'uk_constituency',\n 'uk_disused_station',\n 'uk_place',\n 'uk_school',\n 'unesco_world_heritage_site',\n 'university_of_notre_dame_residence_hall',\n 'venue',\n 'waterfall',\n 'windmill',\n 'zoo',\n 'ecoregion',\n 'uk place',\n 'italian comune',\n 'geobox',\n 'australian place',\n 'french commune',\n 'german location',\n 'u.s. county',\n 'former country',\n 'road small',\n 'lunar crater',\n 'gb station',\n 'greek dimos',\n 'uk constituency main',\n 'finnish municipality/population count',\n 'ancient site',\n 'mountain range',\n 'london station',\n 'former subdivision',\n 'uk station',\n 'historic site',\n 'world heritage site',\n 'diocese',\n 'uk disused station',\n 'belgium municipality',\n 'uk constituency',\n 'theatre',\n 'canada electoral district',\n 'nycs',\n 'mountain pass',\n 'kommune',\n 'historic subdivision',\n 'u.s. congressional district',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: ['geography', 'geology', 'location', 'coat of arms'],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'coord',\n 'weather box',\n 'us census population',\n 'jct',\n 'geographic location',\n 'representative',\n 'historical populations',\n 'wikivoyage-inline',\n 'election box',\n 'zh',\n 'wide image',\n ],\n patterns: [/-geo-stub$/],\n },\n //\n titles: {\n mapping: [\n 'cape verde',\n 'cedar busway station',\n 'delhi metro',\n 'erie county, new york',\n 'new jersey',\n 'new orleans',\n 'new york City Subway',\n 'new york',\n 'new zealand',\n 'north carolina',\n 'northern ireland',\n 'sri lanka',\n 'uk parliament constituency',\n 'united kingdom',\n 'united states',\n 'alaska',\n 'argentina',\n 'arkansas',\n 'australia',\n 'barbados',\n 'brazil',\n 'california',\n 'canada',\n 'chad',\n 'chicago',\n 'colombia',\n 'connecticut',\n 'dominica',\n 'edmonton',\n 'france',\n 'georgia',\n 'india',\n 'israel',\n 'japan',\n 'manhattan',\n 'michigan',\n 'nigeria',\n 'oklahoma',\n 'ontario',\n 'pennsylvania',\n 'portugal',\n 'province',\n 'spain',\n 'sudan',\n 'texas',\n 'uk',\n 'va',\n 'Virginia',\n 'volcano',\n 'washington',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'MusicalGroup',\n //\n children: {},\n properties: {\n albums: () => {},\n },\n //\n categories: {\n mapping: [\n 'musical quartets',\n 'musical duos',\n 'musical trios',\n 'musical quintets',\n 'english rock music groups',\n 'english new wave musical groups',\n 'african-american musical groups',\n '21st-century american musicians',\n 'american alternative metal musical groups',\n 'english pop music groups',\n 'art rock musical groups',\n 'english post-punk music groups',\n ],\n patterns: [\n /musical groups from /,\n /musical groups (dis)?established in [0-9]{4}/,\n /musical group stubs/,\n /. music(al)? (groups|duos|trios|quartets|quintets)$/,\n ],\n },\n //\n descriptions: {\n patterns: [/rock band/],\n },\n //\n infoboxes: {\n mapping: ['musical_artist'],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'band members',\n 'albums',\n 'studio albums',\n 'compilation albums',\n 'live albums',\n 'compilations',\n 'eps',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: ['allmusic'],\n patterns: [],\n },\n //\n titles: {\n mapping: [\n 'band',\n 'american band',\n 'australian band',\n 'canadian band',\n 'uk band',\n 'japanese band',\n 'swedish band',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Company',\n //\n children: {},\n //\n categories: {\n mapping: [\n 'companies listed on the new york stock exchange',\n 'jazz record labels',\n 'video game development companies',\n 'american record labels',\n 'companies listed on nasdaq',\n 'video game companies of the united states',\n 'companies formerly listed on the london stock exchange',\n 'multinational companies headquartered in the united states',\n 'companies listed on the tokyo stock exchange',\n 're-established companies',\n 'companies based in new york city',\n 'defunct video game companies',\n 'companies formed by merger',\n 'entertainment companies based in california',\n ],\n patterns: [/companies (established|based) in ./],\n },\n //\n descriptions: {\n patterns: [/(company|subsidary)/],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: ['products'],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-company-stub$/],\n },\n //\n titles: {\n mapping: ['company', 'newspaper', 'restaurant', 'retailer', 'store'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'SportsTeam',\n //\n children: {},\n properties: {\n coaches: () => {},\n },\n //\n categories: {\n mapping: [\n 'football clubs in england',\n 'english football league clubs',\n 'southern football league clubs',\n 'football clubs in scotland',\n 'premier league clubs',\n 'national basketball association teams',\n ],\n patterns: [\n /football clubs in ./,\n /(basketball|hockey|baseball|football) teams (in|established) ./,\n ],\n },\n //\n descriptions: {\n patterns: [/(basketball|hockey|soccer|football|sports) team/],\n },\n //\n infoboxes: {\n mapping: [\n 'basketball_club',\n 'pro_hockey_team',\n 'college_ice_hockey_team',\n 'college_soccer_team',\n 'cricket_team',\n 'football_club',\n 'non_test_cricket_team',\n 'non-profit',\n 'rugby_league_club',\n 'rugby_league_representative_team',\n 'rugby_team',\n 'baseball team',\n 'football club',\n 'rugby team',\n 'national football team',\n 'basketball club',\n 'hockey team',\n 'rugby league club',\n 'football club infobox',\n 'cricket team',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: ['coaching staff', 'head coaches', 'team records', 'current squad'],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-sport-team-stub$/],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'PoliticalParty',\n //\n children: {},\n //\n categories: {\n mapping: ['social democratic parties'],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [/political party/],\n },\n //\n infoboxes: {\n mapping: ['political_party', 'political party'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['political party'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Organization',\n //\n children: {\n MusicalGroup: require('./MusicalGroup'),\n Company: require('./Company'),\n SportsTeam: require('./SportsTeam'),\n PoliticalParty: require('./PoliticalParty'),\n },\n properties: {\n leaders: () => {},\n members: () => {},\n },\n //\n categories: {\n mapping: [\n 'japanese brands',\n 'american jazz composers',\n 'scouting in the united states',\n 'car brands',\n 'government-owned airlines',\n 'baptist denominations in north america',\n 'baptist denominations established in the 20th century',\n 'land-grant universities and colleges',\n 'organizations based in washington, d.c.',\n 'video game publishers',\n 'defunct motor vehicle manufacturers of the united states',\n 'alternative rock groups from california',\n ],\n patterns: [\n /(organi[sz]ations|publications) based in /,\n /(organi[sz]ations|publications|schools|awards) established in [0-9]{4}/,\n /(secondary|primary) schools/,\n /military units/,\n /magazines/,\n /organi[sz]ation stubs$/,\n ],\n },\n //\n descriptions: {\n patterns: [/(charity|organization|ngo)/],\n },\n //\n infoboxes: {\n mapping: [\n 'airline',\n 'broadcasting_network',\n 'cbb_team',\n 'choir',\n 'college',\n 'company',\n 'dot-com_company',\n 'film_awards',\n 'film_festival',\n 'football_league',\n 'gaa_club',\n 'government_agency',\n 'government_cabinet',\n 'journal',\n 'laboratory',\n 'law_enforcement_agency',\n 'legislature',\n 'library',\n 'military_unit',\n 'national_military',\n 'ncaa_football_school',\n 'newspaper',\n 'nobility',\n 'organization',\n 'public_transit',\n 'publisher',\n 'radio_station',\n 'rail_line',\n 'rail_service',\n 'record_label',\n 'school_district',\n 'sport_governing_body',\n 'sports_league',\n 'television_channel',\n 'tv_channel',\n 'u.s._cabinet',\n 'u.s._legislation',\n 'uk_legislation',\n 'university',\n 'v8_supercar_team',\n 'former monarchy',\n 'criminal organization',\n 'radio station',\n 'military unit',\n 'government agency',\n 'rail line',\n 'record label',\n 'school district',\n 'tv channel',\n 'sports league',\n 'football league',\n 'worldscouting',\n 'sg rail',\n 'law enforcement agency',\n 'uk legislation',\n 'public transit',\n 'us university ranking',\n 'television channel',\n 'bus transit',\n 'union',\n 'broadcasting network',\n 'christian denomination',\n 'film awards',\n 'gaa club',\n 'fraternity',\n 'rail',\n 'rail service',\n 'national military',\n 'sport governing body',\n 'political party/seats',\n 'athletic conference',\n 'film festival',\n 'dot-com company',\n 'india university ranking',\n 'uk university rankings',\n 'government cabinet',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'founding',\n 'founders',\n 'members',\n 'athletics',\n 'notable alumni',\n 'academics',\n 'campus',\n 'organization',\n 'student life',\n 'rankings',\n 'fleet',\n 'research',\n 'formation',\n 'operations',\n 'players',\n 'alumni',\n 'former members',\n 'presidents',\n 'membership',\n 'current members',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: ['composition bar', 'fs player', 'y', 'n', 'rws'],\n patterns: [],\n },\n //\n titles: {\n mapping: [\n 'group',\n 'journal',\n 'am',\n 'fm',\n 'wehrmacht',\n 'tv channel',\n 'british band',\n 'organization',\n 'airline',\n 'publisher',\n 'brand',\n 'record label',\n 'union army',\n 'defunct',\n 'tv network',\n 'department store',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Disaster',\n children: {},\n properties: {\n casualties: () => {},\n },\n //\n categories: {\n mapping: ['retired atlantic hurricanes'],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'aircraft_accident',\n 'airliner_accident',\n 'earthquake',\n 'hurricane',\n 'pandemic',\n 'airliner accident',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Election',\n children: {},\n //\n categories: {\n mapping: ['presidential elections in ireland'],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['election'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: ['election summary party with leaders'],\n patterns: [/-election-stub$/],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'MilitaryConflict',\n children: {},\n //\n categories: {\n mapping: [\n 'wars involving the united kingdom',\n 'proxy wars',\n 'new zealand wars',\n 'battles between england and scotland',\n 'conflicts in 1943',\n 'last stand battles',\n 'battles and conflicts without fatalities',\n 'guerrilla wars',\n '20th-century conflicts',\n '20th-century revolutions',\n 'sieges involving japan',\n 'revolution-based civil wars',\n ],\n patterns: [/conflicts (in|of) [0-9]{4}/, /(wars|battles|conflicts) (involving|of|in) ./],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['military_conflict', 'military conflict', 'civil conflict', 'civilian attack'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'SportsEvent',\n children: {},\n properties: {\n winners: () => {},\n },\n //\n categories: {\n mapping: [\n '1904 summer olympics events',\n '1900 summer olympics events',\n '2002 winter olympics events',\n ],\n patterns: [\n /. league seasons$/,\n /^(19|20)[0-9]{2} in (soccer|football|rugby|tennis|basketball|baseball|cricket|sports)/,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'athletics_championships',\n 'badminton_event',\n 'boxingmatch',\n 'fila_wrestling_event',\n 'football_club_season',\n 'football_country_season',\n 'football_league_season',\n 'football_match',\n 'football_tournament_season',\n 'little_league_world_series',\n 'nba_season',\n 'ncaa_baseball_conference_tournament',\n 'ncaa_football_single_game',\n 'ncaa_team_season',\n 'nfl_season',\n 'nfl_single_game',\n 'sports_season',\n 'tennis_event',\n 'tennis_grand_slam_events',\n 'wrestling_event',\n 'football tournament',\n 'olympic event',\n 'international football competition',\n 'wrestling event',\n 'sports season',\n 'cycling race report',\n 'ncaa team season',\n 'cricket tournament',\n 'football match',\n 'world series expanded',\n 'mma event',\n 'nfl season',\n 'nfl draft',\n 'athletics championships',\n 'football club season',\n 'canadian football game',\n 'australian rules football season',\n 'football tournament season',\n 'international ice hockey competition',\n 'cricket tour',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Event',\n properties: {\n dates: () => {},\n places: () => {},\n },\n children: {\n Disaster: require('./Disaster'),\n Election: require('./Election'),\n MilitaryConflict: require('./MilitaryConflict'),\n SportsEvent: require('./SportsEvent'),\n },\n //\n categories: {\n mapping: [\n 'years in literature',\n 'years in music',\n 'years in film',\n 'united states supreme court cases',\n 'leap years in the gregorian calendar',\n \"governor general's awards\",\n 'eurovision song contest by year',\n 'grammy awards ceremonies',\n 'united kingdom in the eurovision song contest',\n 'manned soyuz missions',\n 'american civil liberties union litigation',\n 'may',\n 'october',\n 'missions to the moon',\n 'world war ii british commando raids',\n 'july',\n 'december',\n 'september',\n 'november',\n 'january',\n 'june',\n 'august',\n 'april',\n 'february',\n 'march',\n 'conflicts in 1944',\n 'missions to mars',\n 'luna program',\n 'conflicts in 1942',\n 'special air service',\n 'soft landings on the moon',\n 'may observances',\n 'first events',\n 'recent years',\n 'elections not won by the popular vote winner',\n 'conflicts in 1864',\n '1862 in the american civil war',\n 'new york (state) in the american revolution',\n 'march observances',\n 'public holidays in the united states',\n '1944 in france',\n 'december observances',\n '20th century american trials',\n 'african-american civil rights movement (1954–68)',\n 'october observances',\n 'spring holidays',\n 'years in aviation',\n 'national days',\n 'summer holidays',\n 'apollo program',\n ],\n patterns: [/^(19|20)[0-9]{2} in /, /^(years of the )?[0-9]{1,2}(st|nd|rd|th)? century in ./],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'beauty_pageant',\n 'civil_conflict',\n 'concert_tour',\n 'court_case',\n 'event',\n 'historical_era',\n 'holiday',\n 'horseraces',\n 'individual_snooker_tournament',\n 'legislative_term',\n 'music_festival',\n 'nfl_draft',\n 'pba_draft',\n 'reality_music_competition',\n 'recurring_event',\n 'song_contest',\n 'summit',\n 'grand prix race report',\n 'recurring event',\n 'music festival',\n 'football league season',\n 'scotus case',\n 'court case',\n 'concert tour',\n 'international labour organization convention',\n 'song contest',\n 'australian year',\n 'individual darts tournament',\n 'beauty pageant',\n 'historical event',\n 'grand prix motorcycle race report',\n 'international handball competition',\n 'coa case',\n 'individual snooker tournament',\n 'esc national year',\n 'indy500',\n 'national political convention',\n 'referendum',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'aftermath',\n 'births',\n 'deaths',\n 'battle',\n 'results',\n 'prelude',\n 'may',\n 'june',\n 'march',\n 'december',\n 'october',\n 'july',\n 'august',\n 'april',\n 'november',\n 'february',\n 'september',\n 'january',\n 'incumbents',\n 'casualties',\n 'july to december',\n 'january to june',\n 'medal table',\n 'campaign',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'esc',\n 'year nav',\n 'year dab',\n 'goal',\n 'flagiocmedalist',\n 'm1 year in topic',\n 'year nav topic5',\n 'bc year in topic',\n 'flagiocathlete',\n 'year article header',\n ],\n patterns: [],\n },\n //\n titles: {\n mapping: ['festival', '25 m', 'world war ii', 'conmebol', 'music festival', 'world war i'],\n patterns: [/ \\((19|20)[0-9]{2}\\)$/],\n },\n}\n","module.exports = {\n name: 'Album',\n children: {},\n //\n categories: {\n mapping: ['albums recorded at abbey road studios'],\n patterns: [/[0-9]{4}.*? albums/, /^albums /, / albums$/, /album stubs$/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['album'],\n patterns: [],\n },\n //\n sections: {\n mapping: ['track listing'],\n patterns: [],\n },\n //\n templates: {\n mapping: ['track listing', 'tracklist'],\n patterns: [/-album-stub$/],\n },\n //\n titles: {\n mapping: ['album'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Book',\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [/(film|novel) stubs$/, /[0-9]{4}.*? (poems|novels)/, / (poems|novels)$/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['book'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-novel-stub$/],\n },\n //\n titles: {\n mapping: ['book', 'novel'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Film',\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [/[0-9]{4}.*? films/, / films$/, /^films /],\n },\n //\n descriptions: {\n patterns: [/[0-9]{4} film/],\n },\n //\n infoboxes: {\n mapping: ['film'],\n patterns: [],\n },\n //\n sections: {\n mapping: ['cast'],\n patterns: [],\n },\n //\n templates: {\n mapping: ['imdb title', 'film date', 'rotten-tomatoes'],\n patterns: [/-film-stub$/],\n },\n //\n titles: {\n mapping: ['movie'],\n patterns: [/ \\([0-9]{4} film\\)$/],\n },\n}\n","module.exports = {\n name: 'TVShow',\n children: {},\n properties: {\n seasons: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [/television series/],\n },\n //\n descriptions: {\n patterns: [/television series/],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: ['episode list'],\n patterns: [],\n },\n //\n titles: {\n mapping: [\n 'tv series',\n 'game show',\n 'u.s. tv series',\n 'uk tv series',\n 'australian tv series',\n 'u.s. game show',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Play',\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['play'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-play-stub$/],\n },\n //\n titles: {\n mapping: ['play'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Song',\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [/[0-9]{4}.*? songs/, /^songs /, / songs$/, /song stubs$/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['song'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'VideoGame',\n children: {},\n properties: {\n platforms: () => {},\n },\n //\n categories: {\n mapping: [\n 'dos games',\n 'virtual console games',\n 'mac os games',\n 'amiga games',\n 'arcade games',\n 'commodore 64 games',\n 'nintendo entertainment system games',\n 'playstation (console) games',\n 'ios games',\n 'super nintendo entertainment system games',\n 'video game sequels',\n 'game boy advance games',\n 'first-person shooters',\n 'playstation network games',\n 'linux games',\n 'atari st games',\n 'playstation 2 games',\n 'game boy games',\n 'zx spectrum games',\n 'mario universe games',\n 'multiplayer online games',\n 'mobile games',\n 'android (operating system) games',\n 'platform games',\n 'xbox 360 live arcade games',\n 'sega genesis games',\n ],\n patterns: [/video games/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['video game'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['video game'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'CreativeWork',\n children: {\n Album: require('./Album'),\n Book: require('./Book'),\n Film: require('./Film'),\n TVShow: require('./TVShow'),\n Play: require('./Play'),\n Song: require('./Song'),\n VideoGame: require('./VideoGame'),\n },\n //\n properties: {\n genre: () => {},\n },\n //\n categories: {\n mapping: [\n 'operas',\n 'american science fiction novels',\n 'broadway musicals',\n 'debut novels',\n 'the twilight zone (1959 tv series) episodes',\n 'united states national recording registry recordings',\n 'macos games',\n 'virtual console games for wii u',\n 'american monthly magazines',\n 'broadway plays',\n 'interactive achievement award winners',\n 'doubleday (publisher) books',\n '19th-century classical composers',\n 'film soundtracks',\n 'universal deluxe editions',\n 'best picture academy award winners',\n 'shōnen manga',\n 'west end musicals',\n 'sequel novels',\n 'dystopian novels',\n 'american comic strips',\n 'american road movies',\n 'chemical elements',\n 'amstrad cpc games',\n 'neo-noir',\n 'fiction with unreliable narrators',\n 'best drama picture golden globe winners',\n 'adventure anime and manga',\n ],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'artwork',\n 'book_series',\n 'broadcast',\n 'comic_book_title',\n 'comic_strip',\n 'doctor_who_episode',\n 'hollywood_cartoon',\n 'magazine',\n 'musical',\n 'musical_composition',\n 'opera',\n 'painting',\n 'radio_show',\n 'song',\n 'song_contest_entry',\n 'television_episode',\n 'television_season',\n 'treaty',\n 'video_game',\n 'anthem',\n 'television episode',\n 'comic book title',\n 'song contest entry',\n 'short story',\n 'hollywood cartoon',\n 'radio show',\n 'simpsons episode',\n 'musical composition',\n 'book series',\n 'comic strip',\n 'television season',\n 'comics organization',\n 'doctor who episode',\n 'animanga/other',\n 'graphic novel',\n 'rpg',\n 'big finish',\n 'vg series',\n 'name module',\n 'comics story arc',\n 'video game series',\n 'futurama episode',\n 'comics character and title',\n 'comics meta series',\n 'webcomic',\n 'the goodies episode',\n 'audio drama',\n 'sw comics',\n 'media franchise',\n 'folk tale',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'plot',\n 'reception',\n 'charts',\n 'release',\n 'plot summary',\n 'gameplay',\n 'characters',\n 'box office',\n 'accolades',\n 'soundtrack',\n 'adaptations',\n 'synopsis',\n 'home media',\n 'weekly charts',\n 'themes',\n 'publication history',\n 'filming',\n 'year-end charts',\n 'casting',\n 'release and reception',\n 'commercial performance',\n 'composition',\n 'album',\n 'setting',\n 'chart positions',\n 'release history',\n 'charts and certifications',\n 'sequels',\n 'chart performance',\n 'sequel',\n 'recordings',\n 'story',\n 'editions',\n 'in other media',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'rating',\n 'certification table entry',\n 'albumchart',\n 'music',\n 'album ratings',\n 'album chart',\n 'singles',\n 'isbnt',\n 'singlechart',\n 'tcmdb title',\n 'mojo title',\n 'based on',\n 'amg movie',\n 'duration',\n ],\n patterns: [/-song-stub$/],\n },\n //\n titles: {\n mapping: [\n 'season 2',\n 'season 3',\n 'season 4',\n 'season 5',\n 'the twilight zone',\n 'ballet',\n 'magazine',\n 'miniseries',\n 'music',\n 'opera',\n 'painting',\n 'series',\n 'single',\n 'song',\n 'soundtrack',\n 'ep',\n 'comics',\n 'musical',\n 'manga',\n 'star trek: the next generation',\n 'star trek: deep space nine',\n 'buffy the vampire slayer',\n 'angel',\n 'the outer limits',\n 'star trek: voyager',\n 'short story',\n 'seinfeld',\n 'star trek: enterprise',\n 'poem',\n 'tv',\n 'uk series',\n 'doctor who',\n 'david bowie song',\n 'caravaggio',\n 'the beach boys song',\n 'video',\n 'audio drama',\n 'babylon 5',\n 'madonna song',\n ],\n patterns: [/ \\((.*? )song\\)$/],\n },\n}\n","module.exports = {\n name: 'MedicalCondition',\n //\n children: {},\n properties: {\n causes: () => {},\n treatments: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['medical condition (new)', 'medical condition', 'disease'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Organism',\n //\n children: {},\n properties: {\n // taxonomy: () => {},\n // members: () => {},\n },\n //\n categories: {\n mapping: [\n 'taxa named by carl linnaeus',\n 'ornamental trees',\n 'birds by common name',\n 'living fossils',\n 'taxa named by john edward gray',\n 'phelsuma',\n 'multituberculates',\n 'angiosperm orders',\n 'cimolodonts',\n 'urban animals',\n 'flowers',\n 'geckos',\n 'herbs',\n 'spices',\n 'skinks',\n 'cretaceous mammals',\n 'commercial fish',\n 'paleocene mammals',\n 'bird families',\n 'edible nuts and seeds',\n 'invasive plant species',\n 'leaf vegetables',\n 'root vegetables',\n 'corvus (genus)',\n 'insects in culture',\n 'ducks',\n 'agamidae',\n 'edge species',\n 'tropical fruit',\n 'pinus',\n 'tropical agriculture',\n 'indian spices',\n 'paleocene genus extinctions',\n 'epiphytic orchids',\n 'crops',\n 'fruits originating in asia',\n 'calidris',\n 'ptilodontoids',\n 'plants and pollinators',\n 'mammal families',\n 'marine edible fish',\n 'taxa named by leopold fitzinger',\n 'setophaga',\n 'shorebirds',\n 'berries',\n 'megafauna',\n 'animal dance',\n 'animal phyla',\n 'american inventions',\n 'entheogens',\n 'crops originating from the americas',\n 'non-timber forest products',\n 'geese',\n ],\n patterns: [\n /(funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants) of ./,\n / first appearances/,\n / . described in [0-9]{4}/,\n /. (phyla|genera)$/,\n /. taxonomic families$/,\n /plants used in ./,\n / (funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants)$/,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'speciesbox',\n 'automatic taxobox',\n 'dogbreed',\n 'dog breed',\n 'cat breed',\n 'grape variety',\n 'taxobox',\n 'subspeciesbox',\n 'mycomorphbox',\n 'paraphyletic group',\n 'nutritional value',\n 'infraspeciesbox',\n 'horse',\n 'haplogroup',\n 'bird',\n 'bird/population',\n 'medical resources',\n 'nc name',\n 'pig breed',\n 'botanical product',\n 'cattle breed',\n 'horse breed',\n 'poultry breed',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'habitat',\n 'morphology',\n 'phylogeny',\n 'distribution and diversity',\n 'distribution and habitat',\n 'reproduction and development',\n 'taxonomy and phylogeny',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'taxonbar',\n 'wikispecies',\n 'animalia',\n 'chordata',\n 'cnidaria',\n 'porifera',\n 'epicaridea',\n 'mammals',\n 'phlyctaeniidae',\n 'carnivora',\n 'clade',\n 'life on earth',\n 'orders of insects',\n 'coleoptera',\n 'insects in culture',\n 'living things in culture',\n 'eukaryota classification',\n 'iucn status',\n 'extinct',\n 'fossil range',\n 'internetbirdcollection',\n 'vireo',\n 'angle bracket',\n 'wikispecies-inline',\n 'iucn map',\n 'xeno-canto species',\n 'avibase',\n 'cladex',\n 'birdlife',\n 'fossilrange',\n ],\n patterns: [],\n },\n //\n titles: {\n mapping: ['plant', 'genus', 'fish', 'bird'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Product',\n //\n children: {},\n properties: {},\n //\n categories: {\n mapping: [],\n patterns: [/products introduced in ./, /musical instruments/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'automobile',\n 'beverage',\n 'cpu',\n 'electric_vehicle',\n 'gpu',\n 'mobile_phone',\n 'motorcycle',\n 'synthesizer',\n 'television',\n 'card game',\n 'computer',\n 'laboratory equipment',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['computer game', 'candy', 'board game', 'card game', 'automobile'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Creation',\n children: {\n CreativeWork: require('./CreativeWork'),\n MedicalCondition: require('./MedicalCondition'),\n Organism: require('./Organism'),\n Product: require('./Product'),\n },\n //\n properties: {\n creators: () => {},\n date: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","let schema = {\n children: {\n Person: require('./Person'),\n Place: require('./Place'),\n Organization: require('./Organization'),\n Event: require('./Event'),\n Creation: require('./Creation'),\n },\n}\n\n// generate slash-based ids by descending recursively\nconst setId = function (root, id) {\n if (root.name) {\n root.id = id + '/' + root.name\n } else {\n root.id = ''\n }\n if (root.children) {\n Object.keys(root.children).forEach((k) => {\n setId(root.children[k], root.id)\n })\n }\n return root\n}\n\nschema = setId(schema, '')\n\nmodule.exports = schema\n","const schema = require('./index')\n\nlet mappings = {\n categories: {},\n descriptions: {},\n infoboxes: {},\n sections: {},\n templates: {},\n titles: {},\n}\nlet patterns = {\n categories: [],\n descriptions: [],\n infoboxes: [],\n sections: [],\n templates: [],\n titles: [],\n}\n\nconst doNode = function (node) {\n if (node.id) {\n // collect mappings\n node.categories.mapping.forEach((str) => {\n mappings.categories[str] = node.id\n })\n node.descriptions.mapping = node.descriptions.mapping || []\n node.descriptions.mapping.forEach((str) => {\n mappings.descriptions[str] = node.id\n })\n node.infoboxes.mapping.forEach((str) => {\n mappings.infoboxes[str] = node.id\n })\n node.sections.mapping.forEach((str) => {\n mappings.sections[str] = node.id\n })\n node.templates.mapping.forEach((str) => {\n mappings.templates[str] = node.id\n })\n node.titles.mapping.forEach((str) => {\n mappings.titles[str] = node.id\n })\n // collect patterns\n node.categories.patterns.forEach((reg) => {\n patterns.categories.push([reg, node.id])\n })\n node.descriptions.patterns.forEach((reg) => {\n patterns.descriptions.push([reg, node.id])\n })\n node.infoboxes.patterns.forEach((reg) => {\n patterns.infoboxes.push([reg, node.id])\n })\n node.sections.patterns.forEach((reg) => {\n patterns.sections.push([reg, node.id])\n })\n node.templates.patterns.forEach((reg) => {\n patterns.templates.push([reg, node.id])\n })\n node.titles.patterns.forEach((reg) => {\n patterns.titles.push([reg, node.id])\n })\n }\n\n if (node.children) {\n Object.keys(node.children).forEach((k) => {\n doNode(node.children[k])\n })\n }\n}\ndoNode(schema)\nmodule.exports = { patterns, mappings }\n","const { mappings } = require('../../schema/_data-fns')\n\nconst byInfobox = function (doc) {\n let infoboxes = doc.infoboxes()\n let found = []\n for (let i = 0; i < infoboxes.length; i++) {\n let inf = infoboxes[i]\n let type = inf.type()\n\n type = type.toLowerCase()\n // type = type.replace(/^(category|categorie|kategori): ?/i, '')\n type = type.replace(/ /g, '_')\n type = type.trim()\n\n if (mappings.infoboxes.hasOwnProperty(type)) {\n found.push({ type: mappings.infoboxes[type], reason: type })\n }\n }\n return found\n}\nmodule.exports = byInfobox\n","const byPattern = function (str, patterns) {\n for (let i = 0; i < patterns.length; i += 1) {\n let reg = patterns[i][0]\n if (reg.test(str) === true) {\n return patterns[i][1]\n }\n }\n return null\n}\nmodule.exports = byPattern\n","const { patterns, mappings } = require('../../schema/_data-fns')\nconst byPattern = require('../_byPattern')\n\nconst byCategory = function (doc) {\n let found = []\n let cats = doc.categories()\n // clean them up a bit\n cats = cats.map((cat) => {\n cat = cat.toLowerCase()\n cat = cat.replace(/^(category|categorie|kategori): ?/i, '')\n cat = cat.replace(/_/g, ' ')\n return cat.trim()\n })\n // loop through each\n for (let i = 0; i < cats.length; i++) {\n const category = cats[i]\n // try our 1-to-1 mapping\n if (mappings.categories.hasOwnProperty(category)) {\n found.push({ type: mappings.categories[category], reason: category })\n continue\n }\n // loop through our patterns\n let match = byPattern(category, patterns.categories)\n if (match) {\n found.push({ type: match, reason: category })\n }\n }\n return found\n}\nmodule.exports = byCategory\n","const { patterns, mappings } = require('../../schema/_data-fns')\nconst byPattern = require('../_byPattern')\n\nconst byTemplate = function (doc) {\n let templates = doc.templates().map((tmpl) => tmpl.json())\n let found = []\n for (let i = 0; i < templates.length; i++) {\n const title = templates[i].template\n if (mappings.templates.hasOwnProperty(title)) {\n found.push({ type: mappings.templates[title], reason: title })\n } else {\n // try regex-list on it\n let type = byPattern(title, patterns.templates)\n if (type) {\n found.push({ type: type, reason: title })\n }\n }\n }\n return found\n}\n\nmodule.exports = byTemplate\n","const { mappings } = require('../../schema/_data-fns')\n\nconst fromSection = function (doc) {\n let found = []\n let titles = doc.sections().map((s) => {\n let str = s.title()\n str = str.toLowerCase().trim()\n return str\n })\n for (let i = 0; i < titles.length; i++) {\n const title = titles[i]\n if (mappings.sections.hasOwnProperty(title)) {\n found.push({ type: mappings.sections[title], reason: title })\n }\n }\n return found\n}\nmodule.exports = fromSection\n","const { patterns, mappings } = require('../../schema/_data-fns')\nconst byPattern = require('../_byPattern')\nconst paren = /\\((.*)\\)$/\n\nconst byTitle = function (doc) {\n let title = doc.title()\n if (!title) {\n return []\n }\n //look at parentheses like 'Tornado (film)'\n let m = title.match(paren)\n if (!m) {\n return []\n }\n let inside = m[1] || ''\n inside = inside.toLowerCase()\n inside = inside.replace(/_/g, ' ')\n inside = inside.trim()\n\n //look at known parentheses\n if (mappings.titles.hasOwnProperty(inside)) {\n return [{ type: mappings.titles[inside], reason: inside }]\n }\n\n // look at regex\n let match = byPattern(title, patterns.titles)\n if (match) {\n return [{ type: match, reason: title }]\n }\n return []\n}\nmodule.exports = byTitle\n","const { patterns } = require('../../schema/_data-fns')\nconst byPattern = require('../_byPattern')\n\nconst byDescription = function (doc) {\n let tmpl = doc.template('short description')\n if (tmpl && tmpl.description) {\n let desc = tmpl.description || ''\n desc = desc.toLowerCase()\n // loop through our patterns\n let match = byPattern(desc, patterns.descriptions)\n if (match) {\n return [{ type: match, reason: desc }]\n }\n }\n return []\n}\nmodule.exports = byDescription\n","const skip = {\n disambiguation: true,\n surname: true,\n name: true,\n 'given name': true,\n}\nconst paren = /\\((.*)\\)$/\nconst listOf = /^list of ./\nconst disambig = /\\(disambiguation\\)/\n\nconst skipPage = function (doc) {\n let title = doc.title() || ''\n\n //look at parentheses like 'Tornado (film)'\n let m = title.match(paren)\n if (!m) {\n return null\n }\n let inside = m[1] || ''\n inside = inside.toLowerCase()\n inside = inside.replace(/_/g, ' ')\n inside = inside.trim()\n\n //look at known parentheses\n if (skip.hasOwnProperty(inside)) {\n return true\n }\n //try a regex\n if (listOf.test(title) === true) {\n return true\n }\n if (disambig.test(title) === true) {\n return true\n }\n return false\n}\nmodule.exports = skipPage\n","const topk = function (arr) {\n let obj = {}\n arr.forEach((a) => {\n obj[a] = obj[a] || 0\n obj[a] += 1\n })\n let res = Object.keys(obj).map((k) => [k, obj[k]])\n res = res.sort((a, b) => {\n if (a[1] > b[1]) {\n return -1\n } else if (a[1] < b[1]) {\n return 1\n }\n return 0\n })\n return res\n}\n\nconst parse = function (cat) {\n let split = cat.split(/\\//)\n return {\n root: split[1],\n child: split[2],\n }\n}\n\nconst getScore = function (detail) {\n let types = []\n Object.keys(detail).forEach((k) => {\n detail[k].forEach((obj) => {\n types.push(parse(obj.type))\n })\n })\n // find top parent\n let roots = types.map((obj) => obj.root).filter((s) => s)\n let tops = topk(roots)\n let top = tops[0]\n if (!top) {\n return {\n detail: detail,\n type: null,\n score: 0,\n }\n }\n let root = top[0]\n // score as % of results\n let score = top[1] / types.length\n // punish low counts\n if (top[1] === 1) {\n score *= 0.75\n }\n if (top[1] === 2) {\n score *= 0.85\n }\n if (top[1] === 3) {\n score *= 0.95\n }\n // if the second root is good\n if (tops[1]) {\n if (tops[1][1] === tops[0][1]) {\n score *= 0.5 //tie\n } else {\n score *= 0.8\n }\n }\n\n // find 2nd level\n let children = types.filter((o) => o.root === root && o.child).map((obj) => obj.child)\n let topKids = topk(children)\n top = topKids[0]\n let type = root\n if (top) {\n type = `${root}/${top[0]}`\n // punish for any conflicting children\n if (topKids.length > 1) {\n score *= 0.7\n }\n // punish for low count\n if (top[1] === 1) {\n score *= 0.8\n }\n }\n return {\n root: root,\n type: type,\n score: score,\n details: detail,\n }\n}\nmodule.exports = getScore\n","const byInfobox = require('./byInfobox')\nconst byCategory = require('./byCategory')\nconst byTemplate = require('./byTemplate')\nconst bySection = require('./bySection')\nconst byTitle = require('./byTitle')\nconst byDescription = require('./byDescription')\nconst skipPage = require('./_skip')\nconst score = require('./score')\n\nconst plugin = function (models) {\n //add a new method to main class\n models.Doc.prototype.classify = function (options) {\n let doc = this\n let res = {}\n\n //dont classify these\n if (skipPage(doc, options)) {\n return score(res, options)\n }\n\n //look for 'infobox person', etc\n res.infobox = byInfobox(doc, options)\n\n //look for '{{coord}}'\n res.template = byTemplate(doc, options)\n\n //look for '==early life=='\n res.section = bySection(doc, options)\n\n //look for 'foo (film)'\n res.title = byTitle(doc, options)\n\n //look for 'foo (film)'\n res.description = byDescription(doc, options)\n\n //look for 'Category: 1992 Births', etc\n res.category = byCategory(doc, options)\n return score(res, options)\n }\n}\nmodule.exports = plugin\n"],"names":["name","children","categories","mapping","patterns","descriptions","infoboxes","sections","templates","titles","properties","leagues","AmericanFootballPlayer","require$$0","BaseballPlayer","require$$1","FootballPlayer","require$$2","BasketballPlayer","require$$3","HockeyPlayer","require$$4","films","tv_shows","parties","groups","instruments","works","Athlete","Actor","Politician","Musician","Author","birth_date","birth_place","nationality","death_date","death_place","City","Country","population","leader","length","airlines","runways","Bridge","Airport","date_created","Jurisdiction","Structure","BodyOfWater","location","coordinates","albums","coaches","MusicalGroup","Company","SportsTeam","PoliticalParty","leaders","members","casualties","winners","dates","places","Disaster","Election","MilitaryConflict","SportsEvent","seasons","platforms","Album","Book","Film","TVShow","Play","Song","require$$5","VideoGame","require$$6","genre","causes","treatments","CreativeWork","MedicalCondition","Organism","Product","creators","date","schema","Person","Place","Organization","Event","Creation","setId","root","id","Object","keys","forEach","k","mappings","doNode","node","str","reg","push","byInfobox","doc","found","i","inf","type","toLowerCase","replace","trim","hasOwnProperty","reason","byPattern","test","byCategory","cats","map","cat","category","match","byTemplate","tmpl","json","title","template","fromSection","s","paren","byTitle","m","inside","byDescription","description","desc","skip","disambiguation","surname","listOf","disambig","skipPage","topk","arr","obj","a","res","sort","b","parse","split","child","getScore","detail","types","roots","filter","tops","top","score","o","topKids","details","plugin","models","Doc","prototype","classify","options","infobox","section","bySection"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-classify.js","sources":["../schema/Person/Athlete/AmericanFootballPlayer.js","../schema/Person/Athlete/BaseballPlayer.js","../schema/Person/Athlete/FootballPlayer.js","../schema/Person/Athlete/BasketballPlayer.js","../schema/Person/Athlete/HockeyPlayer.js","../schema/Person/Athlete/index.js","../schema/Person/Actor.js","../schema/Person/Politician.js","../schema/Person/Musician.js","../schema/Person/Author.js","../schema/Person/index.js","../schema/Place/Jurisdiction/City.js","../schema/Place/Jurisdiction/Country.js","../schema/Place/Jurisdiction/index.js","../schema/Place/Structure/Bridge.js","../schema/Place/Structure/Airport.js","../schema/Place/Structure/index.js","../schema/Place/BodyOfWater.js","../schema/Place/index.js","../schema/Organization/MusicalGroup.js","../schema/Organization/Company.js","../schema/Organization/SportsTeam.js","../schema/Organization/PoliticalParty.js","../schema/Organization/index.js","../schema/Event/Disaster.js","../schema/Event/Election.js","../schema/Event/MilitaryConflict.js","../schema/Event/SportsEvent.js","../schema/Event/index.js","../schema/Creation/CreativeWork/Album.js","../schema/Creation/CreativeWork/Book.js","../schema/Creation/CreativeWork/Film.js","../schema/Creation/CreativeWork/TVShow.js","../schema/Creation/CreativeWork/Play.js","../schema/Creation/CreativeWork/Song.js","../schema/Creation/CreativeWork/VideoGame.js","../schema/Creation/CreativeWork/index.js","../schema/Creation/MedicalCondition.js","../schema/Creation/Organism.js","../schema/Creation/Product.js","../schema/Creation/index.js","../schema/index.js","../schema/_data-fns.js","../src/byInfobox/index.js","../src/_byPattern.js","../src/byCategory/index.js","../src/byTemplate/index.js","../src/bySection/index.js","../src/byTitle/index.js","../src/byDescription/index.js","../src/_skip/index.js","../src/score.js","../src/index.js"],"sourcesContent":["module.exports = {\n name: 'AmericanFootballPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'BaseballPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: ['baseball year'],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'FootballPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'BasketballPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'HockeyPlayer',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Athlete',\n //\n properties: {\n leagues: () => {},\n },\n children: {\n AmericanFootballPlayer: require('./AmericanFootballPlayer'),\n BaseballPlayer: require('./BaseballPlayer'),\n FootballPlayer: require('./FootballPlayer'),\n BasketballPlayer: require('./BasketballPlayer'),\n HockeyPlayer: require('./HockeyPlayer'),\n },\n //\n categories: {\n mapping: [],\n patterns: [/sportspeople from ./, /(footballers|cricketers|defencemen|cyclists)/],\n },\n //\n descriptions: {\n patterns: [/(hockey|soccer|backetball|football) player/],\n },\n //\n infoboxes: {\n mapping: [\n 'afl_biography',\n 'alpine_ski_racer',\n 'athlete',\n 'baseball_biography',\n 'basketball_biography',\n 'boxer',\n 'cfl_player',\n 'cricketer',\n 'cyclist',\n 'field_hockey_player',\n 'figure_skater',\n 'gaa_player',\n 'golfer',\n 'gymnast',\n 'ice_hockey_player',\n 'lacrosse_player',\n 'martial_artist',\n 'mlb_player',\n 'nba_biography',\n 'nfl_biography',\n 'nfl_player',\n 'professional_wrestler',\n 'rugby_biography',\n 'rugby_league_biography',\n 'skier',\n 'squash_player',\n 'swimmer',\n 'tennis_biography',\n 'volleyball_biography',\n 'volleyball_player',\n 'hockey team player',\n 'football biography',\n 'baseball biography',\n 'ice hockey player',\n 'nfl player',\n 'basketball biography',\n 'professional wrestler',\n 'tennis biography',\n 'afl biography',\n 'nfl biography',\n 'rugby biography',\n 'rugby league biography',\n 'nba biography',\n 'figure skater',\n 'gaa player',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/sport-bio-stub$/],\n },\n //\n titles: {\n mapping: [\n 'american football player',\n 'football player',\n 'gaelic footballer',\n 'athlete',\n 'boxer',\n 'cricketer',\n 'footballer',\n 'wrestler',\n 'golfer',\n 'swimmer',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Actor',\n //\n children: {},\n properties: {\n films: () => {},\n tv_shows: () => {},\n },\n //\n categories: {\n mapping: ['male actors from new york city'],\n patterns: [/actresses/, /actors from ./, /actor stubs$/, / (actors|actresses)$/],\n },\n //\n descriptions: {\n patterns: [/(actor|actress)/],\n },\n //\n infoboxes: {\n mapping: ['actor'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/actor-stub$/],\n },\n //\n titles: {\n mapping: ['actor', 'actress'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Politician',\n //\n children: {},\n properties: {\n parties: () => {},\n },\n //\n categories: {\n mapping: [\n 'uk mps 2001–05',\n 'uk mps 1997–2001',\n 'uk mps 2005–10',\n 'uk mps 1992–97',\n 'labour party (uk) mps for english constituencies',\n 'conservative party (uk) mps for english constituencies',\n 'uk mps 1987–92',\n 'uk mps 2010–15',\n 'democratic party members of the united states house of representatives',\n 'republican party members of the united states house of representatives',\n 'uk mps 1983–87',\n 'democratic party state governors of the united states',\n 'california republicans',\n 'british secretaries of state',\n 'democratic party united states senators',\n 'uk mps 2015–17',\n 'republican party united states senators',\n 'republican party state governors of the united states',\n 'california democrats',\n 'uk mps 1979–83',\n 'uk mps 2017–',\n ],\n patterns: [\n /politicians from ./,\n /politician stubs$/,\n /. (democrats|republicans|politicians)$/,\n /mayors of ./,\n ],\n },\n //\n descriptions: {\n patterns: [/(politician|member of parliament)/],\n },\n //\n infoboxes: {\n mapping: [\n 'canadianmp',\n 'governor',\n 'indian_politician',\n 'mp',\n 'officeholder',\n 'politician',\n 'politician_(general)',\n 'president',\n 'roman_emperor',\n 'state_representative',\n 'state_senator',\n 'congressman',\n 'prime minister',\n 'indian politician',\n 'senator',\n 'state representative',\n 'state senator',\n 'us cabinet official',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: ['list of united states senators congress'],\n patterns: [/(politician|mayor)-stub$/],\n },\n //\n titles: {\n mapping: [\n 'australian politician',\n 'canadian politician',\n 'politician',\n 'british politician',\n 'governor',\n 'irish politician',\n 'mayor',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Musician',\n //\n children: {},\n properties: {\n groups: () => {},\n instruments: () => {},\n },\n //\n categories: {\n mapping: [\n 'american male guitarists',\n 'american singer-songwriters',\n 'american male singers',\n 'american rock singers',\n 'american rock guitarists',\n '21st-century american singers',\n 'lead guitarists',\n 'african-american musicians',\n 'english male singers',\n 'american male singer-songwriters',\n 'american rock songwriters',\n 'american record producers',\n 'american country singer-songwriters',\n '20th-century american guitarists',\n 'english songwriters',\n '20th-century american pianists',\n 'songwriters from new york (state)',\n 'african-american singers',\n 'american blues singers',\n 'american pop singers',\n 'male guitarists',\n 'american country singers',\n 'blues hall of fame inductees',\n 'american male songwriters',\n 'songwriters from california',\n 'english rock guitarists',\n 'american folk singers',\n 'english rock singers',\n 'english singer-songwriters',\n 'african-american male rappers',\n 'african-american jazz musicians',\n '20th-century english singers',\n 'american female singer-songwriters',\n 'jewish american musicians',\n 'american blues guitarists',\n '20th-century conductors (music)',\n 'american female singers',\n 'american jazz bandleaders',\n 'american jazz pianists',\n 'american soul singers',\n 'american female guitarists',\n 'american multi-instrumentalists',\n 'american country guitarists',\n 'english record producers',\n 'songwriters from texas',\n 'american composers',\n 'singers from california',\n 'american folk guitarists',\n 'lgbt singers',\n 'american buskers',\n 'guitarists from california',\n 'feminist musicians',\n 'big band bandleaders',\n '20th-century composers',\n 'african-american songwriters',\n 'british rhythm and blues boom musicians',\n 'alternative rock singers',\n '21st-century american guitarists',\n 'american alternative rock musicians',\n 'musicians from los angeles',\n 'rhythm guitarists',\n 'american session musicians',\n 'jazz musicians from new orleans',\n 'alternative rock guitarists',\n '20th-century women musicians',\n 'male film score composers',\n 'african-american singer-songwriters',\n 'american jazz singers',\n '21st-century english singers',\n 'singers from new york city',\n 'american acoustic guitarists',\n 'musicians from new york city',\n 'slide guitarists',\n 'guitarists from texas',\n 'vaudeville performers',\n ],\n patterns: [/musicians from ./, /(singers|songwriters|painters|poets)/],\n },\n //\n descriptions: {\n patterns: [/(singer|musicianrapper|drummer)/, /(keyboard|guitar|bass) player/],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/(musician|singer)-stub$/],\n },\n //\n titles: {\n mapping: ['composer', 'musician', 'rapper', 'singer'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Author',\n //\n children: {},\n properties: {\n works: () => {},\n },\n //\n categories: {\n mapping: [\n '20th-century american novelists',\n 'american male novelists',\n 'american film directors',\n '21st-century american novelists',\n 'american film producers',\n 'american male screenwriters',\n 'american science fiction writers',\n '20th-century english novelists',\n 'english male poets',\n 'american male short story writers',\n 'american political writers',\n 'english male novelists',\n '20th-century american writers',\n '19th-century male writers',\n 'american male writers',\n '20th-century women writers',\n '20th-century male writers',\n 'german male writers',\n '21st-century american writers',\n 'french male writers',\n 'jewish american writers',\n 'writers from new york city',\n '21st-century women writers',\n 'english male writers',\n ],\n patterns: [/novelists from ./],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Person',\n children: {\n Athlete: require('./Athlete'),\n Actor: require('./Actor'),\n Politician: require('./Politician'),\n Musician: require('./Musician'),\n Author: require('./Author'),\n },\n properties: {\n birth_date: () => {},\n birth_place: () => {},\n nationality: () => {},\n death_date: () => {},\n death_place: () => {},\n },\n //\n categories: {\n mapping: [\n 'living people',\n 'possibly living people',\n 'year of birth unknown',\n 'fellows of the royal society',\n 'members of the privy council of the united kingdom',\n 'american people of english descent',\n 'guggenheim fellows',\n 'harvard university alumni',\n 'american military personnel of world war ii',\n 'knights bachelor',\n 'american roman catholics',\n 'knights of the garter',\n 'presidential medal of freedom recipients',\n 'commanders of the order of the british empire',\n 'people educated at eton college',\n 'alumni of trinity college, cambridge',\n 'foreign members of the royal society',\n 'american people of scottish descent',\n 'american memoirists',\n 'members of the french academy of sciences',\n 'united states army soldiers',\n 'officers of the order of the british empire',\n 'deaths from pneumonia',\n 'burials at père lachaise cemetery',\n 'deaths from cancer in california',\n 'year of birth missing (living people)',\n 'knights of the golden fleece',\n 'columbia university alumni',\n 'alumni of the university of edinburgh',\n 'american people of russian-jewish descent',\n 'yale university alumni',\n 'american atheists',\n 'people of the tudor period',\n 'tony award winners',\n 'members of the académie française',\n 'united states army officers',\n 'persons of national historic significance (canada)',\n '20th-century american businesspeople',\n 'american television producers',\n 'american journalists',\n 'american male journalists',\n 'american male comedians',\n 'princeton university alumni',\n 'university of paris alumni',\n 'american episcopalians',\n 'american women novelists',\n 'phi beta kappa members',\n '20th-century american poets',\n 'bafta winners (people)',\n \"members of the queen's privy council for canada\",\n 'american presbyterians',\n 'fellows of the american academy of arts and sciences',\n 'members of the united states national academy of sciences',\n 'members of the royal swedish academy of sciences',\n '20th-century american short story writers',\n 'american nobel laureates',\n 'harvard university faculty',\n 'roman catholic monarchs',\n 'popes',\n 'italian popes',\n ],\n patterns: [\n /[0-9]{4} births/,\n /[0-9]{4} deaths/,\n /people of .* descent/,\n /^deaths from /,\n /^(people|philanthropists|writers) from ./,\n / (players|alumni)$/,\n /(alumni|fellows) of .$/,\n /(people|writer) stubs$/,\n /(american|english) (fe)?male ./,\n /(american|english) (architects|people)/,\n ],\n },\n //\n descriptions: {\n patterns: [/(artist|painter|poet|writer|celebrity|activist)/],\n },\n //\n infoboxes: {\n mapping: [\n 'adult_biography',\n 'architect',\n 'chef',\n 'chess_player',\n 'christian_leader',\n 'college_coach',\n 'college_football_player',\n 'comedian',\n 'comics_creator',\n 'criminal',\n 'engineer',\n 'fashion_designer',\n 'football_biography',\n 'gridiron_football_person',\n 'handball_biography',\n 'hindu_leader',\n 'horseracing_personality',\n 'judge',\n 'mass_murderer',\n 'medical_person',\n 'military_person',\n 'model',\n 'monarch',\n 'nascar_driver',\n 'person',\n 'philosopher',\n 'police_officer',\n 'presenter',\n 'racing_driver',\n 'religious_biography',\n 'royalty',\n 'sportsperson',\n 'wrc_driver',\n 'writer',\n 'snooker player',\n 'military person',\n 'college coach',\n 'f1 driver',\n 'gridiron football person',\n 'racing driver',\n 'martial artist',\n 'chinese-language singer and actor',\n 'astronaut',\n 'nascar driver',\n 'adult biography',\n 'coa wide',\n 'chess player',\n 'pageant titleholder',\n\n //religious person\n 'archbishop',\n 'minister',\n 'saint',\n 'bishop',\n 'christian leader',\n 'religious biography',\n // artist\n 'artist',\n 'comics creator',\n // academic\n 'economist',\n 'scholar',\n 'scientist',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'early life',\n 'personal life',\n 'career',\n 'career statistics',\n 'playing career',\n 'life and career',\n 'early life and education',\n 'film and television credits',\n 'filmography',\n 'selected filmography',\n 'works',\n 'life',\n 'family',\n 'political career',\n 'early career',\n 'later life',\n 'early life and career',\n 'later years',\n 'death and legacy',\n 'work',\n 'novels',\n 'later career',\n 'international',\n 'selected works',\n 'writings',\n 'professional career',\n 'retirement',\n 'poetry',\n 'marriage',\n 'electoral history',\n 'military career',\n 'international career',\n 'parliamentary career',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'persondata',\n 'writer',\n 'ted speaker',\n 's-aft',\n 's-bef',\n 's-start',\n 'marriage',\n 's-off',\n 's-par',\n 'internet archive author',\n 'ribbon devices',\n 's-reg',\n 'find a grave',\n 'gutenberg author',\n 's-new',\n 'other people',\n 'medalgold',\n 'medal',\n 'mlby',\n 's-vac',\n 's-hou',\n 'librivox author',\n 'blp sources',\n 's-ppo',\n 'nbay',\n ],\n patterns: [/-bio-stub$/],\n },\n //\n titles: {\n mapping: [\n 'murder victim',\n 'academic',\n 'author',\n 'businessman',\n 'cyclist',\n 'diplomat',\n 'director',\n 'drummer',\n 'journalist',\n 'judge',\n 'minister',\n 'poet',\n 'priest',\n 'american football',\n 'ice hockey',\n 'soccer',\n 'rugby league',\n 'rugby union',\n 'field hockey',\n 'tennis',\n 'writer',\n 'vc',\n 'racing driver',\n 'architect',\n 'comedian',\n 'british army officer',\n 'general',\n 'broadcaster',\n 'engineer',\n 'physician',\n 'soldier',\n 'royal navy officer',\n 'producer',\n 'lawyer',\n 'activist',\n 'inventor',\n\n 'artist',\n 'painter',\n 'cartoonist',\n 'novelist',\n 'photographer',\n 'playwright',\n 'bishop',\n 'theologian',\n 'historian',\n 'philosopher',\n 'mathematician',\n 'astronomer',\n 'economist',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'City',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [\n /^cities and towns in ./,\n /(municipalities|settlements|villages|localities|townships) in ./,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'swiss town',\n 'city japan',\n 'municipality br',\n 'russian town',\n 'south african town 2011',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'sister cities',\n 'neighbourhoods',\n 'churches',\n 'parks and recreation',\n 'public transportation',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Country',\n //\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: ['international relations'],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['country'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Jurisdiction',\n children: {\n City: require('./City'),\n Country: require('./Country'),\n },\n properties: {\n population: () => {},\n leader: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n '2010 census',\n '2000 census',\n 'economy',\n 'transportation',\n 'government',\n 'communities',\n 'transport',\n 'culture',\n 'sports',\n 'adjacent counties',\n 'major highways',\n 'notable residents',\n 'tourism',\n 'cities',\n 'population',\n 'unincorporated communities',\n 'infrastructure',\n 'schools',\n 'rail',\n 'census-designated places',\n 'towns',\n 'local government',\n 'points of interest',\n 'attractions',\n 'demographics',\n 'climate',\n 'notable people',\n 'townships',\n 'recreation',\n 'arts and culture',\n 'governance',\n 'administrative divisions',\n 'landmarks',\n 'demography',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Bridge',\n //\n children: {},\n properties: {\n length: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Airport',\n //\n children: {},\n properties: {\n airlines: () => {},\n runways: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Structure',\n //\n children: {\n Bridge: require('./Bridge'),\n Airport: require('./Airport'),\n },\n properties: {\n date_created: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [\n /(buildings|bridges) completed in /,\n /airports established in ./,\n /(airports|bridges) in ./,\n /buildings and structures in ./,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'airport',\n 'bridge',\n 'building',\n 'power_station',\n 'religious_building',\n 'stadium',\n 'uk school',\n 'military structure',\n 'religious building',\n 'shopping mall',\n 'lighthouse',\n 'power station',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'BodyOfWater',\n //\n children: {},\n properties: {},\n //\n categories: {\n mapping: [],\n patterns: [/(rivers|lakes|tributaries) of ./],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['body_of_water', 'lake', 'river', 'sea', 'body of water'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-river-stub$/],\n },\n //\n titles: {\n mapping: ['river'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Place',\n children: {\n Jurisdiction: require('./Jurisdiction'),\n Structure: require('./Structure'),\n BodyOfWater: require('./BodyOfWater'),\n },\n properties: {\n location: () => {},\n coordinates: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [\n /populated places/,\n /landforms of ./,\n /railway stations/,\n /parks in ./,\n / district$/,\n /geography stubs$/,\n /sports venue stubs$/,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'amusement_park',\n 'ancient_site',\n 'australian_place',\n 'casino',\n 'cemetery',\n 'church',\n 'cricket_ground',\n 'dam',\n 'feature_on_mars',\n 'former_country',\n 'former_subdivision',\n 'french_commune',\n 'german_location',\n 'golf_facility',\n 'historic_site',\n 'hospital',\n 'hotel',\n 'islands',\n 'israel_village',\n 'italian_comune',\n 'launch_pad',\n 'military_memorial',\n 'military_structure',\n 'monument',\n 'mountain',\n 'mountain_pass',\n 'mountain_range',\n 'museum',\n 'neighborhood_portland_or',\n 'oil_field',\n 'park',\n 'prison',\n 'province_or_territory_of_canada',\n 'road',\n 'road_small',\n 'russian_inhabited_locality',\n 'russian_town',\n 'russian_urban-type_settlement',\n 'school',\n 'scotland_council_area',\n 'settlement',\n 'shopping_mall',\n 'south_african_subplace_2011',\n 'state',\n 'station',\n 'street',\n 'swiss_town',\n 'temple',\n 'town_at',\n 'u.s._metropolitan_area',\n 'u.s._state',\n 'uk_constituency',\n 'uk_disused_station',\n 'uk_place',\n 'uk_school',\n 'unesco_world_heritage_site',\n 'university_of_notre_dame_residence_hall',\n 'venue',\n 'waterfall',\n 'windmill',\n 'zoo',\n 'ecoregion',\n 'uk place',\n 'italian comune',\n 'geobox',\n 'australian place',\n 'french commune',\n 'german location',\n 'u.s. county',\n 'former country',\n 'road small',\n 'lunar crater',\n 'gb station',\n 'greek dimos',\n 'uk constituency main',\n 'finnish municipality/population count',\n 'ancient site',\n 'mountain range',\n 'london station',\n 'former subdivision',\n 'uk station',\n 'historic site',\n 'world heritage site',\n 'diocese',\n 'uk disused station',\n 'belgium municipality',\n 'uk constituency',\n 'theatre',\n 'canada electoral district',\n 'nycs',\n 'mountain pass',\n 'kommune',\n 'historic subdivision',\n 'u.s. congressional district',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: ['geography', 'geology', 'location', 'coat of arms'],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'coord',\n 'weather box',\n 'us census population',\n 'jct',\n 'geographic location',\n 'representative',\n 'historical populations',\n 'wikivoyage-inline',\n 'election box',\n 'zh',\n 'wide image',\n ],\n patterns: [/-geo-stub$/],\n },\n //\n titles: {\n mapping: [\n 'cape verde',\n 'cedar busway station',\n 'delhi metro',\n 'erie county, new york',\n 'new jersey',\n 'new orleans',\n 'new york City Subway',\n 'new york',\n 'new zealand',\n 'north carolina',\n 'northern ireland',\n 'sri lanka',\n 'uk parliament constituency',\n 'united kingdom',\n 'united states',\n 'alaska',\n 'argentina',\n 'arkansas',\n 'australia',\n 'barbados',\n 'brazil',\n 'california',\n 'canada',\n 'chad',\n 'chicago',\n 'colombia',\n 'connecticut',\n 'dominica',\n 'edmonton',\n 'france',\n 'georgia',\n 'india',\n 'israel',\n 'japan',\n 'manhattan',\n 'michigan',\n 'nigeria',\n 'oklahoma',\n 'ontario',\n 'pennsylvania',\n 'portugal',\n 'province',\n 'spain',\n 'sudan',\n 'texas',\n 'uk',\n 'va',\n 'Virginia',\n 'volcano',\n 'washington',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'MusicalGroup',\n //\n children: {},\n properties: {\n albums: () => {},\n },\n //\n categories: {\n mapping: [\n 'musical quartets',\n 'musical duos',\n 'musical trios',\n 'musical quintets',\n 'english rock music groups',\n 'english new wave musical groups',\n 'african-american musical groups',\n '21st-century american musicians',\n 'american alternative metal musical groups',\n 'english pop music groups',\n 'art rock musical groups',\n 'english post-punk music groups',\n ],\n patterns: [\n /musical groups from /,\n /musical groups (dis)?established in [0-9]{4}/,\n /musical group stubs/,\n /. music(al)? (groups|duos|trios|quartets|quintets)$/,\n ],\n },\n //\n descriptions: {\n patterns: [/rock band/],\n },\n //\n infoboxes: {\n mapping: ['musical_artist'],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'band members',\n 'albums',\n 'studio albums',\n 'compilation albums',\n 'live albums',\n 'compilations',\n 'eps',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: ['allmusic'],\n patterns: [],\n },\n //\n titles: {\n mapping: [\n 'band',\n 'american band',\n 'australian band',\n 'canadian band',\n 'uk band',\n 'japanese band',\n 'swedish band',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Company',\n //\n children: {},\n //\n categories: {\n mapping: [\n 'companies listed on the new york stock exchange',\n 'jazz record labels',\n 'video game development companies',\n 'american record labels',\n 'companies listed on nasdaq',\n 'video game companies of the united states',\n 'companies formerly listed on the london stock exchange',\n 'multinational companies headquartered in the united states',\n 'companies listed on the tokyo stock exchange',\n 're-established companies',\n 'companies based in new york city',\n 'defunct video game companies',\n 'companies formed by merger',\n 'entertainment companies based in california',\n ],\n patterns: [/companies (established|based) in ./],\n },\n //\n descriptions: {\n patterns: [/(company|subsidary)/],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: ['products'],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-company-stub$/],\n },\n //\n titles: {\n mapping: ['company', 'newspaper', 'restaurant', 'retailer', 'store'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'SportsTeam',\n //\n children: {},\n properties: {\n coaches: () => {},\n },\n //\n categories: {\n mapping: [\n 'football clubs in england',\n 'english football league clubs',\n 'southern football league clubs',\n 'football clubs in scotland',\n 'premier league clubs',\n 'national basketball association teams',\n ],\n patterns: [\n /football clubs in ./,\n /(basketball|hockey|baseball|football) teams (in|established) ./,\n ],\n },\n //\n descriptions: {\n patterns: [/(basketball|hockey|soccer|football|sports) team/],\n },\n //\n infoboxes: {\n mapping: [\n 'basketball_club',\n 'pro_hockey_team',\n 'college_ice_hockey_team',\n 'college_soccer_team',\n 'cricket_team',\n 'football_club',\n 'non_test_cricket_team',\n 'non-profit',\n 'rugby_league_club',\n 'rugby_league_representative_team',\n 'rugby_team',\n 'baseball team',\n 'football club',\n 'rugby team',\n 'national football team',\n 'basketball club',\n 'hockey team',\n 'rugby league club',\n 'football club infobox',\n 'cricket team',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: ['coaching staff', 'head coaches', 'team records', 'current squad'],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-sport-team-stub$/],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'PoliticalParty',\n //\n children: {},\n //\n categories: {\n mapping: ['social democratic parties'],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [/political party/],\n },\n //\n infoboxes: {\n mapping: ['political_party', 'political party'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['political party'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Organization',\n //\n children: {\n MusicalGroup: require('./MusicalGroup'),\n Company: require('./Company'),\n SportsTeam: require('./SportsTeam'),\n PoliticalParty: require('./PoliticalParty'),\n },\n properties: {\n leaders: () => {},\n members: () => {},\n },\n //\n categories: {\n mapping: [\n 'japanese brands',\n 'american jazz composers',\n 'scouting in the united states',\n 'car brands',\n 'government-owned airlines',\n 'baptist denominations in north america',\n 'baptist denominations established in the 20th century',\n 'land-grant universities and colleges',\n 'organizations based in washington, d.c.',\n 'video game publishers',\n 'defunct motor vehicle manufacturers of the united states',\n 'alternative rock groups from california',\n ],\n patterns: [\n /(organi[sz]ations|publications) based in /,\n /(organi[sz]ations|publications|schools|awards) established in [0-9]{4}/,\n /(secondary|primary) schools/,\n /military units/,\n /magazines/,\n /organi[sz]ation stubs$/,\n ],\n },\n //\n descriptions: {\n patterns: [/(charity|organization|ngo)/],\n },\n //\n infoboxes: {\n mapping: [\n 'airline',\n 'broadcasting_network',\n 'cbb_team',\n 'choir',\n 'college',\n 'company',\n 'dot-com_company',\n 'film_awards',\n 'film_festival',\n 'football_league',\n 'gaa_club',\n 'government_agency',\n 'government_cabinet',\n 'journal',\n 'laboratory',\n 'law_enforcement_agency',\n 'legislature',\n 'library',\n 'military_unit',\n 'national_military',\n 'ncaa_football_school',\n 'newspaper',\n 'nobility',\n 'organization',\n 'public_transit',\n 'publisher',\n 'radio_station',\n 'rail_line',\n 'rail_service',\n 'record_label',\n 'school_district',\n 'sport_governing_body',\n 'sports_league',\n 'television_channel',\n 'tv_channel',\n 'u.s._cabinet',\n 'u.s._legislation',\n 'uk_legislation',\n 'university',\n 'v8_supercar_team',\n 'former monarchy',\n 'criminal organization',\n 'radio station',\n 'military unit',\n 'government agency',\n 'rail line',\n 'record label',\n 'school district',\n 'tv channel',\n 'sports league',\n 'football league',\n 'worldscouting',\n 'sg rail',\n 'law enforcement agency',\n 'uk legislation',\n 'public transit',\n 'us university ranking',\n 'television channel',\n 'bus transit',\n 'union',\n 'broadcasting network',\n 'christian denomination',\n 'film awards',\n 'gaa club',\n 'fraternity',\n 'rail',\n 'rail service',\n 'national military',\n 'sport governing body',\n 'political party/seats',\n 'athletic conference',\n 'film festival',\n 'dot-com company',\n 'india university ranking',\n 'uk university rankings',\n 'government cabinet',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'founding',\n 'founders',\n 'members',\n 'athletics',\n 'notable alumni',\n 'academics',\n 'campus',\n 'organization',\n 'student life',\n 'rankings',\n 'fleet',\n 'research',\n 'formation',\n 'operations',\n 'players',\n 'alumni',\n 'former members',\n 'presidents',\n 'membership',\n 'current members',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: ['composition bar', 'fs player', 'y', 'n', 'rws'],\n patterns: [],\n },\n //\n titles: {\n mapping: [\n 'group',\n 'journal',\n 'am',\n 'fm',\n 'wehrmacht',\n 'tv channel',\n 'british band',\n 'organization',\n 'airline',\n 'publisher',\n 'brand',\n 'record label',\n 'union army',\n 'defunct',\n 'tv network',\n 'department store',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Disaster',\n children: {},\n properties: {\n casualties: () => {},\n },\n //\n categories: {\n mapping: ['retired atlantic hurricanes'],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'aircraft_accident',\n 'airliner_accident',\n 'earthquake',\n 'hurricane',\n 'pandemic',\n 'airliner accident',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Election',\n children: {},\n //\n categories: {\n mapping: ['presidential elections in ireland'],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['election'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: ['election summary party with leaders'],\n patterns: [/-election-stub$/],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'MilitaryConflict',\n children: {},\n //\n categories: {\n mapping: [\n 'wars involving the united kingdom',\n 'proxy wars',\n 'new zealand wars',\n 'battles between england and scotland',\n 'conflicts in 1943',\n 'last stand battles',\n 'battles and conflicts without fatalities',\n 'guerrilla wars',\n '20th-century conflicts',\n '20th-century revolutions',\n 'sieges involving japan',\n 'revolution-based civil wars',\n ],\n patterns: [/conflicts (in|of) [0-9]{4}/, /(wars|battles|conflicts) (involving|of|in) ./],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['military_conflict', 'military conflict', 'civil conflict', 'civilian attack'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'SportsEvent',\n children: {},\n properties: {\n winners: () => {},\n },\n //\n categories: {\n mapping: [\n '1904 summer olympics events',\n '1900 summer olympics events',\n '2002 winter olympics events',\n ],\n patterns: [\n /. league seasons$/,\n /^(19|20)[0-9]{2} in (soccer|football|rugby|tennis|basketball|baseball|cricket|sports)/,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'athletics_championships',\n 'badminton_event',\n 'boxingmatch',\n 'fila_wrestling_event',\n 'football_club_season',\n 'football_country_season',\n 'football_league_season',\n 'football_match',\n 'football_tournament_season',\n 'little_league_world_series',\n 'nba_season',\n 'ncaa_baseball_conference_tournament',\n 'ncaa_football_single_game',\n 'ncaa_team_season',\n 'nfl_season',\n 'nfl_single_game',\n 'sports_season',\n 'tennis_event',\n 'tennis_grand_slam_events',\n 'wrestling_event',\n 'football tournament',\n 'olympic event',\n 'international football competition',\n 'wrestling event',\n 'sports season',\n 'cycling race report',\n 'ncaa team season',\n 'cricket tournament',\n 'football match',\n 'world series expanded',\n 'mma event',\n 'nfl season',\n 'nfl draft',\n 'athletics championships',\n 'football club season',\n 'canadian football game',\n 'australian rules football season',\n 'football tournament season',\n 'international ice hockey competition',\n 'cricket tour',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Event',\n properties: {\n dates: () => {},\n places: () => {},\n },\n children: {\n Disaster: require('./Disaster'),\n Election: require('./Election'),\n MilitaryConflict: require('./MilitaryConflict'),\n SportsEvent: require('./SportsEvent'),\n },\n //\n categories: {\n mapping: [\n 'years in literature',\n 'years in music',\n 'years in film',\n 'united states supreme court cases',\n 'leap years in the gregorian calendar',\n \"governor general's awards\",\n 'eurovision song contest by year',\n 'grammy awards ceremonies',\n 'united kingdom in the eurovision song contest',\n 'manned soyuz missions',\n 'american civil liberties union litigation',\n 'may',\n 'october',\n 'missions to the moon',\n 'world war ii british commando raids',\n 'july',\n 'december',\n 'september',\n 'november',\n 'january',\n 'june',\n 'august',\n 'april',\n 'february',\n 'march',\n 'conflicts in 1944',\n 'missions to mars',\n 'luna program',\n 'conflicts in 1942',\n 'special air service',\n 'soft landings on the moon',\n 'may observances',\n 'first events',\n 'recent years',\n 'elections not won by the popular vote winner',\n 'conflicts in 1864',\n '1862 in the american civil war',\n 'new york (state) in the american revolution',\n 'march observances',\n 'public holidays in the united states',\n '1944 in france',\n 'december observances',\n '20th century american trials',\n 'african-american civil rights movement (1954–68)',\n 'october observances',\n 'spring holidays',\n 'years in aviation',\n 'national days',\n 'summer holidays',\n 'apollo program',\n ],\n patterns: [/^(19|20)[0-9]{2} in /, /^(years of the )?[0-9]{1,2}(st|nd|rd|th)? century in ./],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'beauty_pageant',\n 'civil_conflict',\n 'concert_tour',\n 'court_case',\n 'event',\n 'historical_era',\n 'holiday',\n 'horseraces',\n 'individual_snooker_tournament',\n 'legislative_term',\n 'music_festival',\n 'nfl_draft',\n 'pba_draft',\n 'reality_music_competition',\n 'recurring_event',\n 'song_contest',\n 'summit',\n 'grand prix race report',\n 'recurring event',\n 'music festival',\n 'football league season',\n 'scotus case',\n 'court case',\n 'concert tour',\n 'international labour organization convention',\n 'song contest',\n 'australian year',\n 'individual darts tournament',\n 'beauty pageant',\n 'historical event',\n 'grand prix motorcycle race report',\n 'international handball competition',\n 'coa case',\n 'individual snooker tournament',\n 'esc national year',\n 'indy500',\n 'national political convention',\n 'referendum',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'aftermath',\n 'births',\n 'deaths',\n 'battle',\n 'results',\n 'prelude',\n 'may',\n 'june',\n 'march',\n 'december',\n 'october',\n 'july',\n 'august',\n 'april',\n 'november',\n 'february',\n 'september',\n 'january',\n 'incumbents',\n 'casualties',\n 'july to december',\n 'january to june',\n 'medal table',\n 'campaign',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'esc',\n 'year nav',\n 'year dab',\n 'goal',\n 'flagiocmedalist',\n 'm1 year in topic',\n 'year nav topic5',\n 'bc year in topic',\n 'flagiocathlete',\n 'year article header',\n ],\n patterns: [],\n },\n //\n titles: {\n mapping: ['festival', '25 m', 'world war ii', 'conmebol', 'music festival', 'world war i'],\n patterns: [/ \\((19|20)[0-9]{2}\\)$/],\n },\n}\n","module.exports = {\n name: 'Album',\n children: {},\n //\n categories: {\n mapping: ['albums recorded at abbey road studios'],\n patterns: [/[0-9]{4}.*? albums/, /^albums /, / albums$/, /album stubs$/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['album'],\n patterns: [],\n },\n //\n sections: {\n mapping: ['track listing'],\n patterns: [],\n },\n //\n templates: {\n mapping: ['track listing', 'tracklist'],\n patterns: [/-album-stub$/],\n },\n //\n titles: {\n mapping: ['album'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Book',\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [/(film|novel) stubs$/, /[0-9]{4}.*? (poems|novels)/, / (poems|novels)$/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['book'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-novel-stub$/],\n },\n //\n titles: {\n mapping: ['book', 'novel'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Film',\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [/[0-9]{4}.*? films/, / films$/, /^films /],\n },\n //\n descriptions: {\n patterns: [/[0-9]{4} film/],\n },\n //\n infoboxes: {\n mapping: ['film'],\n patterns: [],\n },\n //\n sections: {\n mapping: ['cast'],\n patterns: [],\n },\n //\n templates: {\n mapping: ['imdb title', 'film date', 'rotten-tomatoes'],\n patterns: [/-film-stub$/],\n },\n //\n titles: {\n mapping: ['movie'],\n patterns: [/ \\([0-9]{4} film\\)$/],\n },\n}\n","module.exports = {\n name: 'TVShow',\n children: {},\n properties: {\n seasons: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [/television series/],\n },\n //\n descriptions: {\n patterns: [/television series/],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: ['episode list'],\n patterns: [],\n },\n //\n titles: {\n mapping: [\n 'tv series',\n 'game show',\n 'u.s. tv series',\n 'uk tv series',\n 'australian tv series',\n 'u.s. game show',\n ],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Play',\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['play'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [/-play-stub$/],\n },\n //\n titles: {\n mapping: ['play'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Song',\n children: {},\n //\n categories: {\n mapping: [],\n patterns: [/[0-9]{4}.*? songs/, /^songs /, / songs$/, /song stubs$/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['song'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'VideoGame',\n children: {},\n properties: {\n platforms: () => {},\n },\n //\n categories: {\n mapping: [\n 'dos games',\n 'virtual console games',\n 'mac os games',\n 'amiga games',\n 'arcade games',\n 'commodore 64 games',\n 'nintendo entertainment system games',\n 'playstation (console) games',\n 'ios games',\n 'super nintendo entertainment system games',\n 'video game sequels',\n 'game boy advance games',\n 'first-person shooters',\n 'playstation network games',\n 'linux games',\n 'atari st games',\n 'playstation 2 games',\n 'game boy games',\n 'zx spectrum games',\n 'mario universe games',\n 'multiplayer online games',\n 'mobile games',\n 'android (operating system) games',\n 'platform games',\n 'xbox 360 live arcade games',\n 'sega genesis games',\n ],\n patterns: [/video games/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['video game'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['video game'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'CreativeWork',\n children: {\n Album: require('./Album'),\n Book: require('./Book'),\n Film: require('./Film'),\n TVShow: require('./TVShow'),\n Play: require('./Play'),\n Song: require('./Song'),\n VideoGame: require('./VideoGame'),\n },\n //\n properties: {\n genre: () => {},\n },\n //\n categories: {\n mapping: [\n 'operas',\n 'american science fiction novels',\n 'broadway musicals',\n 'debut novels',\n 'the twilight zone (1959 tv series) episodes',\n 'united states national recording registry recordings',\n 'macos games',\n 'virtual console games for wii u',\n 'american monthly magazines',\n 'broadway plays',\n 'interactive achievement award winners',\n 'doubleday (publisher) books',\n '19th-century classical composers',\n 'film soundtracks',\n 'universal deluxe editions',\n 'best picture academy award winners',\n 'shōnen manga',\n 'west end musicals',\n 'sequel novels',\n 'dystopian novels',\n 'american comic strips',\n 'american road movies',\n 'chemical elements',\n 'amstrad cpc games',\n 'neo-noir',\n 'fiction with unreliable narrators',\n 'best drama picture golden globe winners',\n 'adventure anime and manga',\n ],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'artwork',\n 'book_series',\n 'broadcast',\n 'comic_book_title',\n 'comic_strip',\n 'doctor_who_episode',\n 'hollywood_cartoon',\n 'magazine',\n 'musical',\n 'musical_composition',\n 'opera',\n 'painting',\n 'radio_show',\n 'song',\n 'song_contest_entry',\n 'television_episode',\n 'television_season',\n 'treaty',\n 'video_game',\n 'anthem',\n 'television episode',\n 'comic book title',\n 'song contest entry',\n 'short story',\n 'hollywood cartoon',\n 'radio show',\n 'simpsons episode',\n 'musical composition',\n 'book series',\n 'comic strip',\n 'television season',\n 'comics organization',\n 'doctor who episode',\n 'animanga/other',\n 'graphic novel',\n 'rpg',\n 'big finish',\n 'vg series',\n 'name module',\n 'comics story arc',\n 'video game series',\n 'futurama episode',\n 'comics character and title',\n 'comics meta series',\n 'webcomic',\n 'the goodies episode',\n 'audio drama',\n 'sw comics',\n 'media franchise',\n 'folk tale',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'plot',\n 'reception',\n 'charts',\n 'release',\n 'plot summary',\n 'gameplay',\n 'characters',\n 'box office',\n 'accolades',\n 'soundtrack',\n 'adaptations',\n 'synopsis',\n 'home media',\n 'weekly charts',\n 'themes',\n 'publication history',\n 'filming',\n 'year-end charts',\n 'casting',\n 'release and reception',\n 'commercial performance',\n 'composition',\n 'album',\n 'setting',\n 'chart positions',\n 'release history',\n 'charts and certifications',\n 'sequels',\n 'chart performance',\n 'sequel',\n 'recordings',\n 'story',\n 'editions',\n 'in other media',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'rating',\n 'certification table entry',\n 'albumchart',\n 'music',\n 'album ratings',\n 'album chart',\n 'singles',\n 'isbnt',\n 'singlechart',\n 'tcmdb title',\n 'mojo title',\n 'based on',\n 'amg movie',\n 'duration',\n ],\n patterns: [/-song-stub$/],\n },\n //\n titles: {\n mapping: [\n 'season 2',\n 'season 3',\n 'season 4',\n 'season 5',\n 'the twilight zone',\n 'ballet',\n 'magazine',\n 'miniseries',\n 'music',\n 'opera',\n 'painting',\n 'series',\n 'single',\n 'song',\n 'soundtrack',\n 'ep',\n 'comics',\n 'musical',\n 'manga',\n 'star trek: the next generation',\n 'star trek: deep space nine',\n 'buffy the vampire slayer',\n 'angel',\n 'the outer limits',\n 'star trek: voyager',\n 'short story',\n 'seinfeld',\n 'star trek: enterprise',\n 'poem',\n 'tv',\n 'uk series',\n 'doctor who',\n 'david bowie song',\n 'caravaggio',\n 'the beach boys song',\n 'video',\n 'audio drama',\n 'babylon 5',\n 'madonna song',\n ],\n patterns: [/ \\((.*? )song\\)$/],\n },\n}\n","module.exports = {\n name: 'MedicalCondition',\n //\n children: {},\n properties: {\n causes: () => {},\n treatments: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: ['medical condition (new)', 'medical condition', 'disease'],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Organism',\n //\n children: {},\n properties: {\n // taxonomy: () => {},\n // members: () => {},\n },\n //\n categories: {\n mapping: [\n 'taxa named by carl linnaeus',\n 'ornamental trees',\n 'birds by common name',\n 'living fossils',\n 'taxa named by john edward gray',\n 'phelsuma',\n 'multituberculates',\n 'angiosperm orders',\n 'cimolodonts',\n 'urban animals',\n 'flowers',\n 'geckos',\n 'herbs',\n 'spices',\n 'skinks',\n 'cretaceous mammals',\n 'commercial fish',\n 'paleocene mammals',\n 'bird families',\n 'edible nuts and seeds',\n 'invasive plant species',\n 'leaf vegetables',\n 'root vegetables',\n 'corvus (genus)',\n 'insects in culture',\n 'ducks',\n 'agamidae',\n 'edge species',\n 'tropical fruit',\n 'pinus',\n 'tropical agriculture',\n 'indian spices',\n 'paleocene genus extinctions',\n 'epiphytic orchids',\n 'crops',\n 'fruits originating in asia',\n 'calidris',\n 'ptilodontoids',\n 'plants and pollinators',\n 'mammal families',\n 'marine edible fish',\n 'taxa named by leopold fitzinger',\n 'setophaga',\n 'shorebirds',\n 'berries',\n 'megafauna',\n 'animal dance',\n 'animal phyla',\n 'american inventions',\n 'entheogens',\n 'crops originating from the americas',\n 'non-timber forest products',\n 'geese',\n ],\n patterns: [\n /(funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants) of ./,\n / first appearances/,\n / . described in [0-9]{4}/,\n /. (phyla|genera)$/,\n /. taxonomic families$/,\n /plants used in ./,\n / (funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants)$/,\n ],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'speciesbox',\n 'automatic taxobox',\n 'dogbreed',\n 'dog breed',\n 'cat breed',\n 'grape variety',\n 'taxobox',\n 'subspeciesbox',\n 'mycomorphbox',\n 'paraphyletic group',\n 'nutritional value',\n 'infraspeciesbox',\n 'horse',\n 'haplogroup',\n 'bird',\n 'bird/population',\n 'medical resources',\n 'nc name',\n 'pig breed',\n 'botanical product',\n 'cattle breed',\n 'horse breed',\n 'poultry breed',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [\n 'habitat',\n 'morphology',\n 'phylogeny',\n 'distribution and diversity',\n 'distribution and habitat',\n 'reproduction and development',\n 'taxonomy and phylogeny',\n ],\n patterns: [],\n },\n //\n templates: {\n mapping: [\n 'taxonbar',\n 'wikispecies',\n 'animalia',\n 'chordata',\n 'cnidaria',\n 'porifera',\n 'epicaridea',\n 'mammals',\n 'phlyctaeniidae',\n 'carnivora',\n 'clade',\n 'life on earth',\n 'orders of insects',\n 'coleoptera',\n 'insects in culture',\n 'living things in culture',\n 'eukaryota classification',\n 'iucn status',\n 'extinct',\n 'fossil range',\n 'internetbirdcollection',\n 'vireo',\n 'angle bracket',\n 'wikispecies-inline',\n 'iucn map',\n 'xeno-canto species',\n 'avibase',\n 'cladex',\n 'birdlife',\n 'fossilrange',\n ],\n patterns: [],\n },\n //\n titles: {\n mapping: ['plant', 'genus', 'fish', 'bird'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Product',\n //\n children: {},\n properties: {},\n //\n categories: {\n mapping: [],\n patterns: [/products introduced in ./, /musical instruments/],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [\n 'automobile',\n 'beverage',\n 'cpu',\n 'electric_vehicle',\n 'gpu',\n 'mobile_phone',\n 'motorcycle',\n 'synthesizer',\n 'television',\n 'card game',\n 'computer',\n 'laboratory equipment',\n ],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: ['computer game', 'candy', 'board game', 'card game', 'automobile'],\n patterns: [],\n },\n}\n","module.exports = {\n name: 'Creation',\n children: {\n CreativeWork: require('./CreativeWork'),\n MedicalCondition: require('./MedicalCondition'),\n Organism: require('./Organism'),\n Product: require('./Product'),\n },\n //\n properties: {\n creators: () => {},\n date: () => {},\n },\n //\n categories: {\n mapping: [],\n patterns: [],\n },\n //\n descriptions: {\n patterns: [],\n },\n //\n infoboxes: {\n mapping: [],\n patterns: [],\n },\n //\n sections: {\n mapping: [],\n patterns: [],\n },\n //\n templates: {\n mapping: [],\n patterns: [],\n },\n //\n titles: {\n mapping: [],\n patterns: [],\n },\n}\n","let schema = {\n children: {\n Person: require('./Person'),\n Place: require('./Place'),\n Organization: require('./Organization'),\n Event: require('./Event'),\n Creation: require('./Creation'),\n },\n}\n\n// generate slash-based ids by descending recursively\nconst setId = function (root, id) {\n if (root.name) {\n root.id = id + '/' + root.name\n } else {\n root.id = ''\n }\n if (root.children) {\n Object.keys(root.children).forEach((k) => {\n setId(root.children[k], root.id)\n })\n }\n return root\n}\n\nschema = setId(schema, '')\n\nmodule.exports = schema\n","const schema = require('./index')\n\nlet mappings = {\n categories: {},\n descriptions: {},\n infoboxes: {},\n sections: {},\n templates: {},\n titles: {},\n}\nlet patterns = {\n categories: [],\n descriptions: [],\n infoboxes: [],\n sections: [],\n templates: [],\n titles: [],\n}\n\nconst doNode = function (node) {\n if (node.id) {\n // collect mappings\n node.categories.mapping.forEach((str) => {\n mappings.categories[str] = node.id\n })\n node.descriptions.mapping = node.descriptions.mapping || []\n node.descriptions.mapping.forEach((str) => {\n mappings.descriptions[str] = node.id\n })\n node.infoboxes.mapping.forEach((str) => {\n mappings.infoboxes[str] = node.id\n })\n node.sections.mapping.forEach((str) => {\n mappings.sections[str] = node.id\n })\n node.templates.mapping.forEach((str) => {\n mappings.templates[str] = node.id\n })\n node.titles.mapping.forEach((str) => {\n mappings.titles[str] = node.id\n })\n // collect patterns\n node.categories.patterns.forEach((reg) => {\n patterns.categories.push([reg, node.id])\n })\n node.descriptions.patterns.forEach((reg) => {\n patterns.descriptions.push([reg, node.id])\n })\n node.infoboxes.patterns.forEach((reg) => {\n patterns.infoboxes.push([reg, node.id])\n })\n node.sections.patterns.forEach((reg) => {\n patterns.sections.push([reg, node.id])\n })\n node.templates.patterns.forEach((reg) => {\n patterns.templates.push([reg, node.id])\n })\n node.titles.patterns.forEach((reg) => {\n patterns.titles.push([reg, node.id])\n })\n }\n\n if (node.children) {\n Object.keys(node.children).forEach((k) => {\n doNode(node.children[k])\n })\n }\n}\ndoNode(schema)\nmodule.exports = { patterns, mappings }\n","const { mappings } = require('../../schema/_data-fns')\n\nconst byInfobox = function (doc) {\n let infoboxes = doc.infoboxes()\n let found = []\n for (let i = 0; i < infoboxes.length; i++) {\n let inf = infoboxes[i]\n let type = inf.type()\n\n type = type.toLowerCase()\n // type = type.replace(/^(category|categorie|kategori): ?/i, '')\n type = type.replace(/ /g, '_')\n type = type.trim()\n\n if (mappings.infoboxes.hasOwnProperty(type)) {\n found.push({ type: mappings.infoboxes[type], reason: type })\n }\n }\n return found\n}\nmodule.exports = byInfobox\n","const byPattern = function (str, patterns) {\n for (let i = 0; i < patterns.length; i += 1) {\n let reg = patterns[i][0]\n if (reg.test(str) === true) {\n return patterns[i][1]\n }\n }\n return null\n}\nmodule.exports = byPattern\n","const { patterns, mappings } = require('../../schema/_data-fns')\nconst byPattern = require('../_byPattern')\n\nconst byCategory = function (doc) {\n let found = []\n let cats = doc.categories()\n // clean them up a bit\n cats = cats.map((cat) => {\n cat = cat.toLowerCase()\n cat = cat.replace(/^(category|categorie|kategori): ?/i, '')\n cat = cat.replace(/_/g, ' ')\n return cat.trim()\n })\n // loop through each\n for (let i = 0; i < cats.length; i++) {\n const category = cats[i]\n // try our 1-to-1 mapping\n if (mappings.categories.hasOwnProperty(category)) {\n found.push({ type: mappings.categories[category], reason: category })\n continue\n }\n // loop through our patterns\n let match = byPattern(category, patterns.categories)\n if (match) {\n found.push({ type: match, reason: category })\n }\n }\n return found\n}\nmodule.exports = byCategory\n","const { patterns, mappings } = require('../../schema/_data-fns')\nconst byPattern = require('../_byPattern')\n\nconst byTemplate = function (doc) {\n let templates = doc.templates().map((tmpl) => tmpl.json())\n let found = []\n for (let i = 0; i < templates.length; i++) {\n const title = templates[i].template\n if (mappings.templates.hasOwnProperty(title)) {\n found.push({ type: mappings.templates[title], reason: title })\n } else {\n // try regex-list on it\n let type = byPattern(title, patterns.templates)\n if (type) {\n found.push({ type: type, reason: title })\n }\n }\n }\n return found\n}\n\nmodule.exports = byTemplate\n","const { mappings } = require('../../schema/_data-fns')\n\nconst fromSection = function (doc) {\n let found = []\n let titles = doc.sections().map((s) => {\n let str = s.title()\n str = str.toLowerCase().trim()\n return str\n })\n for (let i = 0; i < titles.length; i++) {\n const title = titles[i]\n if (mappings.sections.hasOwnProperty(title)) {\n found.push({ type: mappings.sections[title], reason: title })\n }\n }\n return found\n}\nmodule.exports = fromSection\n","const { patterns, mappings } = require('../../schema/_data-fns')\nconst byPattern = require('../_byPattern')\nconst paren = /\\((.*)\\)$/\n\nconst byTitle = function (doc) {\n let title = doc.title()\n if (!title) {\n return []\n }\n //look at parentheses like 'Tornado (film)'\n let m = title.match(paren)\n if (!m) {\n return []\n }\n let inside = m[1] || ''\n inside = inside.toLowerCase()\n inside = inside.replace(/_/g, ' ')\n inside = inside.trim()\n\n //look at known parentheses\n if (mappings.titles.hasOwnProperty(inside)) {\n return [{ type: mappings.titles[inside], reason: inside }]\n }\n\n // look at regex\n let match = byPattern(title, patterns.titles)\n if (match) {\n return [{ type: match, reason: title }]\n }\n return []\n}\nmodule.exports = byTitle\n","const { patterns } = require('../../schema/_data-fns')\nconst byPattern = require('../_byPattern')\n\nconst byDescription = function (doc) {\n let tmpl = doc.template('short description')\n if (tmpl && tmpl.description) {\n let desc = tmpl.description || ''\n desc = desc.toLowerCase()\n // loop through our patterns\n let match = byPattern(desc, patterns.descriptions)\n if (match) {\n return [{ type: match, reason: desc }]\n }\n }\n return []\n}\nmodule.exports = byDescription\n","const skip = {\n disambiguation: true,\n surname: true,\n name: true,\n 'given name': true,\n}\nconst paren = /\\((.*)\\)$/\nconst listOf = /^list of ./\nconst disambig = /\\(disambiguation\\)/\n\nconst skipPage = function (doc) {\n let title = doc.title() || ''\n\n //look at parentheses like 'Tornado (film)'\n let m = title.match(paren)\n if (!m) {\n return null\n }\n let inside = m[1] || ''\n inside = inside.toLowerCase()\n inside = inside.replace(/_/g, ' ')\n inside = inside.trim()\n\n //look at known parentheses\n if (skip.hasOwnProperty(inside)) {\n return true\n }\n //try a regex\n if (listOf.test(title) === true) {\n return true\n }\n if (disambig.test(title) === true) {\n return true\n }\n return false\n}\nmodule.exports = skipPage\n","const topk = function (arr) {\n let obj = {}\n arr.forEach((a) => {\n obj[a] = obj[a] || 0\n obj[a] += 1\n })\n let res = Object.keys(obj).map((k) => [k, obj[k]])\n res = res.sort((a, b) => {\n if (a[1] > b[1]) {\n return -1\n } else if (a[1] < b[1]) {\n return 1\n }\n return 0\n })\n return res\n}\n\nconst parse = function (cat) {\n let split = cat.split(/\\//)\n return {\n root: split[1],\n child: split[2],\n }\n}\n\nconst getScore = function (detail) {\n let types = []\n Object.keys(detail).forEach((k) => {\n detail[k].forEach((obj) => {\n types.push(parse(obj.type))\n })\n })\n // find top parent\n let roots = types.map((obj) => obj.root).filter((s) => s)\n let tops = topk(roots)\n let top = tops[0]\n if (!top) {\n return {\n detail: detail,\n type: null,\n score: 0,\n }\n }\n let root = top[0]\n // score as % of results\n let score = top[1] / types.length\n // punish low counts\n if (top[1] === 1) {\n score *= 0.75\n }\n if (top[1] === 2) {\n score *= 0.85\n }\n if (top[1] === 3) {\n score *= 0.95\n }\n // if the second root is good\n if (tops[1]) {\n if (tops[1][1] === tops[0][1]) {\n score *= 0.5 //tie\n } else {\n score *= 0.8\n }\n }\n\n // find 2nd level\n let children = types.filter((o) => o.root === root && o.child).map((obj) => obj.child)\n let topKids = topk(children)\n top = topKids[0]\n let type = root\n if (top) {\n type = `${root}/${top[0]}`\n // punish for any conflicting children\n if (topKids.length > 1) {\n score *= 0.7\n }\n // punish for low count\n if (top[1] === 1) {\n score *= 0.8\n }\n }\n return {\n root: root,\n type: type,\n score: score,\n details: detail,\n }\n}\nmodule.exports = getScore\n","const byInfobox = require('./byInfobox')\nconst byCategory = require('./byCategory')\nconst byTemplate = require('./byTemplate')\nconst bySection = require('./bySection')\nconst byTitle = require('./byTitle')\nconst byDescription = require('./byDescription')\nconst skipPage = require('./_skip')\nconst score = require('./score')\n\nconst plugin = function (models) {\n //add a new method to main class\n models.Doc.prototype.classify = function (options) {\n let doc = this\n let res = {}\n\n //dont classify these\n if (skipPage(doc, options)) {\n return score(res, options)\n }\n\n //look for 'infobox person', etc\n res.infobox = byInfobox(doc, options)\n\n //look for '{{coord}}'\n res.template = byTemplate(doc, options)\n\n //look for '==early life=='\n res.section = bySection(doc, options)\n\n //look for 'foo (film)'\n res.title = byTitle(doc, options)\n\n //look for 'foo (film)'\n res.description = byDescription(doc, options)\n\n //look for 'Category: 1992 Births', etc\n res.category = byCategory(doc, options)\n return score(res, options)\n }\n}\nmodule.exports = plugin\n"],"names":["AmericanFootballPlayer","name","children","categories","mapping","patterns","descriptions","infoboxes","sections","templates","titles","BaseballPlayer","FootballPlayer","BasketballPlayer","HockeyPlayer","Athlete","properties","leagues","require$$0","require$$1","require$$2","require$$3","require$$4","Actor","films","tv_shows","Politician","parties","Musician","groups","instruments","Author","works","Person","birth_date","birth_place","nationality","death_date","death_place","City","Country","Jurisdiction","population","leader","Bridge","length","Airport","airlines","runways","Structure","date_created","BodyOfWater","Place","location","coordinates","MusicalGroup","albums","Company","SportsTeam","coaches","PoliticalParty","Organization","leaders","members","Disaster","casualties","Election","MilitaryConflict","SportsEvent","winners","Event","dates","places","Album","Book","Film","TVShow","seasons","Play","Song","VideoGame","platforms","CreativeWork","require$$5","require$$6","genre","MedicalCondition","causes","treatments","Organism","Product","Creation","creators","date","schema","setId","root","id","Object","keys","forEach","k","schema_1","mappings","doNode","node","str","reg","push","_dataFns","byInfobox","doc","found","i","inf","type","toLowerCase","replace","trim","hasOwnProperty","reason","byInfobox_1","byPattern","test","_byPattern","byCategory","cats","map","cat","category","match","byCategory_1","byTemplate","tmpl","json","title","template","byTemplate_1","fromSection","s","bySection","paren","byTitle","m","inside","byTitle_1","byDescription","description","desc","byDescription_1","skip","disambiguation","surname","listOf","disambig","skipPage","_skip","topk","arr","obj","a","res","sort","b","parse","split","child","getScore","detail","types","roots","filter","tops","top","score","o","topKids","details","require$$7","plugin","models","Doc","prototype","classify","options","infobox","section","src"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/classify/builds/wtf-plugin-classify.min.js b/plugins/classify/builds/wtf-plugin-classify.min.js index d97566c4..d8aff342 100644 --- a/plugins/classify/builds/wtf-plugin-classify.min.js +++ b/plugins/classify/builds/wtf-plugin-classify.min.js @@ -1 +1 @@ -!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):(e="undefined"!=typeof globalThis?globalThis:e||self).wtfClassify=a()}(this,(function(){"use strict";let e={children:{Person:{name:"Person",children:{Athlete:{name:"Athlete",properties:{leagues:()=>{}},children:{AmericanFootballPlayer:{name:"AmericanFootballPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},BaseballPlayer:{name:"BaseballPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:["baseball year"],patterns:[]},titles:{mapping:[],patterns:[]}},FootballPlayer:{name:"FootballPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},BasketballPlayer:{name:"BasketballPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},HockeyPlayer:{name:"HockeyPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}},categories:{mapping:[],patterns:[/sportspeople from ./,/(footballers|cricketers|defencemen|cyclists)/]},descriptions:{patterns:[/(hockey|soccer|backetball|football) player/]},infoboxes:{mapping:["afl_biography","alpine_ski_racer","athlete","baseball_biography","basketball_biography","boxer","cfl_player","cricketer","cyclist","field_hockey_player","figure_skater","gaa_player","golfer","gymnast","ice_hockey_player","lacrosse_player","martial_artist","mlb_player","nba_biography","nfl_biography","nfl_player","professional_wrestler","rugby_biography","rugby_league_biography","skier","squash_player","swimmer","tennis_biography","volleyball_biography","volleyball_player","hockey team player","football biography","baseball biography","ice hockey player","nfl player","basketball biography","professional wrestler","tennis biography","afl biography","nfl biography","rugby biography","rugby league biography","nba biography","figure skater","gaa player"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/sport-bio-stub$/]},titles:{mapping:["american football player","football player","gaelic footballer","athlete","boxer","cricketer","footballer","wrestler","golfer","swimmer"],patterns:[]}},Actor:{name:"Actor",children:{},properties:{films:()=>{},tv_shows:()=>{}},categories:{mapping:["male actors from new york city"],patterns:[/actresses/,/actors from ./,/actor stubs$/,/ (actors|actresses)$/]},descriptions:{patterns:[/(actor|actress)/]},infoboxes:{mapping:["actor"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/actor-stub$/]},titles:{mapping:["actor","actress"],patterns:[]}},Politician:{name:"Politician",children:{},properties:{parties:()=>{}},categories:{mapping:["uk mps 2001–05","uk mps 1997–2001","uk mps 2005–10","uk mps 1992–97","labour party (uk) mps for english constituencies","conservative party (uk) mps for english constituencies","uk mps 1987–92","uk mps 2010–15","democratic party members of the united states house of representatives","republican party members of the united states house of representatives","uk mps 1983–87","democratic party state governors of the united states","california republicans","british secretaries of state","democratic party united states senators","uk mps 2015–17","republican party united states senators","republican party state governors of the united states","california democrats","uk mps 1979–83","uk mps 2017–"],patterns:[/politicians from ./,/politician stubs$/,/. (democrats|republicans|politicians)$/,/mayors of ./]},descriptions:{patterns:[/(politician|member of parliament)/]},infoboxes:{mapping:["canadianmp","governor","indian_politician","mp","officeholder","politician","politician_(general)","president","roman_emperor","state_representative","state_senator","congressman","prime minister","indian politician","senator","state representative","state senator","us cabinet official"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:["list of united states senators congress"],patterns:[/(politician|mayor)-stub$/]},titles:{mapping:["australian politician","canadian politician","politician","british politician","governor","irish politician","mayor"],patterns:[]}},Musician:{name:"Musician",children:{},properties:{groups:()=>{},instruments:()=>{}},categories:{mapping:["american male guitarists","american singer-songwriters","american male singers","american rock singers","american rock guitarists","21st-century american singers","lead guitarists","african-american musicians","english male singers","american male singer-songwriters","american rock songwriters","american record producers","american country singer-songwriters","20th-century american guitarists","english songwriters","20th-century american pianists","songwriters from new york (state)","african-american singers","american blues singers","american pop singers","male guitarists","american country singers","blues hall of fame inductees","american male songwriters","songwriters from california","english rock guitarists","american folk singers","english rock singers","english singer-songwriters","african-american male rappers","african-american jazz musicians","20th-century english singers","american female singer-songwriters","jewish american musicians","american blues guitarists","20th-century conductors (music)","american female singers","american jazz bandleaders","american jazz pianists","american soul singers","american female guitarists","american multi-instrumentalists","american country guitarists","english record producers","songwriters from texas","american composers","singers from california","american folk guitarists","lgbt singers","american buskers","guitarists from california","feminist musicians","big band bandleaders","20th-century composers","african-american songwriters","british rhythm and blues boom musicians","alternative rock singers","21st-century american guitarists","american alternative rock musicians","musicians from los angeles","rhythm guitarists","american session musicians","jazz musicians from new orleans","alternative rock guitarists","20th-century women musicians","male film score composers","african-american singer-songwriters","american jazz singers","21st-century english singers","singers from new york city","american acoustic guitarists","musicians from new york city","slide guitarists","guitarists from texas","vaudeville performers"],patterns:[/musicians from ./,/(singers|songwriters|painters|poets)/]},descriptions:{patterns:[/(singer|musicianrapper|drummer)/,/(keyboard|guitar|bass) player/]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/(musician|singer)-stub$/]},titles:{mapping:["composer","musician","rapper","singer"],patterns:[]}},Author:{name:"Author",children:{},properties:{works:()=>{}},categories:{mapping:["20th-century american novelists","american male novelists","american film directors","21st-century american novelists","american film producers","american male screenwriters","american science fiction writers","20th-century english novelists","english male poets","american male short story writers","american political writers","english male novelists","20th-century american writers","19th-century male writers","american male writers","20th-century women writers","20th-century male writers","german male writers","21st-century american writers","french male writers","jewish american writers","writers from new york city","21st-century women writers","english male writers"],patterns:[/novelists from ./]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}},properties:{birth_date:()=>{},birth_place:()=>{},nationality:()=>{},death_date:()=>{},death_place:()=>{}},categories:{mapping:["living people","possibly living people","year of birth unknown","fellows of the royal society","members of the privy council of the united kingdom","american people of english descent","guggenheim fellows","harvard university alumni","american military personnel of world war ii","knights bachelor","american roman catholics","knights of the garter","presidential medal of freedom recipients","commanders of the order of the british empire","people educated at eton college","alumni of trinity college, cambridge","foreign members of the royal society","american people of scottish descent","american memoirists","members of the french academy of sciences","united states army soldiers","officers of the order of the british empire","deaths from pneumonia","burials at père lachaise cemetery","deaths from cancer in california","year of birth missing (living people)","knights of the golden fleece","columbia university alumni","alumni of the university of edinburgh","american people of russian-jewish descent","yale university alumni","american atheists","people of the tudor period","tony award winners","members of the académie française","united states army officers","persons of national historic significance (canada)","20th-century american businesspeople","american television producers","american journalists","american male journalists","american male comedians","princeton university alumni","university of paris alumni","american episcopalians","american women novelists","phi beta kappa members","20th-century american poets","bafta winners (people)","members of the queen's privy council for canada","american presbyterians","fellows of the american academy of arts and sciences","members of the united states national academy of sciences","members of the royal swedish academy of sciences","20th-century american short story writers","american nobel laureates","harvard university faculty","roman catholic monarchs","popes","italian popes"],patterns:[/[0-9]{4} births/,/[0-9]{4} deaths/,/people of .* descent/,/^deaths from /,/^(people|philanthropists|writers) from ./,/ (players|alumni)$/,/(alumni|fellows) of .$/,/(people|writer) stubs$/,/(american|english) (fe)?male ./,/(american|english) (architects|people)/]},descriptions:{patterns:[/(artist|painter|poet|writer|celebrity|activist)/]},infoboxes:{mapping:["adult_biography","architect","chef","chess_player","christian_leader","college_coach","college_football_player","comedian","comics_creator","criminal","engineer","fashion_designer","football_biography","gridiron_football_person","handball_biography","hindu_leader","horseracing_personality","judge","mass_murderer","medical_person","military_person","model","monarch","nascar_driver","person","philosopher","police_officer","presenter","racing_driver","religious_biography","royalty","sportsperson","wrc_driver","writer","snooker player","military person","college coach","f1 driver","gridiron football person","racing driver","martial artist","chinese-language singer and actor","astronaut","nascar driver","adult biography","coa wide","chess player","pageant titleholder","archbishop","minister","saint","bishop","christian leader","religious biography","artist","comics creator","economist","scholar","scientist"],patterns:[]},sections:{mapping:["early life","personal life","career","career statistics","playing career","life and career","early life and education","film and television credits","filmography","selected filmography","works","life","family","political career","early career","later life","early life and career","later years","death and legacy","work","novels","later career","international","selected works","writings","professional career","retirement","poetry","marriage","electoral history","military career","international career","parliamentary career"],patterns:[]},templates:{mapping:["persondata","writer","ted speaker","s-aft","s-bef","s-start","marriage","s-off","s-par","internet archive author","ribbon devices","s-reg","find a grave","gutenberg author","s-new","other people","medalgold","medal","mlby","s-vac","s-hou","librivox author","blp sources","s-ppo","nbay"],patterns:[/-bio-stub$/]},titles:{mapping:["murder victim","academic","author","businessman","cyclist","diplomat","director","drummer","journalist","judge","minister","poet","priest","american football","ice hockey","soccer","rugby league","rugby union","field hockey","tennis","writer","vc","racing driver","architect","comedian","british army officer","general","broadcaster","engineer","physician","soldier","royal navy officer","producer","lawyer","activist","inventor","artist","painter","cartoonist","novelist","photographer","playwright","bishop","theologian","historian","philosopher","mathematician","astronomer","economist"],patterns:[]}},Place:{name:"Place",children:{Jurisdiction:{name:"Jurisdiction",children:{City:{name:"City",children:{},categories:{mapping:[],patterns:[/^cities and towns in ./,/(municipalities|settlements|villages|localities|townships) in ./]},descriptions:{patterns:[]},infoboxes:{mapping:["swiss town","city japan","municipality br","russian town","south african town 2011"],patterns:[]},sections:{mapping:["sister cities","neighbourhoods","churches","parks and recreation","public transportation"],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Country:{name:"Country",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:["international relations"],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["country"],patterns:[]}}},properties:{population:()=>{},leader:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:["2010 census","2000 census","economy","transportation","government","communities","transport","culture","sports","adjacent counties","major highways","notable residents","tourism","cities","population","unincorporated communities","infrastructure","schools","rail","census-designated places","towns","local government","points of interest","attractions","demographics","climate","notable people","townships","recreation","arts and culture","governance","administrative divisions","landmarks","demography"],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Structure:{name:"Structure",children:{Bridge:{name:"Bridge",children:{},properties:{length:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Airport:{name:"Airport",children:{},properties:{airlines:()=>{},runways:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}},properties:{date_created:()=>{}},categories:{mapping:[],patterns:[/(buildings|bridges) completed in /,/airports established in ./,/(airports|bridges) in ./,/buildings and structures in ./]},descriptions:{patterns:[]},infoboxes:{mapping:["airport","bridge","building","power_station","religious_building","stadium","uk school","military structure","religious building","shopping mall","lighthouse","power station"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},BodyOfWater:{name:"BodyOfWater",children:{},properties:{},categories:{mapping:[],patterns:[/(rivers|lakes|tributaries) of ./]},descriptions:{patterns:[]},infoboxes:{mapping:["body_of_water","lake","river","sea","body of water"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/-river-stub$/]},titles:{mapping:["river"],patterns:[]}}},properties:{location:()=>{},coordinates:()=>{}},categories:{mapping:[],patterns:[/populated places/,/landforms of ./,/railway stations/,/parks in ./,/ district$/,/geography stubs$/,/sports venue stubs$/]},descriptions:{patterns:[]},infoboxes:{mapping:["amusement_park","ancient_site","australian_place","casino","cemetery","church","cricket_ground","dam","feature_on_mars","former_country","former_subdivision","french_commune","german_location","golf_facility","historic_site","hospital","hotel","islands","israel_village","italian_comune","launch_pad","military_memorial","military_structure","monument","mountain","mountain_pass","mountain_range","museum","neighborhood_portland_or","oil_field","park","prison","province_or_territory_of_canada","road","road_small","russian_inhabited_locality","russian_town","russian_urban-type_settlement","school","scotland_council_area","settlement","shopping_mall","south_african_subplace_2011","state","station","street","swiss_town","temple","town_at","u.s._metropolitan_area","u.s._state","uk_constituency","uk_disused_station","uk_place","uk_school","unesco_world_heritage_site","university_of_notre_dame_residence_hall","venue","waterfall","windmill","zoo","ecoregion","uk place","italian comune","geobox","australian place","french commune","german location","u.s. county","former country","road small","lunar crater","gb station","greek dimos","uk constituency main","finnish municipality/population count","ancient site","mountain range","london station","former subdivision","uk station","historic site","world heritage site","diocese","uk disused station","belgium municipality","uk constituency","theatre","canada electoral district","nycs","mountain pass","kommune","historic subdivision","u.s. congressional district"],patterns:[]},sections:{mapping:["geography","geology","location","coat of arms"],patterns:[]},templates:{mapping:["coord","weather box","us census population","jct","geographic location","representative","historical populations","wikivoyage-inline","election box","zh","wide image"],patterns:[/-geo-stub$/]},titles:{mapping:["cape verde","cedar busway station","delhi metro","erie county, new york","new jersey","new orleans","new york City Subway","new york","new zealand","north carolina","northern ireland","sri lanka","uk parliament constituency","united kingdom","united states","alaska","argentina","arkansas","australia","barbados","brazil","california","canada","chad","chicago","colombia","connecticut","dominica","edmonton","france","georgia","india","israel","japan","manhattan","michigan","nigeria","oklahoma","ontario","pennsylvania","portugal","province","spain","sudan","texas","uk","va","Virginia","volcano","washington"],patterns:[]}},Organization:{name:"Organization",children:{MusicalGroup:{name:"MusicalGroup",children:{},properties:{albums:()=>{}},categories:{mapping:["musical quartets","musical duos","musical trios","musical quintets","english rock music groups","english new wave musical groups","african-american musical groups","21st-century american musicians","american alternative metal musical groups","english pop music groups","art rock musical groups","english post-punk music groups"],patterns:[/musical groups from /,/musical groups (dis)?established in [0-9]{4}/,/musical group stubs/,/. music(al)? (groups|duos|trios|quartets|quintets)$/]},descriptions:{patterns:[/rock band/]},infoboxes:{mapping:["musical_artist"],patterns:[]},sections:{mapping:["band members","albums","studio albums","compilation albums","live albums","compilations","eps"],patterns:[]},templates:{mapping:["allmusic"],patterns:[]},titles:{mapping:["band","american band","australian band","canadian band","uk band","japanese band","swedish band"],patterns:[]}},Company:{name:"Company",children:{},categories:{mapping:["companies listed on the new york stock exchange","jazz record labels","video game development companies","american record labels","companies listed on nasdaq","video game companies of the united states","companies formerly listed on the london stock exchange","multinational companies headquartered in the united states","companies listed on the tokyo stock exchange","re-established companies","companies based in new york city","defunct video game companies","companies formed by merger","entertainment companies based in california"],patterns:[/companies (established|based) in ./]},descriptions:{patterns:[/(company|subsidary)/]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:["products"],patterns:[]},templates:{mapping:[],patterns:[/-company-stub$/]},titles:{mapping:["company","newspaper","restaurant","retailer","store"],patterns:[]}},SportsTeam:{name:"SportsTeam",children:{},properties:{coaches:()=>{}},categories:{mapping:["football clubs in england","english football league clubs","southern football league clubs","football clubs in scotland","premier league clubs","national basketball association teams"],patterns:[/football clubs in ./,/(basketball|hockey|baseball|football) teams (in|established) ./]},descriptions:{patterns:[/(basketball|hockey|soccer|football|sports) team/]},infoboxes:{mapping:["basketball_club","pro_hockey_team","college_ice_hockey_team","college_soccer_team","cricket_team","football_club","non_test_cricket_team","non-profit","rugby_league_club","rugby_league_representative_team","rugby_team","baseball team","football club","rugby team","national football team","basketball club","hockey team","rugby league club","football club infobox","cricket team"],patterns:[]},sections:{mapping:["coaching staff","head coaches","team records","current squad"],patterns:[]},templates:{mapping:[],patterns:[/-sport-team-stub$/]},titles:{mapping:[],patterns:[]}},PoliticalParty:{name:"PoliticalParty",children:{},categories:{mapping:["social democratic parties"],patterns:[]},descriptions:{patterns:[/political party/]},infoboxes:{mapping:["political_party","political party"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["political party"],patterns:[]}}},properties:{leaders:()=>{},members:()=>{}},categories:{mapping:["japanese brands","american jazz composers","scouting in the united states","car brands","government-owned airlines","baptist denominations in north america","baptist denominations established in the 20th century","land-grant universities and colleges","organizations based in washington, d.c.","video game publishers","defunct motor vehicle manufacturers of the united states","alternative rock groups from california"],patterns:[/(organi[sz]ations|publications) based in /,/(organi[sz]ations|publications|schools|awards) established in [0-9]{4}/,/(secondary|primary) schools/,/military units/,/magazines/,/organi[sz]ation stubs$/]},descriptions:{patterns:[/(charity|organization|ngo)/]},infoboxes:{mapping:["airline","broadcasting_network","cbb_team","choir","college","company","dot-com_company","film_awards","film_festival","football_league","gaa_club","government_agency","government_cabinet","journal","laboratory","law_enforcement_agency","legislature","library","military_unit","national_military","ncaa_football_school","newspaper","nobility","organization","public_transit","publisher","radio_station","rail_line","rail_service","record_label","school_district","sport_governing_body","sports_league","television_channel","tv_channel","u.s._cabinet","u.s._legislation","uk_legislation","university","v8_supercar_team","former monarchy","criminal organization","radio station","military unit","government agency","rail line","record label","school district","tv channel","sports league","football league","worldscouting","sg rail","law enforcement agency","uk legislation","public transit","us university ranking","television channel","bus transit","union","broadcasting network","christian denomination","film awards","gaa club","fraternity","rail","rail service","national military","sport governing body","political party/seats","athletic conference","film festival","dot-com company","india university ranking","uk university rankings","government cabinet"],patterns:[]},sections:{mapping:["founding","founders","members","athletics","notable alumni","academics","campus","organization","student life","rankings","fleet","research","formation","operations","players","alumni","former members","presidents","membership","current members"],patterns:[]},templates:{mapping:["composition bar","fs player","y","n","rws"],patterns:[]},titles:{mapping:["group","journal","am","fm","wehrmacht","tv channel","british band","organization","airline","publisher","brand","record label","union army","defunct","tv network","department store"],patterns:[]}},Event:{name:"Event",properties:{dates:()=>{},places:()=>{}},children:{Disaster:{name:"Disaster",children:{},properties:{casualties:()=>{}},categories:{mapping:["retired atlantic hurricanes"],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["aircraft_accident","airliner_accident","earthquake","hurricane","pandemic","airliner accident"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Election:{name:"Election",children:{},categories:{mapping:["presidential elections in ireland"],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["election"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:["election summary party with leaders"],patterns:[/-election-stub$/]},titles:{mapping:[],patterns:[]}},MilitaryConflict:{name:"MilitaryConflict",children:{},categories:{mapping:["wars involving the united kingdom","proxy wars","new zealand wars","battles between england and scotland","conflicts in 1943","last stand battles","battles and conflicts without fatalities","guerrilla wars","20th-century conflicts","20th-century revolutions","sieges involving japan","revolution-based civil wars"],patterns:[/conflicts (in|of) [0-9]{4}/,/(wars|battles|conflicts) (involving|of|in) ./]},descriptions:{patterns:[]},infoboxes:{mapping:["military_conflict","military conflict","civil conflict","civilian attack"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},SportsEvent:{name:"SportsEvent",children:{},properties:{winners:()=>{}},categories:{mapping:["1904 summer olympics events","1900 summer olympics events","2002 winter olympics events"],patterns:[/. league seasons$/,/^(19|20)[0-9]{2} in (soccer|football|rugby|tennis|basketball|baseball|cricket|sports)/]},descriptions:{patterns:[]},infoboxes:{mapping:["athletics_championships","badminton_event","boxingmatch","fila_wrestling_event","football_club_season","football_country_season","football_league_season","football_match","football_tournament_season","little_league_world_series","nba_season","ncaa_baseball_conference_tournament","ncaa_football_single_game","ncaa_team_season","nfl_season","nfl_single_game","sports_season","tennis_event","tennis_grand_slam_events","wrestling_event","football tournament","olympic event","international football competition","wrestling event","sports season","cycling race report","ncaa team season","cricket tournament","football match","world series expanded","mma event","nfl season","nfl draft","athletics championships","football club season","canadian football game","australian rules football season","football tournament season","international ice hockey competition","cricket tour"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}},categories:{mapping:["years in literature","years in music","years in film","united states supreme court cases","leap years in the gregorian calendar","governor general's awards","eurovision song contest by year","grammy awards ceremonies","united kingdom in the eurovision song contest","manned soyuz missions","american civil liberties union litigation","may","october","missions to the moon","world war ii british commando raids","july","december","september","november","january","june","august","april","february","march","conflicts in 1944","missions to mars","luna program","conflicts in 1942","special air service","soft landings on the moon","may observances","first events","recent years","elections not won by the popular vote winner","conflicts in 1864","1862 in the american civil war","new york (state) in the american revolution","march observances","public holidays in the united states","1944 in france","december observances","20th century american trials","african-american civil rights movement (1954–68)","october observances","spring holidays","years in aviation","national days","summer holidays","apollo program"],patterns:[/^(19|20)[0-9]{2} in /,/^(years of the )?[0-9]{1,2}(st|nd|rd|th)? century in ./]},descriptions:{patterns:[]},infoboxes:{mapping:["beauty_pageant","civil_conflict","concert_tour","court_case","event","historical_era","holiday","horseraces","individual_snooker_tournament","legislative_term","music_festival","nfl_draft","pba_draft","reality_music_competition","recurring_event","song_contest","summit","grand prix race report","recurring event","music festival","football league season","scotus case","court case","concert tour","international labour organization convention","song contest","australian year","individual darts tournament","beauty pageant","historical event","grand prix motorcycle race report","international handball competition","coa case","individual snooker tournament","esc national year","indy500","national political convention","referendum"],patterns:[]},sections:{mapping:["aftermath","births","deaths","battle","results","prelude","may","june","march","december","october","july","august","april","november","february","september","january","incumbents","casualties","july to december","january to june","medal table","campaign"],patterns:[]},templates:{mapping:["esc","year nav","year dab","goal","flagiocmedalist","m1 year in topic","year nav topic5","bc year in topic","flagiocathlete","year article header"],patterns:[]},titles:{mapping:["festival","25 m","world war ii","conmebol","music festival","world war i"],patterns:[/ \((19|20)[0-9]{2}\)$/]}},Creation:{name:"Creation",children:{CreativeWork:{name:"CreativeWork",children:{Album:{name:"Album",children:{},categories:{mapping:["albums recorded at abbey road studios"],patterns:[/[0-9]{4}.*? albums/,/^albums /,/ albums$/,/album stubs$/]},descriptions:{patterns:[]},infoboxes:{mapping:["album"],patterns:[]},sections:{mapping:["track listing"],patterns:[]},templates:{mapping:["track listing","tracklist"],patterns:[/-album-stub$/]},titles:{mapping:["album"],patterns:[]}},Book:{name:"Book",children:{},categories:{mapping:[],patterns:[/(film|novel) stubs$/,/[0-9]{4}.*? (poems|novels)/,/ (poems|novels)$/]},descriptions:{patterns:[]},infoboxes:{mapping:["book"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/-novel-stub$/]},titles:{mapping:["book","novel"],patterns:[]}},Film:{name:"Film",children:{},categories:{mapping:[],patterns:[/[0-9]{4}.*? films/,/ films$/,/^films /]},descriptions:{patterns:[/[0-9]{4} film/]},infoboxes:{mapping:["film"],patterns:[]},sections:{mapping:["cast"],patterns:[]},templates:{mapping:["imdb title","film date","rotten-tomatoes"],patterns:[/-film-stub$/]},titles:{mapping:["movie"],patterns:[/ \([0-9]{4} film\)$/]}},TVShow:{name:"TVShow",children:{},properties:{seasons:()=>{}},categories:{mapping:[],patterns:[/television series/]},descriptions:{patterns:[/television series/]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:["episode list"],patterns:[]},titles:{mapping:["tv series","game show","u.s. tv series","uk tv series","australian tv series","u.s. game show"],patterns:[]}},Play:{name:"Play",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["play"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/-play-stub$/]},titles:{mapping:["play"],patterns:[]}},Song:{name:"Song",children:{},categories:{mapping:[],patterns:[/[0-9]{4}.*? songs/,/^songs /,/ songs$/,/song stubs$/]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["song"],patterns:[]}},VideoGame:{name:"VideoGame",children:{},properties:{platforms:()=>{}},categories:{mapping:["dos games","virtual console games","mac os games","amiga games","arcade games","commodore 64 games","nintendo entertainment system games","playstation (console) games","ios games","super nintendo entertainment system games","video game sequels","game boy advance games","first-person shooters","playstation network games","linux games","atari st games","playstation 2 games","game boy games","zx spectrum games","mario universe games","multiplayer online games","mobile games","android (operating system) games","platform games","xbox 360 live arcade games","sega genesis games"],patterns:[/video games/]},descriptions:{patterns:[]},infoboxes:{mapping:["video game"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["video game"],patterns:[]}}},properties:{genre:()=>{}},categories:{mapping:["operas","american science fiction novels","broadway musicals","debut novels","the twilight zone (1959 tv series) episodes","united states national recording registry recordings","macos games","virtual console games for wii u","american monthly magazines","broadway plays","interactive achievement award winners","doubleday (publisher) books","19th-century classical composers","film soundtracks","universal deluxe editions","best picture academy award winners","shōnen manga","west end musicals","sequel novels","dystopian novels","american comic strips","american road movies","chemical elements","amstrad cpc games","neo-noir","fiction with unreliable narrators","best drama picture golden globe winners","adventure anime and manga"],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["artwork","book_series","broadcast","comic_book_title","comic_strip","doctor_who_episode","hollywood_cartoon","magazine","musical","musical_composition","opera","painting","radio_show","song","song_contest_entry","television_episode","television_season","treaty","video_game","anthem","television episode","comic book title","song contest entry","short story","hollywood cartoon","radio show","simpsons episode","musical composition","book series","comic strip","television season","comics organization","doctor who episode","animanga/other","graphic novel","rpg","big finish","vg series","name module","comics story arc","video game series","futurama episode","comics character and title","comics meta series","webcomic","the goodies episode","audio drama","sw comics","media franchise","folk tale"],patterns:[]},sections:{mapping:["plot","reception","charts","release","plot summary","gameplay","characters","box office","accolades","soundtrack","adaptations","synopsis","home media","weekly charts","themes","publication history","filming","year-end charts","casting","release and reception","commercial performance","composition","album","setting","chart positions","release history","charts and certifications","sequels","chart performance","sequel","recordings","story","editions","in other media"],patterns:[]},templates:{mapping:["rating","certification table entry","albumchart","music","album ratings","album chart","singles","isbnt","singlechart","tcmdb title","mojo title","based on","amg movie","duration"],patterns:[/-song-stub$/]},titles:{mapping:["season 2","season 3","season 4","season 5","the twilight zone","ballet","magazine","miniseries","music","opera","painting","series","single","song","soundtrack","ep","comics","musical","manga","star trek: the next generation","star trek: deep space nine","buffy the vampire slayer","angel","the outer limits","star trek: voyager","short story","seinfeld","star trek: enterprise","poem","tv","uk series","doctor who","david bowie song","caravaggio","the beach boys song","video","audio drama","babylon 5","madonna song"],patterns:[/ \((.*? )song\)$/]}},MedicalCondition:{name:"MedicalCondition",children:{},properties:{causes:()=>{},treatments:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["medical condition (new)","medical condition","disease"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Organism:{name:"Organism",children:{},properties:{},categories:{mapping:["taxa named by carl linnaeus","ornamental trees","birds by common name","living fossils","taxa named by john edward gray","phelsuma","multituberculates","angiosperm orders","cimolodonts","urban animals","flowers","geckos","herbs","spices","skinks","cretaceous mammals","commercial fish","paleocene mammals","bird families","edible nuts and seeds","invasive plant species","leaf vegetables","root vegetables","corvus (genus)","insects in culture","ducks","agamidae","edge species","tropical fruit","pinus","tropical agriculture","indian spices","paleocene genus extinctions","epiphytic orchids","crops","fruits originating in asia","calidris","ptilodontoids","plants and pollinators","mammal families","marine edible fish","taxa named by leopold fitzinger","setophaga","shorebirds","berries","megafauna","animal dance","animal phyla","american inventions","entheogens","crops originating from the americas","non-timber forest products","geese"],patterns:[/(funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants) of ./,/ first appearances/,/ . described in [0-9]{4}/,/. (phyla|genera)$/,/. taxonomic families$/,/plants used in ./,/ (funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants)$/]},descriptions:{patterns:[]},infoboxes:{mapping:["speciesbox","automatic taxobox","dogbreed","dog breed","cat breed","grape variety","taxobox","subspeciesbox","mycomorphbox","paraphyletic group","nutritional value","infraspeciesbox","horse","haplogroup","bird","bird/population","medical resources","nc name","pig breed","botanical product","cattle breed","horse breed","poultry breed"],patterns:[]},sections:{mapping:["habitat","morphology","phylogeny","distribution and diversity","distribution and habitat","reproduction and development","taxonomy and phylogeny"],patterns:[]},templates:{mapping:["taxonbar","wikispecies","animalia","chordata","cnidaria","porifera","epicaridea","mammals","phlyctaeniidae","carnivora","clade","life on earth","orders of insects","coleoptera","insects in culture","living things in culture","eukaryota classification","iucn status","extinct","fossil range","internetbirdcollection","vireo","angle bracket","wikispecies-inline","iucn map","xeno-canto species","avibase","cladex","birdlife","fossilrange"],patterns:[]},titles:{mapping:["plant","genus","fish","bird"],patterns:[]}},Product:{name:"Product",children:{},properties:{},categories:{mapping:[],patterns:[/products introduced in ./,/musical instruments/]},descriptions:{patterns:[]},infoboxes:{mapping:["automobile","beverage","cpu","electric_vehicle","gpu","mobile_phone","motorcycle","synthesizer","television","card game","computer","laboratory equipment"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["computer game","candy","board game","card game","automobile"],patterns:[]}}},properties:{creators:()=>{},date:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}}};const a=function(e,t){return e.name?e.id=t+"/"+e.name:e.id="",e.children&&Object.keys(e.children).forEach((t=>{a(e.children[t],e.id)})),e};e=a(e,"");let t={categories:{},descriptions:{},infoboxes:{},sections:{},templates:{},titles:{}},i={categories:[],descriptions:[],infoboxes:[],sections:[],templates:[],titles:[]};const s=function(e){e.id&&(e.categories.mapping.forEach((a=>{t.categories[a]=e.id})),e.descriptions.mapping=e.descriptions.mapping||[],e.descriptions.mapping.forEach((a=>{t.descriptions[a]=e.id})),e.infoboxes.mapping.forEach((a=>{t.infoboxes[a]=e.id})),e.sections.mapping.forEach((a=>{t.sections[a]=e.id})),e.templates.mapping.forEach((a=>{t.templates[a]=e.id})),e.titles.mapping.forEach((a=>{t.titles[a]=e.id})),e.categories.patterns.forEach((a=>{i.categories.push([a,e.id])})),e.descriptions.patterns.forEach((a=>{i.descriptions.push([a,e.id])})),e.infoboxes.patterns.forEach((a=>{i.infoboxes.push([a,e.id])})),e.sections.patterns.forEach((a=>{i.sections.push([a,e.id])})),e.templates.patterns.forEach((a=>{i.templates.push([a,e.id])})),e.titles.patterns.forEach((a=>{i.titles.push([a,e.id])}))),e.children&&Object.keys(e.children).forEach((a=>{s(e.children[a])}))};s(e);var n={patterns:i,mappings:t};const{mappings:r}=n;var o=function(e){let a=e.infoboxes(),t=[];for(let e=0;e(e=(e=(e=e.toLowerCase()).replace(/^(category|categorie|kategori): ?/i,"")).replace(/_/g," ")).trim()));for(let e=0;ee.json())),t=[];for(let e=0;e{let a=e.title();return a=a.toLowerCase().trim(),a}));for(let e=0;e{a[e]=a[e]||0,a[e]+=1}));let t=Object.keys(a).map((e=>[e,a[e]]));return t=t.sort(((e,a)=>e[1]>a[1]?-1:e[1]{e[t].forEach((e=>{a.push(function(e){let a=e.split(/\//);return{root:a[1],child:a[2]}}(e.type))}))}));let t=a.map((e=>e.root)).filter((e=>e)),i=E(t),s=i[0];if(!s)return{detail:e,type:null,score:0};let n=s[0],r=s[1]/a.length;1===s[1]&&(r*=.75),2===s[1]&&(r*=.85),3===s[1]&&(r*=.95),i[1]&&(i[1][1]===i[0][1]?r*=.5:r*=.8);let o=a.filter((e=>e.root===n&&e.child)).map((e=>e.child)),p=E(o);s=p[0];let l=n;return s&&(l=`${n}/${s[0]}`,p.length>1&&(r*=.7),1===s[1]&&(r*=.8)),{root:n,type:l,score:r,details:e}};return function(e){e.Doc.prototype.classify=function(e){let a=this,t={};return P(a)||(t.infobox=o(a),t.template=d(a),t.section=h(a),t.title=_(a),t.description=k(a),t.category=m(a)),C(t)}}})); +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):(e="undefined"!=typeof globalThis?globalThis:e||self).wtfClassify=a()}(this,(function(){"use strict";let e={children:{Person:{name:"Person",children:{Athlete:{name:"Athlete",properties:{leagues:()=>{}},children:{AmericanFootballPlayer:{name:"AmericanFootballPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},BaseballPlayer:{name:"BaseballPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:["baseball year"],patterns:[]},titles:{mapping:[],patterns:[]}},FootballPlayer:{name:"FootballPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},BasketballPlayer:{name:"BasketballPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},HockeyPlayer:{name:"HockeyPlayer",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}},categories:{mapping:[],patterns:[/sportspeople from ./,/(footballers|cricketers|defencemen|cyclists)/]},descriptions:{patterns:[/(hockey|soccer|backetball|football) player/]},infoboxes:{mapping:["afl_biography","alpine_ski_racer","athlete","baseball_biography","basketball_biography","boxer","cfl_player","cricketer","cyclist","field_hockey_player","figure_skater","gaa_player","golfer","gymnast","ice_hockey_player","lacrosse_player","martial_artist","mlb_player","nba_biography","nfl_biography","nfl_player","professional_wrestler","rugby_biography","rugby_league_biography","skier","squash_player","swimmer","tennis_biography","volleyball_biography","volleyball_player","hockey team player","football biography","baseball biography","ice hockey player","nfl player","basketball biography","professional wrestler","tennis biography","afl biography","nfl biography","rugby biography","rugby league biography","nba biography","figure skater","gaa player"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/sport-bio-stub$/]},titles:{mapping:["american football player","football player","gaelic footballer","athlete","boxer","cricketer","footballer","wrestler","golfer","swimmer"],patterns:[]}},Actor:{name:"Actor",children:{},properties:{films:()=>{},tv_shows:()=>{}},categories:{mapping:["male actors from new york city"],patterns:[/actresses/,/actors from ./,/actor stubs$/,/ (actors|actresses)$/]},descriptions:{patterns:[/(actor|actress)/]},infoboxes:{mapping:["actor"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/actor-stub$/]},titles:{mapping:["actor","actress"],patterns:[]}},Politician:{name:"Politician",children:{},properties:{parties:()=>{}},categories:{mapping:["uk mps 2001–05","uk mps 1997–2001","uk mps 2005–10","uk mps 1992–97","labour party (uk) mps for english constituencies","conservative party (uk) mps for english constituencies","uk mps 1987–92","uk mps 2010–15","democratic party members of the united states house of representatives","republican party members of the united states house of representatives","uk mps 1983–87","democratic party state governors of the united states","california republicans","british secretaries of state","democratic party united states senators","uk mps 2015–17","republican party united states senators","republican party state governors of the united states","california democrats","uk mps 1979–83","uk mps 2017–"],patterns:[/politicians from ./,/politician stubs$/,/. (democrats|republicans|politicians)$/,/mayors of ./]},descriptions:{patterns:[/(politician|member of parliament)/]},infoboxes:{mapping:["canadianmp","governor","indian_politician","mp","officeholder","politician","politician_(general)","president","roman_emperor","state_representative","state_senator","congressman","prime minister","indian politician","senator","state representative","state senator","us cabinet official"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:["list of united states senators congress"],patterns:[/(politician|mayor)-stub$/]},titles:{mapping:["australian politician","canadian politician","politician","british politician","governor","irish politician","mayor"],patterns:[]}},Musician:{name:"Musician",children:{},properties:{groups:()=>{},instruments:()=>{}},categories:{mapping:["american male guitarists","american singer-songwriters","american male singers","american rock singers","american rock guitarists","21st-century american singers","lead guitarists","african-american musicians","english male singers","american male singer-songwriters","american rock songwriters","american record producers","american country singer-songwriters","20th-century american guitarists","english songwriters","20th-century american pianists","songwriters from new york (state)","african-american singers","american blues singers","american pop singers","male guitarists","american country singers","blues hall of fame inductees","american male songwriters","songwriters from california","english rock guitarists","american folk singers","english rock singers","english singer-songwriters","african-american male rappers","african-american jazz musicians","20th-century english singers","american female singer-songwriters","jewish american musicians","american blues guitarists","20th-century conductors (music)","american female singers","american jazz bandleaders","american jazz pianists","american soul singers","american female guitarists","american multi-instrumentalists","american country guitarists","english record producers","songwriters from texas","american composers","singers from california","american folk guitarists","lgbt singers","american buskers","guitarists from california","feminist musicians","big band bandleaders","20th-century composers","african-american songwriters","british rhythm and blues boom musicians","alternative rock singers","21st-century american guitarists","american alternative rock musicians","musicians from los angeles","rhythm guitarists","american session musicians","jazz musicians from new orleans","alternative rock guitarists","20th-century women musicians","male film score composers","african-american singer-songwriters","american jazz singers","21st-century english singers","singers from new york city","american acoustic guitarists","musicians from new york city","slide guitarists","guitarists from texas","vaudeville performers"],patterns:[/musicians from ./,/(singers|songwriters|painters|poets)/]},descriptions:{patterns:[/(singer|musicianrapper|drummer)/,/(keyboard|guitar|bass) player/]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/(musician|singer)-stub$/]},titles:{mapping:["composer","musician","rapper","singer"],patterns:[]}},Author:{name:"Author",children:{},properties:{works:()=>{}},categories:{mapping:["20th-century american novelists","american male novelists","american film directors","21st-century american novelists","american film producers","american male screenwriters","american science fiction writers","20th-century english novelists","english male poets","american male short story writers","american political writers","english male novelists","20th-century american writers","19th-century male writers","american male writers","20th-century women writers","20th-century male writers","german male writers","21st-century american writers","french male writers","jewish american writers","writers from new york city","21st-century women writers","english male writers"],patterns:[/novelists from ./]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}},properties:{birth_date:()=>{},birth_place:()=>{},nationality:()=>{},death_date:()=>{},death_place:()=>{}},categories:{mapping:["living people","possibly living people","year of birth unknown","fellows of the royal society","members of the privy council of the united kingdom","american people of english descent","guggenheim fellows","harvard university alumni","american military personnel of world war ii","knights bachelor","american roman catholics","knights of the garter","presidential medal of freedom recipients","commanders of the order of the british empire","people educated at eton college","alumni of trinity college, cambridge","foreign members of the royal society","american people of scottish descent","american memoirists","members of the french academy of sciences","united states army soldiers","officers of the order of the british empire","deaths from pneumonia","burials at père lachaise cemetery","deaths from cancer in california","year of birth missing (living people)","knights of the golden fleece","columbia university alumni","alumni of the university of edinburgh","american people of russian-jewish descent","yale university alumni","american atheists","people of the tudor period","tony award winners","members of the académie française","united states army officers","persons of national historic significance (canada)","20th-century american businesspeople","american television producers","american journalists","american male journalists","american male comedians","princeton university alumni","university of paris alumni","american episcopalians","american women novelists","phi beta kappa members","20th-century american poets","bafta winners (people)","members of the queen's privy council for canada","american presbyterians","fellows of the american academy of arts and sciences","members of the united states national academy of sciences","members of the royal swedish academy of sciences","20th-century american short story writers","american nobel laureates","harvard university faculty","roman catholic monarchs","popes","italian popes"],patterns:[/[0-9]{4} births/,/[0-9]{4} deaths/,/people of .* descent/,/^deaths from /,/^(people|philanthropists|writers) from ./,/ (players|alumni)$/,/(alumni|fellows) of .$/,/(people|writer) stubs$/,/(american|english) (fe)?male ./,/(american|english) (architects|people)/]},descriptions:{patterns:[/(artist|painter|poet|writer|celebrity|activist)/]},infoboxes:{mapping:["adult_biography","architect","chef","chess_player","christian_leader","college_coach","college_football_player","comedian","comics_creator","criminal","engineer","fashion_designer","football_biography","gridiron_football_person","handball_biography","hindu_leader","horseracing_personality","judge","mass_murderer","medical_person","military_person","model","monarch","nascar_driver","person","philosopher","police_officer","presenter","racing_driver","religious_biography","royalty","sportsperson","wrc_driver","writer","snooker player","military person","college coach","f1 driver","gridiron football person","racing driver","martial artist","chinese-language singer and actor","astronaut","nascar driver","adult biography","coa wide","chess player","pageant titleholder","archbishop","minister","saint","bishop","christian leader","religious biography","artist","comics creator","economist","scholar","scientist"],patterns:[]},sections:{mapping:["early life","personal life","career","career statistics","playing career","life and career","early life and education","film and television credits","filmography","selected filmography","works","life","family","political career","early career","later life","early life and career","later years","death and legacy","work","novels","later career","international","selected works","writings","professional career","retirement","poetry","marriage","electoral history","military career","international career","parliamentary career"],patterns:[]},templates:{mapping:["persondata","writer","ted speaker","s-aft","s-bef","s-start","marriage","s-off","s-par","internet archive author","ribbon devices","s-reg","find a grave","gutenberg author","s-new","other people","medalgold","medal","mlby","s-vac","s-hou","librivox author","blp sources","s-ppo","nbay"],patterns:[/-bio-stub$/]},titles:{mapping:["murder victim","academic","author","businessman","cyclist","diplomat","director","drummer","journalist","judge","minister","poet","priest","american football","ice hockey","soccer","rugby league","rugby union","field hockey","tennis","writer","vc","racing driver","architect","comedian","british army officer","general","broadcaster","engineer","physician","soldier","royal navy officer","producer","lawyer","activist","inventor","artist","painter","cartoonist","novelist","photographer","playwright","bishop","theologian","historian","philosopher","mathematician","astronomer","economist"],patterns:[]}},Place:{name:"Place",children:{Jurisdiction:{name:"Jurisdiction",children:{City:{name:"City",children:{},categories:{mapping:[],patterns:[/^cities and towns in ./,/(municipalities|settlements|villages|localities|townships) in ./]},descriptions:{patterns:[]},infoboxes:{mapping:["swiss town","city japan","municipality br","russian town","south african town 2011"],patterns:[]},sections:{mapping:["sister cities","neighbourhoods","churches","parks and recreation","public transportation"],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Country:{name:"Country",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:["international relations"],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["country"],patterns:[]}}},properties:{population:()=>{},leader:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:["2010 census","2000 census","economy","transportation","government","communities","transport","culture","sports","adjacent counties","major highways","notable residents","tourism","cities","population","unincorporated communities","infrastructure","schools","rail","census-designated places","towns","local government","points of interest","attractions","demographics","climate","notable people","townships","recreation","arts and culture","governance","administrative divisions","landmarks","demography"],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Structure:{name:"Structure",children:{Bridge:{name:"Bridge",children:{},properties:{length:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Airport:{name:"Airport",children:{},properties:{airlines:()=>{},runways:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}},properties:{date_created:()=>{}},categories:{mapping:[],patterns:[/(buildings|bridges) completed in /,/airports established in ./,/(airports|bridges) in ./,/buildings and structures in ./]},descriptions:{patterns:[]},infoboxes:{mapping:["airport","bridge","building","power_station","religious_building","stadium","uk school","military structure","religious building","shopping mall","lighthouse","power station"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},BodyOfWater:{name:"BodyOfWater",children:{},properties:{},categories:{mapping:[],patterns:[/(rivers|lakes|tributaries) of ./]},descriptions:{patterns:[]},infoboxes:{mapping:["body_of_water","lake","river","sea","body of water"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/-river-stub$/]},titles:{mapping:["river"],patterns:[]}}},properties:{location:()=>{},coordinates:()=>{}},categories:{mapping:[],patterns:[/populated places/,/landforms of ./,/railway stations/,/parks in ./,/ district$/,/geography stubs$/,/sports venue stubs$/]},descriptions:{patterns:[]},infoboxes:{mapping:["amusement_park","ancient_site","australian_place","casino","cemetery","church","cricket_ground","dam","feature_on_mars","former_country","former_subdivision","french_commune","german_location","golf_facility","historic_site","hospital","hotel","islands","israel_village","italian_comune","launch_pad","military_memorial","military_structure","monument","mountain","mountain_pass","mountain_range","museum","neighborhood_portland_or","oil_field","park","prison","province_or_territory_of_canada","road","road_small","russian_inhabited_locality","russian_town","russian_urban-type_settlement","school","scotland_council_area","settlement","shopping_mall","south_african_subplace_2011","state","station","street","swiss_town","temple","town_at","u.s._metropolitan_area","u.s._state","uk_constituency","uk_disused_station","uk_place","uk_school","unesco_world_heritage_site","university_of_notre_dame_residence_hall","venue","waterfall","windmill","zoo","ecoregion","uk place","italian comune","geobox","australian place","french commune","german location","u.s. county","former country","road small","lunar crater","gb station","greek dimos","uk constituency main","finnish municipality/population count","ancient site","mountain range","london station","former subdivision","uk station","historic site","world heritage site","diocese","uk disused station","belgium municipality","uk constituency","theatre","canada electoral district","nycs","mountain pass","kommune","historic subdivision","u.s. congressional district"],patterns:[]},sections:{mapping:["geography","geology","location","coat of arms"],patterns:[]},templates:{mapping:["coord","weather box","us census population","jct","geographic location","representative","historical populations","wikivoyage-inline","election box","zh","wide image"],patterns:[/-geo-stub$/]},titles:{mapping:["cape verde","cedar busway station","delhi metro","erie county, new york","new jersey","new orleans","new york City Subway","new york","new zealand","north carolina","northern ireland","sri lanka","uk parliament constituency","united kingdom","united states","alaska","argentina","arkansas","australia","barbados","brazil","california","canada","chad","chicago","colombia","connecticut","dominica","edmonton","france","georgia","india","israel","japan","manhattan","michigan","nigeria","oklahoma","ontario","pennsylvania","portugal","province","spain","sudan","texas","uk","va","Virginia","volcano","washington"],patterns:[]}},Organization:{name:"Organization",children:{MusicalGroup:{name:"MusicalGroup",children:{},properties:{albums:()=>{}},categories:{mapping:["musical quartets","musical duos","musical trios","musical quintets","english rock music groups","english new wave musical groups","african-american musical groups","21st-century american musicians","american alternative metal musical groups","english pop music groups","art rock musical groups","english post-punk music groups"],patterns:[/musical groups from /,/musical groups (dis)?established in [0-9]{4}/,/musical group stubs/,/. music(al)? (groups|duos|trios|quartets|quintets)$/]},descriptions:{patterns:[/rock band/]},infoboxes:{mapping:["musical_artist"],patterns:[]},sections:{mapping:["band members","albums","studio albums","compilation albums","live albums","compilations","eps"],patterns:[]},templates:{mapping:["allmusic"],patterns:[]},titles:{mapping:["band","american band","australian band","canadian band","uk band","japanese band","swedish band"],patterns:[]}},Company:{name:"Company",children:{},categories:{mapping:["companies listed on the new york stock exchange","jazz record labels","video game development companies","american record labels","companies listed on nasdaq","video game companies of the united states","companies formerly listed on the london stock exchange","multinational companies headquartered in the united states","companies listed on the tokyo stock exchange","re-established companies","companies based in new york city","defunct video game companies","companies formed by merger","entertainment companies based in california"],patterns:[/companies (established|based) in ./]},descriptions:{patterns:[/(company|subsidary)/]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:["products"],patterns:[]},templates:{mapping:[],patterns:[/-company-stub$/]},titles:{mapping:["company","newspaper","restaurant","retailer","store"],patterns:[]}},SportsTeam:{name:"SportsTeam",children:{},properties:{coaches:()=>{}},categories:{mapping:["football clubs in england","english football league clubs","southern football league clubs","football clubs in scotland","premier league clubs","national basketball association teams"],patterns:[/football clubs in ./,/(basketball|hockey|baseball|football) teams (in|established) ./]},descriptions:{patterns:[/(basketball|hockey|soccer|football|sports) team/]},infoboxes:{mapping:["basketball_club","pro_hockey_team","college_ice_hockey_team","college_soccer_team","cricket_team","football_club","non_test_cricket_team","non-profit","rugby_league_club","rugby_league_representative_team","rugby_team","baseball team","football club","rugby team","national football team","basketball club","hockey team","rugby league club","football club infobox","cricket team"],patterns:[]},sections:{mapping:["coaching staff","head coaches","team records","current squad"],patterns:[]},templates:{mapping:[],patterns:[/-sport-team-stub$/]},titles:{mapping:[],patterns:[]}},PoliticalParty:{name:"PoliticalParty",children:{},categories:{mapping:["social democratic parties"],patterns:[]},descriptions:{patterns:[/political party/]},infoboxes:{mapping:["political_party","political party"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["political party"],patterns:[]}}},properties:{leaders:()=>{},members:()=>{}},categories:{mapping:["japanese brands","american jazz composers","scouting in the united states","car brands","government-owned airlines","baptist denominations in north america","baptist denominations established in the 20th century","land-grant universities and colleges","organizations based in washington, d.c.","video game publishers","defunct motor vehicle manufacturers of the united states","alternative rock groups from california"],patterns:[/(organi[sz]ations|publications) based in /,/(organi[sz]ations|publications|schools|awards) established in [0-9]{4}/,/(secondary|primary) schools/,/military units/,/magazines/,/organi[sz]ation stubs$/]},descriptions:{patterns:[/(charity|organization|ngo)/]},infoboxes:{mapping:["airline","broadcasting_network","cbb_team","choir","college","company","dot-com_company","film_awards","film_festival","football_league","gaa_club","government_agency","government_cabinet","journal","laboratory","law_enforcement_agency","legislature","library","military_unit","national_military","ncaa_football_school","newspaper","nobility","organization","public_transit","publisher","radio_station","rail_line","rail_service","record_label","school_district","sport_governing_body","sports_league","television_channel","tv_channel","u.s._cabinet","u.s._legislation","uk_legislation","university","v8_supercar_team","former monarchy","criminal organization","radio station","military unit","government agency","rail line","record label","school district","tv channel","sports league","football league","worldscouting","sg rail","law enforcement agency","uk legislation","public transit","us university ranking","television channel","bus transit","union","broadcasting network","christian denomination","film awards","gaa club","fraternity","rail","rail service","national military","sport governing body","political party/seats","athletic conference","film festival","dot-com company","india university ranking","uk university rankings","government cabinet"],patterns:[]},sections:{mapping:["founding","founders","members","athletics","notable alumni","academics","campus","organization","student life","rankings","fleet","research","formation","operations","players","alumni","former members","presidents","membership","current members"],patterns:[]},templates:{mapping:["composition bar","fs player","y","n","rws"],patterns:[]},titles:{mapping:["group","journal","am","fm","wehrmacht","tv channel","british band","organization","airline","publisher","brand","record label","union army","defunct","tv network","department store"],patterns:[]}},Event:{name:"Event",properties:{dates:()=>{},places:()=>{}},children:{Disaster:{name:"Disaster",children:{},properties:{casualties:()=>{}},categories:{mapping:["retired atlantic hurricanes"],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["aircraft_accident","airliner_accident","earthquake","hurricane","pandemic","airliner accident"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Election:{name:"Election",children:{},categories:{mapping:["presidential elections in ireland"],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["election"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:["election summary party with leaders"],patterns:[/-election-stub$/]},titles:{mapping:[],patterns:[]}},MilitaryConflict:{name:"MilitaryConflict",children:{},categories:{mapping:["wars involving the united kingdom","proxy wars","new zealand wars","battles between england and scotland","conflicts in 1943","last stand battles","battles and conflicts without fatalities","guerrilla wars","20th-century conflicts","20th-century revolutions","sieges involving japan","revolution-based civil wars"],patterns:[/conflicts (in|of) [0-9]{4}/,/(wars|battles|conflicts) (involving|of|in) ./]},descriptions:{patterns:[]},infoboxes:{mapping:["military_conflict","military conflict","civil conflict","civilian attack"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},SportsEvent:{name:"SportsEvent",children:{},properties:{winners:()=>{}},categories:{mapping:["1904 summer olympics events","1900 summer olympics events","2002 winter olympics events"],patterns:[/. league seasons$/,/^(19|20)[0-9]{2} in (soccer|football|rugby|tennis|basketball|baseball|cricket|sports)/]},descriptions:{patterns:[]},infoboxes:{mapping:["athletics_championships","badminton_event","boxingmatch","fila_wrestling_event","football_club_season","football_country_season","football_league_season","football_match","football_tournament_season","little_league_world_series","nba_season","ncaa_baseball_conference_tournament","ncaa_football_single_game","ncaa_team_season","nfl_season","nfl_single_game","sports_season","tennis_event","tennis_grand_slam_events","wrestling_event","football tournament","olympic event","international football competition","wrestling event","sports season","cycling race report","ncaa team season","cricket tournament","football match","world series expanded","mma event","nfl season","nfl draft","athletics championships","football club season","canadian football game","australian rules football season","football tournament season","international ice hockey competition","cricket tour"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}},categories:{mapping:["years in literature","years in music","years in film","united states supreme court cases","leap years in the gregorian calendar","governor general's awards","eurovision song contest by year","grammy awards ceremonies","united kingdom in the eurovision song contest","manned soyuz missions","american civil liberties union litigation","may","october","missions to the moon","world war ii british commando raids","july","december","september","november","january","june","august","april","february","march","conflicts in 1944","missions to mars","luna program","conflicts in 1942","special air service","soft landings on the moon","may observances","first events","recent years","elections not won by the popular vote winner","conflicts in 1864","1862 in the american civil war","new york (state) in the american revolution","march observances","public holidays in the united states","1944 in france","december observances","20th century american trials","african-american civil rights movement (1954–68)","october observances","spring holidays","years in aviation","national days","summer holidays","apollo program"],patterns:[/^(19|20)[0-9]{2} in /,/^(years of the )?[0-9]{1,2}(st|nd|rd|th)? century in ./]},descriptions:{patterns:[]},infoboxes:{mapping:["beauty_pageant","civil_conflict","concert_tour","court_case","event","historical_era","holiday","horseraces","individual_snooker_tournament","legislative_term","music_festival","nfl_draft","pba_draft","reality_music_competition","recurring_event","song_contest","summit","grand prix race report","recurring event","music festival","football league season","scotus case","court case","concert tour","international labour organization convention","song contest","australian year","individual darts tournament","beauty pageant","historical event","grand prix motorcycle race report","international handball competition","coa case","individual snooker tournament","esc national year","indy500","national political convention","referendum"],patterns:[]},sections:{mapping:["aftermath","births","deaths","battle","results","prelude","may","june","march","december","october","july","august","april","november","february","september","january","incumbents","casualties","july to december","january to june","medal table","campaign"],patterns:[]},templates:{mapping:["esc","year nav","year dab","goal","flagiocmedalist","m1 year in topic","year nav topic5","bc year in topic","flagiocathlete","year article header"],patterns:[]},titles:{mapping:["festival","25 m","world war ii","conmebol","music festival","world war i"],patterns:[/ \((19|20)[0-9]{2}\)$/]}},Creation:{name:"Creation",children:{CreativeWork:{name:"CreativeWork",children:{Album:{name:"Album",children:{},categories:{mapping:["albums recorded at abbey road studios"],patterns:[/[0-9]{4}.*? albums/,/^albums /,/ albums$/,/album stubs$/]},descriptions:{patterns:[]},infoboxes:{mapping:["album"],patterns:[]},sections:{mapping:["track listing"],patterns:[]},templates:{mapping:["track listing","tracklist"],patterns:[/-album-stub$/]},titles:{mapping:["album"],patterns:[]}},Book:{name:"Book",children:{},categories:{mapping:[],patterns:[/(film|novel) stubs$/,/[0-9]{4}.*? (poems|novels)/,/ (poems|novels)$/]},descriptions:{patterns:[]},infoboxes:{mapping:["book"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/-novel-stub$/]},titles:{mapping:["book","novel"],patterns:[]}},Film:{name:"Film",children:{},categories:{mapping:[],patterns:[/[0-9]{4}.*? films/,/ films$/,/^films /]},descriptions:{patterns:[/[0-9]{4} film/]},infoboxes:{mapping:["film"],patterns:[]},sections:{mapping:["cast"],patterns:[]},templates:{mapping:["imdb title","film date","rotten-tomatoes"],patterns:[/-film-stub$/]},titles:{mapping:["movie"],patterns:[/ \([0-9]{4} film\)$/]}},TVShow:{name:"TVShow",children:{},properties:{seasons:()=>{}},categories:{mapping:[],patterns:[/television series/]},descriptions:{patterns:[/television series/]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:["episode list"],patterns:[]},titles:{mapping:["tv series","game show","u.s. tv series","uk tv series","australian tv series","u.s. game show"],patterns:[]}},Play:{name:"Play",children:{},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["play"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[/-play-stub$/]},titles:{mapping:["play"],patterns:[]}},Song:{name:"Song",children:{},categories:{mapping:[],patterns:[/[0-9]{4}.*? songs/,/^songs /,/ songs$/,/song stubs$/]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["song"],patterns:[]}},VideoGame:{name:"VideoGame",children:{},properties:{platforms:()=>{}},categories:{mapping:["dos games","virtual console games","mac os games","amiga games","arcade games","commodore 64 games","nintendo entertainment system games","playstation (console) games","ios games","super nintendo entertainment system games","video game sequels","game boy advance games","first-person shooters","playstation network games","linux games","atari st games","playstation 2 games","game boy games","zx spectrum games","mario universe games","multiplayer online games","mobile games","android (operating system) games","platform games","xbox 360 live arcade games","sega genesis games"],patterns:[/video games/]},descriptions:{patterns:[]},infoboxes:{mapping:["video game"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["video game"],patterns:[]}}},properties:{genre:()=>{}},categories:{mapping:["operas","american science fiction novels","broadway musicals","debut novels","the twilight zone (1959 tv series) episodes","united states national recording registry recordings","macos games","virtual console games for wii u","american monthly magazines","broadway plays","interactive achievement award winners","doubleday (publisher) books","19th-century classical composers","film soundtracks","universal deluxe editions","best picture academy award winners","shōnen manga","west end musicals","sequel novels","dystopian novels","american comic strips","american road movies","chemical elements","amstrad cpc games","neo-noir","fiction with unreliable narrators","best drama picture golden globe winners","adventure anime and manga"],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["artwork","book_series","broadcast","comic_book_title","comic_strip","doctor_who_episode","hollywood_cartoon","magazine","musical","musical_composition","opera","painting","radio_show","song","song_contest_entry","television_episode","television_season","treaty","video_game","anthem","television episode","comic book title","song contest entry","short story","hollywood cartoon","radio show","simpsons episode","musical composition","book series","comic strip","television season","comics organization","doctor who episode","animanga/other","graphic novel","rpg","big finish","vg series","name module","comics story arc","video game series","futurama episode","comics character and title","comics meta series","webcomic","the goodies episode","audio drama","sw comics","media franchise","folk tale"],patterns:[]},sections:{mapping:["plot","reception","charts","release","plot summary","gameplay","characters","box office","accolades","soundtrack","adaptations","synopsis","home media","weekly charts","themes","publication history","filming","year-end charts","casting","release and reception","commercial performance","composition","album","setting","chart positions","release history","charts and certifications","sequels","chart performance","sequel","recordings","story","editions","in other media"],patterns:[]},templates:{mapping:["rating","certification table entry","albumchart","music","album ratings","album chart","singles","isbnt","singlechart","tcmdb title","mojo title","based on","amg movie","duration"],patterns:[/-song-stub$/]},titles:{mapping:["season 2","season 3","season 4","season 5","the twilight zone","ballet","magazine","miniseries","music","opera","painting","series","single","song","soundtrack","ep","comics","musical","manga","star trek: the next generation","star trek: deep space nine","buffy the vampire slayer","angel","the outer limits","star trek: voyager","short story","seinfeld","star trek: enterprise","poem","tv","uk series","doctor who","david bowie song","caravaggio","the beach boys song","video","audio drama","babylon 5","madonna song"],patterns:[/ \((.*? )song\)$/]}},MedicalCondition:{name:"MedicalCondition",children:{},properties:{causes:()=>{},treatments:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:["medical condition (new)","medical condition","disease"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}},Organism:{name:"Organism",children:{},properties:{},categories:{mapping:["taxa named by carl linnaeus","ornamental trees","birds by common name","living fossils","taxa named by john edward gray","phelsuma","multituberculates","angiosperm orders","cimolodonts","urban animals","flowers","geckos","herbs","spices","skinks","cretaceous mammals","commercial fish","paleocene mammals","bird families","edible nuts and seeds","invasive plant species","leaf vegetables","root vegetables","corvus (genus)","insects in culture","ducks","agamidae","edge species","tropical fruit","pinus","tropical agriculture","indian spices","paleocene genus extinctions","epiphytic orchids","crops","fruits originating in asia","calidris","ptilodontoids","plants and pollinators","mammal families","marine edible fish","taxa named by leopold fitzinger","setophaga","shorebirds","berries","megafauna","animal dance","animal phyla","american inventions","entheogens","crops originating from the americas","non-timber forest products","geese"],patterns:[/(funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants) of ./,/ first appearances/,/ . described in [0-9]{4}/,/. (phyla|genera)$/,/. taxonomic families$/,/plants used in ./,/ (funghi|reptiles|flora|fauna|fish|birds|trees|mammals|plants)$/]},descriptions:{patterns:[]},infoboxes:{mapping:["speciesbox","automatic taxobox","dogbreed","dog breed","cat breed","grape variety","taxobox","subspeciesbox","mycomorphbox","paraphyletic group","nutritional value","infraspeciesbox","horse","haplogroup","bird","bird/population","medical resources","nc name","pig breed","botanical product","cattle breed","horse breed","poultry breed"],patterns:[]},sections:{mapping:["habitat","morphology","phylogeny","distribution and diversity","distribution and habitat","reproduction and development","taxonomy and phylogeny"],patterns:[]},templates:{mapping:["taxonbar","wikispecies","animalia","chordata","cnidaria","porifera","epicaridea","mammals","phlyctaeniidae","carnivora","clade","life on earth","orders of insects","coleoptera","insects in culture","living things in culture","eukaryota classification","iucn status","extinct","fossil range","internetbirdcollection","vireo","angle bracket","wikispecies-inline","iucn map","xeno-canto species","avibase","cladex","birdlife","fossilrange"],patterns:[]},titles:{mapping:["plant","genus","fish","bird"],patterns:[]}},Product:{name:"Product",children:{},properties:{},categories:{mapping:[],patterns:[/products introduced in ./,/musical instruments/]},descriptions:{patterns:[]},infoboxes:{mapping:["automobile","beverage","cpu","electric_vehicle","gpu","mobile_phone","motorcycle","synthesizer","television","card game","computer","laboratory equipment"],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:["computer game","candy","board game","card game","automobile"],patterns:[]}}},properties:{creators:()=>{},date:()=>{}},categories:{mapping:[],patterns:[]},descriptions:{patterns:[]},infoboxes:{mapping:[],patterns:[]},sections:{mapping:[],patterns:[]},templates:{mapping:[],patterns:[]},titles:{mapping:[],patterns:[]}}}};const a=function(e,t){return e.name?e.id=t+"/"+e.name:e.id="",e.children&&Object.keys(e.children).forEach((t=>{a(e.children[t],e.id)})),e};e=a(e,"");let t={categories:{},descriptions:{},infoboxes:{},sections:{},templates:{},titles:{}},i={categories:[],descriptions:[],infoboxes:[],sections:[],templates:[],titles:[]};const s=function(e){e.id&&(e.categories.mapping.forEach((a=>{t.categories[a]=e.id})),e.descriptions.mapping=e.descriptions.mapping||[],e.descriptions.mapping.forEach((a=>{t.descriptions[a]=e.id})),e.infoboxes.mapping.forEach((a=>{t.infoboxes[a]=e.id})),e.sections.mapping.forEach((a=>{t.sections[a]=e.id})),e.templates.mapping.forEach((a=>{t.templates[a]=e.id})),e.titles.mapping.forEach((a=>{t.titles[a]=e.id})),e.categories.patterns.forEach((a=>{i.categories.push([a,e.id])})),e.descriptions.patterns.forEach((a=>{i.descriptions.push([a,e.id])})),e.infoboxes.patterns.forEach((a=>{i.infoboxes.push([a,e.id])})),e.sections.patterns.forEach((a=>{i.sections.push([a,e.id])})),e.templates.patterns.forEach((a=>{i.templates.push([a,e.id])})),e.titles.patterns.forEach((a=>{i.titles.push([a,e.id])}))),e.children&&Object.keys(e.children).forEach((a=>{s(e.children[a])}))};s(e);var n={patterns:i,mappings:t};const{mappings:r}=n;var o=function(e){let a=e.infoboxes(),t=[];for(let e=0;e(e=(e=(e=e.toLowerCase()).replace(/^(category|categorie|kategori): ?/i,"")).replace(/_/g," ")).trim()));for(let e=0;ee.json())),t=[];for(let e=0;e{let a=e.title();return a=a.toLowerCase().trim(),a}));for(let e=0;e{a[e]=a[e]||0,a[e]+=1}));let t=Object.keys(a).map((e=>[e,a[e]]));return t=t.sort(((e,a)=>e[1]>a[1]?-1:e[1]{e[t].forEach((e=>{a.push(function(e){let a=e.split(/\//);return{root:a[1],child:a[2]}}(e.type))}))}));let t=a.map((e=>e.root)).filter((e=>e)),i=O(t),s=i[0];if(!s)return{detail:e,type:null,score:0};let n=s[0],r=s[1]/a.length;1===s[1]&&(r*=.75),2===s[1]&&(r*=.85),3===s[1]&&(r*=.95),i[1]&&(i[1][1]===i[0][1]?r*=.5:r*=.8);let o=a.filter((e=>e.root===n&&e.child)).map((e=>e.child)),p=O(o);s=p[0];let l=n;return s&&(l="".concat(n,"/").concat(s[0]),p.length>1&&(r*=.7),1===s[1]&&(r*=.8)),{root:n,type:l,score:r,details:e}};return function(e){e.Doc.prototype.classify=function(e){let a=this,t={};return L(a)||(t.infobox=q(a),t.template=S(a),t.section=B(a),t.title=M(a),t.description=F(a),t.category=A(a)),T(t)}}})); diff --git a/plugins/classify/builds/wtf-plugin-classify.mjs b/plugins/classify/builds/wtf-plugin-classify.mjs index ae7701d5..18da64df 100644 --- a/plugins/classify/builds/wtf-plugin-classify.mjs +++ b/plugins/classify/builds/wtf-plugin-classify.mjs @@ -1,4 +1,4 @@ -/* wtf-plugin-classify 1.0.0 MIT */ +/* wtf-plugin-classify 1.0.1 MIT */ var AmericanFootballPlayer = { name: 'AmericanFootballPlayer', // @@ -1551,7 +1551,7 @@ var Creation = { } }; -let schema = { +let schema$1 = { children: { Person: Person, Place: Place, @@ -1577,9 +1577,10 @@ const setId = function (root, id) { return root; }; -schema = setId(schema, ''); -var schema_1 = schema; +schema$1 = setId(schema$1, ''); +var schema_1 = schema$1; +const schema = schema_1; let mappings$5 = { categories: {}, descriptions: {}, @@ -1647,7 +1648,7 @@ const doNode = function (node) { } }; -doNode(schema_1); +doNode(schema); var _dataFns = { patterns: patterns$4, mappings: mappings$5 @@ -1657,7 +1658,7 @@ const { mappings: mappings$4 } = _dataFns; -const byInfobox = function (doc) { +const byInfobox$1 = function (doc) { let infoboxes = doc.infoboxes(); let found = []; @@ -1680,9 +1681,9 @@ const byInfobox = function (doc) { return found; }; -var byInfobox_1 = byInfobox; +var byInfobox_1 = byInfobox$1; -const byPattern = function (str, patterns) { +const byPattern$4 = function (str, patterns) { for (let i = 0; i < patterns.length; i += 1) { let reg = patterns[i][0]; @@ -1694,14 +1695,15 @@ const byPattern = function (str, patterns) { return null; }; -var _byPattern = byPattern; +var _byPattern = byPattern$4; const { patterns: patterns$3, mappings: mappings$3 } = _dataFns; +const byPattern$3 = _byPattern; -const byCategory = function (doc) { +const byCategory$1 = function (doc) { let found = []; let cats = doc.categories(); // clean them up a bit @@ -1724,7 +1726,7 @@ const byCategory = function (doc) { } // loop through our patterns - let match = _byPattern(category, patterns$3.categories); + let match = byPattern$3(category, patterns$3.categories); if (match) { found.push({ @@ -1737,14 +1739,15 @@ const byCategory = function (doc) { return found; }; -var byCategory_1 = byCategory; +var byCategory_1 = byCategory$1; const { patterns: patterns$2, mappings: mappings$2 } = _dataFns; +const byPattern$2 = _byPattern; -const byTemplate = function (doc) { +const byTemplate$1 = function (doc) { let templates = doc.templates().map(tmpl => tmpl.json()); let found = []; @@ -1758,7 +1761,7 @@ const byTemplate = function (doc) { }); } else { // try regex-list on it - let type = _byPattern(title, patterns$2.templates); + let type = byPattern$2(title, patterns$2.templates); if (type) { found.push({ @@ -1772,7 +1775,7 @@ const byTemplate = function (doc) { return found; }; -var byTemplate_1 = byTemplate; +var byTemplate_1 = byTemplate$1; const { mappings: mappings$1 @@ -1800,15 +1803,16 @@ const fromSection = function (doc) { return found; }; -var bySection = fromSection; +var bySection$1 = fromSection; const { patterns: patterns$1, mappings } = _dataFns; +const byPattern$1 = _byPattern; const paren$1 = /\((.*)\)$/; -const byTitle = function (doc) { +const byTitle$1 = function (doc) { let title = doc.title(); if (!title) { @@ -1835,7 +1839,7 @@ const byTitle = function (doc) { } // look at regex - let match = _byPattern(title, patterns$1.titles); + let match = byPattern$1(title, patterns$1.titles); if (match) { return [{ @@ -1847,20 +1851,21 @@ const byTitle = function (doc) { return []; }; -var byTitle_1 = byTitle; +var byTitle_1 = byTitle$1; const { patterns } = _dataFns; +const byPattern = _byPattern; -const byDescription = function (doc) { +const byDescription$1 = function (doc) { let tmpl = doc.template('short description'); if (tmpl && tmpl.description) { let desc = tmpl.description || ''; desc = desc.toLowerCase(); // loop through our patterns - let match = _byPattern(desc, patterns.descriptions); + let match = byPattern(desc, patterns.descriptions); if (match) { return [{ @@ -1873,7 +1878,7 @@ const byDescription = function (doc) { return []; }; -var byDescription_1 = byDescription; +var byDescription_1 = byDescription$1; const skip = { disambiguation: true, @@ -1885,7 +1890,7 @@ const paren = /\((.*)\)$/; const listOf = /^list of ./; const disambig = /\(disambiguation\)/; -const skipPage = function (doc) { +const skipPage$1 = function (doc) { let title = doc.title() || ''; //look at parentheses like 'Tornado (film)' let m = title.match(paren); @@ -1915,7 +1920,7 @@ const skipPage = function (doc) { return false; }; -var _skip = skipPage; +var _skip = skipPage$1; const topk = function (arr) { let obj = {}; @@ -1996,7 +2001,7 @@ const getScore = function (detail) { let type = root; if (top) { - type = `${root}/${top[0]}`; // punish for any conflicting children + type = "".concat(root, "/").concat(top[0]); // punish for any conflicting children if (topKids.length > 1) { score *= 0.7; @@ -2016,7 +2021,16 @@ const getScore = function (detail) { }; }; -var score = getScore; +var score$1 = getScore; + +const byInfobox = byInfobox_1; +const byCategory = byCategory_1; +const byTemplate = byTemplate_1; +const bySection = bySection$1; +const byTitle = byTitle_1; +const byDescription = byDescription_1; +const skipPage = _skip; +const score = score$1; const plugin = function (models) { //add a new method to main class @@ -2024,26 +2038,26 @@ const plugin = function (models) { let doc = this; let res = {}; //dont classify these - if (_skip(doc)) { + if (skipPage(doc)) { return score(res); } //look for 'infobox person', etc - res.infobox = byInfobox_1(doc); //look for '{{coord}}' + res.infobox = byInfobox(doc); //look for '{{coord}}' - res.template = byTemplate_1(doc); //look for '==early life==' + res.template = byTemplate(doc); //look for '==early life==' res.section = bySection(doc); //look for 'foo (film)' - res.title = byTitle_1(doc); //look for 'foo (film)' + res.title = byTitle(doc); //look for 'foo (film)' - res.description = byDescription_1(doc); //look for 'Category: 1992 Births', etc + res.description = byDescription(doc); //look for 'Category: 1992 Births', etc - res.category = byCategory_1(doc); + res.category = byCategory(doc); return score(res); }; }; var src = plugin; -export default src; +export { src as default }; diff --git a/plugins/classify/package-lock.json b/plugins/classify/package-lock.json index d152df73..8a2339cb 100644 --- a/plugins/classify/package-lock.json +++ b/plugins/classify/package-lock.json @@ -9,52 +9,56 @@ "version": "1.0.0", "license": "MIT", "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "4.0.0", - "rollup-plugin-node-resolve": "5.2.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", - "dev": true + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -71,83 +75,102 @@ } }, "node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -164,193 +187,249 @@ } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "dependencies": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -359,189 +438,278 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=4" @@ -574,6 +742,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -682,452 +865,570 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -1137,55 +1438,59 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1193,55 +1498,166 @@ "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-babel/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, - "node_modules/@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", + "node_modules/@rollup/plugin-babel/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" } }, - "node_modules/@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "node_modules/@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -1254,15 +1670,6 @@ "integrity": "sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg==", "dev": true }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1306,13 +1713,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" }, "peerDependencies": { @@ -1320,25 +1727,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1361,16 +1768,16 @@ } }, "node_modules/browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" @@ -1389,21 +1796,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "node_modules/buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "node_modules/builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -1418,10 +1810,14 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001207", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001207.tgz", - "integrity": "sha512-UPQZdmAsyp2qfCTiMU/zqGSWOYaY9F9LL61V8f+8MrubsaDGpaHD9HRV/EWZGULZn0Hxu48SKzI5DgFwTvHuYw==", - "dev": true + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } }, "node_modules/chalk": { "version": "2.4.2", @@ -1453,9 +1849,9 @@ "dev": true }, "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "node_modules/commander": { @@ -1464,6 +1860,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1480,12 +1882,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "dependencies": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "funding": { @@ -1503,9 +1905,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/debug": { @@ -1583,33 +1985,37 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.707", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.707.tgz", - "integrity": "sha512-BqddgxNPrcWnbDdJw7SzXVzPmp+oiyjVrc7tkQVaznPGSS9SKZatw6qxoP857M+HbOyyqJQwYQtsuFIMSTNSZA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -1678,12 +2084,6 @@ "node": ">=0.8.0" } }, - "node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1757,10 +2157,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -1772,6 +2197,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { @@ -1804,6 +2232,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1825,6 +2265,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1841,6 +2296,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -1881,9 +2350,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true, "engines": { "node": ">= 0.4" @@ -1925,12 +2394,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, "node_modules/is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -1956,22 +2419,22 @@ } }, "node_modules/is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "dependencies": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -1989,11 +2452,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2044,6 +2519,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -2127,12 +2614,6 @@ "node": ">=6" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -2179,15 +2660,15 @@ "dev": true }, "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2255,15 +2736,33 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "node_modules/randombytes": { @@ -2276,23 +2775,23 @@ } }, "node_modules/re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "node_modules/readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -2303,21 +2802,21 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "dependencies": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" }, "engines": { "node": ">=4" } }, "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "node_modules/regenerator-transform": { @@ -2346,17 +2845,17 @@ } }, "node_modules/regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" @@ -2369,9 +2868,9 @@ "dev": true }, "node_modules/regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -2390,12 +2889,16 @@ } }, "node_modules/resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "dependencies": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resumer": { @@ -2408,9 +2911,9 @@ } }, "node_modules/rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2419,30 +2922,7 @@ "node": ">=10.0.0" }, "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "node_modules/rollup-plugin-filesize-check": { @@ -2451,28 +2931,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "node_modules/rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "dependencies": { - "rollup-pluginutils": "^2.5.0" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "dependencies": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -2485,15 +2943,6 @@ "terser": "^5.0.0" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2567,9 +3016,9 @@ "dev": true }, "node_modules/split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "dependencies": { "through": "2" @@ -2579,23 +3028,23 @@ } }, "node_modules/string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" }, "engines": { "node": ">= 0.4" @@ -2643,101 +3092,40 @@ } }, "node_modules/tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "dependencies": { - "chalk": "4.1.0", - "tap-out": "3.0.0" + "colorette": "^1.2.2", + "tap-in": "3.2.1" }, "bin": { "tap-dancer": "src/index.js" } }, - "node_modules/tap-dancer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tap-dancer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/tap-dancer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/tap-dancer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "bin": { + "tap-in": "bin/tap-in.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", - "dev": true, - "dependencies": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" - }, - "bin": { - "tap-out": "bin/cmd.js" + "node": ">=8.0.0" } }, "node_modules/tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", @@ -2745,17 +3133,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "bin": { @@ -2817,9 +3207,9 @@ } }, "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "node_modules/unbox-primitive": { @@ -2838,40 +3228,40 @@ } }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, "engines": { "node": ">=4" @@ -2956,35 +3346,35 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" } }, "@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true }, "@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -2994,74 +3384,75 @@ } }, "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -3075,339 +3466,370 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, - "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "@babel/plugin-proposal-class-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { @@ -3428,6 +3850,15 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -3509,353 +3940,366 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -3865,52 +4309,53 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" } }, "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -3921,52 +4366,123 @@ } }, "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, "@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -3979,15 +4495,6 @@ "integrity": "sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg==", "dev": true }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -4022,33 +4529,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" } }, "balanced-match": { @@ -4068,16 +4575,16 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "buffer-from": { @@ -4086,18 +4593,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true - }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -4109,9 +4604,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001207", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001207.tgz", - "integrity": "sha512-UPQZdmAsyp2qfCTiMU/zqGSWOYaY9F9LL61V8f+8MrubsaDGpaHD9HRV/EWZGULZn0Hxu48SKzI5DgFwTvHuYw==", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true }, "chalk": { @@ -4141,9 +4636,9 @@ "dev": true }, "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "commander": { @@ -4152,6 +4647,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -4168,12 +4669,12 @@ } }, "core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "requires": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "dependencies": { @@ -4186,9 +4687,9 @@ } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "debug": { @@ -4256,33 +4757,37 @@ } }, "electron-to-chromium": { - "version": "1.3.707", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.707.tgz", - "integrity": "sha512-BqddgxNPrcWnbDdJw7SzXVzPmp+oiyjVrc7tkQVaznPGSS9SKZatw6qxoP857M+HbOyyqJQwYQtsuFIMSTNSZA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" } }, "es-get-iterator": { @@ -4332,12 +4837,6 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4395,10 +4894,26 @@ "has-symbols": "^1.0.1" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4430,6 +4945,15 @@ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, + "has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -4442,6 +4966,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4458,6 +4991,17 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -4483,9 +5027,9 @@ } }, "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-core-module": { @@ -4509,12 +5053,6 @@ "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -4528,22 +5066,22 @@ "dev": true }, "is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "requires": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" } }, "is-set": { @@ -4552,12 +5090,21 @@ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -4586,6 +5133,15 @@ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -4647,12 +5203,6 @@ "minimist": "^1.2.5" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -4696,15 +5246,15 @@ "dev": true }, "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true }, "object-is": { @@ -4751,15 +5301,27 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "randombytes": { @@ -4772,23 +5334,23 @@ } }, "re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -4799,18 +5361,18 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "regenerator-transform": { @@ -4833,17 +5395,17 @@ } }, "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { @@ -4853,9 +5415,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -4870,11 +5432,12 @@ } }, "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -4888,35 +5451,12 @@ } }, "rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "rollup-plugin-filesize-check": { @@ -4925,28 +5465,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "requires": { - "rollup-pluginutils": "^2.5.0" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -4959,15 +5477,6 @@ "terser": "^5.0.0" } }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -5031,32 +5540,32 @@ "dev": true }, "split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "string.prototype.trimend": { @@ -5089,82 +5598,31 @@ } }, "tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "requires": { - "chalk": "4.1.0", - "tap-out": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "colorette": "^1.2.2", + "tap-in": "3.2.1" } }, - "tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", + "tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "requires": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" } }, "tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -5172,17 +5630,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "dependencies": { @@ -5230,9 +5690,9 @@ "dev": true }, "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "unbox-primitive": { @@ -5248,31 +5708,31 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "util-deprecate": { diff --git a/plugins/classify/package.json b/plugins/classify/package.json index de74651d..db836778 100644 --- a/plugins/classify/package.json +++ b/plugins/classify/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-classify", "description": "basic classifier for wikipedia articles", - "version": "1.0.0", + "version": "1.0.1", "main": "./builds/wtf-plugin-classify.js", "unpkg": "./builds/wtf-plugin-classify.min.js", "module": "./builds/wtf-plugin-classify.mjs", @@ -32,17 +32,15 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "4.0.0", - "rollup-plugin-node-resolve": "5.2.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "license": "MIT" -} +} \ No newline at end of file diff --git a/plugins/classify/rollup.config.js b/plugins/classify/rollup.config.js index f1854e7e..081623f9 100644 --- a/plugins/classify/rollup.config.js +++ b/plugins/classify/rollup.config.js @@ -1,6 +1,6 @@ -import commonjs from 'rollup-plugin-commonjs' +import commonjs from '@rollup/plugin-commonjs' import { terser } from 'rollup-plugin-terser' -import babel from 'rollup-plugin-babel' +import { babel } from '@rollup/plugin-babel' import sizeCheck from 'rollup-plugin-filesize-check' import { version } from './package.json' @@ -16,6 +16,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'], }), @@ -37,6 +38,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'], }), @@ -57,6 +59,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'], }), diff --git a/plugins/disambig/builds/wtf-plugin-disambig.js b/plugins/disambig/builds/wtf-plugin-disambig.js index 455cde4b..9fec8fb0 100644 --- a/plugins/disambig/builds/wtf-plugin-disambig.js +++ b/plugins/disambig/builds/wtf-plugin-disambig.js @@ -1,11 +1,10 @@ -/* wtf-plugin-disambig 0.0.1 MIT */ +/* wtf-plugin-disambig 0.0.2 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfdisambig = factory()); -}(this, (function () { 'use strict'; +})(this, (function () { 'use strict'; - // const birthDate = require('./birthDate') const shouldSkip = /see also/; function escapeRegExp(str) { @@ -119,5 +118,5 @@ return src; -}))); +})); //# sourceMappingURL=wtf-plugin-disambig.js.map diff --git a/plugins/disambig/builds/wtf-plugin-disambig.js.map b/plugins/disambig/builds/wtf-plugin-disambig.js.map index 7c2f52c6..167c5e64 100644 --- a/plugins/disambig/builds/wtf-plugin-disambig.js.map +++ b/plugins/disambig/builds/wtf-plugin-disambig.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-disambig.js","sources":["../src/index.js"],"sourcesContent":["// const birthDate = require('./birthDate')\nconst shouldSkip = /see also/\n\nfunction escapeRegExp(str) {\n str = str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') // $& means the whole matched string\n return new RegExp(str, 'i')\n}\n\nconst parseLine = function (line) {\n let link = line.link(0)\n if (!link || link.type() !== 'internal') {\n return null\n }\n let desc = line.text()\n let reg = escapeRegExp(link.text())\n // ensure the link is toward the start of the sentence\n let m = desc.match(reg)\n if (!m || m.index > 20) {\n return null\n }\n desc = desc.replace(reg, '')\n desc = desc.replace(/[,:]? ?/, '')\n return {\n link: link.page(),\n desc: desc,\n }\n}\n\n// A '''[[berry]]''' is a small, pulpy and often edible fruit in non-technical language.\nconst getMain = function (s) {\n let txt = s.text().slice(0, 120)\n if (!txt.match(/ is /)) {\n return null\n }\n let link = s.link(0)\n if (!link) {\n return null\n }\n let reg = escapeRegExp(link.text())\n // ensure the link is toward the start of the sentence\n let m = txt.match(reg)\n if (!m || m.index > 20) {\n return null\n }\n return link.page()\n}\n\nconst getTitle = function (doc) {\n let title = doc.title() || ''\n title = title.replace(/ \\(disambig|disambiguation\\)$/, '')\n return title\n}\n\nconst addMethod = function (models) {\n // parse a disambiguation page into an array of pages\n models.Doc.prototype.disambiguation = function () {\n if (this.isDisambiguation() !== true) {\n return null\n }\n // remove 'see also'\n let sec = this.section('see also')\n if (sec !== null) {\n sec.remove()\n }\n let intro = this.section().sentence()\n let main = getMain(intro)\n\n let pages = []\n this.sections().forEach((s) => {\n let title = s.title()\n if (shouldSkip.test(title) === true) {\n return\n }\n s.lists().forEach((list) => {\n list.lines().forEach((line) => {\n let found = parseLine(line)\n if (found) {\n found.section = title\n pages.push(found)\n }\n })\n })\n })\n return {\n text: getTitle(this),\n main: main,\n pages: pages,\n }\n }\n // alias\n models.Doc.prototype.disambig = models.Doc.prototype.disambiguation\n}\nmodule.exports = addMethod\n"],"names":["shouldSkip","escapeRegExp","str","replace","RegExp","parseLine","line","link","type","desc","text","reg","m","match","index","page","getMain","s","txt","slice","getTitle","doc","title","addMethod","models","Doc","prototype","disambiguation","isDisambiguation","sec","section","remove","intro","sentence","main","pages","sections","forEach","test","lists","list","lines","found","push","disambig"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-disambig.js","sources":["../src/index.js"],"sourcesContent":["// const birthDate = require('./birthDate')\nconst shouldSkip = /see also/\n\nfunction escapeRegExp(str) {\n str = str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') // $& means the whole matched string\n return new RegExp(str, 'i')\n}\n\nconst parseLine = function (line) {\n let link = line.link(0)\n if (!link || link.type() !== 'internal') {\n return null\n }\n let desc = line.text()\n let reg = escapeRegExp(link.text())\n // ensure the link is toward the start of the sentence\n let m = desc.match(reg)\n if (!m || m.index > 20) {\n return null\n }\n desc = desc.replace(reg, '')\n desc = desc.replace(/[,:]? ?/, '')\n return {\n link: link.page(),\n desc: desc,\n }\n}\n\n// A '''[[berry]]''' is a small, pulpy and often edible fruit in non-technical language.\nconst getMain = function (s) {\n let txt = s.text().slice(0, 120)\n if (!txt.match(/ is /)) {\n return null\n }\n let link = s.link(0)\n if (!link) {\n return null\n }\n let reg = escapeRegExp(link.text())\n // ensure the link is toward the start of the sentence\n let m = txt.match(reg)\n if (!m || m.index > 20) {\n return null\n }\n return link.page()\n}\n\nconst getTitle = function (doc) {\n let title = doc.title() || ''\n title = title.replace(/ \\(disambig|disambiguation\\)$/, '')\n return title\n}\n\nconst addMethod = function (models) {\n // parse a disambiguation page into an array of pages\n models.Doc.prototype.disambiguation = function () {\n if (this.isDisambiguation() !== true) {\n return null\n }\n // remove 'see also'\n let sec = this.section('see also')\n if (sec !== null) {\n sec.remove()\n }\n let intro = this.section().sentence()\n let main = getMain(intro)\n\n let pages = []\n this.sections().forEach((s) => {\n let title = s.title()\n if (shouldSkip.test(title) === true) {\n return\n }\n s.lists().forEach((list) => {\n list.lines().forEach((line) => {\n let found = parseLine(line)\n if (found) {\n found.section = title\n pages.push(found)\n }\n })\n })\n })\n return {\n text: getTitle(this),\n main: main,\n pages: pages,\n }\n }\n // alias\n models.Doc.prototype.disambig = models.Doc.prototype.disambiguation\n}\nmodule.exports = addMethod\n"],"names":["shouldSkip","escapeRegExp","str","replace","RegExp","parseLine","line","link","type","desc","text","reg","m","match","index","page","getMain","s","txt","slice","getTitle","doc","title","addMethod","models","Doc","prototype","disambiguation","isDisambiguation","sec","section","remove","intro","sentence","main","pages","sections","forEach","test","lists","list","lines","found","push","disambig","src"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/disambig/builds/wtf-plugin-disambig.mjs b/plugins/disambig/builds/wtf-plugin-disambig.mjs index 3334436b..4aa31f92 100644 --- a/plugins/disambig/builds/wtf-plugin-disambig.mjs +++ b/plugins/disambig/builds/wtf-plugin-disambig.mjs @@ -1,5 +1,4 @@ -/* wtf-plugin-disambig 0.0.1 MIT */ -// const birthDate = require('./birthDate') +/* wtf-plugin-disambig 0.0.2 MIT */ const shouldSkip = /see also/; function escapeRegExp(str) { @@ -111,4 +110,4 @@ const addMethod = function (models) { var src = addMethod; -export default src; +export { src as default }; diff --git a/plugins/disambig/package-lock.json b/plugins/disambig/package-lock.json index 86a5f589..1f0706b9 100644 --- a/plugins/disambig/package-lock.json +++ b/plugins/disambig/package-lock.json @@ -9,57 +9,61 @@ "version": "0.0.1", "license": "MIT", "dependencies": { - "compromise": "13.10.5", - "spacetime": "6.14.0" + "compromise": "13.11.4", + "spacetime": "6.16.3" }, "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "@rollup/plugin-node-resolve": "11.2.1", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "13.0.6", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^5.1.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", - "dev": true + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -76,77 +80,102 @@ } }, "node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -163,193 +192,249 @@ } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "dependencies": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -358,159 +443,284 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-async-generators": { @@ -520,6 +730,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-class-properties": { @@ -531,6 +744,21 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -538,6 +766,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-export-namespace-from": { @@ -547,6 +778,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-json-strings": { @@ -556,6 +790,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { @@ -565,6 +802,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { @@ -574,6 +814,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-numeric-separator": { @@ -583,8 +826,11 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" - } - }, + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", @@ -592,6 +838,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { @@ -601,6 +850,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-chaining": { @@ -615,353 +867,570 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -971,55 +1440,59 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1027,59 +1500,124 @@ "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" } }, - "node_modules/@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true }, "node_modules/@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", @@ -1093,7 +1631,7 @@ "node": ">= 10.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "rollup": "^2.42.0" } }, "node_modules/@rollup/pluginutils": { @@ -1171,13 +1709,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" }, "peerDependencies": { @@ -1185,25 +1723,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1226,22 +1764,26 @@ } }, "node_modules/browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" } }, "node_modules/buffer-from": { @@ -1250,12 +1792,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "node_modules/buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, "node_modules/builtin-modules": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", @@ -1276,10 +1812,14 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001203", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001203.tgz", - "integrity": "sha512-/I9tvnzU/PHMH7wBPrfDMSuecDeUKerjCPX7D0xBbaJZPxoT9m+yYxt0zCTkcijCkjTdim3H56Zm0i5Adxch4w==", - "dev": true + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } }, "node_modules/chalk": { "version": "2.4.2", @@ -1311,9 +1851,9 @@ "dev": true }, "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "node_modules/commander": { @@ -1322,15 +1862,21 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "node_modules/compromise": { - "version": "13.10.5", - "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.10.5.tgz", - "integrity": "sha512-je5+lMKnQWmWfYZiO9IXtxWHr3KA4dQiyzVHsZskfNgGVHlSFK2sWreosoBYeRmP9/JrHiggSdDWE1lqPejvmA==", + "version": "13.11.4", + "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.11.4.tgz", + "integrity": "sha512-nBITcNdqIHSVDDluaG6guyFFCSNXN+Hu87fU8VlhkE5Z0PwTZN1nro2O7a8JcUH88nB5EOzrxd9zKfXLSNFqcg==", "dependencies": { "efrt-unpack": "2.2.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=8.0.0" } }, "node_modules/concat-map": { @@ -1349,13 +1895,17 @@ } }, "node_modules/core-js-compat": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz", - "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "dependencies": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, "node_modules/core-js-compat/node_modules/semver": { @@ -1368,9 +1918,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/debug": { @@ -1459,36 +2009,43 @@ "integrity": "sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==" }, "node_modules/electron-to-chromium": { - "version": "1.3.693", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.693.tgz", - "integrity": "sha512-vUdsE8yyeu30RecppQtI+XTz2++LWLVEIYmzeCaCRLSdtKZ2eXqdJcrs85KwLiPOPVc6PELgWyXBsfqIvzGZag==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es-get-iterator": { @@ -1621,10 +2178,35 @@ "has-symbols": "^1.0.1" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -1636,6 +2218,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { @@ -1663,7 +2248,22 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/has-flag": { "version": "3.0.0", @@ -1683,6 +2283,21 @@ "node": ">= 0.4" } }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1699,6 +2314,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -1730,12 +2359,15 @@ } }, "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-core-module": { @@ -1796,16 +2428,19 @@ } }, "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-set": { @@ -1814,13 +2449,28 @@ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-symbol": { @@ -1857,6 +2507,18 @@ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -1937,12 +2599,6 @@ "node": ">=6" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -1989,16 +2645,19 @@ "dev": true }, "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/object-is": { "version": "1.1.5", @@ -2056,9 +2715,15 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "node_modules/picomatch": { @@ -2071,9 +2736,9 @@ } }, "node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "node_modules/randombytes": { @@ -2086,23 +2751,23 @@ } }, "node_modules/re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "node_modules/readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -2113,21 +2778,21 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "dependencies": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" }, "engines": { "node": ">=4" } }, "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "node_modules/regenerator-transform": { @@ -2153,17 +2818,17 @@ } }, "node_modules/regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" @@ -2176,9 +2841,9 @@ "dev": true }, "node_modules/regjsparser": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", - "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -2216,9 +2881,9 @@ } }, "node_modules/rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2227,75 +2892,15 @@ "node": ">=10.0.0" }, "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, - "node_modules/rollup-plugin-commonjs/node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "node_modules/rollup-plugin-filesize-check": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/rollup-plugin-filesize-check/-/rollup-plugin-filesize-check-0.0.1.tgz", "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "node_modules/rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "dependencies": { - "rollup-pluginutils": "^2.5.0" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "dependencies": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, - "node_modules/rollup-plugin-node-resolve/node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -2308,21 +2913,6 @@ "terser": "^5.0.0" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, - "node_modules/rollup-pluginutils/node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2393,14 +2983,14 @@ "dev": true }, "node_modules/spacetime": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.14.0.tgz", - "integrity": "sha512-pz/nMIRGNSJeFfDFvhPjMHXhFU1NcrYnpydMuSS2Zsk0NEoHJc2rRKXugkmlqUv/l/fPxWVJVnj8isVS0//vbQ==" + "version": "6.16.3", + "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.16.3.tgz", + "integrity": "sha512-JQEfj3VHT1gU1IMV5NvhgAP8P+2mDFd84ZCiHN//dp6hRKmuW0IizHissy62lO0nilfFjVhnoSaMC7te+Y5f4A==" }, "node_modules/split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "dependencies": { "through": "2" @@ -2410,26 +3000,29 @@ } }, "node_modules/string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimend": { @@ -2465,101 +3058,40 @@ } }, "node_modules/tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "dependencies": { - "chalk": "4.1.0", - "tap-out": "3.0.0" + "colorette": "^1.2.2", + "tap-in": "3.2.1" }, "bin": { "tap-dancer": "src/index.js" } }, - "node_modules/tap-dancer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tap-dancer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/tap-dancer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/tap-dancer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "bin": { + "tap-in": "bin/tap-in.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", - "dev": true, - "dependencies": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" - }, - "bin": { - "tap-out": "bin/cmd.js" + "node": ">=8.0.0" } }, "node_modules/tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", @@ -2567,17 +3099,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "bin": { @@ -2639,58 +3173,61 @@ } }, "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "node_modules/unbox-primitive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", - "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", "dev": true, "dependencies": { "function-bind": "^1.1.1", - "has-bigints": "^1.0.0", - "has-symbols": "^1.0.0", - "which-boxed-primitive": "^1.0.1" + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, "engines": { "node": ">=4" @@ -2766,35 +3303,35 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" } }, "@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true }, "@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -2804,74 +3341,75 @@ } }, "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -2885,339 +3423,370 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { @@ -3238,6 +3807,15 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -3319,353 +3897,366 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -3675,52 +4266,53 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" } }, "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -3731,56 +4323,89 @@ } }, "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, "@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -3857,33 +4482,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" } }, "balanced-match": { @@ -3903,16 +4528,16 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "buffer-from": { @@ -3921,12 +4546,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, "builtin-modules": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", @@ -3944,9 +4563,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001203", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001203.tgz", - "integrity": "sha512-/I9tvnzU/PHMH7wBPrfDMSuecDeUKerjCPX7D0xBbaJZPxoT9m+yYxt0zCTkcijCkjTdim3H56Zm0i5Adxch4w==", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true }, "chalk": { @@ -3976,9 +4595,9 @@ "dev": true }, "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "commander": { @@ -3987,10 +4606,16 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "compromise": { - "version": "13.10.5", - "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.10.5.tgz", - "integrity": "sha512-je5+lMKnQWmWfYZiO9IXtxWHr3KA4dQiyzVHsZskfNgGVHlSFK2sWreosoBYeRmP9/JrHiggSdDWE1lqPejvmA==", + "version": "13.11.4", + "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.11.4.tgz", + "integrity": "sha512-nBITcNdqIHSVDDluaG6guyFFCSNXN+Hu87fU8VlhkE5Z0PwTZN1nro2O7a8JcUH88nB5EOzrxd9zKfXLSNFqcg==", "requires": { "efrt-unpack": "2.2.0" } @@ -4011,12 +4636,12 @@ } }, "core-js-compat": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz", - "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "requires": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "dependencies": { @@ -4029,9 +4654,9 @@ } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "debug": { @@ -4110,33 +4735,37 @@ "integrity": "sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==" }, "electron-to-chromium": { - "version": "1.3.693", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.693.tgz", - "integrity": "sha512-vUdsE8yyeu30RecppQtI+XTz2++LWLVEIYmzeCaCRLSdtKZ2eXqdJcrs85KwLiPOPVc6PELgWyXBsfqIvzGZag==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" } }, "es-get-iterator": { @@ -4249,10 +4878,26 @@ "has-symbols": "^1.0.1" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4284,6 +4929,15 @@ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, + "has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -4296,6 +4950,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4312,6 +4975,17 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -4337,9 +5011,9 @@ } }, "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-core-module": { @@ -4391,13 +5065,13 @@ } }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" } }, "is-set": { @@ -4406,12 +5080,21 @@ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -4440,6 +5123,15 @@ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -4501,12 +5193,6 @@ "minimist": "^1.2.5" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -4550,15 +5236,15 @@ "dev": true }, "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true }, "object-is": { @@ -4605,9 +5291,15 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "picomatch": { @@ -4617,9 +5309,9 @@ "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "randombytes": { @@ -4632,23 +5324,23 @@ } }, "re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -4659,18 +5351,18 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "regenerator-transform": { @@ -4693,17 +5385,17 @@ } }, "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { @@ -4713,9 +5405,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", - "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -4749,43 +5441,12 @@ } }, "rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" - }, - "dependencies": { - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - } + "fsevents": "~2.3.2" } }, "rollup-plugin-filesize-check": { @@ -4794,39 +5455,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "requires": { - "rollup-pluginutils": "^2.5.0" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - }, - "dependencies": { - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - } - } - }, "rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -4839,23 +5467,6 @@ "terser": "^5.0.0" } }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - }, - "dependencies": { - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - } - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -4919,37 +5530,37 @@ "dev": true }, "spacetime": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.14.0.tgz", - "integrity": "sha512-pz/nMIRGNSJeFfDFvhPjMHXhFU1NcrYnpydMuSS2Zsk0NEoHJc2rRKXugkmlqUv/l/fPxWVJVnj8isVS0//vbQ==" + "version": "6.16.3", + "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.16.3.tgz", + "integrity": "sha512-JQEfj3VHT1gU1IMV5NvhgAP8P+2mDFd84ZCiHN//dp6hRKmuW0IizHissy62lO0nilfFjVhnoSaMC7te+Y5f4A==" }, "split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "string.prototype.trimend": { @@ -4982,82 +5593,31 @@ } }, "tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "requires": { - "chalk": "4.1.0", - "tap-out": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "colorette": "^1.2.2", + "tap-in": "3.2.1" } }, - "tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", + "tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "requires": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" } }, "tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -5065,17 +5625,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "dependencies": { @@ -5123,49 +5685,49 @@ "dev": true }, "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "unbox-primitive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", - "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", "dev": true, "requires": { "function-bind": "^1.1.1", - "has-bigints": "^1.0.0", - "has-symbols": "^1.0.0", - "which-boxed-primitive": "^1.0.1" + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "util-deprecate": { diff --git a/plugins/disambig/package.json b/plugins/disambig/package.json index 14a0a951..8eea69f6 100644 --- a/plugins/disambig/package.json +++ b/plugins/disambig/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-disambig", "description": "disambig-details plugin for wtf_wikipedia", - "version": "0.0.1", + "version": "0.0.2", "main": "./builds/wtf-plugin-disambig.js", "unpkg": "./builds/wtf-plugin-disambig.min.js", "module": "./builds/wtf-plugin-disambig.mjs", @@ -28,25 +28,23 @@ "printWidth": 100 }, "dependencies": { - "compromise": "13.10.5", - "spacetime": "6.14.0" + "compromise": "13.11.4", + "spacetime": "6.16.3" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "@rollup/plugin-node-resolve": "11.2.1", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "13.0.6", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^5.1.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "license": "MIT" -} +} \ No newline at end of file diff --git a/plugins/disambig/rollup.config.js b/plugins/disambig/rollup.config.js index e25c60ec..c6c16641 100644 --- a/plugins/disambig/rollup.config.js +++ b/plugins/disambig/rollup.config.js @@ -1,8 +1,8 @@ -import commonjs from 'rollup-plugin-commonjs' +import commonjs from '@rollup/plugin-commonjs' import { terser } from 'rollup-plugin-terser' -import babel from 'rollup-plugin-babel' +import { babel } from '@rollup/plugin-babel' import sizeCheck from 'rollup-plugin-filesize-check' -import resolve from '@rollup/plugin-node-resolve' //import spacetime +import { nodeResolve } from '@rollup/plugin-node-resolve' //import spacetime import { version } from './package.json' console.log('\n 📦 - running rollup..\n') @@ -15,9 +15,10 @@ export default [ input: 'src/index.js', output: [{ banner: banner, file: `builds/${name}.mjs`, format: 'esm' }], plugins: [ - resolve(), - commonjs(), + nodeResolve(), + commonjs({ requireReturnsDefault: "auto" }), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'], }), @@ -37,9 +38,10 @@ export default [ }, ], plugins: [ - resolve(), - commonjs(), + nodeResolve(), + commonjs({ requireReturnsDefault: "auto" }), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'], }), @@ -58,9 +60,10 @@ export default [ }, ], plugins: [ - resolve(), - commonjs(), + nodeResolve(), + commonjs({ requireReturnsDefault: "auto" }), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'], }), diff --git a/plugins/html/builds/wtf-plugin-html.js b/plugins/html/builds/wtf-plugin-html.js index 047731d3..98fe8823 100644 --- a/plugins/html/builds/wtf-plugin-html.js +++ b/plugins/html/builds/wtf-plugin-html.js @@ -1,9 +1,9 @@ -/* wtf-plugin-html 0.2.2 MIT */ +/* wtf-plugin-html 0.2.3 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfHtml = factory()); -}(this, (function () { 'use strict'; +})(this, (function () { 'use strict'; const defaults$4 = { title: true, @@ -22,9 +22,7 @@ href += '#' + link.anchor; } - return `
- ↳ ${link.text} -
`; + return " "); }; //turn a Doc object into a HTML string @@ -135,13 +133,12 @@ var _03Paragraph = toHtml$4; - //escape a string like 'fun*2.Co' for a regExpr function escapeRegExp(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); + return str.replace(/[\-[\]/{}()*+?.\\^$|]/g, '\\$&'); } //sometimes text-replacements can be ambiguous - words used multiple times.. - const smartReplace = function (all, text, result) { + const smartReplace$1 = function (all, text, result) { if (!text || !all) { return all; } @@ -165,8 +162,9 @@ return all; }; - var smartReplace_1 = smartReplace; + var smartReplace_1 = smartReplace$1; + const smartReplace = smartReplace_1; const defaults$1 = { links: true, formatting: true @@ -180,7 +178,7 @@ this.links().forEach(link => { let str = link.text() || link.page(); let tag = link.html(); - text = smartReplace_1(text, str, tag); + text = smartReplace(text, str, tag); }); } @@ -188,12 +186,12 @@ //support bolds this.bolds().forEach(str => { let tag = '' + str + ''; - text = smartReplace_1(text, str, tag); + text = smartReplace(text, str, tag); }); //do italics this.italics().forEach(str => { let tag = '' + str + ''; - text = smartReplace_1(text, str, tag); + text = smartReplace(text, str, tag); }); } @@ -207,7 +205,7 @@ let href = this.href(); href = href.replace(/ /g, '_'); let str = this.text() || this.page(); - return `${str}`; + return "").concat(str, ""); }; var _05Link = toHtml$3; @@ -223,7 +221,7 @@ 'signature alt': true }; // - const infobox = function (options) { + const infobox$1 = function (options) { options = Object.assign({}, defaults, options); let html = '\n'; html += ' \n'; @@ -266,15 +264,14 @@ return html; }; - var infobox_1 = infobox; + var infobox_1 = infobox$1; const makeImage = function () { return ' ' + this.alt() + ''; }; - var image = makeImage; + var image$1 = makeImage; - // const toHtml$2 = function (options) { let html = '
    \n'; this.lines().forEach(s => { @@ -284,22 +281,21 @@ return html; }; - var list = toHtml$2; + var list$1 = toHtml$2; - // const toHtml$1 = function (options) { if (this.data && this.data.url && this.data.title) { let str = this.data.title; if (options.links === true) { - str = `${str}`; + str = "").concat(str, ""); } - return `
    ⌃ ${str}
    `; + return "
    \u2303 ".concat(str, "
    "); } if (this.data.encyclopedia) { - return `
    ⌃ ${this.data.encyclopedia}
    `; + return "
    \u2303 ".concat(this.data.encyclopedia, "
    "); } if (this.data.title) { @@ -314,19 +310,18 @@ str += this.data.first + ' ' + this.data.last; } - return `
    ⌃ ${str}
    `; + return "
    \u2303 ".concat(str, "
    "); } if (this.inline) { - return `
    ⌃ ${this.inline.html()}
    `; + return "
    \u2303 ".concat(this.inline.html(), "
    "); } return ''; }; - var reference = toHtml$1; + var reference$1 = toHtml$1; - //turn a json table into a html table const toHtml = function (options) { let rows = this.data; let html = '
\n'; //make header @@ -355,16 +350,27 @@ return html; }; - var table = toHtml; + var table$1 = toHtml; + + const doc = _01Doc; + const section = _02Section; + const paragraph = _03Paragraph; + const sentence = _04Sentence; + const link = _05Link; + const infobox = infobox_1; + const image = image$1; + const list = list$1; + const reference = reference$1; + const table = table$1; const plugin = function (models) { - models.Doc.prototype.html = _01Doc; - models.Section.prototype.html = _02Section; - models.Paragraph.prototype.html = _03Paragraph; - models.Sentence.prototype.html = _04Sentence; + models.Doc.prototype.html = doc; + models.Section.prototype.html = section; + models.Paragraph.prototype.html = paragraph; + models.Sentence.prototype.html = sentence; models.Image.prototype.html = image; - models.Infobox.prototype.html = infobox_1; - models.Link.prototype.html = _05Link; + models.Infobox.prototype.html = infobox; + models.Link.prototype.html = link; models.List.prototype.html = list; models.Reference.prototype.html = reference; models.Table.prototype.html = table; // models.Template.html = function(opts) {} @@ -374,5 +380,5 @@ return src; -}))); +})); //# sourceMappingURL=wtf-plugin-html.js.map diff --git a/plugins/html/builds/wtf-plugin-html.js.map b/plugins/html/builds/wtf-plugin-html.js.map index cbaae4f8..989e43cb 100644 --- a/plugins/html/builds/wtf-plugin-html.js.map +++ b/plugins/html/builds/wtf-plugin-html.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-html.js","sources":["../src/01-doc.js","../src/02-section.js","../src/03-paragraph.js","../src/_lib/smartReplace.js","../src/04-sentence.js","../src/05-link.js","../src/infobox.js","../src/image.js","../src/list.js","../src/reference.js","../src/table.js","../src/index.js"],"sourcesContent":["const defaults = {\n title: true,\n infoboxes: true,\n headers: true,\n sections: true,\n links: true\n}\n//we should try to make this look like the wikipedia does, i guess.\nconst softRedirect = function (doc) {\n let link = doc.redirectTo()\n let href = link.page\n href = './' + href.replace(/ /g, '_')\n if (link.anchor) {\n href += '#' + link.anchor\n }\n return `
\n ↳ ${link.text}\n
`\n}\n\n//turn a Doc object into a HTML string\nconst toHtml = function (options) {\n options = Object.assign({}, defaults, options)\n let html = ''\n //add page title\n if (options.title === true && this._title) {\n html += '' + this._title + '\\n'\n }\n //if it's a redirect page, give it a 'soft landing':\n if (this.isRedirect() === true) {\n html += softRedirect(this)\n return html\n }\n //render infoboxes (up at the top)\n if (options.infoboxes === true) {\n html += this.infoboxes()\n .map((i) => i.html(options))\n .join('\\n')\n }\n //render each section\n if (options.sections === true || options.paragraphs === true || options.sentences === true) {\n html += this.sections()\n .map((s) => s.html(options))\n .join('\\n')\n }\n //default off\n if (options.references === true) {\n html += '

References

'\n html += this.references()\n .map((c) => c.html(options))\n .join('\\n')\n }\n return html\n}\nmodule.exports = toHtml\n","const defaults = {\n headers: true,\n images: true,\n tables: true,\n lists: true,\n paragraphs: true\n}\n\nconst doSection = function (options) {\n options = Object.assign({}, defaults, options)\n let html = ''\n //make the header\n if (options.headers === true && this.title()) {\n let num = 1 + this.depth()\n html += ' ' + this.title() + ''\n html += '\\n'\n }\n //put any images under the header\n if (options.images === true) {\n let imgs = this.images()\n if (imgs.length > 0) {\n html += imgs.map((image) => image.html(options)).join('\\n')\n }\n }\n //make a html table\n if (options.tables === true) {\n html += this.tables()\n .map((t) => t.html(options))\n .join('\\n')\n }\n //make a html bullet-list\n if (options.lists === true) {\n html += this.lists()\n .map((list) => list.html(options))\n .join('\\n')\n }\n\n //finally, write the sentence text.\n if (options.paragraphs === true && this.paragraphs().length > 0) {\n html += '
\\n'\n this.paragraphs().forEach((p) => {\n html += '

\\n'\n html +=\n ' ' +\n p\n .sentences()\n .map((s) => s.html(options))\n .join(' ')\n html += '\\n

\\n'\n })\n html += '
\\n'\n } else if (options.sentences === true) {\n html +=\n ' ' +\n this.sentences()\n .map((s) => s.html(options))\n .join(' ')\n }\n return '
\\n' + html + '
\\n'\n}\n\nmodule.exports = doSection\n","const defaults = {\n sentences: true\n}\n\nconst toHtml = function (options) {\n options = Object.assign({}, defaults, options)\n let html = ''\n if (options.sentences === true) {\n html += this.sentences()\n .map((s) => s.html(options))\n .join('\\n')\n }\n return html\n}\nmodule.exports = toHtml\n","//escape a string like 'fun*2.Co' for a regExpr\nfunction escapeRegExp(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&')\n}\n\n//sometimes text-replacements can be ambiguous - words used multiple times..\nconst smartReplace = function (all, text, result) {\n if (!text || !all) {\n return all\n }\n\n if (typeof all === 'number') {\n all = String(all)\n }\n text = escapeRegExp(text)\n //try a word-boundary replace\n let reg = new RegExp('\\\\b' + text + '\\\\b')\n if (reg.test(all) === true) {\n all = all.replace(reg, result)\n } else {\n //otherwise, fall-back to a much messier, dangerous replacement\n // console.warn('missing \\'' + text + '\\'');\n all = all.replace(text, result)\n }\n return all\n}\n\nmodule.exports = smartReplace\n","const smartReplace = require('./_lib/smartReplace')\n\nconst defaults = {\n links: true,\n formatting: true\n}\n// create links, bold, italic in html\nconst doSentence = function (options) {\n options = Object.assign({}, defaults, options)\n let text = this.text()\n //turn links into \n if (options.links === true) {\n this.links().forEach((link) => {\n let str = link.text() || link.page()\n let tag = link.html()\n text = smartReplace(text, str, tag)\n })\n }\n if (options.formatting === true) {\n //support bolds\n this.bolds().forEach((str) => {\n let tag = '' + str + ''\n text = smartReplace(text, str, tag)\n })\n //do italics\n this.italics().forEach((str) => {\n let tag = '' + str + ''\n text = smartReplace(text, str, tag)\n })\n }\n return '' + text + ''\n}\nmodule.exports = doSentence\n","const toHtml = function () {\n let classNames = 'link'\n let href = this.href()\n href = href.replace(/ /g, '_')\n let str = this.text() || this.page()\n return `${str}`\n}\nmodule.exports = toHtml\n","const defaults = {\n images: true\n}\nconst dontDo = {\n image: true,\n caption: true,\n alt: true,\n signature: true,\n 'signature alt': true\n}\n\n//\nconst infobox = function (options) {\n options = Object.assign({}, defaults, options)\n let html = '
\\n'\n html += ' \\n'\n html += ' \\n'\n html += ' \\n'\n //put image and caption on the top\n if (options.images === true && this.data.image) {\n html += ' \\n'\n html += ' \\n'\n if (this.data.caption || this.data.alt) {\n let caption = this.data.caption\n ? this.data.caption.html(options)\n : this.data.alt.html(options)\n html += ' \\n'\n }\n html += ' \\n'\n }\n Object.keys(this.data).forEach((k) => {\n if (dontDo[k] === true) {\n return\n }\n let s = this.data[k]\n let key = k.replace(/_/g, ' ')\n key = key.charAt(0).toUpperCase() + key.substring(1) //titlecase it\n let val = s.html(options)\n html += ' \\n'\n html += ' \\n'\n html += ' \\n'\n html += ' \\n'\n })\n html += ' \\n'\n html += '
\\n'\n html += ' ' + this.image().html() + '\\n'\n html += ' \\n'\n html += ' ' + caption + '\\n'\n html += '
' + key + '' + val + '
\\n'\n return html\n}\nmodule.exports = infobox\n","const makeImage = function () {\n return ' \"''\n}\nmodule.exports = makeImage\n","//\nconst toHtml = function (options) {\n let html = '
    \\n'\n this.lines().forEach((s) => {\n html += '
  • ' + s.html(options) + '
  • \\n'\n })\n html += '
\\n'\n return html\n}\nmodule.exports = toHtml\n","//\nconst toHtml = function (options) {\n if (this.data && this.data.url && this.data.title) {\n let str = this.data.title\n if (options.links === true) {\n str = `${str}`\n }\n return `
⌃ ${str}
`\n }\n if (this.data.encyclopedia) {\n return `
⌃ ${this.data.encyclopedia}
`\n }\n if (this.data.title) {\n //cite book, etc\n let str = this.data.title\n if (this.data.author) {\n str += this.data.author\n }\n if (this.data.first && this.data.last) {\n str += this.data.first + ' ' + this.data.last\n }\n return `
⌃ ${str}
`\n }\n if (this.inline) {\n return `
⌃ ${this.inline.html()}
`\n }\n return ''\n}\nmodule.exports = toHtml\n","//turn a json table into a html table\nconst toHtml = function (options) {\n let rows = this.data\n let html = '\\n'\n //make header\n html += ' \\n'\n html += ' \\n'\n\n Object.keys(rows[0]).forEach((k) => {\n if (/^col[0-9]/.test(k) !== true) {\n html += ' \\n'\n }\n })\n html += ' \\n'\n html += ' \\n'\n html += ' \\n'\n\n //make rows\n rows.forEach((o) => {\n html += ' \\n'\n Object.keys(o).forEach((k) => {\n let val = o[k].html(options)\n html += ' \\n'\n })\n html += ' \\n'\n })\n html += ' \\n'\n html += '
' + k + '
' + val + '
\\n'\n return html\n}\nmodule.exports = toHtml\n","const doc = require('./01-doc')\nconst section = require('./02-section')\nconst paragraph = require('./03-paragraph')\nconst sentence = require('./04-sentence')\nconst link = require('./05-link')\nconst infobox = require('./infobox')\nconst image = require('./image')\nconst list = require('./list')\nconst reference = require('./reference')\nconst table = require('./table')\n\nconst plugin = function (models) {\n models.Doc.prototype.html = doc\n\n models.Section.prototype.html = section\n\n models.Paragraph.prototype.html = paragraph\n\n models.Sentence.prototype.html = sentence\n\n models.Image.prototype.html = image\n\n models.Infobox.prototype.html = infobox\n\n models.Link.prototype.html = link\n\n models.List.prototype.html = list\n\n models.Reference.prototype.html = reference\n\n models.Table.prototype.html = table\n\n // models.Template.html = function(opts) {}\n}\nmodule.exports = plugin\n"],"names":["defaults","title","infoboxes","headers","sections","links","softRedirect","doc","link","redirectTo","href","page","replace","anchor","text","toHtml","options","Object","assign","html","_title","isRedirect","map","i","join","paragraphs","sentences","s","references","c","images","tables","lists","doSection","num","depth","imgs","length","image","t","list","forEach","p","escapeRegExp","str","smartReplace","all","result","String","reg","RegExp","test","formatting","doSentence","tag","bolds","italics","classNames","dontDo","caption","alt","signature","infobox","data","keys","k","key","charAt","toUpperCase","substring","val","makeImage","thumbnail","lines","url","encyclopedia","author","first","last","inline","rows","o","plugin","models","Doc","prototype","Section","section","Paragraph","paragraph","Sentence","sentence","Image","Infobox","Link","List","Reference","reference","Table","table"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-html.js","sources":["../src/01-doc.js","../src/02-section.js","../src/03-paragraph.js","../src/_lib/smartReplace.js","../src/04-sentence.js","../src/05-link.js","../src/infobox.js","../src/image.js","../src/list.js","../src/reference.js","../src/table.js","../src/index.js"],"sourcesContent":["const defaults = {\n title: true,\n infoboxes: true,\n headers: true,\n sections: true,\n links: true\n}\n//we should try to make this look like the wikipedia does, i guess.\nconst softRedirect = function (doc) {\n let link = doc.redirectTo()\n let href = link.page\n href = './' + href.replace(/ /g, '_')\n if (link.anchor) {\n href += '#' + link.anchor\n }\n return `
\n ↳ ${link.text}\n
`\n}\n\n//turn a Doc object into a HTML string\nconst toHtml = function (options) {\n options = Object.assign({}, defaults, options)\n let html = ''\n //add page title\n if (options.title === true && this._title) {\n html += '' + this._title + '\\n'\n }\n //if it's a redirect page, give it a 'soft landing':\n if (this.isRedirect() === true) {\n html += softRedirect(this)\n return html\n }\n //render infoboxes (up at the top)\n if (options.infoboxes === true) {\n html += this.infoboxes()\n .map((i) => i.html(options))\n .join('\\n')\n }\n //render each section\n if (options.sections === true || options.paragraphs === true || options.sentences === true) {\n html += this.sections()\n .map((s) => s.html(options))\n .join('\\n')\n }\n //default off\n if (options.references === true) {\n html += '

References

'\n html += this.references()\n .map((c) => c.html(options))\n .join('\\n')\n }\n return html\n}\nmodule.exports = toHtml\n","const defaults = {\n headers: true,\n images: true,\n tables: true,\n lists: true,\n paragraphs: true\n}\n\nconst doSection = function (options) {\n options = Object.assign({}, defaults, options)\n let html = ''\n //make the header\n if (options.headers === true && this.title()) {\n let num = 1 + this.depth()\n html += ' ' + this.title() + ''\n html += '\\n'\n }\n //put any images under the header\n if (options.images === true) {\n let imgs = this.images()\n if (imgs.length > 0) {\n html += imgs.map((image) => image.html(options)).join('\\n')\n }\n }\n //make a html table\n if (options.tables === true) {\n html += this.tables()\n .map((t) => t.html(options))\n .join('\\n')\n }\n //make a html bullet-list\n if (options.lists === true) {\n html += this.lists()\n .map((list) => list.html(options))\n .join('\\n')\n }\n\n //finally, write the sentence text.\n if (options.paragraphs === true && this.paragraphs().length > 0) {\n html += '
\\n'\n this.paragraphs().forEach((p) => {\n html += '

\\n'\n html +=\n ' ' +\n p\n .sentences()\n .map((s) => s.html(options))\n .join(' ')\n html += '\\n

\\n'\n })\n html += '
\\n'\n } else if (options.sentences === true) {\n html +=\n ' ' +\n this.sentences()\n .map((s) => s.html(options))\n .join(' ')\n }\n return '
\\n' + html + '
\\n'\n}\n\nmodule.exports = doSection\n","const defaults = {\n sentences: true\n}\n\nconst toHtml = function (options) {\n options = Object.assign({}, defaults, options)\n let html = ''\n if (options.sentences === true) {\n html += this.sentences()\n .map((s) => s.html(options))\n .join('\\n')\n }\n return html\n}\nmodule.exports = toHtml\n","//escape a string like 'fun*2.Co' for a regExpr\nfunction escapeRegExp(str) {\n return str.replace(/[\\-[\\]/{}()*+?.\\\\^$|]/g, '\\\\$&')\n}\n\n//sometimes text-replacements can be ambiguous - words used multiple times..\nconst smartReplace = function (all, text, result) {\n if (!text || !all) {\n return all\n }\n\n if (typeof all === 'number') {\n all = String(all)\n }\n text = escapeRegExp(text)\n //try a word-boundary replace\n let reg = new RegExp('\\\\b' + text + '\\\\b')\n if (reg.test(all) === true) {\n all = all.replace(reg, result)\n } else {\n //otherwise, fall-back to a much messier, dangerous replacement\n // console.warn('missing \\'' + text + '\\'');\n all = all.replace(text, result)\n }\n return all\n}\n\nmodule.exports = smartReplace\n","const smartReplace = require('./_lib/smartReplace')\n\nconst defaults = {\n links: true,\n formatting: true\n}\n// create links, bold, italic in html\nconst doSentence = function (options) {\n options = Object.assign({}, defaults, options)\n let text = this.text()\n //turn links into \n if (options.links === true) {\n this.links().forEach((link) => {\n let str = link.text() || link.page()\n let tag = link.html()\n text = smartReplace(text, str, tag)\n })\n }\n if (options.formatting === true) {\n //support bolds\n this.bolds().forEach((str) => {\n let tag = '' + str + ''\n text = smartReplace(text, str, tag)\n })\n //do italics\n this.italics().forEach((str) => {\n let tag = '' + str + ''\n text = smartReplace(text, str, tag)\n })\n }\n return '' + text + ''\n}\nmodule.exports = doSentence\n","const toHtml = function () {\n let classNames = 'link'\n let href = this.href()\n href = href.replace(/ /g, '_')\n let str = this.text() || this.page()\n return `${str}`\n}\nmodule.exports = toHtml\n","const defaults = {\n images: true\n}\nconst dontDo = {\n image: true,\n caption: true,\n alt: true,\n signature: true,\n 'signature alt': true\n}\n\n//\nconst infobox = function (options) {\n options = Object.assign({}, defaults, options)\n let html = '\\n'\n html += ' \\n'\n html += ' \\n'\n html += ' \\n'\n //put image and caption on the top\n if (options.images === true && this.data.image) {\n html += ' \\n'\n html += ' \\n'\n if (this.data.caption || this.data.alt) {\n let caption = this.data.caption\n ? this.data.caption.html(options)\n : this.data.alt.html(options)\n html += ' \\n'\n }\n html += ' \\n'\n }\n Object.keys(this.data).forEach((k) => {\n if (dontDo[k] === true) {\n return\n }\n let s = this.data[k]\n let key = k.replace(/_/g, ' ')\n key = key.charAt(0).toUpperCase() + key.substring(1) //titlecase it\n let val = s.html(options)\n html += ' \\n'\n html += ' \\n'\n html += ' \\n'\n html += ' \\n'\n })\n html += ' \\n'\n html += '
\\n'\n html += ' ' + this.image().html() + '\\n'\n html += ' \\n'\n html += ' ' + caption + '\\n'\n html += '
' + key + '' + val + '
\\n'\n return html\n}\nmodule.exports = infobox\n","const makeImage = function () {\n return ' \"''\n}\nmodule.exports = makeImage\n","//\nconst toHtml = function (options) {\n let html = '
    \\n'\n this.lines().forEach((s) => {\n html += '
  • ' + s.html(options) + '
  • \\n'\n })\n html += '
\\n'\n return html\n}\nmodule.exports = toHtml\n","//\nconst toHtml = function (options) {\n if (this.data && this.data.url && this.data.title) {\n let str = this.data.title\n if (options.links === true) {\n str = `${str}`\n }\n return `
⌃ ${str}
`\n }\n if (this.data.encyclopedia) {\n return `
⌃ ${this.data.encyclopedia}
`\n }\n if (this.data.title) {\n //cite book, etc\n let str = this.data.title\n if (this.data.author) {\n str += this.data.author\n }\n if (this.data.first && this.data.last) {\n str += this.data.first + ' ' + this.data.last\n }\n return `
⌃ ${str}
`\n }\n if (this.inline) {\n return `
⌃ ${this.inline.html()}
`\n }\n return ''\n}\nmodule.exports = toHtml\n","//turn a json table into a html table\nconst toHtml = function (options) {\n let rows = this.data\n let html = '\\n'\n //make header\n html += ' \\n'\n html += ' \\n'\n\n Object.keys(rows[0]).forEach((k) => {\n if (/^col[0-9]/.test(k) !== true) {\n html += ' \\n'\n }\n })\n html += ' \\n'\n html += ' \\n'\n html += ' \\n'\n\n //make rows\n rows.forEach((o) => {\n html += ' \\n'\n Object.keys(o).forEach((k) => {\n let val = o[k].html(options)\n html += ' \\n'\n })\n html += ' \\n'\n })\n html += ' \\n'\n html += '
' + k + '
' + val + '
\\n'\n return html\n}\nmodule.exports = toHtml\n","const doc = require('./01-doc')\nconst section = require('./02-section')\nconst paragraph = require('./03-paragraph')\nconst sentence = require('./04-sentence')\nconst link = require('./05-link')\nconst infobox = require('./infobox')\nconst image = require('./image')\nconst list = require('./list')\nconst reference = require('./reference')\nconst table = require('./table')\n\nconst plugin = function (models) {\n models.Doc.prototype.html = doc\n\n models.Section.prototype.html = section\n\n models.Paragraph.prototype.html = paragraph\n\n models.Sentence.prototype.html = sentence\n\n models.Image.prototype.html = image\n\n models.Infobox.prototype.html = infobox\n\n models.Link.prototype.html = link\n\n models.List.prototype.html = list\n\n models.Reference.prototype.html = reference\n\n models.Table.prototype.html = table\n\n // models.Template.html = function(opts) {}\n}\nmodule.exports = plugin\n"],"names":["defaults","title","infoboxes","headers","sections","links","softRedirect","doc","link","redirectTo","href","page","replace","anchor","text","toHtml","options","Object","assign","html","_title","isRedirect","map","i","join","paragraphs","sentences","s","references","c","_01Doc","images","tables","lists","doSection","num","depth","imgs","length","image","t","list","forEach","p","_02Section","_03Paragraph","escapeRegExp","str","smartReplace","all","result","String","reg","RegExp","test","smartReplace_1","require$$0","formatting","doSentence","tag","bolds","italics","_04Sentence","classNames","_05Link","dontDo","caption","alt","signature","infobox","data","keys","k","key","charAt","toUpperCase","substring","val","infobox_1","makeImage","thumbnail","lines","url","encyclopedia","author","first","last","inline","reference","rows","o","table","section","require$$1","paragraph","require$$2","sentence","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","plugin","models","Doc","prototype","Section","Paragraph","Sentence","Image","Infobox","Link","List","Reference","Table","src"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/html/builds/wtf-plugin-html.min.js b/plugins/html/builds/wtf-plugin-html.min.js index 073af1df..a6730c28 100644 --- a/plugins/html/builds/wtf-plugin-html.min.js +++ b/plugins/html/builds/wtf-plugin-html.min.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).wtfHtml=e()}(this,(function(){"use strict";const t={title:!0,infoboxes:!0,headers:!0,sections:!0,links:!0};var e=function(e){let n="";return!0===(e=Object.assign({},t,e)).title&&this._title&&(n+=""+this._title+"\n"),!0===this.isRedirect()?(n+=function(t){let e=t.redirectTo(),n=e.page;return n="./"+n.replace(/ /g,"_"),e.anchor&&(n+="#"+e.anchor),`
\n ↳ ${e.text}\n
`}(this),n):(!0===e.infoboxes&&(n+=this.infoboxes().map((t=>t.html(e))).join("\n")),!0!==e.sections&&!0!==e.paragraphs&&!0!==e.sentences||(n+=this.sections().map((t=>t.html(e))).join("\n")),!0===e.references&&(n+="

References

",n+=this.references().map((t=>t.html(e))).join("\n")),n)};const n={headers:!0,images:!0,tables:!0,lists:!0,paragraphs:!0};var a=function(t){t=Object.assign({},n,t);let e="";if(!0===t.headers&&this.title()){let t=1+this.depth();e+=" "+this.title()+"",e+="\n"}if(!0===t.images){let n=this.images();n.length>0&&(e+=n.map((e=>e.html(t))).join("\n"))}return!0===t.tables&&(e+=this.tables().map((e=>e.html(t))).join("\n")),!0===t.lists&&(e+=this.lists().map((e=>e.html(t))).join("\n")),!0===t.paragraphs&&this.paragraphs().length>0?(e+='
\n',this.paragraphs().forEach((n=>{e+='

\n',e+=" "+n.sentences().map((e=>e.html(t))).join(" "),e+="\n

\n"})),e+="
\n"):!0===t.sentences&&(e+=" "+this.sentences().map((e=>e.html(t))).join(" ")),'
\n'+e+"
\n"};const i={sentences:!0};var s=function(t){let e="";return!0===(t=Object.assign({},i,t)).sentences&&(e+=this.sentences().map((e=>e.html(t))).join("\n")),e};var r=function(t,e,n){if(!e||!t)return t;"number"==typeof t&&(t=String(t)),e=e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");let a=new RegExp("\\b"+e+"\\b");return t=!0===a.test(t)?t.replace(a,n):t.replace(e,n)};const l={links:!0,formatting:!0};var h=function(t){t=Object.assign({},l,t);let e=this.text();return!0===t.links&&this.links().forEach((t=>{let n=t.text()||t.page(),a=t.html();e=r(e,n,a)})),!0===t.formatting&&(this.bolds().forEach((t=>{e=r(e,t,""+t+"")})),this.italics().forEach((t=>{e=r(e,t,""+t+"")}))),''+e+""};var o=function(){let t=this.href();return t=t.replace(/ /g,"_"),`${this.text()||this.page()}`};const c={images:!0},d={image:!0,caption:!0,alt:!0,signature:!0,"signature alt":!0};var p=function(t){t=Object.assign({},c,t);let e='\n';if(e+=" \n",e+=" \n",e+=" \n",!0===t.images&&this.data.image){if(e+=" \n",e+=' \n",this.data.caption||this.data.alt){let n=this.data.caption?this.data.caption.html(t):this.data.alt.html(t);e+=' \n"}e+=" \n"}return Object.keys(this.data).forEach((n=>{if(!0===d[n])return;let a=this.data[n],i=n.replace(/_/g," ");i=i.charAt(0).toUpperCase()+i.substring(1);let s=a.html(t);e+=" \n",e+=" \n",e+=" \n",e+=" \n"})),e+=" \n",e+="
\n',e+=" "+this.image().html()+"\n",e+=" \n',e+=" "+n+"\n",e+="
"+i+""+s+"
\n",e};var f=function(){return' '+this.alt()+''};var m=function(t){let e='
    \n';return this.lines().forEach((n=>{e+="
  • "+n.html(t)+"
  • \n"})),e+="
\n",e};var u=function(t){if(this.data&&this.data.url&&this.data.title){let e=this.data.title;return!0===t.links&&(e=`${e}`),`
⌃ ${e}
`}if(this.data.encyclopedia)return`
⌃ ${this.data.encyclopedia}
`;if(this.data.title){let t=this.data.title;return this.data.author&&(t+=this.data.author),this.data.first&&this.data.last&&(t+=this.data.first+" "+this.data.last),`
⌃ ${t}
`}return this.inline?`
⌃ ${this.inline.html()}
`:""};var g=function(t){let e=this.data,n='\n';return n+=" \n",n+=" \n",Object.keys(e[0]).forEach((t=>{!0!==/^col[0-9]/.test(t)&&(n+=" \n")})),n+=" \n",n+=" \n",n+=" \n",e.forEach((e=>{n+=" \n",Object.keys(e).forEach((a=>{let i=e[a].html(t);n+=" \n"})),n+=" \n"})),n+=" \n",n+="
"+t+"
"+i+"
\n",n};return function(t){t.Doc.prototype.html=e,t.Section.prototype.html=a,t.Paragraph.prototype.html=s,t.Sentence.prototype.html=h,t.Image.prototype.html=f,t.Infobox.prototype.html=p,t.Link.prototype.html=o,t.List.prototype.html=m,t.Reference.prototype.html=u,t.Table.prototype.html=g}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).wtfHtml=e()}(this,(function(){"use strict";const t={title:!0,infoboxes:!0,headers:!0,sections:!0,links:!0};const e={headers:!0,images:!0,tables:!0,lists:!0,paragraphs:!0};const n={sentences:!0};const a=function(t,e,n){if(!e||!t)return t;"number"==typeof t&&(t=String(t)),e=e.replace(/[\-[\]/{}()*+?.\\^$|]/g,"\\$&");let a=new RegExp("\\b"+e+"\\b");return t=!0===a.test(t)?t.replace(a,n):t.replace(e,n)},i={links:!0,formatting:!0};const s={images:!0},l={image:!0,caption:!0,alt:!0,signature:!0,"signature alt":!0};const r=function(e){let n="";return!0===(e=Object.assign({},t,e)).title&&this._title&&(n+=""+this._title+"\n"),!0===this.isRedirect()?(n+=function(t){let e=t.redirectTo(),n=e.page;return n="./"+n.replace(/ /g,"_"),e.anchor&&(n+="#"+e.anchor),' ")}(this),n):(!0===e.infoboxes&&(n+=this.infoboxes().map((t=>t.html(e))).join("\n")),!0!==e.sections&&!0!==e.paragraphs&&!0!==e.sentences||(n+=this.sections().map((t=>t.html(e))).join("\n")),!0===e.references&&(n+="

References

",n+=this.references().map((t=>t.html(e))).join("\n")),n)},c=function(t){t=Object.assign({},e,t);let n="";if(!0===t.headers&&this.title()){let t=1+this.depth();n+=" "+this.title()+"",n+="\n"}if(!0===t.images){let e=this.images();e.length>0&&(n+=e.map((e=>e.html(t))).join("\n"))}return!0===t.tables&&(n+=this.tables().map((e=>e.html(t))).join("\n")),!0===t.lists&&(n+=this.lists().map((e=>e.html(t))).join("\n")),!0===t.paragraphs&&this.paragraphs().length>0?(n+='
\n',this.paragraphs().forEach((e=>{n+='

\n',n+=" "+e.sentences().map((e=>e.html(t))).join(" "),n+="\n

\n"})),n+="
\n"):!0===t.sentences&&(n+=" "+this.sentences().map((e=>e.html(t))).join(" ")),'
\n'+n+"
\n"},h=function(t){let e="";return!0===(t=Object.assign({},n,t)).sentences&&(e+=this.sentences().map((e=>e.html(t))).join("\n")),e},o=function(t){t=Object.assign({},i,t);let e=this.text();return!0===t.links&&this.links().forEach((t=>{let n=t.text()||t.page(),i=t.html();e=a(e,n,i)})),!0===t.formatting&&(this.bolds().forEach((t=>{e=a(e,t,""+t+"")})),this.italics().forEach((t=>{e=a(e,t,""+t+"")}))),''+e+""},d=function(){let t=this.href();t=t.replace(/ /g,"_");let e=this.text()||this.page();return'').concat(e,"")},p=function(t){t=Object.assign({},s,t);let e='\n';if(e+=" \n",e+=" \n",e+=" \n",!0===t.images&&this.data.image){if(e+=" \n",e+=' \n",this.data.caption||this.data.alt){let n=this.data.caption?this.data.caption.html(t):this.data.alt.html(t);e+=' \n"}e+=" \n"}return Object.keys(this.data).forEach((n=>{if(!0===l[n])return;let a=this.data[n],i=n.replace(/_/g," ");i=i.charAt(0).toUpperCase()+i.substring(1);let s=a.html(t);e+=" \n",e+=" \n",e+=" \n",e+=" \n"})),e+=" \n",e+="
\n',e+=" "+this.image().html()+"\n",e+=" \n',e+=" "+n+"\n",e+="
"+i+""+s+"
\n",e},f=function(){return' '+this.alt()+''},m=function(t){let e='
    \n';return this.lines().forEach((n=>{e+="
  • "+n.html(t)+"
  • \n"})),e+="
\n",e},u=function(t){if(this.data&&this.data.url&&this.data.title){let e=this.data.title;return!0===t.links&&(e='').concat(e,"")),'
⌃ '.concat(e,"
")}if(this.data.encyclopedia)return'
⌃ '.concat(this.data.encyclopedia,"
");if(this.data.title){let t=this.data.title;return this.data.author&&(t+=this.data.author),this.data.first&&this.data.last&&(t+=this.data.first+" "+this.data.last),'
⌃ '.concat(t,"
")}return this.inline?'
⌃ '.concat(this.inline.html(),"
"):""},g=function(t){let e=this.data,n='\n';return n+=" \n",n+=" \n",Object.keys(e[0]).forEach((t=>{!0!==/^col[0-9]/.test(t)&&(n+=" \n")})),n+=" \n",n+=" \n",n+=" \n",e.forEach((e=>{n+=" \n",Object.keys(e).forEach((a=>{let i=e[a].html(t);n+=" \n"})),n+=" \n"})),n+=" \n",n+="
"+t+"
"+i+"
\n",n};return function(t){t.Doc.prototype.html=r,t.Section.prototype.html=c,t.Paragraph.prototype.html=h,t.Sentence.prototype.html=o,t.Image.prototype.html=f,t.Infobox.prototype.html=p,t.Link.prototype.html=d,t.List.prototype.html=m,t.Reference.prototype.html=u,t.Table.prototype.html=g}})); diff --git a/plugins/html/builds/wtf-plugin-html.mjs b/plugins/html/builds/wtf-plugin-html.mjs index 50a67555..048a2781 100644 --- a/plugins/html/builds/wtf-plugin-html.mjs +++ b/plugins/html/builds/wtf-plugin-html.mjs @@ -1,4 +1,4 @@ -/* wtf-plugin-html 0.2.2 MIT */ +/* wtf-plugin-html 0.2.3 MIT */ const defaults$4 = { title: true, infoboxes: true, @@ -16,9 +16,7 @@ const softRedirect = function (doc) { href += '#' + link.anchor; } - return `
- ↳ ${link.text} -
`; + return " "); }; //turn a Doc object into a HTML string @@ -129,13 +127,12 @@ const toHtml$4 = function (options) { var _03Paragraph = toHtml$4; -//escape a string like 'fun*2.Co' for a regExpr function escapeRegExp(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); + return str.replace(/[\-[\]/{}()*+?.\\^$|]/g, '\\$&'); } //sometimes text-replacements can be ambiguous - words used multiple times.. -const smartReplace = function (all, text, result) { +const smartReplace$1 = function (all, text, result) { if (!text || !all) { return all; } @@ -159,8 +156,9 @@ const smartReplace = function (all, text, result) { return all; }; -var smartReplace_1 = smartReplace; +var smartReplace_1 = smartReplace$1; +const smartReplace = smartReplace_1; const defaults$1 = { links: true, formatting: true @@ -174,7 +172,7 @@ const doSentence = function (options) { this.links().forEach(link => { let str = link.text() || link.page(); let tag = link.html(); - text = smartReplace_1(text, str, tag); + text = smartReplace(text, str, tag); }); } @@ -182,12 +180,12 @@ const doSentence = function (options) { //support bolds this.bolds().forEach(str => { let tag = '' + str + ''; - text = smartReplace_1(text, str, tag); + text = smartReplace(text, str, tag); }); //do italics this.italics().forEach(str => { let tag = '' + str + ''; - text = smartReplace_1(text, str, tag); + text = smartReplace(text, str, tag); }); } @@ -201,7 +199,7 @@ const toHtml$3 = function () { let href = this.href(); href = href.replace(/ /g, '_'); let str = this.text() || this.page(); - return `${str}`; + return "").concat(str, ""); }; var _05Link = toHtml$3; @@ -217,7 +215,7 @@ const dontDo = { 'signature alt': true }; // -const infobox = function (options) { +const infobox$1 = function (options) { options = Object.assign({}, defaults, options); let html = '\n'; html += ' \n'; @@ -260,15 +258,14 @@ const infobox = function (options) { return html; }; -var infobox_1 = infobox; +var infobox_1 = infobox$1; const makeImage = function () { return ' ' + this.alt() + ''; }; -var image = makeImage; +var image$1 = makeImage; -// const toHtml$2 = function (options) { let html = '
    \n'; this.lines().forEach(s => { @@ -278,22 +275,21 @@ const toHtml$2 = function (options) { return html; }; -var list = toHtml$2; +var list$1 = toHtml$2; -// const toHtml$1 = function (options) { if (this.data && this.data.url && this.data.title) { let str = this.data.title; if (options.links === true) { - str = `${str}`; + str = "").concat(str, ""); } - return `
    ⌃ ${str}
    `; + return "
    \u2303 ".concat(str, "
    "); } if (this.data.encyclopedia) { - return `
    ⌃ ${this.data.encyclopedia}
    `; + return "
    \u2303 ".concat(this.data.encyclopedia, "
    "); } if (this.data.title) { @@ -308,19 +304,18 @@ const toHtml$1 = function (options) { str += this.data.first + ' ' + this.data.last; } - return `
    ⌃ ${str}
    `; + return "
    \u2303 ".concat(str, "
    "); } if (this.inline) { - return `
    ⌃ ${this.inline.html()}
    `; + return "
    \u2303 ".concat(this.inline.html(), "
    "); } return ''; }; -var reference = toHtml$1; +var reference$1 = toHtml$1; -//turn a json table into a html table const toHtml = function (options) { let rows = this.data; let html = '
\n'; //make header @@ -349,16 +344,27 @@ const toHtml = function (options) { return html; }; -var table = toHtml; +var table$1 = toHtml; + +const doc = _01Doc; +const section = _02Section; +const paragraph = _03Paragraph; +const sentence = _04Sentence; +const link = _05Link; +const infobox = infobox_1; +const image = image$1; +const list = list$1; +const reference = reference$1; +const table = table$1; const plugin = function (models) { - models.Doc.prototype.html = _01Doc; - models.Section.prototype.html = _02Section; - models.Paragraph.prototype.html = _03Paragraph; - models.Sentence.prototype.html = _04Sentence; + models.Doc.prototype.html = doc; + models.Section.prototype.html = section; + models.Paragraph.prototype.html = paragraph; + models.Sentence.prototype.html = sentence; models.Image.prototype.html = image; - models.Infobox.prototype.html = infobox_1; - models.Link.prototype.html = _05Link; + models.Infobox.prototype.html = infobox; + models.Link.prototype.html = link; models.List.prototype.html = list; models.Reference.prototype.html = reference; models.Table.prototype.html = table; // models.Template.html = function(opts) {} @@ -366,4 +372,4 @@ const plugin = function (models) { var src = plugin; -export default src; +export { src as default }; diff --git a/plugins/html/package-lock.json b/plugins/html/package-lock.json index 5f18626f..af9bea53 100644 --- a/plugins/html/package-lock.json +++ b/plugins/html/package-lock.json @@ -9,52 +9,56 @@ "version": "0.2.2", "license": "MIT", "devDependencies": { - "@babel/core": "7.14.0", - "@babel/preset-env": "7.14.1", - "rollup": "2.47.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^5.1.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", - "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", - "dev": true + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/core": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz", - "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.0", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helpers": "^7.14.0", - "@babel/parser": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -71,84 +75,102 @@ } }, "node_modules/@babel/generator": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", - "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "dependencies": { - "@babel/types": "^7.14.1", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", - "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.15", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.1.tgz", - "integrity": "sha512-r8rsUahG4ywm0QpGcCrLaUSOuNAISR3IZCg4Fx05Ozq31aCUrQsTLH6KPxy0N5ULoQ4Sn9qjNdGNtbPWAC6hYg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", - "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -165,193 +187,249 @@ } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "dependencies": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", - "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", - "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", - "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -360,217 +438,278 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz", - "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz", - "integrity": "sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-class-static-block": "^7.12.13" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.12.0" } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz", - "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-create-class-features-plugin": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-private-property-in-object": "^7.14.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=4" @@ -604,12 +743,15 @@ } }, "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz", - "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -724,466 +866,569 @@ } }, "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz", - "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz", - "integrity": "sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.13.17", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz", - "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz", - "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", - "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", - "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", - "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.1.tgz", - "integrity": "sha512-0M4yL1l7V4l+j/UHvxcdvNfLB9pPtIooHTbEhgD/6UGyh8Hy3Bm1Mj0buzjDXATCSz3JFibVdnoJZCrlUCanrQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.14.0", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.15", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-class-static-block": "^7.13.11", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-private-property-in-object": "^7.14.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -1193,56 +1438,59 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.0", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.14.1", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.17", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.14.0", - "@babel/plugin-transform-modules-commonjs": "^7.14.0", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.14.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.13.15", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.14.1", - "babel-plugin-polyfill-corejs2": "^0.2.0", - "babel-plugin-polyfill-corejs3": "^0.2.0", - "babel-plugin-polyfill-regenerator": "^0.2.0", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1250,69 +1498,178 @@ "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/runtime": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", - "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-babel/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, - "node_modules/@babel/traverse": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", - "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", + "node_modules/@rollup/plugin-babel/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.14.0", - "@babel/types": "^7.14.0", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" } }, - "node_modules/@babel/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", - "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.14.0", - "to-fast-properties": "^2.0.0" + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, "node_modules/@types/node": { "version": "13.9.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.0.tgz", "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==", "dev": true }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1356,13 +1713,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", - "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "dependencies": { "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.0", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" }, "peerDependencies": { @@ -1370,25 +1727,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", - "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.0", - "core-js-compat": "^3.9.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", - "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.0" + "@babel/helper-define-polyfill-provider": "^0.3.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1411,16 +1768,16 @@ } }, "node_modules/browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" @@ -1439,21 +1796,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "node_modules/buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "node_modules/builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -1468,9 +1810,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001228", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", - "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true, "funding": { "type": "opencollective", @@ -1507,9 +1849,9 @@ "dev": true }, "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "node_modules/commander": { @@ -1518,6 +1860,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1534,12 +1882,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.12.1.tgz", - "integrity": "sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "dependencies": { - "browserslist": "^4.16.6", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "funding": { @@ -1557,9 +1905,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/debug": { @@ -1637,33 +1985,37 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.727", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz", - "integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -1732,12 +2084,6 @@ "node": ">=0.8.0" } }, - "node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1811,10 +2157,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -1826,6 +2197,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { @@ -1858,6 +2232,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1879,6 +2265,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1895,6 +2296,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -1935,9 +2350,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true, "engines": { "node": ">= 0.4" @@ -1979,12 +2394,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, "node_modules/is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -2010,28 +2419,22 @@ } }, "node_modules/is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "dependencies": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, - "node_modules/is-reference/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -2049,11 +2452,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2104,6 +2519,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -2233,15 +2660,15 @@ "dev": true }, "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2309,15 +2736,33 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "node_modules/randombytes": { @@ -2330,23 +2775,23 @@ } }, "node_modules/re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "node_modules/readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -2357,21 +2802,21 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "dependencies": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" }, "engines": { "node": ">=4" } }, "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "node_modules/regenerator-transform": { @@ -2400,17 +2845,17 @@ } }, "node_modules/regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" @@ -2423,9 +2868,9 @@ "dev": true }, "node_modules/regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -2444,12 +2889,16 @@ } }, "node_modules/resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "dependencies": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resumer": { @@ -2462,9 +2911,9 @@ } }, "node_modules/rollup": { - "version": "2.47.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.47.0.tgz", - "integrity": "sha512-rqBjgq9hQfW0vRmz+0S062ORRNJXvwRpzxhFXORvar/maZqY6za3rgQ/p1Glg+j1hnc1GtYyQCPiAei95uTElg==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2473,30 +2922,7 @@ "node": ">=10.0.0" }, "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "node_modules/rollup-plugin-filesize-check": { @@ -2505,28 +2931,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "node_modules/rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "dependencies": { - "rollup-pluginutils": "^2.5.0" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "dependencies": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -2539,15 +2943,6 @@ "terser": "^5.0.0" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2621,9 +3016,9 @@ "dev": true }, "node_modules/split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "dependencies": { "through": "2" @@ -2633,23 +3028,23 @@ } }, "node_modules/string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" }, "engines": { "node": ">= 0.4" @@ -2697,101 +3092,40 @@ } }, "node_modules/tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "dependencies": { - "chalk": "4.1.0", - "tap-out": "3.0.0" + "colorette": "^1.2.2", + "tap-in": "3.2.1" }, "bin": { "tap-dancer": "src/index.js" } }, - "node_modules/tap-dancer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tap-dancer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/tap-dancer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/tap-dancer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "bin": { + "tap-in": "bin/tap-in.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", - "dev": true, - "dependencies": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" - }, - "bin": { - "tap-out": "bin/cmd.js" + "node": ">=8.0.0" } }, "node_modules/tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", @@ -2799,17 +3133,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "bin": { @@ -2871,9 +3207,9 @@ } }, "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "node_modules/unbox-primitive": { @@ -2892,40 +3228,40 @@ } }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, "engines": { "node": ">=4" @@ -3010,35 +3346,35 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" } }, "@babel/compat-data": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", - "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true }, "@babel/core": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz", - "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.0", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helpers": "^7.14.0", - "@babel/parser": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -3048,75 +3384,75 @@ } }, "@babel/generator": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", - "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.14.1", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-compilation-targets": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", - "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.15", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.1.tgz", - "integrity": "sha512-r8rsUahG4ywm0QpGcCrLaUSOuNAISR3IZCg4Fx05Ozq31aCUrQsTLH6KPxy0N5ULoQ4Sn9qjNdGNtbPWAC6hYg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", - "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -3130,361 +3466,370 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", - "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helpers": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", - "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, - "@babel/parser": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", - "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==", - "dev": true - }, + "@babel/parser": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz", - "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz", - "integrity": "sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-class-static-block": "^7.12.13" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz", - "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-create-class-features-plugin": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-private-property-in-object": "^7.14.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { @@ -3506,12 +3851,12 @@ } }, "@babel/plugin-syntax-class-static-block": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz", - "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-dynamic-import": { @@ -3596,364 +3941,365 @@ } }, "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz", - "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz", - "integrity": "sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.17", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz", - "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz", - "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", - "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", - "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", - "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.1.tgz", - "integrity": "sha512-0M4yL1l7V4l+j/UHvxcdvNfLB9pPtIooHTbEhgD/6UGyh8Hy3Bm1Mj0buzjDXATCSz3JFibVdnoJZCrlUCanrQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.14.0", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.15", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-class-static-block": "^7.13.11", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-private-property-in-object": "^7.14.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -3963,53 +4309,53 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.0", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.14.1", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.17", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.14.0", - "@babel/plugin-transform-modules-commonjs": "^7.14.0", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.14.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.13.15", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.14.1", - "babel-plugin-polyfill-corejs2": "^0.2.0", - "babel-plugin-polyfill-corejs3": "^0.2.0", - "babel-plugin-polyfill-regenerator": "^0.2.0", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" } }, "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -4020,66 +4366,135 @@ } }, "@babel/runtime": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", - "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", - "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.14.0", - "@babel/types": "^7.14.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", - "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.0", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, "@types/node": { "version": "13.9.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.0.tgz", "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==", "dev": true }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -4114,33 +4529,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", - "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "requires": { "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.0", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", - "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.0", - "core-js-compat": "^3.9.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", - "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.0" + "@babel/helper-define-polyfill-provider": "^0.3.0" } }, "balanced-match": { @@ -4160,16 +4575,16 @@ } }, "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "buffer-from": { @@ -4178,18 +4593,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true - }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -4201,9 +4604,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001228", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", - "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true }, "chalk": { @@ -4233,9 +4636,9 @@ "dev": true }, "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "commander": { @@ -4244,6 +4647,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -4260,12 +4669,12 @@ } }, "core-js-compat": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.12.1.tgz", - "integrity": "sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "requires": { - "browserslist": "^4.16.6", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "dependencies": { @@ -4278,9 +4687,9 @@ } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "debug": { @@ -4348,33 +4757,37 @@ } }, "electron-to-chromium": { - "version": "1.3.727", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz", - "integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" } }, "es-get-iterator": { @@ -4424,12 +4837,6 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4487,10 +4894,26 @@ "has-symbols": "^1.0.1" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4522,6 +4945,15 @@ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, + "has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -4534,6 +4966,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4550,6 +4991,17 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -4575,9 +5027,9 @@ } }, "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-core-module": { @@ -4601,12 +5053,6 @@ "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -4620,30 +5066,22 @@ "dev": true }, "is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "requires": { - "@types/estree": "0.0.39" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - } + "@types/estree": "*" } }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" } }, "is-set": { @@ -4652,12 +5090,21 @@ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -4686,6 +5133,15 @@ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -4790,15 +5246,15 @@ "dev": true }, "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true }, "object-is": { @@ -4845,15 +5301,27 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "randombytes": { @@ -4866,23 +5334,23 @@ } }, "re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -4893,18 +5361,18 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "regenerator-transform": { @@ -4927,17 +5395,17 @@ } }, "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { @@ -4947,9 +5415,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -4964,11 +5432,12 @@ } }, "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -4982,35 +5451,12 @@ } }, "rollup": { - "version": "2.47.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.47.0.tgz", - "integrity": "sha512-rqBjgq9hQfW0vRmz+0S062ORRNJXvwRpzxhFXORvar/maZqY6za3rgQ/p1Glg+j1hnc1GtYyQCPiAei95uTElg==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "rollup-plugin-filesize-check": { @@ -5019,28 +5465,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "requires": { - "rollup-pluginutils": "^2.5.0" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -5053,15 +5477,6 @@ "terser": "^5.0.0" } }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -5125,32 +5540,32 @@ "dev": true }, "split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "string.prototype.trimend": { @@ -5183,82 +5598,31 @@ } }, "tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "requires": { - "chalk": "4.1.0", - "tap-out": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "colorette": "^1.2.2", + "tap-in": "3.2.1" } }, - "tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", + "tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "requires": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" } }, "tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -5266,17 +5630,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "dependencies": { @@ -5324,9 +5690,9 @@ "dev": true }, "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "unbox-primitive": { @@ -5342,31 +5708,31 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "util-deprecate": { diff --git a/plugins/html/package.json b/plugins/html/package.json index eb689850..451cb5b4 100644 --- a/plugins/html/package.json +++ b/plugins/html/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-html", "description": "html plugin for wtf_wikipedia", - "version": "0.2.2", + "version": "0.2.3", "main": "./builds/wtf-plugin-html.js", "unpkg": "./builds/wtf-plugin-html.min.js", "module": "./builds/wtf-plugin-html.mjs", @@ -31,17 +31,15 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.14.0", - "@babel/preset-env": "7.14.1", - "rollup": "2.47.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^5.1.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "license": "MIT" -} +} \ No newline at end of file diff --git a/plugins/html/rollup.config.js b/plugins/html/rollup.config.js index 828de466..519bf953 100644 --- a/plugins/html/rollup.config.js +++ b/plugins/html/rollup.config.js @@ -1,6 +1,6 @@ -import commonjs from 'rollup-plugin-commonjs' +import commonjs from '@rollup/plugin-commonjs' import { terser } from 'rollup-plugin-terser' -import babel from 'rollup-plugin-babel' +import { babel } from '@rollup/plugin-babel' import sizeCheck from 'rollup-plugin-filesize-check' import { version } from './package.json' @@ -16,6 +16,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -37,6 +38,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -57,6 +59,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }), diff --git a/plugins/i18n/builds/wtf-plugin-i18n.js b/plugins/i18n/builds/wtf-plugin-i18n.js index d7bb5d99..bd7a388a 100644 --- a/plugins/i18n/builds/wtf-plugin-i18n.js +++ b/plugins/i18n/builds/wtf-plugin-i18n.js @@ -1,9 +1,9 @@ -/* wtf-plugin-i18n 0.1.0 MIT */ +/* wtf-plugin-i18n 0.1.1 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfI18n = factory()); -}(this, (function () { 'use strict'; +})(this, (function () { 'use strict'; var birth_date_and_age = ['ålder', 'ani', 'b', // 'birth date', // 'birth date and age', @@ -133,5 +133,5 @@ return src; -}))); +})); //# sourceMappingURL=wtf-plugin-i18n.js.map diff --git a/plugins/i18n/builds/wtf-plugin-i18n.js.map b/plugins/i18n/builds/wtf-plugin-i18n.js.map index 21b8fb3e..001784be 100644 --- a/plugins/i18n/builds/wtf-plugin-i18n.js.map +++ b/plugins/i18n/builds/wtf-plugin-i18n.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-i18n.js","sources":["../src/data/birth_date_and_age.js","../src/data/citation.js","../src/data/cite_book.js","../src/data/cite_journal.js","../src/data/cite_web.js","../src/data/commons_cat.js","../src/data/coord.js","../src/data/flag.js","../src/data/flagicon.js","../src/data/formatnum.js","../src/data/ipa.js","../src/data/isbn.js","../src/data/main.js","../src/data/portal.js","../src/data/reflist.js","../src/data/sfn.js","../src/data/small.js","../src/data/start_date.js","../src/data/persondata.js","../src/data/taxobox.js","../src/index.js"],"sourcesContent":["module.exports = [\n 'ålder',\n 'ani',\n 'b',\n // 'birth date',\n // 'birth date and age',\n // 'birth year and age',\n 'calcola età',\n 'dáta breithe agus aois',\n 'data de nacemento e idade',\n 'data de naissença e atge',\n 'dâta de nèssence',\n 'data naixement i edat',\n 'data nașterii și vârsta',\n 'data tat-twelid u età',\n 'date de naissance',\n 'dato og alder',\n 'dátum narodenia a vek',\n 'datum narození a věk',\n 'datum rođenja i godine',\n 'datum rojstva in starost',\n 'doğum tarihi ve yaşı',\n 'doğum tarixi və yaşı',\n 'dyddiad geni ac oedran',\n 'dzimšanas datums un vecums',\n 'életkor-élő-dátummal',\n 'fødselsdato og alder',\n 'geboortedatum en ouderdom',\n 'jaiotza data eta adina',\n 'narodniny a staroba',\n 'narodniny a starstwo',\n 'naskiĝdato kaj aĝo',\n 'ngày sinh và tuổi',\n 'petsa ti pannakaipasngay ken tawen',\n 'roja bûyînê û temen',\n 'sünniaeg ja vanus',\n 'syntymäaika ja ikä',\n 'tanggal embas lan yusa',\n 'tanggal lahir dan umur',\n 'tarikh lahir dan umur',\n 'ulloq ukiuilu',\n 'дата з віком',\n 'дата на раждане и години',\n 'дата нараджэння і ўзрост',\n 'датум рођења',\n 'нарадзіўся',\n 'райгуырд',\n 'роден на и возраст',\n 'родился',\n 'таърихи таваллуд ва син',\n 'төрсөн огноо, нас',\n 'шочмокече',\n 'დაბადების თარიღი და ასაკი',\n 'ծննդյան ամսաթիվ և տարիք',\n 'تاريخ الميلاد و العمر',\n 'تاريخ الميلاد والعمر',\n 'تاریخ پیدائش اور عمر',\n 'تاریخ تولد و سن',\n 'ڄمڻ جي تاريخ ۽ عمر',\n 'د زیږون نیټه او عمر',\n 'دوغوم تاریخی ایله یاش',\n 'ڕۆژی لەدایکبوون و تەمەن',\n 'जन्म तिथि एवं आयु',\n 'जन्म दिनांक आणि वय',\n 'জন্ম তারিখ ও বয়স',\n 'பிறப்பும் அகவையும்',\n 'උපන් දින සහ වයස',\n '출생일과 나이',\n '出世日同歲數',\n '生年月日と年齢',\n '生日搭年纪'\n]\n","module.exports = [\n 'atsauce',\n 'chú thích',\n 'cit',\n 'cita testo',\n 'citácia harvard',\n 'citat',\n 'citat3',\n // 'citation',\n 'cite',\n 'citim',\n 'cito',\n 'cytuj',\n 'erreferentzia',\n 'iomradh',\n 'kaynak',\n 'kilde',\n 'obra citada',\n 'tzita testu',\n 'viide',\n 'наведување',\n 'উদ্ধৃতি',\n 'ကိုးကားခြင်း',\n '인용'\n]\n","module.exports = [\n 'bókaheimild',\n 'book reference',\n 'chú thích sách',\n 'ċita ktieb',\n 'cita libro',\n 'cita libru',\n 'cita llibru',\n 'citace monografie',\n 'citácia knihy',\n 'citaĵo el libro',\n 'citar lhibro',\n 'citar libro',\n 'citar livro',\n 'citat carte',\n 'citaziuni di testu',\n // 'cite book',\n 'cite book.',\n 'cité un lìber',\n 'citeer boek',\n 'citiranje knjiga',\n 'cytuj książkę',\n 'cytuj ksiōnżkã',\n 'enmyslioar',\n 'girjegáldu',\n 'grāmatas atsauce',\n 'hivatkozás/könyv',\n 'iomradh leabhar',\n 'kilde bog',\n 'kilde bok',\n 'kirjaviite',\n 'kitap kaynağı',\n 'kjelde bok',\n 'lidɐraduur',\n 'literatur',\n 'literatura',\n 'navedi knjigo',\n 'ouvrage',\n 'ôvra',\n 'ref-llibre',\n 'tzita libru',\n 'кітап',\n 'наведена книга',\n 'צייגט בוך',\n 'استشهاد بكتاب',\n 'حوالہ کتاب',\n 'کیتاب قایناقلاماسی',\n 'ڪتابن مان حوالا',\n 'یادکرد',\n 'स्रोत पुस्तक',\n 'বই উদ্ধৃতি',\n '서적 인용',\n '引書'\n]\n","module.exports = [\n 'article',\n 'chú thích tạp chí',\n 'cita pubblicazione',\n 'ċita pubblikazzjoni',\n 'cita publicación',\n 'cita publicación periódica',\n 'cita publicasion',\n 'citácia periodika',\n 'citaĵo el gazeto',\n 'citar periódico',\n 'citat revistă',\n 'cite aldizkari',\n // 'cite journal',\n \"cité n'arvista\",\n 'cite paper',\n 'citeer journal',\n 'citiranje časopisa',\n 'cytuj news',\n 'cytuj pismo',\n 'dergi kaynağı',\n 'iomradh iris',\n 'lehtiviite',\n 'luaigh foilseachán',\n 'navedi revijo',\n 'publikācijas atsauce',\n 'ref-publicació',\n 'revista',\n 'tzita publicatzione',\n 'макъала',\n 'наведено списание',\n 'статья',\n 'ыстатыйа',\n 'استشهاد بدورية أكاديمية',\n 'بیرخستنەوەی گۆڤار',\n 'حوالہ رسالہ',\n 'जर्नल स्रोत',\n 'সাময়িকী উদ্ধৃতি',\n '저널 인용'\n]\n","module.exports = [\n 'chú thích web',\n 'cita web',\n 'ċita web',\n 'citace elektronické monografie',\n 'citácia elektronického dokumentu',\n 'citaĵo el la reto',\n 'citar web',\n 'citat web',\n 'cité la ragnà',\n // 'cite web',\n 'cite web öömrang',\n 'citeer web',\n 'citeweb',\n 'citiranje weba',\n 'cito web',\n 'cytuj strōnã',\n 'cytuj stronę',\n 'iomradh lìon',\n 'kilde www',\n 'lien web',\n 'ligam web',\n 'lim vouèbe',\n 'lua idirlín',\n 'navedi splet',\n 'neahttagáldu',\n 'ref-web',\n 'tīmekļa atsauce',\n 'tzita web',\n 'vefheimild',\n 'verkkoviite',\n 'web kaynağı',\n 'наведена мрежна страница',\n 'спасылка',\n 'цитат уеб',\n 'צייגט וועב',\n 'بیرخستنەوەی وێب',\n 'حوالہ ویب',\n 'حوالو ويب',\n 'مرجع ويب',\n 'وب قایناقلاماسی',\n 'संकेतस्थळ स्रोत',\n 'ওয়েব উদ্ধৃতি',\n 'వెబ్ మూలము',\n 'උපන්‍යාස වෙබ්',\n '웹 인용',\n '引網'\n]\n","module.exports = [\n 'catcómhaoin',\n 'categorìa ëd commons',\n 'comincat',\n 'commons',\n // 'commons cat',\n 'commons categories',\n 'commons category',\n 'commons kategori',\n 'commons kategoriýa',\n 'commons-kategorie',\n 'commonscat',\n // 'commonscat ',\n 'commonsi kategooria',\n // 'commonskat',\n 'communiacat',\n 'katégori commons',\n 'kategori commons',\n 'kategorija v zbirki',\n 'thể loại commons',\n 'vikianbar kateqoriyası',\n 'vikikrātuves kategorija',\n 'викианбор-гурӯҳ',\n 'категорија на остави',\n 'ризница-врска',\n 'վիքիպահեստ կատեգորիա',\n 'קאמאנסקאט',\n 'آمبار بؤلمه',\n 'پۆلی کۆمنز',\n 'تصنيف كومنز',\n 'تصنيف كومونز',\n 'رده انبار',\n 'زمرہ کومنز',\n 'ڪومنز زمرو',\n 'कमन्सश्रेणी',\n 'कॉमन्स वर्ग',\n 'कॉमन्स श्रेणी',\n 'कॉमंस श्रेणी',\n 'কমন্স থাক',\n 'কমন্স বিষয়শ্রেণী',\n 'ਕਾਮਨਜ਼ ਸ਼੍ਰੇਣੀ',\n 'කොමන්ස්ප්‍රවර්ග',\n 'คอมมอนส์-หมวดหมู่',\n '위키공용분류',\n '同享類'\n]\n","module.exports = [\n // 'coor',\n 'coor dd',\n // 'coor dm',\n // 'coor dms',\n // 'coord',\n 'coordenadas',\n 'coordinate',\n 'coördinaten',\n 'cord',\n 'hnit',\n 'koord',\n 'koordinat',\n 'koördinate',\n 'kòòrdinatë',\n 'koordinate',\n 'koordinate text',\n 'koördinaten',\n 'koordinaten',\n 'koordynaty',\n 'souřadnice',\n 'súradnice',\n 'tọa độ',\n 'współrzędne',\n 'каардынаты',\n 'محل وقوع',\n 'স্থানাঙ্ক',\n '좌표'\n]\n","module.exports = [\n 'al2',\n 'bandeira',\n // 'bandera',\n 'bandera2',\n // 'bandiera',\n 'bayrak',\n 'bendera',\n 'bratach',\n 'chórgoj',\n 'chorhoj',\n 'drapel',\n // 'fana',\n 'fáni',\n // 'flag',\n 'flag2',\n 'flagg',\n 'flagga',\n // 'flagicon',\n 'flago',\n 'flaq',\n 'karogs',\n 'lá cờ',\n 'lippu',\n 'państwo',\n 'pantli2',\n 'payis',\n 'pays',\n 'pisilipp',\n 'stän',\n 'vexillum',\n 'vlag',\n 'wagayway',\n 'zastava',\n 'zászló2',\n 'zid',\n 'застава',\n 'знаме',\n 'парчам',\n 'сьцяг',\n 'ялав',\n 'დროშა',\n 'դրոշ',\n 'դրօշ',\n 'דגל',\n 'بایراق',\n 'پرچم',\n 'جهنڊو',\n 'جھنڈا',\n 'علم',\n 'देश झन्डा',\n 'पताका',\n 'পতাকা',\n 'கொடி',\n 'ධජය',\n 'ທຸງຊາດ',\n 'အလံ',\n '국기',\n '旗'\n]\n","module.exports = [\n // 'Al',\n 'bandera',\n 'bandera4',\n 'bandiera',\n 'bandièra',\n 'bandiere',\n 'bannera',\n 'bayraksimge',\n 'bayraq',\n 'bayroqikon',\n 'bendera-ikon',\n 'drapeau',\n 'drapél',\n 'eicon baner',\n 'falgicon',\n 'fana',\n 'flag icon',\n 'flag-ikon',\n 'flaga',\n 'flaggbild',\n // 'flagicon',\n 'flagikon',\n 'íconebandeira',\n 'ikonazastave',\n 'leavga',\n 'lippukuva',\n 'minivlajka',\n 'riigi ikoon',\n 'vexillum icon',\n 'vlagikoon',\n 'vlagland',\n 'wagaywayikono',\n 'zászlóikon',\n 'zd',\n 'абираҟ',\n 'байрак1',\n 'байракх',\n 'далбаа',\n 'државнознаме',\n 'желек',\n 'зас',\n 'икона-флаг',\n 'прапорець',\n 'сцяг',\n 'тук',\n 'тырыса',\n 'флаг',\n 'بایراقچه',\n 'پرچم تصویر',\n 'پرچمک',\n 'جهنڊو عڪس',\n 'رمز علم',\n 'ھێمای ئاڵا',\n 'ध्वजचिन्ह',\n 'পতাকা আইকন',\n 'ਝੰਡਾ ਤਸਵੀਰ',\n '국기그림'\n]\n","module.exports = [\n // 'formatnum',\n 'formattal',\n 'puntudecimal',\n 'szám',\n 'try formatnum',\n '형식 숫자'\n]\n","module.exports = [\n 'afa',\n // 'afi',\n // 'api',\n 'ase',\n 'ifa',\n // 'ipa',\n 'ipa-text',\n 'ipa1',\n 'ipa2',\n 'lbf',\n 'lfe',\n 'prononciation api',\n 'unicode',\n 'δφα',\n 'мфа',\n 'יפא',\n 'آوا',\n 'أصد',\n 'بول',\n 'نغا',\n 'अ-ध्व-लि',\n 'আধ্বব'\n]\n","module.exports = [\n // 'isbn',\n 'isbn2',\n 'آئی ایس بی این',\n 'ردمك',\n 'شابک۲',\n 'আইএসবিএন'\n]\n","module.exports = [\n 'aðalgrein',\n 'ana madde',\n 'antsipirihany',\n 'ap',\n 'article détaillé',\n 'article principal',\n 'articllo dètalyê',\n 'articlo principal',\n 'articol principal',\n 'articulo prencepale',\n 'artigo percipal',\n 'artigo principal',\n 'artiklu prinċipali',\n 'artitgel principal',\n 'bővebben',\n 'ĉefartikolo',\n 'chính',\n 'əsas',\n 'glavni',\n 'głowny nastawk',\n 'gotara bingehîn',\n 'hauptartikel',\n 'hlavný článok',\n 'hłowny nastawk',\n 'hoofartikel',\n 'høvuðsgrein',\n 'huvudartikel',\n 'ki',\n 'kryesor',\n // 'main',\n // 'main article',\n 'mien artikal',\n 'nagusia',\n 'nangruna',\n 'osobny artykuł',\n 'pääartikkeli',\n 'pagr',\n 'pamatraksts',\n 'pangunahin',\n 'prif',\n 'prinsipal',\n 'qq',\n 'torra a',\n 'utama',\n 'utdypende artikkel',\n 'vaata',\n 'váldoartihkal',\n 'véddi ànche',\n 'vedi anche',\n 'xóotal',\n 'zie hoofdartikel',\n 'κύριο',\n 'аслияб макъала',\n 'асноўны артыкул',\n 'главна',\n 'главьнъ',\n 'керттера статья',\n 'кол чүүл',\n 'основна',\n 'основная статья',\n 'үндсэн өгүүлэл',\n 'მთავარი',\n 'հիմնական հոդված',\n 'հիմնական յոդված',\n 'אנווייז צום הויפט ארטיקל',\n 'הפניה לערך מורחב',\n 'اساس',\n 'اصل مضمون',\n 'اصلی',\n 'بشپړه ليکنه',\n 'تفصيلي مضمون',\n 'سەرەکی',\n 'مفصلة',\n 'मुख्य',\n 'मुख्यः',\n 'মূল নিবন্ধ',\n 'പ്രധാനലേഖനം',\n 'หลัก',\n 'ບົດຄວາມຫຼັກ',\n 'ដើមចំបង',\n '본문',\n '內文'\n]\n","module.exports = [\n // 'atari',\n 'awwur',\n 'chủ đề',\n 'lango',\n 'link portaal',\n 'porched',\n 'portaal',\n 'portada',\n 'portail',\n // 'portal',\n 'pòrtal',\n 'portál',\n 'portal box',\n 'portale',\n 'portałe',\n 'portalo',\n 'portalpar',\n 'portāls',\n 'portály',\n 'portaol',\n 'teemasivu',\n 'vikisritis',\n 'wikiportal',\n 'πύλη',\n 'ков',\n 'партал',\n 'портал',\n 'პორტალი',\n 'պորտալ',\n 'קישורי פורטל',\n 'باب',\n 'بوابة',\n 'بوابه',\n 'پوْرتال',\n 'تانبه',\n 'درگاه',\n 'دەروازە',\n 'दालन',\n 'প্রবেশদ্বার',\n 'കവാടം',\n 'สถานีย่อย2',\n 'ផតថល',\n '포털',\n 'ウィキポータルリンク',\n '門'\n]\n","module.exports = [\n 'atsauces',\n 'çavkanî',\n 'çeşmeler',\n 'cyfeiriadau',\n 'daveoù',\n 'dustuniow',\n 'erreferentzia zerrenda',\n 'fotnoteliste',\n 'gáldut',\n 'išnašos',\n 'i̇stinad siyahısı',\n 'izvori',\n 'kaynakça',\n 'listănote',\n 'listaref',\n 'llistaref',\n 'manbalar',\n 'nūruodis',\n 'przëpisë',\n 'przipisy',\n 'przypisy',\n 'referans',\n 'referanser',\n 'rèferences',\n 'références',\n 'references',\n 'referéncias',\n 'referências',\n 'referencie',\n 'referències',\n 'referencoj',\n 'referency',\n 'referenzen',\n 'referenzi',\n // 'reflist ',\n 'refréncias',\n 'refspisak',\n 'šaltėnē',\n 'sklici',\n 'tham khảo',\n 'verwysings',\n 'viited',\n 'viitteet',\n 'παραπομπές',\n 'асăрхавсем',\n 'баянар',\n 'белгалдаккхар',\n 'билгалдахарш',\n 'быһаарыылар',\n 'валэктонъёс',\n 'дереккөздер',\n 'заалтс',\n 'зүүлтэ',\n 'извори',\n 'иҫкәрмәләр',\n 'кладѧꙃи',\n 'крыніцы',\n 'наводи',\n 'примечания',\n 'фиппаинæгтæ',\n 'хіужаби',\n 'эзоҳ',\n 'სქოლიოს სია',\n 'სქოლიოშ ერკებული',\n 'ծանցանկ',\n 'הערות שוליים',\n 'רעפליסטע',\n 'پانویس',\n 'حوالہ جات',\n 'حوالو',\n 'حوالے',\n 'سأرچئشمە',\n 'قایناق',\n 'لړسرچينې',\n 'مراجع',\n 'مصادر',\n 'संदर्भयादी',\n 'সূত্র তালিকা',\n 'ਹਵਾਲੇ',\n 'ଆଧାର',\n 'ආශ්‍රලැයිස්තුව',\n 'รายการอ้างอิง',\n 'បញ្ជីឯកសារយោង',\n '각주'\n]\n","module.exports = [\n 'harvnp',\n 'harvref',\n 'kdş',\n 'mallonga piednoto',\n 'odn',\n //'sfn',\n 'зноска'\n]\n","module.exports = [\n 'biçûk',\n 'küçük',\n 'litaskrift',\n 'malé',\n 'malgrande',\n 'malo',\n 'nhỏ',\n 'pequeno',\n 'petit',\n 'piccolo',\n // 'small',\n 'дробны шрыфт',\n 'мали',\n 'мало',\n 'փոքր',\n 'מוקטן',\n 'קליין',\n 'بچووک',\n 'صغير',\n 'صغیر',\n 'ছোট',\n 'ਛੋਟਾ'\n]\n","module.exports = [\n 'algusaeg',\n 'aloituspäivämäärä',\n 'başlangıç tarihi',\n 'data',\n 'data de início',\n 'data inici',\n 'date début',\n 'destpêka dem',\n 'fecha',\n 'initial release',\n 'početni datum',\n 'pradžios data',\n // 'start date',\n // 'start-date',\n 'start dato',\n 'startdato',\n 'startdatum',\n 'tanggal mulai',\n 'tarikh mula',\n 'začetni datum',\n 'ημερομηνία εκκίνησης',\n 'датум почетка',\n 'почетен датум',\n 'დაიწყე თარიღი',\n 'تاريخ بداية',\n 'تاریخ آغاز',\n 'ڕێکەوتی سەرەتا',\n 'ܣܝܩܘܡ ܫܘܪܝܐ',\n 'दिनांक',\n 'শুরুর তারিখ',\n 'ආරම්භක දිනය',\n '시작 날짜'\n]\n","module.exports = [\n 'persoondata', //af\n 'ব্যক্তিতথ্য', //as\n 'personendaten', //de\n // 'persondata', //en\n 'اطلاعات شخص', //fa\n 'פרטים ביוגרפיים', //he\n 'व्यक्तिगत आँकड़े', //hi\n '인물데이터', //ko\n 'persoonsgegevens', //nl\n 'osebni podatki', //sl\n 'лични подаци', //sr\n 'ข้อมูลบุคคล', //th\n 'dữ liệu nhân vật', //vi\n '個人資訊' //zh\n]\n","module.exports = [\n 'bảng phân loại',\n 'biotakso infokaste',\n 'blwch tacson',\n 'boks klassans',\n 'bosca sonraí tacsanomaíochta',\n 'capsa taxinomica',\n 'dora tewran',\n 'ficha de taxón',\n 'info/taxonomia',\n \"infotaula d'ésser viu\",\n 'kishtey fys baagh',\n 'kotak info taksonomi',\n 'puha fakafaʻahinga',\n 'takso kutusu',\n 'taksoboks',\n 'taksokvir',\n 'takson infobox',\n 'taksonitabel',\n 'taksonomia',\n 'taksonomiija',\n 'taksonomio',\n 'taksonomiýa',\n 'taksonomka',\n 'taksoqutu',\n 'tassobox',\n 'tassonomìa',\n // 'taxobox',\n 'taxobox öömrang',\n 'taxobox2',\n 'taxoboxe',\n 'taxocaixa',\n 'taxonomio',\n 'taxotaula infotaula',\n 'ταξινομοπλαίσιο',\n 'таксанамічная інфармацыя',\n 'таксанамія',\n 'таксаҥа',\n 'таксобокс',\n 'таксон',\n 'таксономија',\n 'таксономиясь',\n 'таксономія',\n 'ტაქსოდაფა',\n 'տաքսոտուփ',\n 'מיון',\n 'جعبه اطلاعات آرایه زیستی',\n 'صندوق معلومات كائن',\n 'जीवचौकट',\n 'වර්ගීකරණකොටුව',\n 'ตารางจำแนกพันธุ์',\n 'ຕາລາງຈຳແໜກພັນ',\n '생물 분류',\n '物種明細模',\n '生物分類表'\n]\n","let mapping = {\n 'birth date and age': require('./data/birth_date_and_age'),\n citation: require('./data/citation'),\n 'cite book': require('./data/cite_book'),\n 'cite journal': require('./data/cite_journal'),\n 'cite web': require('./data/cite_web'),\n 'commons cat': require('./data/commons_cat'),\n coord: require('./data/coord'),\n flag: require('./data/flag'),\n flagicon: require('./data/flagicon'),\n formatnum: require('./data/formatnum'),\n ipa: require('./data/ipa'),\n isbn: require('./data/isbn'),\n main: require('./data/main'),\n portal: require('./data/portal'),\n reflist: require('./data/reflist'),\n sfn: require('./data/sfn'),\n small: require('./data/small'),\n 'start date': require('./data/start_date'),\n persondata: require('./data/persondata'),\n taxobox: require('./data/taxobox')\n}\n\nconst plugin = function (models, templates) {\n Object.keys(mapping).forEach((k) => {\n mapping[k].forEach((name) => {\n // create template parser with alias\n templates[name] = function (tmpl, list, parse) {\n return templates[k](tmpl, list, parse, k)\n }\n })\n })\n}\nmodule.exports = plugin\n"],"names":["mapping","require$$0","citation","require$$1","require$$2","require$$3","require$$4","require$$5","coord","require$$6","flag","require$$7","flagicon","require$$8","formatnum","require$$9","ipa","require$$10","isbn","require$$11","main","require$$12","portal","require$$13","reflist","require$$14","sfn","require$$15","small","require$$16","require$$17","persondata","require$$18","taxobox","require$$19","plugin","models","templates","Object","keys","forEach","k","name","tmpl","list","parse"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-i18n.js","sources":["../src/data/birth_date_and_age.js","../src/data/citation.js","../src/data/cite_book.js","../src/data/cite_journal.js","../src/data/cite_web.js","../src/data/commons_cat.js","../src/data/coord.js","../src/data/flag.js","../src/data/flagicon.js","../src/data/formatnum.js","../src/data/ipa.js","../src/data/isbn.js","../src/data/main.js","../src/data/portal.js","../src/data/reflist.js","../src/data/sfn.js","../src/data/small.js","../src/data/start_date.js","../src/data/persondata.js","../src/data/taxobox.js","../src/index.js"],"sourcesContent":["module.exports = [\n 'ålder',\n 'ani',\n 'b',\n // 'birth date',\n // 'birth date and age',\n // 'birth year and age',\n 'calcola età',\n 'dáta breithe agus aois',\n 'data de nacemento e idade',\n 'data de naissença e atge',\n 'dâta de nèssence',\n 'data naixement i edat',\n 'data nașterii și vârsta',\n 'data tat-twelid u età',\n 'date de naissance',\n 'dato og alder',\n 'dátum narodenia a vek',\n 'datum narození a věk',\n 'datum rođenja i godine',\n 'datum rojstva in starost',\n 'doğum tarihi ve yaşı',\n 'doğum tarixi və yaşı',\n 'dyddiad geni ac oedran',\n 'dzimšanas datums un vecums',\n 'életkor-élő-dátummal',\n 'fødselsdato og alder',\n 'geboortedatum en ouderdom',\n 'jaiotza data eta adina',\n 'narodniny a staroba',\n 'narodniny a starstwo',\n 'naskiĝdato kaj aĝo',\n 'ngày sinh và tuổi',\n 'petsa ti pannakaipasngay ken tawen',\n 'roja bûyînê û temen',\n 'sünniaeg ja vanus',\n 'syntymäaika ja ikä',\n 'tanggal embas lan yusa',\n 'tanggal lahir dan umur',\n 'tarikh lahir dan umur',\n 'ulloq ukiuilu',\n 'дата з віком',\n 'дата на раждане и години',\n 'дата нараджэння і ўзрост',\n 'датум рођења',\n 'нарадзіўся',\n 'райгуырд',\n 'роден на и возраст',\n 'родился',\n 'таърихи таваллуд ва син',\n 'төрсөн огноо, нас',\n 'шочмокече',\n 'დაბადების თარიღი და ასაკი',\n 'ծննդյան ամսաթիվ և տարիք',\n 'تاريخ الميلاد و العمر',\n 'تاريخ الميلاد والعمر',\n 'تاریخ پیدائش اور عمر',\n 'تاریخ تولد و سن',\n 'ڄمڻ جي تاريخ ۽ عمر',\n 'د زیږون نیټه او عمر',\n 'دوغوم تاریخی ایله یاش',\n 'ڕۆژی لەدایکبوون و تەمەن',\n 'जन्म तिथि एवं आयु',\n 'जन्म दिनांक आणि वय',\n 'জন্ম তারিখ ও বয়স',\n 'பிறப்பும் அகவையும்',\n 'උපන් දින සහ වයස',\n '출생일과 나이',\n '出世日同歲數',\n '生年月日と年齢',\n '生日搭年纪'\n]\n","module.exports = [\n 'atsauce',\n 'chú thích',\n 'cit',\n 'cita testo',\n 'citácia harvard',\n 'citat',\n 'citat3',\n // 'citation',\n 'cite',\n 'citim',\n 'cito',\n 'cytuj',\n 'erreferentzia',\n 'iomradh',\n 'kaynak',\n 'kilde',\n 'obra citada',\n 'tzita testu',\n 'viide',\n 'наведување',\n 'উদ্ধৃতি',\n 'ကိုးကားခြင်း',\n '인용'\n]\n","module.exports = [\n 'bókaheimild',\n 'book reference',\n 'chú thích sách',\n 'ċita ktieb',\n 'cita libro',\n 'cita libru',\n 'cita llibru',\n 'citace monografie',\n 'citácia knihy',\n 'citaĵo el libro',\n 'citar lhibro',\n 'citar libro',\n 'citar livro',\n 'citat carte',\n 'citaziuni di testu',\n // 'cite book',\n 'cite book.',\n 'cité un lìber',\n 'citeer boek',\n 'citiranje knjiga',\n 'cytuj książkę',\n 'cytuj ksiōnżkã',\n 'enmyslioar',\n 'girjegáldu',\n 'grāmatas atsauce',\n 'hivatkozás/könyv',\n 'iomradh leabhar',\n 'kilde bog',\n 'kilde bok',\n 'kirjaviite',\n 'kitap kaynağı',\n 'kjelde bok',\n 'lidɐraduur',\n 'literatur',\n 'literatura',\n 'navedi knjigo',\n 'ouvrage',\n 'ôvra',\n 'ref-llibre',\n 'tzita libru',\n 'кітап',\n 'наведена книга',\n 'צייגט בוך',\n 'استشهاد بكتاب',\n 'حوالہ کتاب',\n 'کیتاب قایناقلاماسی',\n 'ڪتابن مان حوالا',\n 'یادکرد',\n 'स्रोत पुस्तक',\n 'বই উদ্ধৃতি',\n '서적 인용',\n '引書'\n]\n","module.exports = [\n 'article',\n 'chú thích tạp chí',\n 'cita pubblicazione',\n 'ċita pubblikazzjoni',\n 'cita publicación',\n 'cita publicación periódica',\n 'cita publicasion',\n 'citácia periodika',\n 'citaĵo el gazeto',\n 'citar periódico',\n 'citat revistă',\n 'cite aldizkari',\n // 'cite journal',\n \"cité n'arvista\",\n 'cite paper',\n 'citeer journal',\n 'citiranje časopisa',\n 'cytuj news',\n 'cytuj pismo',\n 'dergi kaynağı',\n 'iomradh iris',\n 'lehtiviite',\n 'luaigh foilseachán',\n 'navedi revijo',\n 'publikācijas atsauce',\n 'ref-publicació',\n 'revista',\n 'tzita publicatzione',\n 'макъала',\n 'наведено списание',\n 'статья',\n 'ыстатыйа',\n 'استشهاد بدورية أكاديمية',\n 'بیرخستنەوەی گۆڤار',\n 'حوالہ رسالہ',\n 'जर्नल स्रोत',\n 'সাময়িকী উদ্ধৃতি',\n '저널 인용'\n]\n","module.exports = [\n 'chú thích web',\n 'cita web',\n 'ċita web',\n 'citace elektronické monografie',\n 'citácia elektronického dokumentu',\n 'citaĵo el la reto',\n 'citar web',\n 'citat web',\n 'cité la ragnà',\n // 'cite web',\n 'cite web öömrang',\n 'citeer web',\n 'citeweb',\n 'citiranje weba',\n 'cito web',\n 'cytuj strōnã',\n 'cytuj stronę',\n 'iomradh lìon',\n 'kilde www',\n 'lien web',\n 'ligam web',\n 'lim vouèbe',\n 'lua idirlín',\n 'navedi splet',\n 'neahttagáldu',\n 'ref-web',\n 'tīmekļa atsauce',\n 'tzita web',\n 'vefheimild',\n 'verkkoviite',\n 'web kaynağı',\n 'наведена мрежна страница',\n 'спасылка',\n 'цитат уеб',\n 'צייגט וועב',\n 'بیرخستنەوەی وێب',\n 'حوالہ ویب',\n 'حوالو ويب',\n 'مرجع ويب',\n 'وب قایناقلاماسی',\n 'संकेतस्थळ स्रोत',\n 'ওয়েব উদ্ধৃতি',\n 'వెబ్ మూలము',\n 'උපන්‍යාස වෙබ්',\n '웹 인용',\n '引網'\n]\n","module.exports = [\n 'catcómhaoin',\n 'categorìa ëd commons',\n 'comincat',\n 'commons',\n // 'commons cat',\n 'commons categories',\n 'commons category',\n 'commons kategori',\n 'commons kategoriýa',\n 'commons-kategorie',\n 'commonscat',\n // 'commonscat ',\n 'commonsi kategooria',\n // 'commonskat',\n 'communiacat',\n 'katégori commons',\n 'kategori commons',\n 'kategorija v zbirki',\n 'thể loại commons',\n 'vikianbar kateqoriyası',\n 'vikikrātuves kategorija',\n 'викианбор-гурӯҳ',\n 'категорија на остави',\n 'ризница-врска',\n 'վիքիպահեստ կատեգորիա',\n 'קאמאנסקאט',\n 'آمبار بؤلمه',\n 'پۆلی کۆمنز',\n 'تصنيف كومنز',\n 'تصنيف كومونز',\n 'رده انبار',\n 'زمرہ کومنز',\n 'ڪومنز زمرو',\n 'कमन्सश्रेणी',\n 'कॉमन्स वर्ग',\n 'कॉमन्स श्रेणी',\n 'कॉमंस श्रेणी',\n 'কমন্স থাক',\n 'কমন্স বিষয়শ্রেণী',\n 'ਕਾਮਨਜ਼ ਸ਼੍ਰੇਣੀ',\n 'කොමන්ස්ප්‍රවර්ග',\n 'คอมมอนส์-หมวดหมู่',\n '위키공용분류',\n '同享類'\n]\n","module.exports = [\n // 'coor',\n 'coor dd',\n // 'coor dm',\n // 'coor dms',\n // 'coord',\n 'coordenadas',\n 'coordinate',\n 'coördinaten',\n 'cord',\n 'hnit',\n 'koord',\n 'koordinat',\n 'koördinate',\n 'kòòrdinatë',\n 'koordinate',\n 'koordinate text',\n 'koördinaten',\n 'koordinaten',\n 'koordynaty',\n 'souřadnice',\n 'súradnice',\n 'tọa độ',\n 'współrzędne',\n 'каардынаты',\n 'محل وقوع',\n 'স্থানাঙ্ক',\n '좌표'\n]\n","module.exports = [\n 'al2',\n 'bandeira',\n // 'bandera',\n 'bandera2',\n // 'bandiera',\n 'bayrak',\n 'bendera',\n 'bratach',\n 'chórgoj',\n 'chorhoj',\n 'drapel',\n // 'fana',\n 'fáni',\n // 'flag',\n 'flag2',\n 'flagg',\n 'flagga',\n // 'flagicon',\n 'flago',\n 'flaq',\n 'karogs',\n 'lá cờ',\n 'lippu',\n 'państwo',\n 'pantli2',\n 'payis',\n 'pays',\n 'pisilipp',\n 'stän',\n 'vexillum',\n 'vlag',\n 'wagayway',\n 'zastava',\n 'zászló2',\n 'zid',\n 'застава',\n 'знаме',\n 'парчам',\n 'сьцяг',\n 'ялав',\n 'დროშა',\n 'դրոշ',\n 'դրօշ',\n 'דגל',\n 'بایراق',\n 'پرچم',\n 'جهنڊو',\n 'جھنڈا',\n 'علم',\n 'देश झन्डा',\n 'पताका',\n 'পতাকা',\n 'கொடி',\n 'ධජය',\n 'ທຸງຊາດ',\n 'အလံ',\n '국기',\n '旗'\n]\n","module.exports = [\n // 'Al',\n 'bandera',\n 'bandera4',\n 'bandiera',\n 'bandièra',\n 'bandiere',\n 'bannera',\n 'bayraksimge',\n 'bayraq',\n 'bayroqikon',\n 'bendera-ikon',\n 'drapeau',\n 'drapél',\n 'eicon baner',\n 'falgicon',\n 'fana',\n 'flag icon',\n 'flag-ikon',\n 'flaga',\n 'flaggbild',\n // 'flagicon',\n 'flagikon',\n 'íconebandeira',\n 'ikonazastave',\n 'leavga',\n 'lippukuva',\n 'minivlajka',\n 'riigi ikoon',\n 'vexillum icon',\n 'vlagikoon',\n 'vlagland',\n 'wagaywayikono',\n 'zászlóikon',\n 'zd',\n 'абираҟ',\n 'байрак1',\n 'байракх',\n 'далбаа',\n 'државнознаме',\n 'желек',\n 'зас',\n 'икона-флаг',\n 'прапорець',\n 'сцяг',\n 'тук',\n 'тырыса',\n 'флаг',\n 'بایراقچه',\n 'پرچم تصویر',\n 'پرچمک',\n 'جهنڊو عڪس',\n 'رمز علم',\n 'ھێمای ئاڵا',\n 'ध्वजचिन्ह',\n 'পতাকা আইকন',\n 'ਝੰਡਾ ਤਸਵੀਰ',\n '국기그림'\n]\n","module.exports = [\n // 'formatnum',\n 'formattal',\n 'puntudecimal',\n 'szám',\n 'try formatnum',\n '형식 숫자'\n]\n","module.exports = [\n 'afa',\n // 'afi',\n // 'api',\n 'ase',\n 'ifa',\n // 'ipa',\n 'ipa-text',\n 'ipa1',\n 'ipa2',\n 'lbf',\n 'lfe',\n 'prononciation api',\n 'unicode',\n 'δφα',\n 'мфа',\n 'יפא',\n 'آوا',\n 'أصد',\n 'بول',\n 'نغا',\n 'अ-ध्व-लि',\n 'আধ্বব'\n]\n","module.exports = [\n // 'isbn',\n 'isbn2',\n 'آئی ایس بی این',\n 'ردمك',\n 'شابک۲',\n 'আইএসবিএন'\n]\n","module.exports = [\n 'aðalgrein',\n 'ana madde',\n 'antsipirihany',\n 'ap',\n 'article détaillé',\n 'article principal',\n 'articllo dètalyê',\n 'articlo principal',\n 'articol principal',\n 'articulo prencepale',\n 'artigo percipal',\n 'artigo principal',\n 'artiklu prinċipali',\n 'artitgel principal',\n 'bővebben',\n 'ĉefartikolo',\n 'chính',\n 'əsas',\n 'glavni',\n 'głowny nastawk',\n 'gotara bingehîn',\n 'hauptartikel',\n 'hlavný článok',\n 'hłowny nastawk',\n 'hoofartikel',\n 'høvuðsgrein',\n 'huvudartikel',\n 'ki',\n 'kryesor',\n // 'main',\n // 'main article',\n 'mien artikal',\n 'nagusia',\n 'nangruna',\n 'osobny artykuł',\n 'pääartikkeli',\n 'pagr',\n 'pamatraksts',\n 'pangunahin',\n 'prif',\n 'prinsipal',\n 'qq',\n 'torra a',\n 'utama',\n 'utdypende artikkel',\n 'vaata',\n 'váldoartihkal',\n 'véddi ànche',\n 'vedi anche',\n 'xóotal',\n 'zie hoofdartikel',\n 'κύριο',\n 'аслияб макъала',\n 'асноўны артыкул',\n 'главна',\n 'главьнъ',\n 'керттера статья',\n 'кол чүүл',\n 'основна',\n 'основная статья',\n 'үндсэн өгүүлэл',\n 'მთავარი',\n 'հիմնական հոդված',\n 'հիմնական յոդված',\n 'אנווייז צום הויפט ארטיקל',\n 'הפניה לערך מורחב',\n 'اساس',\n 'اصل مضمون',\n 'اصلی',\n 'بشپړه ليکنه',\n 'تفصيلي مضمون',\n 'سەرەکی',\n 'مفصلة',\n 'मुख्य',\n 'मुख्यः',\n 'মূল নিবন্ধ',\n 'പ്രധാനലേഖനം',\n 'หลัก',\n 'ບົດຄວາມຫຼັກ',\n 'ដើមចំបង',\n '본문',\n '內文'\n]\n","module.exports = [\n // 'atari',\n 'awwur',\n 'chủ đề',\n 'lango',\n 'link portaal',\n 'porched',\n 'portaal',\n 'portada',\n 'portail',\n // 'portal',\n 'pòrtal',\n 'portál',\n 'portal box',\n 'portale',\n 'portałe',\n 'portalo',\n 'portalpar',\n 'portāls',\n 'portály',\n 'portaol',\n 'teemasivu',\n 'vikisritis',\n 'wikiportal',\n 'πύλη',\n 'ков',\n 'партал',\n 'портал',\n 'პორტალი',\n 'պորտալ',\n 'קישורי פורטל',\n 'باب',\n 'بوابة',\n 'بوابه',\n 'پوْرتال',\n 'تانبه',\n 'درگاه',\n 'دەروازە',\n 'दालन',\n 'প্রবেশদ্বার',\n 'കവാടം',\n 'สถานีย่อย2',\n 'ផតថល',\n '포털',\n 'ウィキポータルリンク',\n '門'\n]\n","module.exports = [\n 'atsauces',\n 'çavkanî',\n 'çeşmeler',\n 'cyfeiriadau',\n 'daveoù',\n 'dustuniow',\n 'erreferentzia zerrenda',\n 'fotnoteliste',\n 'gáldut',\n 'išnašos',\n 'i̇stinad siyahısı',\n 'izvori',\n 'kaynakça',\n 'listănote',\n 'listaref',\n 'llistaref',\n 'manbalar',\n 'nūruodis',\n 'przëpisë',\n 'przipisy',\n 'przypisy',\n 'referans',\n 'referanser',\n 'rèferences',\n 'références',\n 'references',\n 'referéncias',\n 'referências',\n 'referencie',\n 'referències',\n 'referencoj',\n 'referency',\n 'referenzen',\n 'referenzi',\n // 'reflist ',\n 'refréncias',\n 'refspisak',\n 'šaltėnē',\n 'sklici',\n 'tham khảo',\n 'verwysings',\n 'viited',\n 'viitteet',\n 'παραπομπές',\n 'асăрхавсем',\n 'баянар',\n 'белгалдаккхар',\n 'билгалдахарш',\n 'быһаарыылар',\n 'валэктонъёс',\n 'дереккөздер',\n 'заалтс',\n 'зүүлтэ',\n 'извори',\n 'иҫкәрмәләр',\n 'кладѧꙃи',\n 'крыніцы',\n 'наводи',\n 'примечания',\n 'фиппаинæгтæ',\n 'хіужаби',\n 'эзоҳ',\n 'სქოლიოს სია',\n 'სქოლიოშ ერკებული',\n 'ծանցանկ',\n 'הערות שוליים',\n 'רעפליסטע',\n 'پانویس',\n 'حوالہ جات',\n 'حوالو',\n 'حوالے',\n 'سأرچئشمە',\n 'قایناق',\n 'لړسرچينې',\n 'مراجع',\n 'مصادر',\n 'संदर्भयादी',\n 'সূত্র তালিকা',\n 'ਹਵਾਲੇ',\n 'ଆଧାର',\n 'ආශ්‍රලැයිස්තුව',\n 'รายการอ้างอิง',\n 'បញ្ជីឯកសារយោង',\n '각주'\n]\n","module.exports = [\n 'harvnp',\n 'harvref',\n 'kdş',\n 'mallonga piednoto',\n 'odn',\n //'sfn',\n 'зноска'\n]\n","module.exports = [\n 'biçûk',\n 'küçük',\n 'litaskrift',\n 'malé',\n 'malgrande',\n 'malo',\n 'nhỏ',\n 'pequeno',\n 'petit',\n 'piccolo',\n // 'small',\n 'дробны шрыфт',\n 'мали',\n 'мало',\n 'փոքր',\n 'מוקטן',\n 'קליין',\n 'بچووک',\n 'صغير',\n 'صغیر',\n 'ছোট',\n 'ਛੋਟਾ'\n]\n","module.exports = [\n 'algusaeg',\n 'aloituspäivämäärä',\n 'başlangıç tarihi',\n 'data',\n 'data de início',\n 'data inici',\n 'date début',\n 'destpêka dem',\n 'fecha',\n 'initial release',\n 'početni datum',\n 'pradžios data',\n // 'start date',\n // 'start-date',\n 'start dato',\n 'startdato',\n 'startdatum',\n 'tanggal mulai',\n 'tarikh mula',\n 'začetni datum',\n 'ημερομηνία εκκίνησης',\n 'датум почетка',\n 'почетен датум',\n 'დაიწყე თარიღი',\n 'تاريخ بداية',\n 'تاریخ آغاز',\n 'ڕێکەوتی سەرەتا',\n 'ܣܝܩܘܡ ܫܘܪܝܐ',\n 'दिनांक',\n 'শুরুর তারিখ',\n 'ආරම්භක දිනය',\n '시작 날짜'\n]\n","module.exports = [\n 'persoondata', //af\n 'ব্যক্তিতথ্য', //as\n 'personendaten', //de\n // 'persondata', //en\n 'اطلاعات شخص', //fa\n 'פרטים ביוגרפיים', //he\n 'व्यक्तिगत आँकड़े', //hi\n '인물데이터', //ko\n 'persoonsgegevens', //nl\n 'osebni podatki', //sl\n 'лични подаци', //sr\n 'ข้อมูลบุคคล', //th\n 'dữ liệu nhân vật', //vi\n '個人資訊' //zh\n]\n","module.exports = [\n 'bảng phân loại',\n 'biotakso infokaste',\n 'blwch tacson',\n 'boks klassans',\n 'bosca sonraí tacsanomaíochta',\n 'capsa taxinomica',\n 'dora tewran',\n 'ficha de taxón',\n 'info/taxonomia',\n \"infotaula d'ésser viu\",\n 'kishtey fys baagh',\n 'kotak info taksonomi',\n 'puha fakafaʻahinga',\n 'takso kutusu',\n 'taksoboks',\n 'taksokvir',\n 'takson infobox',\n 'taksonitabel',\n 'taksonomia',\n 'taksonomiija',\n 'taksonomio',\n 'taksonomiýa',\n 'taksonomka',\n 'taksoqutu',\n 'tassobox',\n 'tassonomìa',\n // 'taxobox',\n 'taxobox öömrang',\n 'taxobox2',\n 'taxoboxe',\n 'taxocaixa',\n 'taxonomio',\n 'taxotaula infotaula',\n 'ταξινομοπλαίσιο',\n 'таксанамічная інфармацыя',\n 'таксанамія',\n 'таксаҥа',\n 'таксобокс',\n 'таксон',\n 'таксономија',\n 'таксономиясь',\n 'таксономія',\n 'ტაქსოდაფა',\n 'տաքսոտուփ',\n 'מיון',\n 'جعبه اطلاعات آرایه زیستی',\n 'صندوق معلومات كائن',\n 'जीवचौकट',\n 'වර්ගීකරණකොටුව',\n 'ตารางจำแนกพันธุ์',\n 'ຕາລາງຈຳແໜກພັນ',\n '생물 분류',\n '物種明細模',\n '生物分類表'\n]\n","let mapping = {\n 'birth date and age': require('./data/birth_date_and_age'),\n citation: require('./data/citation'),\n 'cite book': require('./data/cite_book'),\n 'cite journal': require('./data/cite_journal'),\n 'cite web': require('./data/cite_web'),\n 'commons cat': require('./data/commons_cat'),\n coord: require('./data/coord'),\n flag: require('./data/flag'),\n flagicon: require('./data/flagicon'),\n formatnum: require('./data/formatnum'),\n ipa: require('./data/ipa'),\n isbn: require('./data/isbn'),\n main: require('./data/main'),\n portal: require('./data/portal'),\n reflist: require('./data/reflist'),\n sfn: require('./data/sfn'),\n small: require('./data/small'),\n 'start date': require('./data/start_date'),\n persondata: require('./data/persondata'),\n taxobox: require('./data/taxobox')\n}\n\nconst plugin = function (models, templates) {\n Object.keys(mapping).forEach((k) => {\n mapping[k].forEach((name) => {\n // create template parser with alias\n templates[name] = function (tmpl, list, parse) {\n return templates[k](tmpl, list, parse, k)\n }\n })\n })\n}\nmodule.exports = plugin\n"],"names":["birth_date_and_age","citation","cite_book","cite_journal","cite_web","commons_cat","coord","flag","flagicon","formatnum","ipa","isbn","main","portal","reflist","sfn","small","start_date","persondata","taxobox","mapping","require$$0","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","plugin","models","templates","Object","keys","forEach","k","name","tmpl","list","parse","src"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/i18n/builds/wtf-plugin-i18n.mjs b/plugins/i18n/builds/wtf-plugin-i18n.mjs index e1837553..8ef24dec 100644 --- a/plugins/i18n/builds/wtf-plugin-i18n.mjs +++ b/plugins/i18n/builds/wtf-plugin-i18n.mjs @@ -1,4 +1,4 @@ -/* wtf-plugin-i18n 0.1.0 MIT */ +/* wtf-plugin-i18n 0.1.1 MIT */ var birth_date_and_age = ['ålder', 'ani', 'b', // 'birth date', // 'birth date and age', // 'birth year and age', @@ -125,4 +125,4 @@ const plugin = function (models, templates) { var src = plugin; -export default src; +export { src as default }; diff --git a/plugins/i18n/package-lock.json b/plugins/i18n/package-lock.json index 2136c61e..a6a103a9 100644 --- a/plugins/i18n/package-lock.json +++ b/plugins/i18n/package-lock.json @@ -9,52 +9,56 @@ "version": "0.1.0", "license": "MIT", "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "4.0.0", - "rollup-plugin-node-resolve": "5.2.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", - "dev": true + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -71,83 +75,102 @@ } }, "node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -164,193 +187,249 @@ } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "dependencies": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -359,189 +438,278 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=4" @@ -574,6 +742,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -682,452 +865,570 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -1137,55 +1438,59 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1193,55 +1498,166 @@ "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", + "node_modules/@babel/traverse": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-babel/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-babel/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" } }, - "node_modules/@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "node_modules/@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -1254,15 +1670,6 @@ "integrity": "sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg==", "dev": true }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1306,13 +1713,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" }, "peerDependencies": { @@ -1320,25 +1727,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1361,16 +1768,16 @@ } }, "node_modules/browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" @@ -1389,21 +1796,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "node_modules/buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "node_modules/builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -1418,10 +1810,14 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", - "dev": true + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } }, "node_modules/chalk": { "version": "2.4.2", @@ -1453,9 +1849,9 @@ "dev": true }, "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "node_modules/commander": { @@ -1464,6 +1860,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1480,12 +1882,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "dependencies": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "funding": { @@ -1503,9 +1905,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/debug": { @@ -1583,33 +1985,37 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.704", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", - "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -1678,12 +2084,6 @@ "node": ">=0.8.0" } }, - "node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1757,10 +2157,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -1772,6 +2197,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { @@ -1804,6 +2232,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1825,6 +2265,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1841,6 +2296,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -1881,9 +2350,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true, "engines": { "node": ">= 0.4" @@ -1925,12 +2394,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, "node_modules/is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -1956,22 +2419,22 @@ } }, "node_modules/is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "dependencies": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -1989,11 +2452,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2044,6 +2519,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -2127,12 +2614,6 @@ "node": ">=6" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -2179,15 +2660,15 @@ "dev": true }, "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2255,15 +2736,33 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "node_modules/randombytes": { @@ -2276,23 +2775,23 @@ } }, "node_modules/re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "node_modules/readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -2303,21 +2802,21 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "dependencies": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" }, "engines": { "node": ">=4" } }, "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "node_modules/regenerator-transform": { @@ -2346,17 +2845,17 @@ } }, "node_modules/regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" @@ -2369,9 +2868,9 @@ "dev": true }, "node_modules/regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -2390,12 +2889,16 @@ } }, "node_modules/resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "dependencies": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resumer": { @@ -2408,9 +2911,9 @@ } }, "node_modules/rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2419,30 +2922,7 @@ "node": ">=10.0.0" }, "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "node_modules/rollup-plugin-filesize-check": { @@ -2451,28 +2931,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "node_modules/rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "dependencies": { - "rollup-pluginutils": "^2.5.0" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "dependencies": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -2485,15 +2943,6 @@ "terser": "^5.0.0" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2567,9 +3016,9 @@ "dev": true }, "node_modules/split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "dependencies": { "through": "2" @@ -2579,23 +3028,23 @@ } }, "node_modules/string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" }, "engines": { "node": ">= 0.4" @@ -2643,101 +3092,40 @@ } }, "node_modules/tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "dependencies": { - "chalk": "4.1.0", - "tap-out": "3.0.0" + "colorette": "^1.2.2", + "tap-in": "3.2.1" }, "bin": { "tap-dancer": "src/index.js" } }, - "node_modules/tap-dancer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tap-dancer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/tap-dancer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/tap-dancer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "bin": { + "tap-in": "bin/tap-in.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", - "dev": true, - "dependencies": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" - }, - "bin": { - "tap-out": "bin/cmd.js" + "node": ">=8.0.0" } }, "node_modules/tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", @@ -2745,17 +3133,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "bin": { @@ -2817,9 +3207,9 @@ } }, "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "node_modules/unbox-primitive": { @@ -2838,40 +3228,40 @@ } }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, "engines": { "node": ">=4" @@ -2956,35 +3346,35 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" } }, "@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true }, "@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -2994,74 +3384,75 @@ } }, "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -3075,339 +3466,370 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, - "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "@babel/plugin-proposal-class-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { @@ -3428,6 +3850,15 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -3509,353 +3940,366 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -3865,52 +4309,53 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" } }, "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -3921,52 +4366,123 @@ } }, "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, "@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -3979,15 +4495,6 @@ "integrity": "sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg==", "dev": true }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -4022,33 +4529,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" } }, "balanced-match": { @@ -4068,16 +4575,16 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "buffer-from": { @@ -4086,18 +4593,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true - }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -4109,9 +4604,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true }, "chalk": { @@ -4141,9 +4636,9 @@ "dev": true }, "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "commander": { @@ -4152,6 +4647,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -4168,12 +4669,12 @@ } }, "core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "requires": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "dependencies": { @@ -4186,9 +4687,9 @@ } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "debug": { @@ -4256,33 +4757,37 @@ } }, "electron-to-chromium": { - "version": "1.3.704", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", - "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" } }, "es-get-iterator": { @@ -4332,12 +4837,6 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4395,10 +4894,26 @@ "has-symbols": "^1.0.1" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4430,6 +4945,15 @@ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, + "has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -4442,6 +4966,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4458,6 +4991,17 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -4483,9 +5027,9 @@ } }, "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-core-module": { @@ -4509,12 +5053,6 @@ "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -4528,22 +5066,22 @@ "dev": true }, "is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "requires": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" } }, "is-set": { @@ -4552,12 +5090,21 @@ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -4586,6 +5133,15 @@ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -4647,12 +5203,6 @@ "minimist": "^1.2.5" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -4696,15 +5246,15 @@ "dev": true }, "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true }, "object-is": { @@ -4751,15 +5301,27 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "randombytes": { @@ -4772,23 +5334,23 @@ } }, "re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -4799,18 +5361,18 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "regenerator-transform": { @@ -4833,17 +5395,17 @@ } }, "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { @@ -4853,9 +5415,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -4870,11 +5432,12 @@ } }, "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -4888,35 +5451,12 @@ } }, "rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "rollup-plugin-filesize-check": { @@ -4925,28 +5465,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "requires": { - "rollup-pluginutils": "^2.5.0" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -4959,15 +5477,6 @@ "terser": "^5.0.0" } }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -5031,32 +5540,32 @@ "dev": true }, "split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "string.prototype.trimend": { @@ -5089,82 +5598,31 @@ } }, "tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "requires": { - "chalk": "4.1.0", - "tap-out": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "colorette": "^1.2.2", + "tap-in": "3.2.1" } }, - "tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", + "tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "requires": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" } }, "tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -5172,17 +5630,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "dependencies": { @@ -5230,9 +5690,9 @@ "dev": true }, "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "unbox-primitive": { @@ -5248,31 +5708,31 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "util-deprecate": { diff --git a/plugins/i18n/package.json b/plugins/i18n/package.json index a0a91612..6cc07590 100644 --- a/plugins/i18n/package.json +++ b/plugins/i18n/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-i18n", "description": "i18n plugin for wtf_wikipedia", - "version": "0.1.0", + "version": "0.1.1", "main": "./builds/wtf-plugin-i18n.js", "unpkg": "./builds/wtf-plugin-i18n.min.js", "module": "./builds/wtf-plugin-i18n.mjs", @@ -31,17 +31,15 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "4.0.0", - "rollup-plugin-node-resolve": "5.2.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "license": "MIT" -} +} \ No newline at end of file diff --git a/plugins/i18n/rollup.config.js b/plugins/i18n/rollup.config.js index e8585051..c04e680e 100644 --- a/plugins/i18n/rollup.config.js +++ b/plugins/i18n/rollup.config.js @@ -1,6 +1,6 @@ -import commonjs from 'rollup-plugin-commonjs' +import commonjs from '@rollup/plugin-commonjs' import { terser } from 'rollup-plugin-terser' -import babel from 'rollup-plugin-babel' +import { babel } from '@rollup/plugin-babel' import sizeCheck from 'rollup-plugin-filesize-check' import { version } from './package.json' @@ -16,6 +16,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -37,6 +38,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -57,6 +59,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }), diff --git a/plugins/image/builds/wtf-plugin-image.js b/plugins/image/builds/wtf-plugin-image.js index 03fbf17f..3eae8ae9 100644 --- a/plugins/image/builds/wtf-plugin-image.js +++ b/plugins/image/builds/wtf-plugin-image.js @@ -1,34 +1,33 @@ -/* wtf-plugin-image 0.3.0 MIT */ +/* wtf-plugin-image 0.3.1 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('https')) : typeof define === 'function' && define.amd ? define(['https'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfImage = factory(global.https)); -}(this, (function (https) { 'use strict'; + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfImage = factory(global.require$$0)); +})(this, (function (require$$0) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - var https__default = /*#__PURE__*/_interopDefaultLegacy(https); + var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0); var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; - } - - var hashes = createCommonjsModule(function (module, exports) { - /** - * jshashes - https://github.com/h2non/jshashes - * Released under the "New BSD" license - * - * Algorithms specification: - * - * MD5 - http://www.ietf.org/rfc/rfc1321.txt - * RIPEMD-160 - http://homes.esat.kuleuven.be/~bosselae/ripemd160.html - * SHA1 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf - * SHA256 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf - * SHA512 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf - * HMAC - http://www.ietf.org/rfc/rfc2104.txt - */ + var hashes = {exports: {}}; + + /** + * jshashes - https://github.com/h2non/jshashes + * Released under the "New BSD" license + * + * Algorithms specification: + * + * MD5 - http://www.ietf.org/rfc/rfc1321.txt + * RIPEMD-160 - http://homes.esat.kuleuven.be/~bosselae/ripemd160.html + * SHA1 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf + * SHA256 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf + * SHA512 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf + * HMAC - http://www.ietf.org/rfc/rfc2104.txt + */ + + (function (module, exports) { (function () { var Hashes; @@ -1782,8 +1781,8 @@ module.exports = Hashes; } // in Narwhal or RingoJS v0.7.0- else { - freeExports.Hashes = Hashes; - } + freeExports.Hashes = Hashes; + } } else { // in a browser or Rhino window.Hashes = Hashes; @@ -1791,12 +1790,13 @@ })(this); })(); // IIFE - }); + })(hashes, hashes.exports); + const Hashes = hashes.exports; const server$1 = 'https://upload.wikimedia.org/wikipedia/commons/'; const encodeTitle = function (file) { - let title = file.replace(/^(image|file?)\:/i, ''); //titlecase it + let title = file.replace(/^(image|file?):/i, ''); //titlecase it title = title.charAt(0).toUpperCase() + title.substring(1); //spaces to underscores @@ -1806,21 +1806,24 @@ //https://commons.wikimedia.org/wiki/Commons:FAQ#What_are_the_strangely_named_components_in_file_paths.3F - const commonsURL = function () { + const commonsURL$1 = function () { let file = this.data.file; let title = encodeTitle(file); - let hash = new hashes.MD5().hex(title); + let hash = new Hashes.MD5().hex(title); let path = hash.substr(0, 1) + '/' + hash.substr(0, 2) + '/'; title = encodeURIComponent(title); path += title; return server$1 + path; }; - var urlHash = commonsURL; + var urlHash = commonsURL$1; + + const https = require$$0__default["default"]; // use the native nodejs request function - const request = function (url, opts = {}) { + const request = function (url) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return new Promise((resolve, reject) => { - https__default['default'].get(url, opts, resp => { + https.get(url, opts, resp => { let status = String(resp.statusCode) || ''; let bool = /^[23]/.test(status); resolve(bool); @@ -1832,8 +1835,10 @@ var server = request; - const imgExists = function (callback) { - return server(this.url(), { + const http = server; // test if the image url exists or not + + const imgExists$1 = function (callback) { + return http(this.url(), { method: 'HEAD' }).then(function (bool) { //support callback non-promise form @@ -1851,10 +1856,9 @@ }); }; - var imgExists_1 = imgExists; + var imgExists_1 = imgExists$1; - // is there a good image of this - const mainImage = function () { + const mainImage$1 = function () { let box = this.infobox(); if (box) { @@ -1875,18 +1879,22 @@ return null; }; - var mainImage_1 = mainImage; + var mainImage_1 = mainImage$1; + + const commonsURL = urlHash; + const imgExists = imgExists_1; + const mainImage = mainImage_1; const addMethod = function (models) { - models.Doc.prototype.mainImage = mainImage_1; // add a new method to Image class + models.Doc.prototype.mainImage = mainImage; // add a new method to Image class - models.Image.prototype.commonsURL = urlHash; - models.Image.prototype.exists = imgExists_1; + models.Image.prototype.commonsURL = commonsURL; + models.Image.prototype.exists = imgExists; }; var src = addMethod; return src; -}))); +})); //# sourceMappingURL=wtf-plugin-image.js.map diff --git a/plugins/image/builds/wtf-plugin-image.js.map b/plugins/image/builds/wtf-plugin-image.js.map index 66e8d7c6..70c385bd 100644 --- a/plugins/image/builds/wtf-plugin-image.js.map +++ b/plugins/image/builds/wtf-plugin-image.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-image.js","sources":["../node_modules/jshashes/hashes.js","../src/url-hash.js","../src/http/server.js","../src/img-exists.js","../src/mainImage.js","../src/index.js"],"sourcesContent":["/**\n * jshashes - https://github.com/h2non/jshashes\n * Released under the \"New BSD\" license\n *\n * Algorithms specification:\n *\n * MD5 - http://www.ietf.org/rfc/rfc1321.txt\n * RIPEMD-160 - http://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n * SHA1 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n * SHA256 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n * SHA512 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n * HMAC - http://www.ietf.org/rfc/rfc2104.txt\n */\n(function() {\n var Hashes;\n\n function utf8Encode(str) {\n var x, y, output = '',\n i = -1,\n l;\n\n if (str && str.length) {\n l = str.length;\n while ((i += 1) < l) {\n /* Decode utf-16 surrogate pairs */\n x = str.charCodeAt(i);\n y = i + 1 < l ? str.charCodeAt(i + 1) : 0;\n if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {\n x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\n i += 1;\n }\n /* Encode output as utf-8 */\n if (x <= 0x7F) {\n output += String.fromCharCode(x);\n } else if (x <= 0x7FF) {\n output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F),\n 0x80 | (x & 0x3F));\n } else if (x <= 0xFFFF) {\n output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n } else if (x <= 0x1FFFFF) {\n output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n }\n }\n }\n return output;\n }\n\n function utf8Decode(str) {\n var i, ac, c1, c2, c3, arr = [],\n l;\n i = ac = c1 = c2 = c3 = 0;\n\n if (str && str.length) {\n l = str.length;\n str += '';\n\n while (i < l) {\n c1 = str.charCodeAt(i);\n ac += 1;\n if (c1 < 128) {\n arr[ac] = String.fromCharCode(c1);\n i += 1;\n } else if (c1 > 191 && c1 < 224) {\n c2 = str.charCodeAt(i + 1);\n arr[ac] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\n i += 2;\n } else {\n c2 = str.charCodeAt(i + 1);\n c3 = str.charCodeAt(i + 2);\n arr[ac] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n i += 3;\n }\n }\n }\n return arr.join('');\n }\n\n /**\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n function safe_add(x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n }\n\n /**\n * Bitwise rotate a 32-bit number to the left.\n */\n\n function bit_rol(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n }\n\n /**\n * Convert a raw string to a hex string\n */\n\n function rstr2hex(input, hexcase) {\n var hex_tab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef',\n output = '',\n x, i = 0,\n l = input.length;\n for (; i < l; i += 1) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0F) + hex_tab.charAt(x & 0x0F);\n }\n return output;\n }\n\n /**\n * Encode a string as utf-16\n */\n\n function str2rstr_utf16le(input) {\n var i, l = input.length,\n output = '';\n for (i = 0; i < l; i += 1) {\n output += String.fromCharCode(input.charCodeAt(i) & 0xFF, (input.charCodeAt(i) >>> 8) & 0xFF);\n }\n return output;\n }\n\n function str2rstr_utf16be(input) {\n var i, l = input.length,\n output = '';\n for (i = 0; i < l; i += 1) {\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, input.charCodeAt(i) & 0xFF);\n }\n return output;\n }\n\n /**\n * Convert an array of big-endian words to a string\n */\n\n function binb2rstr(input) {\n var i, l = input.length * 32,\n output = '';\n for (i = 0; i < l; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (24 - i % 32)) & 0xFF);\n }\n return output;\n }\n\n /**\n * Convert an array of little-endian words to a string\n */\n\n function binl2rstr(input) {\n var i, l = input.length * 32,\n output = '';\n for (i = 0; i < l; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF);\n }\n return output;\n }\n\n /**\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n function rstr2binl(input) {\n var i, l = input.length * 8,\n output = Array(input.length >> 2),\n lo = output.length;\n for (i = 0; i < lo; i += 1) {\n output[i] = 0;\n }\n for (i = 0; i < l; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (i % 32);\n }\n return output;\n }\n\n /**\n * Convert a raw string to an array of big-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n function rstr2binb(input) {\n var i, l = input.length * 8,\n output = Array(input.length >> 2),\n lo = output.length;\n for (i = 0; i < lo; i += 1) {\n output[i] = 0;\n }\n for (i = 0; i < l; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\n }\n return output;\n }\n\n /**\n * Convert a raw string to an arbitrary string encoding\n */\n\n function rstr2any(input, encoding) {\n var divisor = encoding.length,\n remainders = Array(),\n i, q, x, ld, quotient, dividend, output, full_length;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n dividend = Array(Math.ceil(input.length / 2));\n ld = dividend.length;\n for (i = 0; i < ld; i += 1) {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /**\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. We stop when the dividend is zerHashes.\n * All remainders are stored for later use.\n */\n while (dividend.length > 0) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i += 1) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0) {\n quotient[quotient.length] = q;\n }\n }\n remainders[remainders.length] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n output = '';\n for (i = remainders.length - 1; i >= 0; i--) {\n output += encoding.charAt(remainders[i]);\n }\n\n /* Append leading zero equivalents */\n full_length = Math.ceil(input.length * 8 / (Math.log(encoding.length) / Math.log(2)));\n for (i = output.length; i < full_length; i += 1) {\n output = encoding[0] + output;\n }\n return output;\n }\n\n /**\n * Convert a raw string to a base-64 string\n */\n\n function rstr2b64(input, b64pad) {\n var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n output = '',\n len = input.length,\n i, j, triplet;\n b64pad = b64pad || '=';\n for (i = 0; i < len; i += 3) {\n triplet = (input.charCodeAt(i) << 16) | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (j = 0; j < 4; j += 1) {\n if (i * 8 + j * 6 > input.length * 8) {\n output += b64pad;\n } else {\n output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n }\n return output;\n }\n\n Hashes = {\n /**\n * @property {String} version\n * @readonly\n */\n VERSION: '1.0.6',\n /**\n * @member Hashes\n * @class Base64\n * @constructor\n */\n Base64: function() {\n // private properties\n var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n pad = '=', // default pad according with the RFC standard\n url = false, // URL encoding support @todo\n utf8 = true; // by default enable UTF-8 support encoding\n\n // public method for encoding\n this.encode = function(input) {\n var i, j, triplet,\n output = '',\n len = input.length;\n\n pad = pad || '=';\n input = (utf8) ? utf8Encode(input) : input;\n\n for (i = 0; i < len; i += 3) {\n triplet = (input.charCodeAt(i) << 16) | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (j = 0; j < 4; j += 1) {\n if (i * 8 + j * 6 > len * 8) {\n output += pad;\n } else {\n output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n }\n return output;\n };\n\n // public method for decoding\n this.decode = function(input) {\n // var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var i, o1, o2, o3, h1, h2, h3, h4, bits, ac,\n dec = '',\n arr = [];\n if (!input) {\n return input;\n }\n\n i = ac = 0;\n input = input.replace(new RegExp('\\\\' + pad, 'gi'), ''); // use '='\n //input += '';\n\n do { // unpack four hexets into three octets using index points in b64\n h1 = tab.indexOf(input.charAt(i += 1));\n h2 = tab.indexOf(input.charAt(i += 1));\n h3 = tab.indexOf(input.charAt(i += 1));\n h4 = tab.indexOf(input.charAt(i += 1));\n\n bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;\n\n o1 = bits >> 16 & 0xff;\n o2 = bits >> 8 & 0xff;\n o3 = bits & 0xff;\n ac += 1;\n\n if (h3 === 64) {\n arr[ac] = String.fromCharCode(o1);\n } else if (h4 === 64) {\n arr[ac] = String.fromCharCode(o1, o2);\n } else {\n arr[ac] = String.fromCharCode(o1, o2, o3);\n }\n } while (i < input.length);\n\n dec = arr.join('');\n dec = (utf8) ? utf8Decode(dec) : dec;\n\n return dec;\n };\n\n // set custom pad string\n this.setPad = function(str) {\n pad = str || pad;\n return this;\n };\n // set custom tab string characters\n this.setTab = function(str) {\n tab = str || tab;\n return this;\n };\n this.setUTF8 = function(bool) {\n if (typeof bool === 'boolean') {\n utf8 = bool;\n }\n return this;\n };\n },\n\n /**\n * CRC-32 calculation\n * @member Hashes\n * @method CRC32\n * @static\n * @param {String} str Input String\n * @return {String}\n */\n CRC32: function(str) {\n var crc = 0,\n x = 0,\n y = 0,\n table, i, iTop;\n str = utf8Encode(str);\n\n table = [\n '00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 ',\n '79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 ',\n '84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F ',\n '63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD ',\n 'A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC ',\n '51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 ',\n 'B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 ',\n '06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 ',\n 'E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 ',\n '12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 ',\n 'D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 ',\n '33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 ',\n 'CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 ',\n '9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E ',\n '7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D ',\n '806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 ',\n '60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA ',\n 'AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 ',\n '5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 ',\n 'B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 ',\n '05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 ',\n 'F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA ',\n '11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 ',\n 'D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F ',\n '30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E ',\n 'C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D'\n ].join('');\n\n crc = crc ^ (-1);\n for (i = 0, iTop = str.length; i < iTop; i += 1) {\n y = (crc ^ str.charCodeAt(i)) & 0xFF;\n x = '0x' + table.substr(y * 9, 8);\n crc = (crc >>> 8) ^ x;\n }\n // always return a positive number (that's what >>> 0 does)\n return (crc ^ (-1)) >>> 0;\n },\n /**\n * @member Hashes\n * @class MD5\n * @constructor\n * @param {Object} [config]\n *\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See for more infHashes.\n */\n MD5: function(options) {\n /**\n * Private config properties. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase}\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase\n b64pad = (options && typeof options.pad === 'string') ? options.pad : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding\n\n // privileged (public) methods\n this.hex = function(s) {\n return rstr2hex(rstr(s, utf8), hexcase);\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s, utf8), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d), hexcase);\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * Enable/disable uppercase hexadecimal returned string\n * @param {Boolean}\n * @return {Object} this\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * Defines a base64 pad string\n * @param {String} Pad\n * @return {Object} this\n */\n this.setPad = function(a) {\n b64pad = a || b64pad;\n return this;\n };\n /**\n * Defines a base64 pad string\n * @param {Boolean}\n * @return {Object} [this]\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n // private methods\n\n /**\n * Calculate the MD5 of a raw string\n */\n\n function rstr(s) {\n s = (utf8) ? utf8Encode(s) : s;\n return binl2rstr(binl(rstr2binl(s), s.length * 8));\n }\n\n /**\n * Calculate the HMAC-MD5, of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n var bkey, ipad, opad, hash, i;\n\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n bkey = rstr2binl(key);\n if (bkey.length > 16) {\n bkey = binl(bkey, key.length * 8);\n }\n\n ipad = Array(16), opad = Array(16);\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n return binl2rstr(binl(opad.concat(hash), 512 + 128));\n }\n\n /**\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n function binl(x, len) {\n var i, olda, oldb, oldc, oldd,\n a = 1732584193,\n b = -271733879,\n c = -1732584194,\n d = 271733878;\n\n /* append padding */\n x[len >> 5] |= 0x80 << ((len) % 32);\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n\n a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);\n d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\n a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);\n a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\n a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);\n c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);\n\n a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);\n d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);\n\n a = safe_add(a, olda);\n b = safe_add(b, oldb);\n c = safe_add(c, oldc);\n d = safe_add(d, oldd);\n }\n return Array(a, b, c, d);\n }\n\n /**\n * These functions implement the four basic operations the algorithm uses.\n */\n\n function md5_cmn(q, a, b, x, s, t) {\n return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);\n }\n\n function md5_ff(a, b, c, d, x, s, t) {\n return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);\n }\n\n function md5_gg(a, b, c, d, x, s, t) {\n return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);\n }\n\n function md5_hh(a, b, c, d, x, s, t) {\n return md5_cmn(b ^ c ^ d, a, b, x, s, t);\n }\n\n function md5_ii(a, b, c, d, x, s, t) {\n return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);\n }\n },\n /**\n * @member Hashes\n * @class Hashes.SHA1\n * @param {Object} [config]\n * @constructor\n *\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined in FIPS 180-1\n * Version 2.2 Copyright Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n SHA1: function(options) {\n /**\n * Private config properties. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase}\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase\n b64pad = (options && typeof options.pad === 'string') ? options.pad : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding\n\n // public methods\n this.hex = function(s) {\n return rstr2hex(rstr(s, utf8), hexcase);\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s, utf8), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s, utf8), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d));\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n * @public\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * @description Enable/disable uppercase hexadecimal returned string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {string} Pad\n * @return {Object} this\n * @public\n */\n this.setPad = function(a) {\n b64pad = a || b64pad;\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n // private methods\n\n /**\n * Calculate the SHA-512 of a raw string\n */\n\n function rstr(s) {\n s = (utf8) ? utf8Encode(s) : s;\n return binb2rstr(binb(rstr2binb(s), s.length * 8));\n }\n\n /**\n * Calculate the HMAC-SHA1 of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n var bkey, ipad, opad, i, hash;\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n bkey = rstr2binb(key);\n\n if (bkey.length > 16) {\n bkey = binb(bkey, key.length * 8);\n }\n ipad = Array(16), opad = Array(16);\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb(opad.concat(hash), 512 + 160));\n }\n\n /**\n * Calculate the SHA-1 of an array of big-endian words, and a bit length\n */\n\n function binb(x, len) {\n var i, j, t, olda, oldb, oldc, oldd, olde,\n w = Array(80),\n a = 1732584193,\n b = -271733879,\n c = -1732584194,\n d = 271733878,\n e = -1009589776;\n\n /* append padding */\n x[len >> 5] |= 0x80 << (24 - len % 32);\n x[((len + 64 >> 9) << 4) + 15] = len;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n olde = e;\n\n for (j = 0; j < 80; j += 1) {\n if (j < 16) {\n w[j] = x[i + j];\n } else {\n w[j] = bit_rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);\n }\n t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)),\n safe_add(safe_add(e, w[j]), sha1_kt(j)));\n e = d;\n d = c;\n c = bit_rol(b, 30);\n b = a;\n a = t;\n }\n\n a = safe_add(a, olda);\n b = safe_add(b, oldb);\n c = safe_add(c, oldc);\n d = safe_add(d, oldd);\n e = safe_add(e, olde);\n }\n return Array(a, b, c, d, e);\n }\n\n /**\n * Perform the appropriate triplet combination function for the current\n * iteration\n */\n\n function sha1_ft(t, b, c, d) {\n if (t < 20) {\n return (b & c) | ((~b) & d);\n }\n if (t < 40) {\n return b ^ c ^ d;\n }\n if (t < 60) {\n return (b & c) | (b & d) | (c & d);\n }\n return b ^ c ^ d;\n }\n\n /**\n * Determine the appropriate additive constant for the current iteration\n */\n\n function sha1_kt(t) {\n return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :\n (t < 60) ? -1894007588 : -899497514;\n }\n },\n /**\n * @class Hashes.SHA256\n * @param {config}\n *\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined in FIPS 180-2\n * Version 2.2 Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See http://pajhome.org.uk/crypt/md5 for details.\n * Also http://anmar.eu.org/projects/jssha2/\n */\n SHA256: function(options) {\n /**\n * Private properties configuration variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * @see this.setUpperCase() method\n * @see this.setPad() method\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase */\n b64pad = (options && typeof options.pad === 'string') ? options.pad : '=',\n /* base-64 pad character. Default '=' for strict RFC compliance */\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true,\n /* enable/disable utf8 encoding */\n sha256_K;\n\n /* privileged (public) methods */\n this.hex = function(s) {\n return rstr2hex(rstr(s, utf8));\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s, utf8), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s, utf8), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d));\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n * @public\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * Enable/disable uppercase hexadecimal returned string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {string} Pad\n * @return {Object} this\n * @public\n */\n this.setPad = function(a) {\n b64pad = a || b64pad;\n return this;\n };\n /**\n * Defines a base64 pad string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n // private methods\n\n /**\n * Calculate the SHA-512 of a raw string\n */\n\n function rstr(s, utf8) {\n s = (utf8) ? utf8Encode(s) : s;\n return binb2rstr(binb(rstr2binb(s), s.length * 8));\n }\n\n /**\n * Calculate the HMAC-sha256 of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n var hash, i = 0,\n bkey = rstr2binb(key),\n ipad = Array(16),\n opad = Array(16);\n\n if (bkey.length > 16) {\n bkey = binb(bkey, key.length * 8);\n }\n\n for (; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb(opad.concat(hash), 512 + 256));\n }\n\n /*\n * Main sha256 function, with its support functions\n */\n\n function sha256_S(X, n) {\n return (X >>> n) | (X << (32 - n));\n }\n\n function sha256_R(X, n) {\n return (X >>> n);\n }\n\n function sha256_Ch(x, y, z) {\n return ((x & y) ^ ((~x) & z));\n }\n\n function sha256_Maj(x, y, z) {\n return ((x & y) ^ (x & z) ^ (y & z));\n }\n\n function sha256_Sigma0256(x) {\n return (sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22));\n }\n\n function sha256_Sigma1256(x) {\n return (sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25));\n }\n\n function sha256_Gamma0256(x) {\n return (sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3));\n }\n\n function sha256_Gamma1256(x) {\n return (sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10));\n }\n\n function sha256_Sigma0512(x) {\n return (sha256_S(x, 28) ^ sha256_S(x, 34) ^ sha256_S(x, 39));\n }\n\n function sha256_Sigma1512(x) {\n return (sha256_S(x, 14) ^ sha256_S(x, 18) ^ sha256_S(x, 41));\n }\n\n function sha256_Gamma0512(x) {\n return (sha256_S(x, 1) ^ sha256_S(x, 8) ^ sha256_R(x, 7));\n }\n\n function sha256_Gamma1512(x) {\n return (sha256_S(x, 19) ^ sha256_S(x, 61) ^ sha256_R(x, 6));\n }\n\n sha256_K = [\n 1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993, -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987,\n 1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522,\n 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585,\n 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291,\n 1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885, -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344,\n 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218,\n 1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872, -1866530822, -1538233109, -1090935817, -965641998\n ];\n\n function binb(m, l) {\n var HASH = [1779033703, -1150833019, 1013904242, -1521486534,\n 1359893119, -1694144372, 528734635, 1541459225\n ];\n var W = new Array(64);\n var a, b, c, d, e, f, g, h;\n var i, j, T1, T2;\n\n /* append padding */\n m[l >> 5] |= 0x80 << (24 - l % 32);\n m[((l + 64 >> 9) << 4) + 15] = l;\n\n for (i = 0; i < m.length; i += 16) {\n a = HASH[0];\n b = HASH[1];\n c = HASH[2];\n d = HASH[3];\n e = HASH[4];\n f = HASH[5];\n g = HASH[6];\n h = HASH[7];\n\n for (j = 0; j < 64; j += 1) {\n if (j < 16) {\n W[j] = m[j + i];\n } else {\n W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]),\n sha256_Gamma0256(W[j - 15])), W[j - 16]);\n }\n\n T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)),\n sha256_K[j]), W[j]);\n T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c));\n h = g;\n g = f;\n f = e;\n e = safe_add(d, T1);\n d = c;\n c = b;\n b = a;\n a = safe_add(T1, T2);\n }\n\n HASH[0] = safe_add(a, HASH[0]);\n HASH[1] = safe_add(b, HASH[1]);\n HASH[2] = safe_add(c, HASH[2]);\n HASH[3] = safe_add(d, HASH[3]);\n HASH[4] = safe_add(e, HASH[4]);\n HASH[5] = safe_add(f, HASH[5]);\n HASH[6] = safe_add(g, HASH[6]);\n HASH[7] = safe_add(h, HASH[7]);\n }\n return HASH;\n }\n\n },\n\n /**\n * @class Hashes.SHA512\n * @param {config}\n *\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined in FIPS 180-2\n * Version 2.2 Copyright Anonymous Contributor, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n SHA512: function(options) {\n /**\n * Private properties configuration variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * @see this.setUpperCase() method\n * @see this.setPad() method\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false,\n /* hexadecimal output case format. false - lowercase; true - uppercase */\n b64pad = (options && typeof options.pad === 'string') ? options.pad : '=',\n /* base-64 pad character. Default '=' for strict RFC compliance */\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true,\n /* enable/disable utf8 encoding */\n sha512_k;\n\n /* privileged (public) methods */\n this.hex = function(s) {\n return rstr2hex(rstr(s));\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d));\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n * @public\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * @description Enable/disable uppercase hexadecimal returned string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {string} Pad\n * @return {Object} this\n * @public\n */\n this.setPad = function(a) {\n b64pad = a || b64pad;\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n /* private methods */\n\n /**\n * Calculate the SHA-512 of a raw string\n */\n\n function rstr(s) {\n s = (utf8) ? utf8Encode(s) : s;\n return binb2rstr(binb(rstr2binb(s), s.length * 8));\n }\n /*\n * Calculate the HMAC-SHA-512 of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n\n var hash, i = 0,\n bkey = rstr2binb(key),\n ipad = Array(32),\n opad = Array(32);\n\n if (bkey.length > 32) {\n bkey = binb(bkey, key.length * 8);\n }\n\n for (; i < 32; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n hash = binb(ipad.concat(rstr2binb(data)), 1024 + data.length * 8);\n return binb2rstr(binb(opad.concat(hash), 1024 + 512));\n }\n\n /**\n * Calculate the SHA-512 of an array of big-endian dwords, and a bit length\n */\n\n function binb(x, len) {\n var j, i, l,\n W = new Array(80),\n hash = new Array(16),\n //Initial hash values\n H = [\n new int64(0x6a09e667, -205731576),\n new int64(-1150833019, -2067093701),\n new int64(0x3c6ef372, -23791573),\n new int64(-1521486534, 0x5f1d36f1),\n new int64(0x510e527f, -1377402159),\n new int64(-1694144372, 0x2b3e6c1f),\n new int64(0x1f83d9ab, -79577749),\n new int64(0x5be0cd19, 0x137e2179)\n ],\n T1 = new int64(0, 0),\n T2 = new int64(0, 0),\n a = new int64(0, 0),\n b = new int64(0, 0),\n c = new int64(0, 0),\n d = new int64(0, 0),\n e = new int64(0, 0),\n f = new int64(0, 0),\n g = new int64(0, 0),\n h = new int64(0, 0),\n //Temporary variables not specified by the document\n s0 = new int64(0, 0),\n s1 = new int64(0, 0),\n Ch = new int64(0, 0),\n Maj = new int64(0, 0),\n r1 = new int64(0, 0),\n r2 = new int64(0, 0),\n r3 = new int64(0, 0);\n\n if (sha512_k === undefined) {\n //SHA512 constants\n sha512_k = [\n new int64(0x428a2f98, -685199838), new int64(0x71374491, 0x23ef65cd),\n new int64(-1245643825, -330482897), new int64(-373957723, -2121671748),\n new int64(0x3956c25b, -213338824), new int64(0x59f111f1, -1241133031),\n new int64(-1841331548, -1357295717), new int64(-1424204075, -630357736),\n new int64(-670586216, -1560083902), new int64(0x12835b01, 0x45706fbe),\n new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, -704662302),\n new int64(0x72be5d74, -226784913), new int64(-2132889090, 0x3b1696b1),\n new int64(-1680079193, 0x25c71235), new int64(-1046744716, -815192428),\n new int64(-459576895, -1628353838), new int64(-272742522, 0x384f25e3),\n new int64(0xfc19dc6, -1953704523), new int64(0x240ca1cc, 0x77ac9c65),\n new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483),\n new int64(0x5cb0a9dc, -1119749164), new int64(0x76f988da, -2096016459),\n new int64(-1740746414, -295247957), new int64(-1473132947, 0x2db43210),\n new int64(-1341970488, -1728372417), new int64(-1084653625, -1091629340),\n new int64(-958395405, 0x3da88fc2), new int64(-710438585, -1828018395),\n new int64(0x6ca6351, -536640913), new int64(0x14292967, 0xa0e6e70),\n new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926),\n new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, -1651133473),\n new int64(0x650a7354, -1951439906), new int64(0x766a0abb, 0x3c77b2a8),\n new int64(-2117940946, 0x47edaee6), new int64(-1838011259, 0x1482353b),\n new int64(-1564481375, 0x4cf10364), new int64(-1474664885, -1136513023),\n new int64(-1035236496, -789014639), new int64(-949202525, 0x654be30),\n new int64(-778901479, -688958952), new int64(-694614492, 0x5565a910),\n new int64(-200395387, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8),\n new int64(0x19a4c116, -1194143544), new int64(0x1e376c08, 0x5141ab53),\n new int64(0x2748774c, -544281703), new int64(0x34b0bcb5, -509917016),\n new int64(0x391c0cb3, -976659869), new int64(0x4ed8aa4a, -482243893),\n new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, -692930397),\n new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60),\n new int64(-2067236844, -1578062990), new int64(-1933114872, 0x1a6439ec),\n new int64(-1866530822, 0x23631e28), new int64(-1538233109, -561857047),\n new int64(-1090935817, -1295615723), new int64(-965641998, -479046869),\n new int64(-903397682, -366583396), new int64(-779700025, 0x21c0c207),\n new int64(-354779690, -840897762), new int64(-176337025, -294727304),\n new int64(0x6f067aa, 0x72176fba), new int64(0xa637dc5, -1563912026),\n new int64(0x113f9804, -1090974290), new int64(0x1b710b35, 0x131c471b),\n new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493),\n new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, -1676669620),\n new int64(0x4cc5d4be, -885112138), new int64(0x597f299c, -60457430),\n new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817)\n ];\n }\n\n for (i = 0; i < 80; i += 1) {\n W[i] = new int64(0, 0);\n }\n\n // append padding to the source string. The format is described in the FIPS.\n x[len >> 5] |= 0x80 << (24 - (len & 0x1f));\n x[((len + 128 >> 10) << 5) + 31] = len;\n l = x.length;\n for (i = 0; i < l; i += 32) { //32 dwords is the block size\n int64copy(a, H[0]);\n int64copy(b, H[1]);\n int64copy(c, H[2]);\n int64copy(d, H[3]);\n int64copy(e, H[4]);\n int64copy(f, H[5]);\n int64copy(g, H[6]);\n int64copy(h, H[7]);\n\n for (j = 0; j < 16; j += 1) {\n W[j].h = x[i + 2 * j];\n W[j].l = x[i + 2 * j + 1];\n }\n\n for (j = 16; j < 80; j += 1) {\n //sigma1\n int64rrot(r1, W[j - 2], 19);\n int64revrrot(r2, W[j - 2], 29);\n int64shr(r3, W[j - 2], 6);\n s1.l = r1.l ^ r2.l ^ r3.l;\n s1.h = r1.h ^ r2.h ^ r3.h;\n //sigma0\n int64rrot(r1, W[j - 15], 1);\n int64rrot(r2, W[j - 15], 8);\n int64shr(r3, W[j - 15], 7);\n s0.l = r1.l ^ r2.l ^ r3.l;\n s0.h = r1.h ^ r2.h ^ r3.h;\n\n int64add4(W[j], s1, W[j - 7], s0, W[j - 16]);\n }\n\n for (j = 0; j < 80; j += 1) {\n //Ch\n Ch.l = (e.l & f.l) ^ (~e.l & g.l);\n Ch.h = (e.h & f.h) ^ (~e.h & g.h);\n\n //Sigma1\n int64rrot(r1, e, 14);\n int64rrot(r2, e, 18);\n int64revrrot(r3, e, 9);\n s1.l = r1.l ^ r2.l ^ r3.l;\n s1.h = r1.h ^ r2.h ^ r3.h;\n\n //Sigma0\n int64rrot(r1, a, 28);\n int64revrrot(r2, a, 2);\n int64revrrot(r3, a, 7);\n s0.l = r1.l ^ r2.l ^ r3.l;\n s0.h = r1.h ^ r2.h ^ r3.h;\n\n //Maj\n Maj.l = (a.l & b.l) ^ (a.l & c.l) ^ (b.l & c.l);\n Maj.h = (a.h & b.h) ^ (a.h & c.h) ^ (b.h & c.h);\n\n int64add5(T1, h, s1, Ch, sha512_k[j], W[j]);\n int64add(T2, s0, Maj);\n\n int64copy(h, g);\n int64copy(g, f);\n int64copy(f, e);\n int64add(e, d, T1);\n int64copy(d, c);\n int64copy(c, b);\n int64copy(b, a);\n int64add(a, T1, T2);\n }\n int64add(H[0], H[0], a);\n int64add(H[1], H[1], b);\n int64add(H[2], H[2], c);\n int64add(H[3], H[3], d);\n int64add(H[4], H[4], e);\n int64add(H[5], H[5], f);\n int64add(H[6], H[6], g);\n int64add(H[7], H[7], h);\n }\n\n //represent the hash as an array of 32-bit dwords\n for (i = 0; i < 8; i += 1) {\n hash[2 * i] = H[i].h;\n hash[2 * i + 1] = H[i].l;\n }\n return hash;\n }\n\n //A constructor for 64-bit numbers\n\n function int64(h, l) {\n this.h = h;\n this.l = l;\n //this.toString = int64toString;\n }\n\n //Copies src into dst, assuming both are 64-bit numbers\n\n function int64copy(dst, src) {\n dst.h = src.h;\n dst.l = src.l;\n }\n\n //Right-rotates a 64-bit number by shift\n //Won't handle cases of shift>=32\n //The function revrrot() is for that\n\n function int64rrot(dst, x, shift) {\n dst.l = (x.l >>> shift) | (x.h << (32 - shift));\n dst.h = (x.h >>> shift) | (x.l << (32 - shift));\n }\n\n //Reverses the dwords of the source and then rotates right by shift.\n //This is equivalent to rotation by 32+shift\n\n function int64revrrot(dst, x, shift) {\n dst.l = (x.h >>> shift) | (x.l << (32 - shift));\n dst.h = (x.l >>> shift) | (x.h << (32 - shift));\n }\n\n //Bitwise-shifts right a 64-bit number by shift\n //Won't handle shift>=32, but it's never needed in SHA512\n\n function int64shr(dst, x, shift) {\n dst.l = (x.l >>> shift) | (x.h << (32 - shift));\n dst.h = (x.h >>> shift);\n }\n\n //Adds two 64-bit numbers\n //Like the original implementation, does not rely on 32-bit operations\n\n function int64add(dst, x, y) {\n var w0 = (x.l & 0xffff) + (y.l & 0xffff);\n var w1 = (x.l >>> 16) + (y.l >>> 16) + (w0 >>> 16);\n var w2 = (x.h & 0xffff) + (y.h & 0xffff) + (w1 >>> 16);\n var w3 = (x.h >>> 16) + (y.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n }\n\n //Same, except with 4 addends. Works faster than adding them one by one.\n\n function int64add4(dst, a, b, c, d) {\n var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff);\n var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (w0 >>> 16);\n var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (w1 >>> 16);\n var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n }\n\n //Same, except with 5 addends\n\n function int64add5(dst, a, b, c, d, e) {\n var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff) + (e.l & 0xffff),\n w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (e.l >>> 16) + (w0 >>> 16),\n w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (e.h & 0xffff) + (w1 >>> 16),\n w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (e.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n }\n },\n /**\n * @class Hashes.RMD160\n * @constructor\n * @param {Object} [config]\n *\n * A JavaScript implementation of the RIPEMD-160 Algorithm\n * Version 2.2 Copyright Jeremy Lin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See http://pajhome.org.uk/crypt/md5 for details.\n * Also http://www.ocf.berkeley.edu/~jjlin/jsotp/\n */\n RMD160: function(options) {\n /**\n * Private properties configuration variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * @see this.setUpperCase() method\n * @see this.setPad() method\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false,\n /* hexadecimal output case format. false - lowercase; true - uppercase */\n b64pad = (options && typeof options.pad === 'string') ? options.pa : '=',\n /* base-64 pad character. Default '=' for strict RFC compliance */\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true,\n /* enable/disable utf8 encoding */\n rmd160_r1 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n ],\n rmd160_r2 = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n ],\n rmd160_s1 = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n ],\n rmd160_s2 = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n ];\n\n /* privileged (public) methods */\n this.hex = function(s) {\n return rstr2hex(rstr(s, utf8));\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s, utf8), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s, utf8), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d));\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n * @public\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * @description Enable/disable uppercase hexadecimal returned string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {string} Pad\n * @return {Object} this\n * @public\n */\n this.setPad = function(a) {\n if (typeof a !== 'undefined') {\n b64pad = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n /* private methods */\n\n /**\n * Calculate the rmd160 of a raw string\n */\n\n function rstr(s) {\n s = (utf8) ? utf8Encode(s) : s;\n return binl2rstr(binl(rstr2binl(s), s.length * 8));\n }\n\n /**\n * Calculate the HMAC-rmd160 of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n var i, hash,\n bkey = rstr2binl(key),\n ipad = Array(16),\n opad = Array(16);\n\n if (bkey.length > 16) {\n bkey = binl(bkey, key.length * 8);\n }\n\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n return binl2rstr(binl(opad.concat(hash), 512 + 160));\n }\n\n /**\n * Convert an array of little-endian words to a string\n */\n\n function binl2rstr(input) {\n var i, output = '',\n l = input.length * 32;\n for (i = 0; i < l; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF);\n }\n return output;\n }\n\n /**\n * Calculate the RIPE-MD160 of an array of little-endian words, and a bit length.\n */\n\n function binl(x, len) {\n var T, j, i, l,\n h0 = 0x67452301,\n h1 = 0xefcdab89,\n h2 = 0x98badcfe,\n h3 = 0x10325476,\n h4 = 0xc3d2e1f0,\n A1, B1, C1, D1, E1,\n A2, B2, C2, D2, E2;\n\n /* append padding */\n x[len >> 5] |= 0x80 << (len % 32);\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n l = x.length;\n\n for (i = 0; i < l; i += 16) {\n A1 = A2 = h0;\n B1 = B2 = h1;\n C1 = C2 = h2;\n D1 = D2 = h3;\n E1 = E2 = h4;\n for (j = 0; j <= 79; j += 1) {\n T = safe_add(A1, rmd160_f(j, B1, C1, D1));\n T = safe_add(T, x[i + rmd160_r1[j]]);\n T = safe_add(T, rmd160_K1(j));\n T = safe_add(bit_rol(T, rmd160_s1[j]), E1);\n A1 = E1;\n E1 = D1;\n D1 = bit_rol(C1, 10);\n C1 = B1;\n B1 = T;\n T = safe_add(A2, rmd160_f(79 - j, B2, C2, D2));\n T = safe_add(T, x[i + rmd160_r2[j]]);\n T = safe_add(T, rmd160_K2(j));\n T = safe_add(bit_rol(T, rmd160_s2[j]), E2);\n A2 = E2;\n E2 = D2;\n D2 = bit_rol(C2, 10);\n C2 = B2;\n B2 = T;\n }\n\n T = safe_add(h1, safe_add(C1, D2));\n h1 = safe_add(h2, safe_add(D1, E2));\n h2 = safe_add(h3, safe_add(E1, A2));\n h3 = safe_add(h4, safe_add(A1, B2));\n h4 = safe_add(h0, safe_add(B1, C2));\n h0 = T;\n }\n return [h0, h1, h2, h3, h4];\n }\n\n // specific algorithm methods\n\n function rmd160_f(j, x, y, z) {\n return (0 <= j && j <= 15) ? (x ^ y ^ z) :\n (16 <= j && j <= 31) ? (x & y) | (~x & z) :\n (32 <= j && j <= 47) ? (x | ~y) ^ z :\n (48 <= j && j <= 63) ? (x & z) | (y & ~z) :\n (64 <= j && j <= 79) ? x ^ (y | ~z) :\n 'rmd160_f: j out of range';\n }\n\n function rmd160_K1(j) {\n return (0 <= j && j <= 15) ? 0x00000000 :\n (16 <= j && j <= 31) ? 0x5a827999 :\n (32 <= j && j <= 47) ? 0x6ed9eba1 :\n (48 <= j && j <= 63) ? 0x8f1bbcdc :\n (64 <= j && j <= 79) ? 0xa953fd4e :\n 'rmd160_K1: j out of range';\n }\n\n function rmd160_K2(j) {\n return (0 <= j && j <= 15) ? 0x50a28be6 :\n (16 <= j && j <= 31) ? 0x5c4dd124 :\n (32 <= j && j <= 47) ? 0x6d703ef3 :\n (48 <= j && j <= 63) ? 0x7a6d76e9 :\n (64 <= j && j <= 79) ? 0x00000000 :\n 'rmd160_K2: j out of range';\n }\n }\n };\n\n // exposes Hashes\n (function(window, undefined) {\n var freeExports = false;\n if (typeof exports === 'object') {\n freeExports = exports;\n if (exports && typeof global === 'object' && global && global === global.global) {\n window = global;\n }\n }\n\n if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n // define as an anonymous module, so, through path mapping, it can be aliased\n define(function() {\n return Hashes;\n });\n } else if (freeExports) {\n // in Node.js or RingoJS v0.8.0+\n if (typeof module === 'object' && module && module.exports === freeExports) {\n module.exports = Hashes;\n }\n // in Narwhal or RingoJS v0.7.0-\n else {\n freeExports.Hashes = Hashes;\n }\n } else {\n // in a browser or Rhino\n window.Hashes = Hashes;\n }\n }(this));\n}()); // IIFE\n","const Hashes = require('jshashes')\n\nconst server = 'https://upload.wikimedia.org/wikipedia/commons/'\n\nconst encodeTitle = function (file) {\n let title = file.replace(/^(image|file?)\\:/i, '')\n //titlecase it\n title = title.charAt(0).toUpperCase() + title.substring(1)\n //spaces to underscores\n title = title.trim().replace(/ /g, '_')\n return title\n}\n\n//the wikimedia image url is a little silly:\n//https://commons.wikimedia.org/wiki/Commons:FAQ#What_are_the_strangely_named_components_in_file_paths.3F\nconst commonsURL = function () {\n let file = this.data.file\n let title = encodeTitle(file)\n let hash = new Hashes.MD5().hex(title)\n let path = hash.substr(0, 1) + '/' + hash.substr(0, 2) + '/'\n title = encodeURIComponent(title)\n path += title\n return server + path\n}\nmodule.exports = commonsURL\n","const https = require('https')\n\n// use the native nodejs request function\nconst request = function (url, opts = {}) {\n return new Promise((resolve, reject) => {\n https\n .get(url, opts, (resp) => {\n let status = String(resp.statusCode) || ''\n let bool = /^[23]/.test(status)\n resolve(bool)\n })\n .on('error', (err) => {\n reject(err)\n })\n })\n}\nmodule.exports = request\n","const http = require('./http/server')\n\n// test if the image url exists or not\nconst imgExists = function (callback) {\n return http(this.url(), {\n method: 'HEAD'\n })\n .then(function (bool) {\n //support callback non-promise form\n if (callback) {\n callback(null, bool)\n }\n return bool\n })\n .catch((e) => {\n console.error(e)\n if (callback) {\n callback(e, null)\n }\n })\n}\nmodule.exports = imgExists\n","// is there a good image of this\nconst mainImage = function () {\n let box = this.infobox()\n if (box) {\n let img = box.image()\n if (img) {\n return img\n }\n }\n let s = this.section()\n let imgs = s.images()\n if (imgs.length === 1) {\n return imgs[0]\n }\n return null\n}\nmodule.exports = mainImage\n","const commonsURL = require('./url-hash')\nconst imgExists = require('./img-exists')\nconst mainImage = require('./mainImage')\n\nconst addMethod = function (models) {\n models.Doc.prototype.mainImage = mainImage\n // add a new method to Image class\n models.Image.prototype.commonsURL = commonsURL\n models.Image.prototype.exists = imgExists\n}\nmodule.exports = addMethod\n"],"names":["Hashes","utf8Encode","str","x","y","output","i","l","length","charCodeAt","String","fromCharCode","utf8Decode","ac","c1","c2","c3","arr","join","safe_add","lsw","msw","bit_rol","num","cnt","rstr2hex","input","hexcase","hex_tab","charAt","binb2rstr","binl2rstr","rstr2binl","Array","lo","rstr2binb","rstr2any","encoding","divisor","remainders","q","ld","quotient","dividend","full_length","Math","ceil","floor","log","rstr2b64","b64pad","tab","len","j","triplet","VERSION","Base64","pad","utf8","encode","decode","o1","o2","o3","h1","h2","h3","h4","bits","dec","replace","RegExp","indexOf","setPad","setTab","setUTF8","bool","CRC32","crc","table","iTop","substr","MD5","options","uppercase","hex","s","rstr","b64","any","e","raw","hex_hmac","k","d","rstr_hmac","b64_hmac","any_hmac","vm_test","toLowerCase","setUpperCase","a","binl","key","data","bkey","ipad","opad","hash","concat","olda","oldb","oldc","oldd","b","c","md5_ff","md5_gg","md5_hh","md5_ii","md5_cmn","t","SHA1","binb","olde","w","sha1_ft","sha1_kt","SHA256","sha256_K","sha256_S","X","n","sha256_R","sha256_Ch","z","sha256_Maj","sha256_Sigma0256","sha256_Sigma1256","sha256_Gamma0256","sha256_Gamma1256","m","HASH","W","f","g","h","T1","T2","SHA512","sha512_k","H","int64","s0","s1","Ch","Maj","r1","r2","r3","undefined","int64copy","int64rrot","int64revrrot","int64shr","int64add4","int64add5","int64add","dst","src","shift","w0","w1","w2","w3","RMD160","pa","rmd160_r1","rmd160_r2","rmd160_s1","rmd160_s2","T","h0","A1","B1","C1","D1","E1","A2","B2","C2","D2","E2","rmd160_f","rmd160_K1","rmd160_K2","window","freeExports","exports","global","define","amd","module","server","encodeTitle","file","title","toUpperCase","substring","trim","commonsURL","path","encodeURIComponent","request","url","opts","Promise","resolve","reject","https","get","resp","status","statusCode","test","on","err","imgExists","callback","http","method","then","catch","console","error","mainImage","box","infobox","img","image","section","imgs","images","addMethod","models","Doc","prototype","Image","exists"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-image.js","sources":["../node_modules/jshashes/hashes.js","../src/url-hash.js","../src/http/server.js","../src/img-exists.js","../src/mainImage.js","../src/index.js"],"sourcesContent":["/**\n * jshashes - https://github.com/h2non/jshashes\n * Released under the \"New BSD\" license\n *\n * Algorithms specification:\n *\n * MD5 - http://www.ietf.org/rfc/rfc1321.txt\n * RIPEMD-160 - http://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n * SHA1 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n * SHA256 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n * SHA512 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n * HMAC - http://www.ietf.org/rfc/rfc2104.txt\n */\n(function() {\n var Hashes;\n\n function utf8Encode(str) {\n var x, y, output = '',\n i = -1,\n l;\n\n if (str && str.length) {\n l = str.length;\n while ((i += 1) < l) {\n /* Decode utf-16 surrogate pairs */\n x = str.charCodeAt(i);\n y = i + 1 < l ? str.charCodeAt(i + 1) : 0;\n if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {\n x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\n i += 1;\n }\n /* Encode output as utf-8 */\n if (x <= 0x7F) {\n output += String.fromCharCode(x);\n } else if (x <= 0x7FF) {\n output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F),\n 0x80 | (x & 0x3F));\n } else if (x <= 0xFFFF) {\n output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n } else if (x <= 0x1FFFFF) {\n output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n }\n }\n }\n return output;\n }\n\n function utf8Decode(str) {\n var i, ac, c1, c2, c3, arr = [],\n l;\n i = ac = c1 = c2 = c3 = 0;\n\n if (str && str.length) {\n l = str.length;\n str += '';\n\n while (i < l) {\n c1 = str.charCodeAt(i);\n ac += 1;\n if (c1 < 128) {\n arr[ac] = String.fromCharCode(c1);\n i += 1;\n } else if (c1 > 191 && c1 < 224) {\n c2 = str.charCodeAt(i + 1);\n arr[ac] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\n i += 2;\n } else {\n c2 = str.charCodeAt(i + 1);\n c3 = str.charCodeAt(i + 2);\n arr[ac] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n i += 3;\n }\n }\n }\n return arr.join('');\n }\n\n /**\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n function safe_add(x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n }\n\n /**\n * Bitwise rotate a 32-bit number to the left.\n */\n\n function bit_rol(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n }\n\n /**\n * Convert a raw string to a hex string\n */\n\n function rstr2hex(input, hexcase) {\n var hex_tab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef',\n output = '',\n x, i = 0,\n l = input.length;\n for (; i < l; i += 1) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0F) + hex_tab.charAt(x & 0x0F);\n }\n return output;\n }\n\n /**\n * Encode a string as utf-16\n */\n\n function str2rstr_utf16le(input) {\n var i, l = input.length,\n output = '';\n for (i = 0; i < l; i += 1) {\n output += String.fromCharCode(input.charCodeAt(i) & 0xFF, (input.charCodeAt(i) >>> 8) & 0xFF);\n }\n return output;\n }\n\n function str2rstr_utf16be(input) {\n var i, l = input.length,\n output = '';\n for (i = 0; i < l; i += 1) {\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, input.charCodeAt(i) & 0xFF);\n }\n return output;\n }\n\n /**\n * Convert an array of big-endian words to a string\n */\n\n function binb2rstr(input) {\n var i, l = input.length * 32,\n output = '';\n for (i = 0; i < l; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (24 - i % 32)) & 0xFF);\n }\n return output;\n }\n\n /**\n * Convert an array of little-endian words to a string\n */\n\n function binl2rstr(input) {\n var i, l = input.length * 32,\n output = '';\n for (i = 0; i < l; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF);\n }\n return output;\n }\n\n /**\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n function rstr2binl(input) {\n var i, l = input.length * 8,\n output = Array(input.length >> 2),\n lo = output.length;\n for (i = 0; i < lo; i += 1) {\n output[i] = 0;\n }\n for (i = 0; i < l; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (i % 32);\n }\n return output;\n }\n\n /**\n * Convert a raw string to an array of big-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n function rstr2binb(input) {\n var i, l = input.length * 8,\n output = Array(input.length >> 2),\n lo = output.length;\n for (i = 0; i < lo; i += 1) {\n output[i] = 0;\n }\n for (i = 0; i < l; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\n }\n return output;\n }\n\n /**\n * Convert a raw string to an arbitrary string encoding\n */\n\n function rstr2any(input, encoding) {\n var divisor = encoding.length,\n remainders = Array(),\n i, q, x, ld, quotient, dividend, output, full_length;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n dividend = Array(Math.ceil(input.length / 2));\n ld = dividend.length;\n for (i = 0; i < ld; i += 1) {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /**\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. We stop when the dividend is zerHashes.\n * All remainders are stored for later use.\n */\n while (dividend.length > 0) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i += 1) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0) {\n quotient[quotient.length] = q;\n }\n }\n remainders[remainders.length] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n output = '';\n for (i = remainders.length - 1; i >= 0; i--) {\n output += encoding.charAt(remainders[i]);\n }\n\n /* Append leading zero equivalents */\n full_length = Math.ceil(input.length * 8 / (Math.log(encoding.length) / Math.log(2)));\n for (i = output.length; i < full_length; i += 1) {\n output = encoding[0] + output;\n }\n return output;\n }\n\n /**\n * Convert a raw string to a base-64 string\n */\n\n function rstr2b64(input, b64pad) {\n var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n output = '',\n len = input.length,\n i, j, triplet;\n b64pad = b64pad || '=';\n for (i = 0; i < len; i += 3) {\n triplet = (input.charCodeAt(i) << 16) | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (j = 0; j < 4; j += 1) {\n if (i * 8 + j * 6 > input.length * 8) {\n output += b64pad;\n } else {\n output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n }\n return output;\n }\n\n Hashes = {\n /**\n * @property {String} version\n * @readonly\n */\n VERSION: '1.0.6',\n /**\n * @member Hashes\n * @class Base64\n * @constructor\n */\n Base64: function() {\n // private properties\n var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n pad = '=', // default pad according with the RFC standard\n url = false, // URL encoding support @todo\n utf8 = true; // by default enable UTF-8 support encoding\n\n // public method for encoding\n this.encode = function(input) {\n var i, j, triplet,\n output = '',\n len = input.length;\n\n pad = pad || '=';\n input = (utf8) ? utf8Encode(input) : input;\n\n for (i = 0; i < len; i += 3) {\n triplet = (input.charCodeAt(i) << 16) | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (j = 0; j < 4; j += 1) {\n if (i * 8 + j * 6 > len * 8) {\n output += pad;\n } else {\n output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n }\n return output;\n };\n\n // public method for decoding\n this.decode = function(input) {\n // var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var i, o1, o2, o3, h1, h2, h3, h4, bits, ac,\n dec = '',\n arr = [];\n if (!input) {\n return input;\n }\n\n i = ac = 0;\n input = input.replace(new RegExp('\\\\' + pad, 'gi'), ''); // use '='\n //input += '';\n\n do { // unpack four hexets into three octets using index points in b64\n h1 = tab.indexOf(input.charAt(i += 1));\n h2 = tab.indexOf(input.charAt(i += 1));\n h3 = tab.indexOf(input.charAt(i += 1));\n h4 = tab.indexOf(input.charAt(i += 1));\n\n bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;\n\n o1 = bits >> 16 & 0xff;\n o2 = bits >> 8 & 0xff;\n o3 = bits & 0xff;\n ac += 1;\n\n if (h3 === 64) {\n arr[ac] = String.fromCharCode(o1);\n } else if (h4 === 64) {\n arr[ac] = String.fromCharCode(o1, o2);\n } else {\n arr[ac] = String.fromCharCode(o1, o2, o3);\n }\n } while (i < input.length);\n\n dec = arr.join('');\n dec = (utf8) ? utf8Decode(dec) : dec;\n\n return dec;\n };\n\n // set custom pad string\n this.setPad = function(str) {\n pad = str || pad;\n return this;\n };\n // set custom tab string characters\n this.setTab = function(str) {\n tab = str || tab;\n return this;\n };\n this.setUTF8 = function(bool) {\n if (typeof bool === 'boolean') {\n utf8 = bool;\n }\n return this;\n };\n },\n\n /**\n * CRC-32 calculation\n * @member Hashes\n * @method CRC32\n * @static\n * @param {String} str Input String\n * @return {String}\n */\n CRC32: function(str) {\n var crc = 0,\n x = 0,\n y = 0,\n table, i, iTop;\n str = utf8Encode(str);\n\n table = [\n '00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 ',\n '79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 ',\n '84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F ',\n '63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD ',\n 'A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC ',\n '51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 ',\n 'B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 ',\n '06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 ',\n 'E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 ',\n '12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 ',\n 'D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 ',\n '33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 ',\n 'CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 ',\n '9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E ',\n '7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D ',\n '806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 ',\n '60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA ',\n 'AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 ',\n '5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 ',\n 'B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 ',\n '05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 ',\n 'F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA ',\n '11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 ',\n 'D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F ',\n '30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E ',\n 'C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D'\n ].join('');\n\n crc = crc ^ (-1);\n for (i = 0, iTop = str.length; i < iTop; i += 1) {\n y = (crc ^ str.charCodeAt(i)) & 0xFF;\n x = '0x' + table.substr(y * 9, 8);\n crc = (crc >>> 8) ^ x;\n }\n // always return a positive number (that's what >>> 0 does)\n return (crc ^ (-1)) >>> 0;\n },\n /**\n * @member Hashes\n * @class MD5\n * @constructor\n * @param {Object} [config]\n *\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See for more infHashes.\n */\n MD5: function(options) {\n /**\n * Private config properties. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase}\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase\n b64pad = (options && typeof options.pad === 'string') ? options.pad : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding\n\n // privileged (public) methods\n this.hex = function(s) {\n return rstr2hex(rstr(s, utf8), hexcase);\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s, utf8), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d), hexcase);\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * Enable/disable uppercase hexadecimal returned string\n * @param {Boolean}\n * @return {Object} this\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * Defines a base64 pad string\n * @param {String} Pad\n * @return {Object} this\n */\n this.setPad = function(a) {\n b64pad = a || b64pad;\n return this;\n };\n /**\n * Defines a base64 pad string\n * @param {Boolean}\n * @return {Object} [this]\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n // private methods\n\n /**\n * Calculate the MD5 of a raw string\n */\n\n function rstr(s) {\n s = (utf8) ? utf8Encode(s) : s;\n return binl2rstr(binl(rstr2binl(s), s.length * 8));\n }\n\n /**\n * Calculate the HMAC-MD5, of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n var bkey, ipad, opad, hash, i;\n\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n bkey = rstr2binl(key);\n if (bkey.length > 16) {\n bkey = binl(bkey, key.length * 8);\n }\n\n ipad = Array(16), opad = Array(16);\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n return binl2rstr(binl(opad.concat(hash), 512 + 128));\n }\n\n /**\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n function binl(x, len) {\n var i, olda, oldb, oldc, oldd,\n a = 1732584193,\n b = -271733879,\n c = -1732584194,\n d = 271733878;\n\n /* append padding */\n x[len >> 5] |= 0x80 << ((len) % 32);\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n\n a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);\n d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\n a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);\n a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\n a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);\n c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);\n\n a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);\n d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);\n\n a = safe_add(a, olda);\n b = safe_add(b, oldb);\n c = safe_add(c, oldc);\n d = safe_add(d, oldd);\n }\n return Array(a, b, c, d);\n }\n\n /**\n * These functions implement the four basic operations the algorithm uses.\n */\n\n function md5_cmn(q, a, b, x, s, t) {\n return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);\n }\n\n function md5_ff(a, b, c, d, x, s, t) {\n return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);\n }\n\n function md5_gg(a, b, c, d, x, s, t) {\n return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);\n }\n\n function md5_hh(a, b, c, d, x, s, t) {\n return md5_cmn(b ^ c ^ d, a, b, x, s, t);\n }\n\n function md5_ii(a, b, c, d, x, s, t) {\n return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);\n }\n },\n /**\n * @member Hashes\n * @class Hashes.SHA1\n * @param {Object} [config]\n * @constructor\n *\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined in FIPS 180-1\n * Version 2.2 Copyright Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n SHA1: function(options) {\n /**\n * Private config properties. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase}\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase\n b64pad = (options && typeof options.pad === 'string') ? options.pad : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding\n\n // public methods\n this.hex = function(s) {\n return rstr2hex(rstr(s, utf8), hexcase);\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s, utf8), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s, utf8), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d));\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n * @public\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * @description Enable/disable uppercase hexadecimal returned string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {string} Pad\n * @return {Object} this\n * @public\n */\n this.setPad = function(a) {\n b64pad = a || b64pad;\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n // private methods\n\n /**\n * Calculate the SHA-512 of a raw string\n */\n\n function rstr(s) {\n s = (utf8) ? utf8Encode(s) : s;\n return binb2rstr(binb(rstr2binb(s), s.length * 8));\n }\n\n /**\n * Calculate the HMAC-SHA1 of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n var bkey, ipad, opad, i, hash;\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n bkey = rstr2binb(key);\n\n if (bkey.length > 16) {\n bkey = binb(bkey, key.length * 8);\n }\n ipad = Array(16), opad = Array(16);\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb(opad.concat(hash), 512 + 160));\n }\n\n /**\n * Calculate the SHA-1 of an array of big-endian words, and a bit length\n */\n\n function binb(x, len) {\n var i, j, t, olda, oldb, oldc, oldd, olde,\n w = Array(80),\n a = 1732584193,\n b = -271733879,\n c = -1732584194,\n d = 271733878,\n e = -1009589776;\n\n /* append padding */\n x[len >> 5] |= 0x80 << (24 - len % 32);\n x[((len + 64 >> 9) << 4) + 15] = len;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n olde = e;\n\n for (j = 0; j < 80; j += 1) {\n if (j < 16) {\n w[j] = x[i + j];\n } else {\n w[j] = bit_rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);\n }\n t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)),\n safe_add(safe_add(e, w[j]), sha1_kt(j)));\n e = d;\n d = c;\n c = bit_rol(b, 30);\n b = a;\n a = t;\n }\n\n a = safe_add(a, olda);\n b = safe_add(b, oldb);\n c = safe_add(c, oldc);\n d = safe_add(d, oldd);\n e = safe_add(e, olde);\n }\n return Array(a, b, c, d, e);\n }\n\n /**\n * Perform the appropriate triplet combination function for the current\n * iteration\n */\n\n function sha1_ft(t, b, c, d) {\n if (t < 20) {\n return (b & c) | ((~b) & d);\n }\n if (t < 40) {\n return b ^ c ^ d;\n }\n if (t < 60) {\n return (b & c) | (b & d) | (c & d);\n }\n return b ^ c ^ d;\n }\n\n /**\n * Determine the appropriate additive constant for the current iteration\n */\n\n function sha1_kt(t) {\n return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :\n (t < 60) ? -1894007588 : -899497514;\n }\n },\n /**\n * @class Hashes.SHA256\n * @param {config}\n *\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined in FIPS 180-2\n * Version 2.2 Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See http://pajhome.org.uk/crypt/md5 for details.\n * Also http://anmar.eu.org/projects/jssha2/\n */\n SHA256: function(options) {\n /**\n * Private properties configuration variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * @see this.setUpperCase() method\n * @see this.setPad() method\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase */\n b64pad = (options && typeof options.pad === 'string') ? options.pad : '=',\n /* base-64 pad character. Default '=' for strict RFC compliance */\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true,\n /* enable/disable utf8 encoding */\n sha256_K;\n\n /* privileged (public) methods */\n this.hex = function(s) {\n return rstr2hex(rstr(s, utf8));\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s, utf8), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s, utf8), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d));\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n * @public\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * Enable/disable uppercase hexadecimal returned string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {string} Pad\n * @return {Object} this\n * @public\n */\n this.setPad = function(a) {\n b64pad = a || b64pad;\n return this;\n };\n /**\n * Defines a base64 pad string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n // private methods\n\n /**\n * Calculate the SHA-512 of a raw string\n */\n\n function rstr(s, utf8) {\n s = (utf8) ? utf8Encode(s) : s;\n return binb2rstr(binb(rstr2binb(s), s.length * 8));\n }\n\n /**\n * Calculate the HMAC-sha256 of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n var hash, i = 0,\n bkey = rstr2binb(key),\n ipad = Array(16),\n opad = Array(16);\n\n if (bkey.length > 16) {\n bkey = binb(bkey, key.length * 8);\n }\n\n for (; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb(opad.concat(hash), 512 + 256));\n }\n\n /*\n * Main sha256 function, with its support functions\n */\n\n function sha256_S(X, n) {\n return (X >>> n) | (X << (32 - n));\n }\n\n function sha256_R(X, n) {\n return (X >>> n);\n }\n\n function sha256_Ch(x, y, z) {\n return ((x & y) ^ ((~x) & z));\n }\n\n function sha256_Maj(x, y, z) {\n return ((x & y) ^ (x & z) ^ (y & z));\n }\n\n function sha256_Sigma0256(x) {\n return (sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22));\n }\n\n function sha256_Sigma1256(x) {\n return (sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25));\n }\n\n function sha256_Gamma0256(x) {\n return (sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3));\n }\n\n function sha256_Gamma1256(x) {\n return (sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10));\n }\n\n function sha256_Sigma0512(x) {\n return (sha256_S(x, 28) ^ sha256_S(x, 34) ^ sha256_S(x, 39));\n }\n\n function sha256_Sigma1512(x) {\n return (sha256_S(x, 14) ^ sha256_S(x, 18) ^ sha256_S(x, 41));\n }\n\n function sha256_Gamma0512(x) {\n return (sha256_S(x, 1) ^ sha256_S(x, 8) ^ sha256_R(x, 7));\n }\n\n function sha256_Gamma1512(x) {\n return (sha256_S(x, 19) ^ sha256_S(x, 61) ^ sha256_R(x, 6));\n }\n\n sha256_K = [\n 1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993, -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987,\n 1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522,\n 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585,\n 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291,\n 1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885, -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344,\n 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218,\n 1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872, -1866530822, -1538233109, -1090935817, -965641998\n ];\n\n function binb(m, l) {\n var HASH = [1779033703, -1150833019, 1013904242, -1521486534,\n 1359893119, -1694144372, 528734635, 1541459225\n ];\n var W = new Array(64);\n var a, b, c, d, e, f, g, h;\n var i, j, T1, T2;\n\n /* append padding */\n m[l >> 5] |= 0x80 << (24 - l % 32);\n m[((l + 64 >> 9) << 4) + 15] = l;\n\n for (i = 0; i < m.length; i += 16) {\n a = HASH[0];\n b = HASH[1];\n c = HASH[2];\n d = HASH[3];\n e = HASH[4];\n f = HASH[5];\n g = HASH[6];\n h = HASH[7];\n\n for (j = 0; j < 64; j += 1) {\n if (j < 16) {\n W[j] = m[j + i];\n } else {\n W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]),\n sha256_Gamma0256(W[j - 15])), W[j - 16]);\n }\n\n T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)),\n sha256_K[j]), W[j]);\n T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c));\n h = g;\n g = f;\n f = e;\n e = safe_add(d, T1);\n d = c;\n c = b;\n b = a;\n a = safe_add(T1, T2);\n }\n\n HASH[0] = safe_add(a, HASH[0]);\n HASH[1] = safe_add(b, HASH[1]);\n HASH[2] = safe_add(c, HASH[2]);\n HASH[3] = safe_add(d, HASH[3]);\n HASH[4] = safe_add(e, HASH[4]);\n HASH[5] = safe_add(f, HASH[5]);\n HASH[6] = safe_add(g, HASH[6]);\n HASH[7] = safe_add(h, HASH[7]);\n }\n return HASH;\n }\n\n },\n\n /**\n * @class Hashes.SHA512\n * @param {config}\n *\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined in FIPS 180-2\n * Version 2.2 Copyright Anonymous Contributor, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n SHA512: function(options) {\n /**\n * Private properties configuration variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * @see this.setUpperCase() method\n * @see this.setPad() method\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false,\n /* hexadecimal output case format. false - lowercase; true - uppercase */\n b64pad = (options && typeof options.pad === 'string') ? options.pad : '=',\n /* base-64 pad character. Default '=' for strict RFC compliance */\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true,\n /* enable/disable utf8 encoding */\n sha512_k;\n\n /* privileged (public) methods */\n this.hex = function(s) {\n return rstr2hex(rstr(s));\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d));\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n * @public\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * @description Enable/disable uppercase hexadecimal returned string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {string} Pad\n * @return {Object} this\n * @public\n */\n this.setPad = function(a) {\n b64pad = a || b64pad;\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n /* private methods */\n\n /**\n * Calculate the SHA-512 of a raw string\n */\n\n function rstr(s) {\n s = (utf8) ? utf8Encode(s) : s;\n return binb2rstr(binb(rstr2binb(s), s.length * 8));\n }\n /*\n * Calculate the HMAC-SHA-512 of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n\n var hash, i = 0,\n bkey = rstr2binb(key),\n ipad = Array(32),\n opad = Array(32);\n\n if (bkey.length > 32) {\n bkey = binb(bkey, key.length * 8);\n }\n\n for (; i < 32; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n hash = binb(ipad.concat(rstr2binb(data)), 1024 + data.length * 8);\n return binb2rstr(binb(opad.concat(hash), 1024 + 512));\n }\n\n /**\n * Calculate the SHA-512 of an array of big-endian dwords, and a bit length\n */\n\n function binb(x, len) {\n var j, i, l,\n W = new Array(80),\n hash = new Array(16),\n //Initial hash values\n H = [\n new int64(0x6a09e667, -205731576),\n new int64(-1150833019, -2067093701),\n new int64(0x3c6ef372, -23791573),\n new int64(-1521486534, 0x5f1d36f1),\n new int64(0x510e527f, -1377402159),\n new int64(-1694144372, 0x2b3e6c1f),\n new int64(0x1f83d9ab, -79577749),\n new int64(0x5be0cd19, 0x137e2179)\n ],\n T1 = new int64(0, 0),\n T2 = new int64(0, 0),\n a = new int64(0, 0),\n b = new int64(0, 0),\n c = new int64(0, 0),\n d = new int64(0, 0),\n e = new int64(0, 0),\n f = new int64(0, 0),\n g = new int64(0, 0),\n h = new int64(0, 0),\n //Temporary variables not specified by the document\n s0 = new int64(0, 0),\n s1 = new int64(0, 0),\n Ch = new int64(0, 0),\n Maj = new int64(0, 0),\n r1 = new int64(0, 0),\n r2 = new int64(0, 0),\n r3 = new int64(0, 0);\n\n if (sha512_k === undefined) {\n //SHA512 constants\n sha512_k = [\n new int64(0x428a2f98, -685199838), new int64(0x71374491, 0x23ef65cd),\n new int64(-1245643825, -330482897), new int64(-373957723, -2121671748),\n new int64(0x3956c25b, -213338824), new int64(0x59f111f1, -1241133031),\n new int64(-1841331548, -1357295717), new int64(-1424204075, -630357736),\n new int64(-670586216, -1560083902), new int64(0x12835b01, 0x45706fbe),\n new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, -704662302),\n new int64(0x72be5d74, -226784913), new int64(-2132889090, 0x3b1696b1),\n new int64(-1680079193, 0x25c71235), new int64(-1046744716, -815192428),\n new int64(-459576895, -1628353838), new int64(-272742522, 0x384f25e3),\n new int64(0xfc19dc6, -1953704523), new int64(0x240ca1cc, 0x77ac9c65),\n new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483),\n new int64(0x5cb0a9dc, -1119749164), new int64(0x76f988da, -2096016459),\n new int64(-1740746414, -295247957), new int64(-1473132947, 0x2db43210),\n new int64(-1341970488, -1728372417), new int64(-1084653625, -1091629340),\n new int64(-958395405, 0x3da88fc2), new int64(-710438585, -1828018395),\n new int64(0x6ca6351, -536640913), new int64(0x14292967, 0xa0e6e70),\n new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926),\n new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, -1651133473),\n new int64(0x650a7354, -1951439906), new int64(0x766a0abb, 0x3c77b2a8),\n new int64(-2117940946, 0x47edaee6), new int64(-1838011259, 0x1482353b),\n new int64(-1564481375, 0x4cf10364), new int64(-1474664885, -1136513023),\n new int64(-1035236496, -789014639), new int64(-949202525, 0x654be30),\n new int64(-778901479, -688958952), new int64(-694614492, 0x5565a910),\n new int64(-200395387, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8),\n new int64(0x19a4c116, -1194143544), new int64(0x1e376c08, 0x5141ab53),\n new int64(0x2748774c, -544281703), new int64(0x34b0bcb5, -509917016),\n new int64(0x391c0cb3, -976659869), new int64(0x4ed8aa4a, -482243893),\n new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, -692930397),\n new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60),\n new int64(-2067236844, -1578062990), new int64(-1933114872, 0x1a6439ec),\n new int64(-1866530822, 0x23631e28), new int64(-1538233109, -561857047),\n new int64(-1090935817, -1295615723), new int64(-965641998, -479046869),\n new int64(-903397682, -366583396), new int64(-779700025, 0x21c0c207),\n new int64(-354779690, -840897762), new int64(-176337025, -294727304),\n new int64(0x6f067aa, 0x72176fba), new int64(0xa637dc5, -1563912026),\n new int64(0x113f9804, -1090974290), new int64(0x1b710b35, 0x131c471b),\n new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493),\n new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, -1676669620),\n new int64(0x4cc5d4be, -885112138), new int64(0x597f299c, -60457430),\n new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817)\n ];\n }\n\n for (i = 0; i < 80; i += 1) {\n W[i] = new int64(0, 0);\n }\n\n // append padding to the source string. The format is described in the FIPS.\n x[len >> 5] |= 0x80 << (24 - (len & 0x1f));\n x[((len + 128 >> 10) << 5) + 31] = len;\n l = x.length;\n for (i = 0; i < l; i += 32) { //32 dwords is the block size\n int64copy(a, H[0]);\n int64copy(b, H[1]);\n int64copy(c, H[2]);\n int64copy(d, H[3]);\n int64copy(e, H[4]);\n int64copy(f, H[5]);\n int64copy(g, H[6]);\n int64copy(h, H[7]);\n\n for (j = 0; j < 16; j += 1) {\n W[j].h = x[i + 2 * j];\n W[j].l = x[i + 2 * j + 1];\n }\n\n for (j = 16; j < 80; j += 1) {\n //sigma1\n int64rrot(r1, W[j - 2], 19);\n int64revrrot(r2, W[j - 2], 29);\n int64shr(r3, W[j - 2], 6);\n s1.l = r1.l ^ r2.l ^ r3.l;\n s1.h = r1.h ^ r2.h ^ r3.h;\n //sigma0\n int64rrot(r1, W[j - 15], 1);\n int64rrot(r2, W[j - 15], 8);\n int64shr(r3, W[j - 15], 7);\n s0.l = r1.l ^ r2.l ^ r3.l;\n s0.h = r1.h ^ r2.h ^ r3.h;\n\n int64add4(W[j], s1, W[j - 7], s0, W[j - 16]);\n }\n\n for (j = 0; j < 80; j += 1) {\n //Ch\n Ch.l = (e.l & f.l) ^ (~e.l & g.l);\n Ch.h = (e.h & f.h) ^ (~e.h & g.h);\n\n //Sigma1\n int64rrot(r1, e, 14);\n int64rrot(r2, e, 18);\n int64revrrot(r3, e, 9);\n s1.l = r1.l ^ r2.l ^ r3.l;\n s1.h = r1.h ^ r2.h ^ r3.h;\n\n //Sigma0\n int64rrot(r1, a, 28);\n int64revrrot(r2, a, 2);\n int64revrrot(r3, a, 7);\n s0.l = r1.l ^ r2.l ^ r3.l;\n s0.h = r1.h ^ r2.h ^ r3.h;\n\n //Maj\n Maj.l = (a.l & b.l) ^ (a.l & c.l) ^ (b.l & c.l);\n Maj.h = (a.h & b.h) ^ (a.h & c.h) ^ (b.h & c.h);\n\n int64add5(T1, h, s1, Ch, sha512_k[j], W[j]);\n int64add(T2, s0, Maj);\n\n int64copy(h, g);\n int64copy(g, f);\n int64copy(f, e);\n int64add(e, d, T1);\n int64copy(d, c);\n int64copy(c, b);\n int64copy(b, a);\n int64add(a, T1, T2);\n }\n int64add(H[0], H[0], a);\n int64add(H[1], H[1], b);\n int64add(H[2], H[2], c);\n int64add(H[3], H[3], d);\n int64add(H[4], H[4], e);\n int64add(H[5], H[5], f);\n int64add(H[6], H[6], g);\n int64add(H[7], H[7], h);\n }\n\n //represent the hash as an array of 32-bit dwords\n for (i = 0; i < 8; i += 1) {\n hash[2 * i] = H[i].h;\n hash[2 * i + 1] = H[i].l;\n }\n return hash;\n }\n\n //A constructor for 64-bit numbers\n\n function int64(h, l) {\n this.h = h;\n this.l = l;\n //this.toString = int64toString;\n }\n\n //Copies src into dst, assuming both are 64-bit numbers\n\n function int64copy(dst, src) {\n dst.h = src.h;\n dst.l = src.l;\n }\n\n //Right-rotates a 64-bit number by shift\n //Won't handle cases of shift>=32\n //The function revrrot() is for that\n\n function int64rrot(dst, x, shift) {\n dst.l = (x.l >>> shift) | (x.h << (32 - shift));\n dst.h = (x.h >>> shift) | (x.l << (32 - shift));\n }\n\n //Reverses the dwords of the source and then rotates right by shift.\n //This is equivalent to rotation by 32+shift\n\n function int64revrrot(dst, x, shift) {\n dst.l = (x.h >>> shift) | (x.l << (32 - shift));\n dst.h = (x.l >>> shift) | (x.h << (32 - shift));\n }\n\n //Bitwise-shifts right a 64-bit number by shift\n //Won't handle shift>=32, but it's never needed in SHA512\n\n function int64shr(dst, x, shift) {\n dst.l = (x.l >>> shift) | (x.h << (32 - shift));\n dst.h = (x.h >>> shift);\n }\n\n //Adds two 64-bit numbers\n //Like the original implementation, does not rely on 32-bit operations\n\n function int64add(dst, x, y) {\n var w0 = (x.l & 0xffff) + (y.l & 0xffff);\n var w1 = (x.l >>> 16) + (y.l >>> 16) + (w0 >>> 16);\n var w2 = (x.h & 0xffff) + (y.h & 0xffff) + (w1 >>> 16);\n var w3 = (x.h >>> 16) + (y.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n }\n\n //Same, except with 4 addends. Works faster than adding them one by one.\n\n function int64add4(dst, a, b, c, d) {\n var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff);\n var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (w0 >>> 16);\n var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (w1 >>> 16);\n var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n }\n\n //Same, except with 5 addends\n\n function int64add5(dst, a, b, c, d, e) {\n var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff) + (e.l & 0xffff),\n w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (e.l >>> 16) + (w0 >>> 16),\n w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (e.h & 0xffff) + (w1 >>> 16),\n w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (e.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n }\n },\n /**\n * @class Hashes.RMD160\n * @constructor\n * @param {Object} [config]\n *\n * A JavaScript implementation of the RIPEMD-160 Algorithm\n * Version 2.2 Copyright Jeremy Lin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * See http://pajhome.org.uk/crypt/md5 for details.\n * Also http://www.ocf.berkeley.edu/~jjlin/jsotp/\n */\n RMD160: function(options) {\n /**\n * Private properties configuration variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n * @see this.setUpperCase() method\n * @see this.setPad() method\n */\n var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false,\n /* hexadecimal output case format. false - lowercase; true - uppercase */\n b64pad = (options && typeof options.pad === 'string') ? options.pa : '=',\n /* base-64 pad character. Default '=' for strict RFC compliance */\n utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true,\n /* enable/disable utf8 encoding */\n rmd160_r1 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n ],\n rmd160_r2 = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n ],\n rmd160_s1 = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n ],\n rmd160_s2 = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n ];\n\n /* privileged (public) methods */\n this.hex = function(s) {\n return rstr2hex(rstr(s, utf8));\n };\n this.b64 = function(s) {\n return rstr2b64(rstr(s, utf8), b64pad);\n };\n this.any = function(s, e) {\n return rstr2any(rstr(s, utf8), e);\n };\n this.raw = function(s) {\n return rstr(s, utf8);\n };\n this.hex_hmac = function(k, d) {\n return rstr2hex(rstr_hmac(k, d));\n };\n this.b64_hmac = function(k, d) {\n return rstr2b64(rstr_hmac(k, d), b64pad);\n };\n this.any_hmac = function(k, d, e) {\n return rstr2any(rstr_hmac(k, d), e);\n };\n /**\n * Perform a simple self-test to see if the VM is working\n * @return {String} Hexadecimal hash sample\n * @public\n */\n this.vm_test = function() {\n return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';\n };\n /**\n * @description Enable/disable uppercase hexadecimal returned string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUpperCase = function(a) {\n if (typeof a === 'boolean') {\n hexcase = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {string} Pad\n * @return {Object} this\n * @public\n */\n this.setPad = function(a) {\n if (typeof a !== 'undefined') {\n b64pad = a;\n }\n return this;\n };\n /**\n * @description Defines a base64 pad string\n * @param {boolean}\n * @return {Object} this\n * @public\n */\n this.setUTF8 = function(a) {\n if (typeof a === 'boolean') {\n utf8 = a;\n }\n return this;\n };\n\n /* private methods */\n\n /**\n * Calculate the rmd160 of a raw string\n */\n\n function rstr(s) {\n s = (utf8) ? utf8Encode(s) : s;\n return binl2rstr(binl(rstr2binl(s), s.length * 8));\n }\n\n /**\n * Calculate the HMAC-rmd160 of a key and some data (raw strings)\n */\n\n function rstr_hmac(key, data) {\n key = (utf8) ? utf8Encode(key) : key;\n data = (utf8) ? utf8Encode(data) : data;\n var i, hash,\n bkey = rstr2binl(key),\n ipad = Array(16),\n opad = Array(16);\n\n if (bkey.length > 16) {\n bkey = binl(bkey, key.length * 8);\n }\n\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n return binl2rstr(binl(opad.concat(hash), 512 + 160));\n }\n\n /**\n * Convert an array of little-endian words to a string\n */\n\n function binl2rstr(input) {\n var i, output = '',\n l = input.length * 32;\n for (i = 0; i < l; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF);\n }\n return output;\n }\n\n /**\n * Calculate the RIPE-MD160 of an array of little-endian words, and a bit length.\n */\n\n function binl(x, len) {\n var T, j, i, l,\n h0 = 0x67452301,\n h1 = 0xefcdab89,\n h2 = 0x98badcfe,\n h3 = 0x10325476,\n h4 = 0xc3d2e1f0,\n A1, B1, C1, D1, E1,\n A2, B2, C2, D2, E2;\n\n /* append padding */\n x[len >> 5] |= 0x80 << (len % 32);\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n l = x.length;\n\n for (i = 0; i < l; i += 16) {\n A1 = A2 = h0;\n B1 = B2 = h1;\n C1 = C2 = h2;\n D1 = D2 = h3;\n E1 = E2 = h4;\n for (j = 0; j <= 79; j += 1) {\n T = safe_add(A1, rmd160_f(j, B1, C1, D1));\n T = safe_add(T, x[i + rmd160_r1[j]]);\n T = safe_add(T, rmd160_K1(j));\n T = safe_add(bit_rol(T, rmd160_s1[j]), E1);\n A1 = E1;\n E1 = D1;\n D1 = bit_rol(C1, 10);\n C1 = B1;\n B1 = T;\n T = safe_add(A2, rmd160_f(79 - j, B2, C2, D2));\n T = safe_add(T, x[i + rmd160_r2[j]]);\n T = safe_add(T, rmd160_K2(j));\n T = safe_add(bit_rol(T, rmd160_s2[j]), E2);\n A2 = E2;\n E2 = D2;\n D2 = bit_rol(C2, 10);\n C2 = B2;\n B2 = T;\n }\n\n T = safe_add(h1, safe_add(C1, D2));\n h1 = safe_add(h2, safe_add(D1, E2));\n h2 = safe_add(h3, safe_add(E1, A2));\n h3 = safe_add(h4, safe_add(A1, B2));\n h4 = safe_add(h0, safe_add(B1, C2));\n h0 = T;\n }\n return [h0, h1, h2, h3, h4];\n }\n\n // specific algorithm methods\n\n function rmd160_f(j, x, y, z) {\n return (0 <= j && j <= 15) ? (x ^ y ^ z) :\n (16 <= j && j <= 31) ? (x & y) | (~x & z) :\n (32 <= j && j <= 47) ? (x | ~y) ^ z :\n (48 <= j && j <= 63) ? (x & z) | (y & ~z) :\n (64 <= j && j <= 79) ? x ^ (y | ~z) :\n 'rmd160_f: j out of range';\n }\n\n function rmd160_K1(j) {\n return (0 <= j && j <= 15) ? 0x00000000 :\n (16 <= j && j <= 31) ? 0x5a827999 :\n (32 <= j && j <= 47) ? 0x6ed9eba1 :\n (48 <= j && j <= 63) ? 0x8f1bbcdc :\n (64 <= j && j <= 79) ? 0xa953fd4e :\n 'rmd160_K1: j out of range';\n }\n\n function rmd160_K2(j) {\n return (0 <= j && j <= 15) ? 0x50a28be6 :\n (16 <= j && j <= 31) ? 0x5c4dd124 :\n (32 <= j && j <= 47) ? 0x6d703ef3 :\n (48 <= j && j <= 63) ? 0x7a6d76e9 :\n (64 <= j && j <= 79) ? 0x00000000 :\n 'rmd160_K2: j out of range';\n }\n }\n };\n\n // exposes Hashes\n (function(window, undefined) {\n var freeExports = false;\n if (typeof exports === 'object') {\n freeExports = exports;\n if (exports && typeof global === 'object' && global && global === global.global) {\n window = global;\n }\n }\n\n if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n // define as an anonymous module, so, through path mapping, it can be aliased\n define(function() {\n return Hashes;\n });\n } else if (freeExports) {\n // in Node.js or RingoJS v0.8.0+\n if (typeof module === 'object' && module && module.exports === freeExports) {\n module.exports = Hashes;\n }\n // in Narwhal or RingoJS v0.7.0-\n else {\n freeExports.Hashes = Hashes;\n }\n } else {\n // in a browser or Rhino\n window.Hashes = Hashes;\n }\n }(this));\n}()); // IIFE\n","const Hashes = require('jshashes')\n\nconst server = 'https://upload.wikimedia.org/wikipedia/commons/'\n\nconst encodeTitle = function (file) {\n let title = file.replace(/^(image|file?):/i, '')\n //titlecase it\n title = title.charAt(0).toUpperCase() + title.substring(1)\n //spaces to underscores\n title = title.trim().replace(/ /g, '_')\n return title\n}\n\n//the wikimedia image url is a little silly:\n//https://commons.wikimedia.org/wiki/Commons:FAQ#What_are_the_strangely_named_components_in_file_paths.3F\nconst commonsURL = function () {\n let file = this.data.file\n let title = encodeTitle(file)\n let hash = new Hashes.MD5().hex(title)\n let path = hash.substr(0, 1) + '/' + hash.substr(0, 2) + '/'\n title = encodeURIComponent(title)\n path += title\n return server + path\n}\nmodule.exports = commonsURL\n","const https = require('https')\n\n// use the native nodejs request function\nconst request = function (url, opts = {}) {\n return new Promise((resolve, reject) => {\n https\n .get(url, opts, (resp) => {\n let status = String(resp.statusCode) || ''\n let bool = /^[23]/.test(status)\n resolve(bool)\n })\n .on('error', (err) => {\n reject(err)\n })\n })\n}\nmodule.exports = request\n","const http = require('./http/server')\n\n// test if the image url exists or not\nconst imgExists = function (callback) {\n return http(this.url(), {\n method: 'HEAD'\n })\n .then(function (bool) {\n //support callback non-promise form\n if (callback) {\n callback(null, bool)\n }\n return bool\n })\n .catch((e) => {\n console.error(e)\n if (callback) {\n callback(e, null)\n }\n })\n}\nmodule.exports = imgExists\n","// is there a good image of this\nconst mainImage = function () {\n let box = this.infobox()\n if (box) {\n let img = box.image()\n if (img) {\n return img\n }\n }\n let s = this.section()\n let imgs = s.images()\n if (imgs.length === 1) {\n return imgs[0]\n }\n return null\n}\nmodule.exports = mainImage\n","const commonsURL = require('./url-hash')\nconst imgExists = require('./img-exists')\nconst mainImage = require('./mainImage')\n\nconst addMethod = function (models) {\n models.Doc.prototype.mainImage = mainImage\n // add a new method to Image class\n models.Image.prototype.commonsURL = commonsURL\n models.Image.prototype.exists = imgExists\n}\nmodule.exports = addMethod\n"],"names":["Hashes","utf8Encode","str","x","y","output","i","l","length","charCodeAt","String","fromCharCode","utf8Decode","ac","c1","c2","c3","arr","join","safe_add","lsw","msw","bit_rol","num","cnt","rstr2hex","input","hexcase","hex_tab","charAt","binb2rstr","binl2rstr","rstr2binl","Array","lo","rstr2binb","rstr2any","encoding","divisor","remainders","q","ld","quotient","dividend","full_length","Math","ceil","floor","log","rstr2b64","b64pad","tab","len","j","triplet","VERSION","Base64","pad","utf8","encode","decode","o1","o2","o3","h1","h2","h3","h4","bits","dec","replace","RegExp","indexOf","setPad","setTab","setUTF8","bool","CRC32","crc","table","iTop","substr","MD5","options","uppercase","hex","s","rstr","b64","any","e","raw","hex_hmac","k","d","rstr_hmac","b64_hmac","any_hmac","vm_test","toLowerCase","setUpperCase","a","binl","key","data","bkey","ipad","opad","hash","concat","olda","oldb","oldc","oldd","b","c","md5_ff","md5_gg","md5_hh","md5_ii","md5_cmn","t","SHA1","binb","olde","w","sha1_ft","sha1_kt","SHA256","sha256_K","sha256_S","X","n","sha256_R","sha256_Ch","z","sha256_Maj","sha256_Sigma0256","sha256_Sigma1256","sha256_Gamma0256","sha256_Gamma1256","m","HASH","W","f","g","h","T1","T2","SHA512","sha512_k","H","int64","s0","s1","Ch","Maj","r1","r2","r3","undefined","int64copy","int64rrot","int64revrrot","int64shr","int64add4","int64add5","int64add","dst","src","shift","w0","w1","w2","w3","RMD160","pa","rmd160_r1","rmd160_r2","rmd160_s1","rmd160_s2","T","h0","A1","B1","C1","D1","E1","A2","B2","C2","D2","E2","rmd160_f","rmd160_K1","rmd160_K2","window","freeExports","exports","global","define","amd","module","require$$0","server","encodeTitle","file","title","toUpperCase","substring","trim","commonsURL","path","encodeURIComponent","urlHash","https","request","url","opts","Promise","resolve","reject","get","resp","status","statusCode","test","on","err","http","imgExists","callback","method","then","catch","console","error","imgExists_1","mainImage","box","infobox","img","image","section","imgs","images","mainImage_1","require$$1","require$$2","addMethod","models","Doc","prototype","Image","exists"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/image/builds/wtf-plugin-image.min.js b/plugins/image/builds/wtf-plugin-image.min.js index 9e7f9369..8c9f482d 100644 --- a/plugins/image/builds/wtf-plugin-image.min.js +++ b/plugins/image/builds/wtf-plugin-image.min.js @@ -1 +1 @@ -!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("https")):"function"==typeof define&&define.amd?define(["https"],t):(n="undefined"!=typeof globalThis?globalThis:n||self).wtfImage=t(n.https)}(this,(function(n){"use strict";function t(n){return n&&"object"==typeof n&&"default"in n?n:{default:n}}var e=t(n),r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var o=function(n,t){return n(t={exports:{}},t.exports),t.exports}((function(n,t){!function(){var e;function o(n){var t,e,r,o="",h=-1;if(n&&n.length)for(r=n.length;(h+=1)>>6&31,128|63&t):t<=65535?o+=String.fromCharCode(224|t>>>12&15,128|t>>>6&63,128|63&t):t<=2097151&&(o+=String.fromCharCode(240|t>>>18&7,128|t>>>12&63,128|t>>>6&63,128|63&t));return o}function h(n,t){var e=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(e>>16)<<16|65535&e}function u(n,t){return n<>>32-t}function i(n,t){for(var e,r=t?"0123456789ABCDEF":"0123456789abcdef",o="",h=0,u=n.length;h>>4&15)+r.charAt(15&e);return o}function f(n){var t,e=32*n.length,r="";for(t=0;t>5]>>>24-t%32&255);return r}function a(n){var t,e=32*n.length,r="";for(t=0;t>5]>>>t%32&255);return r}function c(n){var t,e=8*n.length,r=Array(n.length>>2),o=r.length;for(t=0;t>5]|=(255&n.charCodeAt(t/8))<>2),o=r.length;for(t=0;t>5]|=(255&n.charCodeAt(t/8))<<24-t%32;return r}function D(n,t){var e,r,o,h,u,i,f,a,c=t.length,l=Array();for(h=(i=Array(Math.ceil(n.length/2))).length,e=0;e0;){for(u=Array(),o=0,e=0;e0||r>0)&&(u[u.length]=r);l[l.length]=o,i=u}for(f="",e=l.length-1;e>=0;e--)f+=t.charAt(l[e]);for(a=Math.ceil(8*n.length/(Math.log(t.length)/Math.log(2))),e=f.length;e8*n.length?h+=t:h+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(o>>>6*(3-r)&63);return h}e={VERSION:"1.0.6",Base64:function(){var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t="=",e=!0;this.encode=function(r){var h,u,i,f="",a=r.length;for(t=t||"=",r=e?o(r):r,h=0;h8*a?t:n.charAt(i>>>6*(3-u)&63);return f},this.decode=function(r){var o,h,u,i,f,a,c,l,D="",s=[];if(!r)return r;o=l=0,r=r.replace(new RegExp("\\"+t,"gi"),"");do{h=(c=n.indexOf(r.charAt(o+=1))<<18|n.indexOf(r.charAt(o+=1))<<12|(f=n.indexOf(r.charAt(o+=1)))<<6|(a=n.indexOf(r.charAt(o+=1))))>>16&255,u=c>>8&255,i=255&c,s[l+=1]=64===f?String.fromCharCode(h):64===a?String.fromCharCode(h,u):String.fromCharCode(h,u,i)}while(o191&&r<224?(o=n.charCodeAt(t+1),i[e]=String.fromCharCode((31&r)<<6|63&o),t+=2):(o=n.charCodeAt(t+1),h=n.charCodeAt(t+2),i[e]=String.fromCharCode((15&r)<<12|(63&o)<<6|63&h),t+=3);return i.join("")}(D):D},this.setPad=function(n){return t=n||t,this},this.setTab=function(t){return n=t||n,this},this.setUTF8=function(n){return"boolean"==typeof n&&(e=n),this}},CRC32:function(n){var t,e,r,h=0,u=0;for(n=o(n),t=["00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 ","79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 ","84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F ","63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD ","A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC ","51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 ","B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 ","06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 ","E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 ","12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 ","D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 ","33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 ","CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 ","9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E ","7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D ","806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 ","60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA ","AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 ","5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 ","B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 ","05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 ","F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA ","11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 ","D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F ","30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E ","C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"].join(""),h^=-1,e=0,r=n.length;e>>8^"0x"+t.substr(9*u,8);return(-1^h)>>>0},MD5:function(n){var t=!(!n||"boolean"!=typeof n.uppercase)&&n.uppercase,e=n&&"string"==typeof n.pad?n.pad:"=",r=!n||"boolean"!=typeof n.utf8||n.utf8;function f(n){return a(B(c(n=r?o(n):n),8*n.length))}function l(n,t){var e,h,u,i,f;for(n=r?o(n):n,t=r?o(t):t,(e=c(n)).length>16&&(e=B(e,8*n.length)),h=Array(16),u=Array(16),f=0;f<16;f+=1)h[f]=909522486^e[f],u[f]=1549556828^e[f];return i=B(h.concat(c(t)),512+8*t.length),a(B(u.concat(i),640))}function B(n,t){var e,r,o,u,i,f=1732584193,a=-271733879,c=-1732584194,l=271733878;for(n[t>>5]|=128<>>9<<4)]=t,e=0;e16&&(e=B(e,8*n.length)),h=Array(16),u=Array(16),i=0;i<16;i+=1)h[i]=909522486^e[i],u[i]=1549556828^e[i];return a=B(h.concat(l(t)),512+8*t.length),f(B(u.concat(a),672))}function B(n,t){var e,r,o,i,f,a,c,l,D=Array(80),s=1732584193,B=-271733879,w=-1732584194,F=271733878,E=-1009589776;for(n[t>>5]|=128<<24-t%32,n[15+(t+64>>9<<4)]=t,e=0;e16&&(u=d(u,8*n.length));h<16;h+=1)i[h]=909522486^u[h],a[h]=1549556828^u[h];return e=d(i.concat(l(t)),512+8*t.length),f(d(a.concat(e),768))}function c(n,t){return n>>>t|n<<32-t}function B(n,t){return n>>>t}function C(n,t,e){return n&t^~n&e}function A(n,t,e){return n&t^n&e^t&e}function w(n){return c(n,2)^c(n,13)^c(n,22)}function F(n){return c(n,6)^c(n,11)^c(n,25)}function E(n){return c(n,7)^c(n,18)^B(n,3)}function d(n,e){var r,o,u,i,f,a,l,D,s,d,g,p,y,m=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],b=new Array(64);for(n[e>>5]|=128<<24-e%32,n[15+(e+64>>9<<4)]=e,s=0;s32&&(u=a(u,8*n.length));h<32;h+=1)i[h]=909522486^u[h],c[h]=1549556828^u[h];return e=a(i.concat(l(t)),1024+8*t.length),f(a(c.concat(e),1536))}function a(n,e){var r,o,h,u=new Array(80),i=new Array(16),f=[new c(1779033703,-205731576),new c(-1150833019,-2067093701),new c(1013904242,-23791573),new c(-1521486534,1595750129),new c(1359893119,-1377402159),new c(-1694144372,725511199),new c(528734635,-79577749),new c(1541459225,327033209)],a=new c(0,0),l=new c(0,0),D=new c(0,0),s=new c(0,0),g=new c(0,0),p=new c(0,0),y=new c(0,0),m=new c(0,0),b=new c(0,0),v=new c(0,0),x=new c(0,0),_=new c(0,0),S=new c(0,0),U=new c(0,0),T=new c(0,0),j=new c(0,0),M=new c(0,0);for(void 0===t&&(t=[new c(1116352408,-685199838),new c(1899447441,602891725),new c(-1245643825,-330482897),new c(-373957723,-2121671748),new c(961987163,-213338824),new c(1508970993,-1241133031),new c(-1841331548,-1357295717),new c(-1424204075,-630357736),new c(-670586216,-1560083902),new c(310598401,1164996542),new c(607225278,1323610764),new c(1426881987,-704662302),new c(1925078388,-226784913),new c(-2132889090,991336113),new c(-1680079193,633803317),new c(-1046744716,-815192428),new c(-459576895,-1628353838),new c(-272742522,944711139),new c(264347078,-1953704523),new c(604807628,2007800933),new c(770255983,1495990901),new c(1249150122,1856431235),new c(1555081692,-1119749164),new c(1996064986,-2096016459),new c(-1740746414,-295247957),new c(-1473132947,766784016),new c(-1341970488,-1728372417),new c(-1084653625,-1091629340),new c(-958395405,1034457026),new c(-710438585,-1828018395),new c(113926993,-536640913),new c(338241895,168717936),new c(666307205,1188179964),new c(773529912,1546045734),new c(1294757372,1522805485),new c(1396182291,-1651133473),new c(1695183700,-1951439906),new c(1986661051,1014477480),new c(-2117940946,1206759142),new c(-1838011259,344077627),new c(-1564481375,1290863460),new c(-1474664885,-1136513023),new c(-1035236496,-789014639),new c(-949202525,106217008),new c(-778901479,-688958952),new c(-694614492,1432725776),new c(-200395387,1467031594),new c(275423344,851169720),new c(430227734,-1194143544),new c(506948616,1363258195),new c(659060556,-544281703),new c(883997877,-509917016),new c(958139571,-976659869),new c(1322822218,-482243893),new c(1537002063,2003034995),new c(1747873779,-692930397),new c(1955562222,1575990012),new c(2024104815,1125592928),new c(-2067236844,-1578062990),new c(-1933114872,442776044),new c(-1866530822,593698344),new c(-1538233109,-561857047),new c(-1090935817,-1295615723),new c(-965641998,-479046869),new c(-903397682,-366583396),new c(-779700025,566280711),new c(-354779690,-840897762),new c(-176337025,-294727304),new c(116418474,1914138554),new c(174292421,-1563912026),new c(289380356,-1090974290),new c(460393269,320620315),new c(685471733,587496836),new c(852142971,1086792851),new c(1017036298,365543100),new c(1126000580,-1676669620),new c(1288033470,-885112138),new c(1501505948,-60457430),new c(1607167915,987167468),new c(1816402316,1246189591)]),o=0;o<80;o+=1)u[o]=new c(0,0);for(n[e>>5]|=128<<24-(31&e),n[31+(e+128>>10<<5)]=e,h=n.length,o=0;o>>e|t.h<<32-e,n.h=t.h>>>e|t.l<<32-e}function A(n,t,e){n.l=t.h>>>e|t.l<<32-e,n.h=t.l>>>e|t.h<<32-e}function w(n,t,e){n.l=t.l>>>e|t.h<<32-e,n.h=t.h>>>e}function F(n,t,e){var r=(65535&t.l)+(65535&e.l),o=(t.l>>>16)+(e.l>>>16)+(r>>>16),h=(65535&t.h)+(65535&e.h)+(o>>>16),u=(t.h>>>16)+(e.h>>>16)+(h>>>16);n.l=65535&r|o<<16,n.h=65535&h|u<<16}function E(n,t,e,r,o){var h=(65535&t.l)+(65535&e.l)+(65535&r.l)+(65535&o.l),u=(t.l>>>16)+(e.l>>>16)+(r.l>>>16)+(o.l>>>16)+(h>>>16),i=(65535&t.h)+(65535&e.h)+(65535&r.h)+(65535&o.h)+(u>>>16),f=(t.h>>>16)+(e.h>>>16)+(r.h>>>16)+(o.h>>>16)+(i>>>16);n.l=65535&h|u<<16,n.h=65535&i|f<<16}function d(n,t,e,r,o,h){var u=(65535&t.l)+(65535&e.l)+(65535&r.l)+(65535&o.l)+(65535&h.l),i=(t.l>>>16)+(e.l>>>16)+(r.l>>>16)+(o.l>>>16)+(h.l>>>16)+(u>>>16),f=(65535&t.h)+(65535&e.h)+(65535&r.h)+(65535&o.h)+(65535&h.h)+(i>>>16),a=(t.h>>>16)+(e.h>>>16)+(r.h>>>16)+(o.h>>>16)+(h.h>>>16)+(f>>>16);n.l=65535&u|i<<16,n.h=65535&f|a<<16}this.hex=function(n){return i(h(n))},this.b64=function(n){return s(h(n),e)},this.any=function(n,t){return D(h(n),t)},this.raw=function(n){return h(n)},this.hex_hmac=function(n,t){return i(u(n,t))},this.b64_hmac=function(n,t){return s(u(n,t),e)},this.any_hmac=function(n,t,e){return D(u(n,t),e)},this.vm_test=function(){return"900150983cd24fb0d6963f7d28e17f72"===hex("abc").toLowerCase()},this.setUpperCase=function(n){return this},this.setPad=function(n){return e=n||e,this},this.setUTF8=function(n){return"boolean"==typeof n&&(r=n),this}},RMD160:function(n){n&&"boolean"==typeof n.uppercase&&n.uppercase;var t=n&&"string"==typeof n.pad?n.pa:"=",e=!n||"boolean"!=typeof n.utf8||n.utf8,r=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],f=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],a=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],l=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];function B(n){return A(w(c(n=e?o(n):n),8*n.length))}function C(n,t){n=e?o(n):n,t=e?o(t):t;var r,h,u=c(n),i=Array(16),f=Array(16);for(u.length>16&&(u=w(u,8*n.length)),r=0;r<16;r+=1)i[r]=909522486^u[r],f[r]=1549556828^u[r];return h=w(i.concat(c(t)),512+8*t.length),A(w(f.concat(h),672))}function A(n){var t,e="",r=32*n.length;for(t=0;t>5]>>>t%32&255);return e}function w(n,t){var e,o,i,c,D,s,B,C,A,w,g,p,y,m,b=1732584193,v=4023233417,x=2562383102,_=271733878,S=3285377520;for(n[t>>5]|=128<>>9<<4)]=t,c=n.length,i=0;i{e.default.get(n,t,(n=>{let t=String(n.statusCode)||"",e=/^[23]/.test(t);r(e)})).on("error",(n=>{o(n)}))}))};var i=function(n){return u(this.url(),{method:"HEAD"}).then((function(t){return n&&n(null,t),t})).catch((t=>{console.error(t),n&&n(t,null)}))};var f=function(){let n=this.infobox();if(n){let t=n.image();if(t)return t}let t=this.section().images();return 1===t.length?t[0]:null};return function(n){n.Doc.prototype.mainImage=f,n.Image.prototype.commonsURL=h,n.Image.prototype.exists=i}})); +!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("https")):"function"==typeof define&&define.amd?define(["https"],t):(n="undefined"!=typeof globalThis?globalThis:n||self).wtfImage=t(n.require$$0)}(this,(function(n){"use strict";function t(n){return n&&"object"==typeof n&&"default"in n?n:{default:n}}var e=t(n),r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},o={exports:{}};!function(n,t){!function(){var e;function o(n){var t,e,r,o="",h=-1;if(n&&n.length)for(r=n.length;(h+=1)>>6&31,128|63&t):t<=65535?o+=String.fromCharCode(224|t>>>12&15,128|t>>>6&63,128|63&t):t<=2097151&&(o+=String.fromCharCode(240|t>>>18&7,128|t>>>12&63,128|t>>>6&63,128|63&t));return o}function h(n,t){var e=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(e>>16)<<16|65535&e}function i(n,t){return n<>>32-t}function u(n,t){for(var e,r=t?"0123456789ABCDEF":"0123456789abcdef",o="",h=0,i=n.length;h>>4&15)+r.charAt(15&e);return o}function f(n){var t,e=32*n.length,r="";for(t=0;t>5]>>>24-t%32&255);return r}function a(n){var t,e=32*n.length,r="";for(t=0;t>5]>>>t%32&255);return r}function c(n){var t,e=8*n.length,r=Array(n.length>>2),o=r.length;for(t=0;t>5]|=(255&n.charCodeAt(t/8))<>2),o=r.length;for(t=0;t>5]|=(255&n.charCodeAt(t/8))<<24-t%32;return r}function s(n,t){var e,r,o,h,i,u,f,a,c=t.length,l=Array();for(h=(u=Array(Math.ceil(n.length/2))).length,e=0;e0;){for(i=Array(),o=0,e=0;e0||r>0)&&(i[i.length]=r);l[l.length]=o,u=i}for(f="",e=l.length-1;e>=0;e--)f+=t.charAt(l[e]);for(a=Math.ceil(8*n.length/(Math.log(t.length)/Math.log(2))),e=f.length;e8*n.length?h+=t:h+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(o>>>6*(3-r)&63);return h}e={VERSION:"1.0.6",Base64:function(){var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t="=",e=!0;this.encode=function(r){var h,i,u,f="",a=r.length;for(t=t||"=",r=e?o(r):r,h=0;h8*a?t:n.charAt(u>>>6*(3-i)&63);return f},this.decode=function(r){var o,h,i,u,f,a,c,l,s="",D=[];if(!r)return r;o=l=0,r=r.replace(new RegExp("\\"+t,"gi"),"");do{h=(c=n.indexOf(r.charAt(o+=1))<<18|n.indexOf(r.charAt(o+=1))<<12|(f=n.indexOf(r.charAt(o+=1)))<<6|(a=n.indexOf(r.charAt(o+=1))))>>16&255,i=c>>8&255,u=255&c,D[l+=1]=64===f?String.fromCharCode(h):64===a?String.fromCharCode(h,i):String.fromCharCode(h,i,u)}while(o191&&r<224?(o=n.charCodeAt(t+1),u[e]=String.fromCharCode((31&r)<<6|63&o),t+=2):(o=n.charCodeAt(t+1),h=n.charCodeAt(t+2),u[e]=String.fromCharCode((15&r)<<12|(63&o)<<6|63&h),t+=3);return u.join("")}(s):s},this.setPad=function(n){return t=n||t,this},this.setTab=function(t){return n=t||n,this},this.setUTF8=function(n){return"boolean"==typeof n&&(e=n),this}},CRC32:function(n){var t,e,r,h=0,i=0;for(n=o(n),t=["00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 ","79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 ","84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F ","63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD ","A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC ","51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 ","B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 ","06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 ","E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 ","12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 ","D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 ","33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 ","CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 ","9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E ","7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D ","806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 ","60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA ","AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 ","5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 ","B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 ","05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 ","F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA ","11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 ","D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F ","30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E ","C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"].join(""),h^=-1,e=0,r=n.length;e>>8^"0x"+t.substr(9*i,8);return(-1^h)>>>0},MD5:function(n){var t=!(!n||"boolean"!=typeof n.uppercase)&&n.uppercase,e=n&&"string"==typeof n.pad?n.pad:"=",r=!n||"boolean"!=typeof n.utf8||n.utf8;function f(n){return a(B(c(n=r?o(n):n),8*n.length))}function l(n,t){var e,h,i,u,f;for(n=r?o(n):n,t=r?o(t):t,(e=c(n)).length>16&&(e=B(e,8*n.length)),h=Array(16),i=Array(16),f=0;f<16;f+=1)h[f]=909522486^e[f],i[f]=1549556828^e[f];return u=B(h.concat(c(t)),512+8*t.length),a(B(i.concat(u),640))}function B(n,t){var e,r,o,i,u,f=1732584193,a=-271733879,c=-1732584194,l=271733878;for(n[t>>5]|=128<>>9<<4)]=t,e=0;e16&&(e=B(e,8*n.length)),h=Array(16),i=Array(16),u=0;u<16;u+=1)h[u]=909522486^e[u],i[u]=1549556828^e[u];return a=B(h.concat(l(t)),512+8*t.length),f(B(i.concat(a),672))}function B(n,t){var e,r,o,u,f,a,c,l,s=Array(80),D=1732584193,B=-271733879,w=-1732584194,F=271733878,E=-1009589776;for(n[t>>5]|=128<<24-t%32,n[15+(t+64>>9<<4)]=t,e=0;e16&&(i=d(i,8*n.length));h<16;h+=1)u[h]=909522486^i[h],a[h]=1549556828^i[h];return e=d(u.concat(l(t)),512+8*t.length),f(d(a.concat(e),768))}function c(n,t){return n>>>t|n<<32-t}function B(n,t){return n>>>t}function C(n,t,e){return n&t^~n&e}function A(n,t,e){return n&t^n&e^t&e}function w(n){return c(n,2)^c(n,13)^c(n,22)}function F(n){return c(n,6)^c(n,11)^c(n,25)}function E(n){return c(n,7)^c(n,18)^B(n,3)}function d(n,e){var r,o,i,u,f,a,l,s,D,d,g,p,y,m=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],b=new Array(64);for(n[e>>5]|=128<<24-e%32,n[15+(e+64>>9<<4)]=e,D=0;D32&&(i=a(i,8*n.length));h<32;h+=1)u[h]=909522486^i[h],c[h]=1549556828^i[h];return e=a(u.concat(l(t)),1024+8*t.length),f(a(c.concat(e),1536))}function a(n,e){var r,o,h,i=new Array(80),u=new Array(16),f=[new c(1779033703,-205731576),new c(-1150833019,-2067093701),new c(1013904242,-23791573),new c(-1521486534,1595750129),new c(1359893119,-1377402159),new c(-1694144372,725511199),new c(528734635,-79577749),new c(1541459225,327033209)],a=new c(0,0),l=new c(0,0),s=new c(0,0),D=new c(0,0),g=new c(0,0),p=new c(0,0),y=new c(0,0),m=new c(0,0),b=new c(0,0),v=new c(0,0),x=new c(0,0),_=new c(0,0),S=new c(0,0),U=new c(0,0),T=new c(0,0),j=new c(0,0),M=new c(0,0);for(void 0===t&&(t=[new c(1116352408,-685199838),new c(1899447441,602891725),new c(-1245643825,-330482897),new c(-373957723,-2121671748),new c(961987163,-213338824),new c(1508970993,-1241133031),new c(-1841331548,-1357295717),new c(-1424204075,-630357736),new c(-670586216,-1560083902),new c(310598401,1164996542),new c(607225278,1323610764),new c(1426881987,-704662302),new c(1925078388,-226784913),new c(-2132889090,991336113),new c(-1680079193,633803317),new c(-1046744716,-815192428),new c(-459576895,-1628353838),new c(-272742522,944711139),new c(264347078,-1953704523),new c(604807628,2007800933),new c(770255983,1495990901),new c(1249150122,1856431235),new c(1555081692,-1119749164),new c(1996064986,-2096016459),new c(-1740746414,-295247957),new c(-1473132947,766784016),new c(-1341970488,-1728372417),new c(-1084653625,-1091629340),new c(-958395405,1034457026),new c(-710438585,-1828018395),new c(113926993,-536640913),new c(338241895,168717936),new c(666307205,1188179964),new c(773529912,1546045734),new c(1294757372,1522805485),new c(1396182291,-1651133473),new c(1695183700,-1951439906),new c(1986661051,1014477480),new c(-2117940946,1206759142),new c(-1838011259,344077627),new c(-1564481375,1290863460),new c(-1474664885,-1136513023),new c(-1035236496,-789014639),new c(-949202525,106217008),new c(-778901479,-688958952),new c(-694614492,1432725776),new c(-200395387,1467031594),new c(275423344,851169720),new c(430227734,-1194143544),new c(506948616,1363258195),new c(659060556,-544281703),new c(883997877,-509917016),new c(958139571,-976659869),new c(1322822218,-482243893),new c(1537002063,2003034995),new c(1747873779,-692930397),new c(1955562222,1575990012),new c(2024104815,1125592928),new c(-2067236844,-1578062990),new c(-1933114872,442776044),new c(-1866530822,593698344),new c(-1538233109,-561857047),new c(-1090935817,-1295615723),new c(-965641998,-479046869),new c(-903397682,-366583396),new c(-779700025,566280711),new c(-354779690,-840897762),new c(-176337025,-294727304),new c(116418474,1914138554),new c(174292421,-1563912026),new c(289380356,-1090974290),new c(460393269,320620315),new c(685471733,587496836),new c(852142971,1086792851),new c(1017036298,365543100),new c(1126000580,-1676669620),new c(1288033470,-885112138),new c(1501505948,-60457430),new c(1607167915,987167468),new c(1816402316,1246189591)]),o=0;o<80;o+=1)i[o]=new c(0,0);for(n[e>>5]|=128<<24-(31&e),n[31+(e+128>>10<<5)]=e,h=n.length,o=0;o>>e|t.h<<32-e,n.h=t.h>>>e|t.l<<32-e}function A(n,t,e){n.l=t.h>>>e|t.l<<32-e,n.h=t.l>>>e|t.h<<32-e}function w(n,t,e){n.l=t.l>>>e|t.h<<32-e,n.h=t.h>>>e}function F(n,t,e){var r=(65535&t.l)+(65535&e.l),o=(t.l>>>16)+(e.l>>>16)+(r>>>16),h=(65535&t.h)+(65535&e.h)+(o>>>16),i=(t.h>>>16)+(e.h>>>16)+(h>>>16);n.l=65535&r|o<<16,n.h=65535&h|i<<16}function E(n,t,e,r,o){var h=(65535&t.l)+(65535&e.l)+(65535&r.l)+(65535&o.l),i=(t.l>>>16)+(e.l>>>16)+(r.l>>>16)+(o.l>>>16)+(h>>>16),u=(65535&t.h)+(65535&e.h)+(65535&r.h)+(65535&o.h)+(i>>>16),f=(t.h>>>16)+(e.h>>>16)+(r.h>>>16)+(o.h>>>16)+(u>>>16);n.l=65535&h|i<<16,n.h=65535&u|f<<16}function d(n,t,e,r,o,h){var i=(65535&t.l)+(65535&e.l)+(65535&r.l)+(65535&o.l)+(65535&h.l),u=(t.l>>>16)+(e.l>>>16)+(r.l>>>16)+(o.l>>>16)+(h.l>>>16)+(i>>>16),f=(65535&t.h)+(65535&e.h)+(65535&r.h)+(65535&o.h)+(65535&h.h)+(u>>>16),a=(t.h>>>16)+(e.h>>>16)+(r.h>>>16)+(o.h>>>16)+(h.h>>>16)+(f>>>16);n.l=65535&i|u<<16,n.h=65535&f|a<<16}this.hex=function(n){return u(h(n))},this.b64=function(n){return D(h(n),e)},this.any=function(n,t){return s(h(n),t)},this.raw=function(n){return h(n)},this.hex_hmac=function(n,t){return u(i(n,t))},this.b64_hmac=function(n,t){return D(i(n,t),e)},this.any_hmac=function(n,t,e){return s(i(n,t),e)},this.vm_test=function(){return"900150983cd24fb0d6963f7d28e17f72"===hex("abc").toLowerCase()},this.setUpperCase=function(n){return this},this.setPad=function(n){return e=n||e,this},this.setUTF8=function(n){return"boolean"==typeof n&&(r=n),this}},RMD160:function(n){n&&"boolean"==typeof n.uppercase&&n.uppercase;var t=n&&"string"==typeof n.pad?n.pa:"=",e=!n||"boolean"!=typeof n.utf8||n.utf8,r=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],f=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],a=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],l=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];function B(n){return A(w(c(n=e?o(n):n),8*n.length))}function C(n,t){n=e?o(n):n,t=e?o(t):t;var r,h,i=c(n),u=Array(16),f=Array(16);for(i.length>16&&(i=w(i,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^i[r],f[r]=1549556828^i[r];return h=w(u.concat(c(t)),512+8*t.length),A(w(f.concat(h),672))}function A(n){var t,e="",r=32*n.length;for(t=0;t>5]>>>t%32&255);return e}function w(n,t){var e,o,u,c,s,D,B,C,A,w,g,p,y,m,b=1732584193,v=4023233417,x=2562383102,_=271733878,S=3285377520;for(n[t>>5]|=128<>>9<<4)]=t,c=n.length,u=0;u1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((e,r)=>{u.get(n,t,(n=>{let t=String(n.statusCode)||"",r=/^[23]/.test(t);e(r)})).on("error",(n=>{r(n)}))}))};const a=i,c=function(n){return f(this.url(),{method:"HEAD"}).then((function(t){return n&&n(null,t),t})).catch((t=>{console.error(t),n&&n(t,null)}))},l=function(){let n=this.infobox();if(n){let t=n.image();if(t)return t}let t=this.section().images();return 1===t.length?t[0]:null};return function(n){n.Doc.prototype.mainImage=l,n.Image.prototype.commonsURL=a,n.Image.prototype.exists=c}})); diff --git a/plugins/image/builds/wtf-plugin-image.mjs b/plugins/image/builds/wtf-plugin-image.mjs index 66032dbf..48ab82c2 100644 --- a/plugins/image/builds/wtf-plugin-image.mjs +++ b/plugins/image/builds/wtf-plugin-image.mjs @@ -1,26 +1,25 @@ -/* wtf-plugin-image 0.3.0 MIT */ -import https from 'https'; +/* wtf-plugin-image 0.3.1 MIT */ +import require$$0 from 'https'; var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; -function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; -} - -var hashes = createCommonjsModule(function (module, exports) { - /** - * jshashes - https://github.com/h2non/jshashes - * Released under the "New BSD" license - * - * Algorithms specification: - * - * MD5 - http://www.ietf.org/rfc/rfc1321.txt - * RIPEMD-160 - http://homes.esat.kuleuven.be/~bosselae/ripemd160.html - * SHA1 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf - * SHA256 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf - * SHA512 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf - * HMAC - http://www.ietf.org/rfc/rfc2104.txt - */ +var hashes = {exports: {}}; + +/** + * jshashes - https://github.com/h2non/jshashes + * Released under the "New BSD" license + * + * Algorithms specification: + * + * MD5 - http://www.ietf.org/rfc/rfc1321.txt + * RIPEMD-160 - http://homes.esat.kuleuven.be/~bosselae/ripemd160.html + * SHA1 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf + * SHA256 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf + * SHA512 - http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf + * HMAC - http://www.ietf.org/rfc/rfc2104.txt + */ + +(function (module, exports) { (function () { var Hashes; @@ -1774,8 +1773,8 @@ var hashes = createCommonjsModule(function (module, exports) { module.exports = Hashes; } // in Narwhal or RingoJS v0.7.0- else { - freeExports.Hashes = Hashes; - } + freeExports.Hashes = Hashes; + } } else { // in a browser or Rhino window.Hashes = Hashes; @@ -1783,12 +1782,13 @@ var hashes = createCommonjsModule(function (module, exports) { })(this); })(); // IIFE -}); +})(hashes, hashes.exports); +const Hashes = hashes.exports; const server$1 = 'https://upload.wikimedia.org/wikipedia/commons/'; const encodeTitle = function (file) { - let title = file.replace(/^(image|file?)\:/i, ''); //titlecase it + let title = file.replace(/^(image|file?):/i, ''); //titlecase it title = title.charAt(0).toUpperCase() + title.substring(1); //spaces to underscores @@ -1798,19 +1798,22 @@ const encodeTitle = function (file) { //https://commons.wikimedia.org/wiki/Commons:FAQ#What_are_the_strangely_named_components_in_file_paths.3F -const commonsURL = function () { +const commonsURL$1 = function () { let file = this.data.file; let title = encodeTitle(file); - let hash = new hashes.MD5().hex(title); + let hash = new Hashes.MD5().hex(title); let path = hash.substr(0, 1) + '/' + hash.substr(0, 2) + '/'; title = encodeURIComponent(title); path += title; return server$1 + path; }; -var urlHash = commonsURL; +var urlHash = commonsURL$1; + +const https = require$$0; // use the native nodejs request function -const request = function (url, opts = {}) { +const request = function (url) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return new Promise((resolve, reject) => { https.get(url, opts, resp => { let status = String(resp.statusCode) || ''; @@ -1824,8 +1827,10 @@ const request = function (url, opts = {}) { var server = request; -const imgExists = function (callback) { - return server(this.url(), { +const http = server; // test if the image url exists or not + +const imgExists$1 = function (callback) { + return http(this.url(), { method: 'HEAD' }).then(function (bool) { //support callback non-promise form @@ -1843,10 +1848,9 @@ const imgExists = function (callback) { }); }; -var imgExists_1 = imgExists; +var imgExists_1 = imgExists$1; -// is there a good image of this -const mainImage = function () { +const mainImage$1 = function () { let box = this.infobox(); if (box) { @@ -1867,15 +1871,19 @@ const mainImage = function () { return null; }; -var mainImage_1 = mainImage; +var mainImage_1 = mainImage$1; + +const commonsURL = urlHash; +const imgExists = imgExists_1; +const mainImage = mainImage_1; const addMethod = function (models) { - models.Doc.prototype.mainImage = mainImage_1; // add a new method to Image class + models.Doc.prototype.mainImage = mainImage; // add a new method to Image class - models.Image.prototype.commonsURL = urlHash; - models.Image.prototype.exists = imgExists_1; + models.Image.prototype.commonsURL = commonsURL; + models.Image.prototype.exists = imgExists; }; var src = addMethod; -export default src; +export { src as default }; diff --git a/plugins/image/package-lock.json b/plugins/image/package-lock.json index 8bb03946..3522f458 100644 --- a/plugins/image/package-lock.json +++ b/plugins/image/package-lock.json @@ -12,52 +12,57 @@ "jshashes": "^1.0.8" }, "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "13.0.6", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "4.0.0", - "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", - "dev": true + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -74,83 +79,102 @@ } }, "node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -167,193 +191,249 @@ } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "dependencies": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -362,189 +442,278 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=4" @@ -577,6 +746,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -685,452 +869,570 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -1140,55 +1442,59 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1196,55 +1502,218 @@ "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-babel/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-babel/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^2.42.0" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" } }, + "node_modules/@rollup/plugin-node-resolve/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, "node_modules/@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -1257,15 +1726,6 @@ "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==", "dev": true }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1309,13 +1769,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" }, "peerDependencies": { @@ -1323,25 +1783,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1364,16 +1824,16 @@ } }, "node_modules/browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" @@ -1392,12 +1852,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "node_modules/buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, "node_modules/builtin-modules": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", @@ -1421,10 +1875,14 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", - "dev": true + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } }, "node_modules/chalk": { "version": "2.4.2", @@ -1456,9 +1914,9 @@ "dev": true }, "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "node_modules/commander": { @@ -1467,6 +1925,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1483,12 +1947,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "dependencies": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "funding": { @@ -1506,9 +1970,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/debug": { @@ -1555,6 +2019,15 @@ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -1586,33 +2059,37 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.704", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", - "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -1681,12 +2158,6 @@ "node": ">=0.8.0" } }, - "node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1760,10 +2231,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -1775,6 +2271,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { @@ -1807,6 +2306,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1828,6 +2339,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1844,6 +2370,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -1884,9 +2424,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true, "engines": { "node": ">= 0.4" @@ -1959,22 +2499,22 @@ } }, "node_modules/is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "dependencies": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -1992,11 +2532,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2047,6 +2599,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -2141,12 +2705,6 @@ "node": ">=6" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -2193,15 +2751,15 @@ "dev": true }, "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2269,15 +2827,33 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "node_modules/randombytes": { @@ -2290,23 +2866,23 @@ } }, "node_modules/re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "node_modules/readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -2317,21 +2893,21 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "dependencies": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" }, "engines": { "node": ">=4" } }, "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "node_modules/regenerator-transform": { @@ -2360,17 +2936,17 @@ } }, "node_modules/regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" @@ -2383,9 +2959,9 @@ "dev": true }, "node_modules/regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -2404,12 +2980,16 @@ } }, "node_modules/resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "dependencies": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resumer": { @@ -2422,9 +3002,9 @@ } }, "node_modules/rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2433,30 +3013,7 @@ "node": ">=10.0.0" }, "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "node_modules/rollup-plugin-filesize-check": { @@ -2465,28 +3022,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "node_modules/rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "dependencies": { - "rollup-pluginutils": "^2.5.0" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "dependencies": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -2499,15 +3034,6 @@ "terser": "^5.0.0" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2581,9 +3107,9 @@ "dev": true }, "node_modules/split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "dependencies": { "through": "2" @@ -2593,23 +3119,23 @@ } }, "node_modules/string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" }, "engines": { "node": ">= 0.4" @@ -2657,101 +3183,40 @@ } }, "node_modules/tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "dependencies": { - "chalk": "4.1.0", - "tap-out": "3.0.0" + "colorette": "^1.2.2", + "tap-in": "3.2.1" }, "bin": { "tap-dancer": "src/index.js" } }, - "node_modules/tap-dancer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tap-dancer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/tap-dancer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/tap-dancer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "bin": { + "tap-in": "bin/tap-in.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", - "dev": true, - "dependencies": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" - }, - "bin": { - "tap-out": "bin/cmd.js" + "node": ">=8.0.0" } }, "node_modules/tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", @@ -2759,17 +3224,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "bin": { @@ -2831,9 +3298,9 @@ } }, "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "node_modules/unbox-primitive": { @@ -2852,40 +3319,40 @@ } }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, "engines": { "node": ">=4" @@ -2970,35 +3437,35 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" } }, "@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true }, "@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -3008,74 +3475,75 @@ } }, "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -3089,339 +3557,370 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { @@ -3439,7 +3938,16 @@ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-dynamic-import": { @@ -3523,353 +4031,366 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -3879,52 +4400,53 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" } }, "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -3935,52 +4457,165 @@ } }, "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, + "@rollup/plugin-node-resolve": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, "@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -3993,15 +4628,6 @@ "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==", "dev": true }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -4036,33 +4662,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" } }, "balanced-match": { @@ -4082,16 +4708,16 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "buffer-from": { @@ -4100,12 +4726,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, "builtin-modules": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", @@ -4123,9 +4743,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true }, "chalk": { @@ -4155,9 +4775,9 @@ "dev": true }, "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "commander": { @@ -4166,6 +4786,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -4182,12 +4808,12 @@ } }, "core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "requires": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "dependencies": { @@ -4200,9 +4826,9 @@ } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "debug": { @@ -4245,6 +4871,12 @@ } } }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -4270,33 +4902,37 @@ } }, "electron-to-chromium": { - "version": "1.3.704", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", - "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" } }, "es-get-iterator": { @@ -4346,12 +4982,6 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4409,10 +5039,26 @@ "has-symbols": "^1.0.1" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4444,6 +5090,15 @@ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, + "has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -4456,6 +5111,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4472,6 +5136,17 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -4497,9 +5172,9 @@ } }, "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-core-module": { @@ -4542,22 +5217,22 @@ "dev": true }, "is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "requires": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" } }, "is-set": { @@ -4566,12 +5241,21 @@ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -4600,6 +5284,15 @@ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -4666,12 +5359,6 @@ "minimist": "^1.2.5" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -4715,15 +5402,15 @@ "dev": true }, "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true }, "object-is": { @@ -4770,15 +5457,27 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "randombytes": { @@ -4791,23 +5490,23 @@ } }, "re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -4818,18 +5517,18 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "regenerator-transform": { @@ -4852,17 +5551,17 @@ } }, "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { @@ -4872,9 +5571,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -4889,11 +5588,12 @@ } }, "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -4907,35 +5607,12 @@ } }, "rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "rollup-plugin-filesize-check": { @@ -4944,28 +5621,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "requires": { - "rollup-pluginutils": "^2.5.0" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -4978,15 +5633,6 @@ "terser": "^5.0.0" } }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -5050,32 +5696,32 @@ "dev": true }, "split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "string.prototype.trimend": { @@ -5108,82 +5754,31 @@ } }, "tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "requires": { - "chalk": "4.1.0", - "tap-out": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "colorette": "^1.2.2", + "tap-in": "3.2.1" } }, - "tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", + "tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "requires": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" } }, "tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -5191,17 +5786,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "dependencies": { @@ -5249,9 +5846,9 @@ "dev": true }, "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "unbox-primitive": { @@ -5267,31 +5864,31 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "util-deprecate": { diff --git a/plugins/image/package.json b/plugins/image/package.json index 229b7b87..630ec4b3 100644 --- a/plugins/image/package.json +++ b/plugins/image/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-image", "description": "image plugin for wtf_wikipedia", - "version": "0.3.0", + "version": "0.3.1", "main": "./builds/wtf-plugin-image.js", "unpkg": "./builds/wtf-plugin-image.min.js", "module": "./builds/wtf-plugin-image.mjs", @@ -34,17 +34,16 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "13.0.6", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "4.0.0", - "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "license": "MIT" -} +} \ No newline at end of file diff --git a/plugins/image/rollup.config.js b/plugins/image/rollup.config.js index 3dd09db4..cfe28db6 100644 --- a/plugins/image/rollup.config.js +++ b/plugins/image/rollup.config.js @@ -1,8 +1,8 @@ -import commonjs from 'rollup-plugin-commonjs' +import commonjs from '@rollup/plugin-commonjs' import { terser } from 'rollup-plugin-terser' -import babel from 'rollup-plugin-babel' +import { babel } from '@rollup/plugin-babel' import sizeCheck from 'rollup-plugin-filesize-check' -import nodeResolve from 'rollup-plugin-node-resolve' +import { nodeResolve } from '@rollup/plugin-node-resolve' //import https import { version } from './package.json' console.log('\n 📦 - running rollup..\n') @@ -15,9 +15,10 @@ export default [ input: 'src/index.js', output: [{ banner: banner, file: `builds/${name}.mjs`, format: 'esm' }], plugins: [ - commonjs(), nodeResolve(), + commonjs({ requireReturnsDefault: "auto" }), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -37,9 +38,10 @@ export default [ } ], plugins: [ - commonjs(), nodeResolve(), + commonjs({ requireReturnsDefault: "auto" }), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -58,9 +60,10 @@ export default [ } ], plugins: [ - commonjs(), nodeResolve(), + commonjs({ requireReturnsDefault: "auto" }), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }), diff --git a/plugins/latex/builds/wtf-plugin-latex.js b/plugins/latex/builds/wtf-plugin-latex.js index 31bcc19e..1690bf4e 100644 --- a/plugins/latex/builds/wtf-plugin-latex.js +++ b/plugins/latex/builds/wtf-plugin-latex.js @@ -1,18 +1,18 @@ -/* wtf-plugin-latex 0.2.0 MIT */ +/* wtf-plugin-latex 0.2.1 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, global.wtfLatex = factory()); -}(this, (function () { 'use strict'; + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfLatex = factory()); +})(this, (function () { 'use strict'; - var defaults = { + const defaults$4 = { infoboxes: true, sections: true }; // we should try to make this look like the wikipedia does, i guess. - var softRedirect = function softRedirect(doc) { - var link = doc.redirectTo(); - var href = link.page; + const softRedirect = function (doc) { + let link = doc.redirectTo(); + let href = link.page; href = './' + href.replace(/ /g, '_'); //add anchor if (link.anchor) { @@ -23,9 +23,9 @@ }; // - var toLatex = function toLatex(options) { - options = Object.assign({}, defaults, options); - var out = ''; //if it's a redirect page, give it a 'soft landing': + const toLatex$6 = function (options) { + options = Object.assign({}, defaults$4, options); + let out = ''; //if it's a redirect page, give it a 'soft landing': if (this.isRedirect() === true) { return softRedirect(this); //end it here. @@ -33,32 +33,26 @@ if (options.infoboxes === true) { - out += this.infoboxes().map(function (i) { - return i.latex(options); - }).join('\n'); + out += this.infoboxes().map(i => i.latex(options)).join('\n'); } //render each section if (options.sections === true || options.paragraphs === true || options.sentences === true) { - out += this.sections().map(function (s) { - return s.latex(options); - }).join('\n'); + out += this.sections().map(s => s.latex(options)).join('\n'); } //default off //render citations if (options.references === true) { - out += this.references().map(function (c) { - return c.latex(options); - }).join('\n'); + out += this.references().map(c => c.latex(options)).join('\n'); } return out; }; - var _01Doc = toLatex; + var _01Doc = toLatex$6; - var defaults$1 = { + const defaults$3 = { headers: true, images: true, tables: true, @@ -66,46 +60,33 @@ paragraphs: true }; //map '==' depth to 'subsection', 'subsubsection', etc - var doSection = function doSection(options) { - options = Object.assign({}, defaults$1, options); - var out = ''; - var num = 1; //make the header + const doSection = function (options) { + options = Object.assign({}, defaults$3, options); + let out = ''; + let num = 1; //make the header if (options.headers === true && this.title()) { - num = 1 + this.depth; - var vOpen = '\n'; - var vClose = '}'; - - switch (num) { - case 1: - vOpen += '\\chapter{'; - break; - - case 2: - vOpen += '\\section{'; - break; - - case 3: - vOpen += '\\subsection{'; - break; - - case 4: - vOpen += '\\subsubsection{'; - break; - - case 5: - vOpen += '\\paragraph{'; - vClose = '} \\\\ \n'; - break; - - case 6: - vOpen += '\\subparagraph{'; - vClose = '} \\\\ \n'; - break; - - default: - vOpen += '\n% section with depth=' + num + ' undefined - use subparagraph instead\n\\subparagraph{'; - vClose = '} \\\\ \n'; + num = 1 + this.depth(); + let vOpen = '\n'; + let vClose = '}'; + + if (num === 1) { + vOpen += '\\chapter{'; + } else if (num === 2) { + vOpen += '\\section{'; + } else if (num === 3) { + vOpen += '\\subsection{'; + } else if (num === 4) { + vOpen += '\\subsubsection{'; + } else if (num === 5) { + vOpen += '\\paragraph{'; + vClose = '} \\\\ \n'; + } else if (num === 6) { + vOpen += '\\subparagraph{'; + vClose = '} \\\\ \n'; + } else { + vOpen += '\n% section with depth=' + num + ' undefined - use subparagraph instead\n\\subparagraph{'; + vClose = '} \\\\ \n'; } out += vOpen + this.title() + vClose; @@ -114,33 +95,25 @@ if (options.images === true && this.images()) { - out += this.images().map(function (img) { - return img.latex(options); - }).join('\n'); //out += '\n'; - } //make a out tablew + out += this.images().map(img => img.latex(options)).join('\n'); //out += '\n'; + } //make a out table if (options.tables === true && this.tables()) { - out += this.tables().map(function (t) { - return t.latex(options); - }).join('\n'); - } // //make a out bullet-list + out += this.tables().map(t => t.latex(options)).join('\n'); + } //make a out bullet-list if (options.lists === true && this.lists()) { - out += this.lists().map(function (list) { - return list.latex(options); - }).join('\n'); + out += this.lists().map(list => list.latex(options)).join('\n'); } //finally, write the sentence text. if (options.paragraphs === true || options.sentences === true) { - out += this.paragraphs().map(function (s) { - return s.latex(options); - }).join(' '); + out += this.paragraphs().map(s => s.latex(options)).join(' '); out += '\n'; - } // let title_tag = ' SECTION depth=' + num + ' - TITLE: ' + section.title + '\n'; - // wrap a section comment + } //let title_tag = ' SECTION depth=' + num + ' - TITLE: ' + section.title + '\n'; + //wrap a section comment //out = '\n% BEGIN' + title_tag + out + '\n% END' + title_tag; @@ -149,17 +122,17 @@ var _02Section = doSection; - var defaults$2 = { + const defaults$2 = { sentences: true }; - var toLatex$1 = function toLatex(options) { + const toLatex$5 = function (options) { options = Object.assign({}, defaults$2, options); - var out = ''; + let out = ''; if (options.sentences === true) { out += '\n\n% BEGIN Paragraph\n'; - out += this.sentences().reduce(function (str, s) { + out += this.sentences().reduce((str, s) => { str += s.latex(options) + '\n'; return str; }, ''); @@ -169,15 +142,14 @@ return out; }; - var _03Paragraph = toLatex$1; + var _03Paragraph = toLatex$5; - //escape a string like 'fun*2.Co' for a regExpr function escapeRegExp(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); + return str.replace(/[\-[\]/{}()*+?.\\^$|]/g, '\\$&'); } //sometimes text-replacements can be ambiguous - words used multiple times.. - var smartReplace = function smartReplace(all, text, result) { + const smartReplace$1 = function (all, text, result) { if (!text || !all) { return all; } @@ -188,7 +160,7 @@ text = escapeRegExp(text); //try a word-boundary replace - var reg = new RegExp('\\b' + text + '\\b'); + let reg = new RegExp('\\b' + text + '\\b'); if (reg.test(all) === true) { all = all.replace(reg, result); @@ -201,38 +173,39 @@ return all; }; - var smartReplace_1 = smartReplace; + var smartReplace_1 = smartReplace$1; - var defaults$3 = { + const smartReplace = smartReplace_1; + const defaults$1 = { links: true, formatting: true }; // create links, bold, italic in latex - var toLatex$2 = function toLatex(options) { - options = Object.assign({}, defaults$3, options); - var text = this.text(); //turn links back into links + const toLatex$4 = function (options) { + options = Object.assign({}, defaults$1, options); + let text = this.text(); //turn links back into links if (options.links === true && this.links().length > 0) { - this.links().forEach(function (link) { - var tag = link.latex(); - var str = link.text() || link.page(); - text = smartReplace_1(text, str, tag); + this.links().forEach(link => { + let tag = link.latex(); + let str = link.text() || link.page(); + text = smartReplace(text, str, tag); }); } if (options.formatting === true) { if (this.data.fmt) { if (this.data.fmt.bold) { - this.data.fmt.bold.forEach(function (str) { - var tag = '\\textbf{' + str + '}'; - text = smartReplace_1(text, str, tag); + this.data.fmt.bold.forEach(str => { + let tag = '\\textbf{' + str + '}'; + text = smartReplace(text, str, tag); }); } if (this.data.fmt.italic) { - this.data.fmt.italic.forEach(function (str) { - var tag = '\\textit{' + str + '}'; - text = smartReplace_1(text, str, tag); + this.data.fmt.italic.forEach(str => { + let tag = '\\textit{' + str + '}'; + text = smartReplace(text, str, tag); }); } } @@ -241,21 +214,20 @@ return text; }; - var _04Sentence = toLatex$2; + var _04Sentence = toLatex$4; - var toLatex$3 = function toLatex() { - var href = this.href(); + const toLatex$3 = function () { + let href = this.href(); href = href.replace(/ /g, '_'); - var str = this.text() || this.page(); + let str = this.text() || this.page(); return '\\href{' + href + '}{' + str + '}'; }; var _05Link = toLatex$3; - // - var toLatex$4 = function toLatex() { - var alt = this.alt(); - var out = '\\begin{figure}'; + const toLatex$2 = function () { + let alt = this.alt(); + let out = '\\begin{figure}'; out += '\n\\includegraphics[width=\\linewidth]{' + this.thumb() + '}'; out += '\n\\caption{' + alt + '}'; // out += '\n%\\label{fig:myimage1}'; @@ -263,34 +235,32 @@ return out; }; - var image = toLatex$4; + var image$1 = toLatex$2; - var dontDo = { + const dontDo = { image: true, caption: true, alt: true, signature: true, 'signature alt': true }; - var defaults$4 = { + const defaults = { images: true }; // - var infobox = function infobox(options) { - var _this = this; - - options = Object.assign({}, defaults$4, options); - var out = '\n \\vspace*{0.3cm} % Info Box\n\n'; + const infobox$1 = function (options) { + options = Object.assign({}, defaults, options); + let out = '\n \\vspace*{0.3cm} % Info Box\n\n'; out += '\\begin{tabular}{|@{\\qquad}l|p{9.5cm}@{\\qquad}|} \n'; out += ' \\hline %horizontal line\n'; //todo: render top image here - Object.keys(this.data).forEach(function (k) { + Object.keys(this.data).forEach(k => { if (dontDo[k] === true) { return; } - var s = _this.data[k]; - var val = s.latex(options); + let s = this.data[k]; + let val = s.latex(options); out += ' % ---------- \n'; out += ' ' + k + ' & \n'; out += ' ' + val + '\\\\ \n'; @@ -301,44 +271,41 @@ return out; }; - var infobox_1 = infobox; + var infobox_1 = infobox$1; - // - var toLatex$5 = function toLatex(options) { - var out = '\\begin{itemize}\n'; - this.lines().forEach(function (s) { + const toLatex$1 = function (options) { + let out = '\\begin{itemize}\n'; + this.lines().forEach(s => { out += ' \\item ' + s.text(options) + '\n'; }); out += '\\end{itemize}\n'; return out; }; - var list = toLatex$5; + var list$1 = toLatex$1; - //not so impressive right now - var toLatex$6 = function toLatex() { - var str = this.title(); + const toLatex = function () { + let str = this.title(); return '⌃ ' + str + '\n'; }; - var reference = toLatex$6; + var reference$1 = toLatex; - //create a formal LATEX table - var doTable = function doTable(options) { - var rows = this.data; - var out = '\n%\\vspace*{0.3cm}\n'; + const doTable = function (options) { + let rows = this.data; + let out = '\n%\\vspace*{0.3cm}\n'; out += '\n% BEGIN TABLE: only left align columns in LaTeX table with horizontal line separation between columns'; out += "\n% Format Align Column: 'l'=left 'r'=right align, 'c'=center, 'p{5cm}'=block with column width 5cm "; out += '\n\\begin{tabular}{|'; - Object.keys(rows[0]).forEach(function () { + Object.keys(rows[0]).forEach(() => { out += 'l|'; }); out += '} \n'; out += '\n \\hline %horizontal line\n'; //make header out += '\n % BEGIN: Table Header'; - var vSep = ' '; - Object.keys(rows[0]).forEach(function (k) { + let vSep = ' '; + Object.keys(rows[0]).forEach(k => { out += '\n ' + vSep; if (k.indexOf('col-') === 0) { @@ -354,12 +321,12 @@ out += '\n % BEGIN: Table Body'; out += '\n \\hline % ----- table row -----'; ////make rows - rows.forEach(function (o) { + rows.forEach(o => { vSep = ' '; out += '\n % ----- table row -----'; - Object.keys(o).forEach(function (k) { - var s = o[k]; - var val = s.latex(options); + Object.keys(o).forEach(k => { + let s = o[k]; + let val = s.latex(options); out += '\n ' + vSep + val + ''; vSep = ' & '; }); @@ -373,17 +340,28 @@ return out; }; - var table = doTable; - - var plugin = function plugin(models) { - models.Doc.prototype.latex = _01Doc; - models.Section.prototype.latex = _02Section; - models.Paragraph.prototype.latex = _03Paragraph; - models.Sentence.prototype.latex = _04Sentence; + var table$1 = doTable; + + const doc = _01Doc; + const section = _02Section; + const paragraph = _03Paragraph; + const sentence = _04Sentence; + const link = _05Link; + const image = image$1; + const infobox = infobox_1; + const list = list$1; + const reference = reference$1; + const table = table$1; + + const plugin = function (models) { + models.Doc.prototype.latex = doc; + models.Section.prototype.latex = section; + models.Paragraph.prototype.latex = paragraph; + models.Sentence.prototype.latex = sentence; models.Image.prototype.latex = image; - models.Link.prototype.latex = _05Link; + models.Link.prototype.latex = link; models.Image.prototype.latex = image; - models.Infobox.prototype.latex = infobox_1; + models.Infobox.prototype.latex = infobox; models.List.prototype.latex = list; models.Reference.prototype.latex = reference; models.Table.prototype.latex = table; @@ -393,5 +371,5 @@ return src; -}))); +})); //# sourceMappingURL=wtf-plugin-latex.js.map diff --git a/plugins/latex/builds/wtf-plugin-latex.js.map b/plugins/latex/builds/wtf-plugin-latex.js.map index 38cdcdc0..7f3e8c34 100644 --- a/plugins/latex/builds/wtf-plugin-latex.js.map +++ b/plugins/latex/builds/wtf-plugin-latex.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-latex.js","sources":["../src/01-doc.js","../src/02-section.js","../src/03-paragraph.js","../src/_lib/smartReplace.js","../src/04-sentence.js","../src/05-link.js","../src/image.js","../src/infobox.js","../src/list.js","../src/reference.js","../src/table.js","../src/index.js"],"sourcesContent":["const defaults = {\r\n infoboxes: true,\r\n sections: true\r\n}\r\n\r\n// we should try to make this look like the wikipedia does, i guess.\r\nconst softRedirect = function(doc) {\r\n let link = doc.redirectTo()\r\n let href = link.page\r\n href = './' + href.replace(/ /g, '_')\r\n //add anchor\r\n if (link.anchor) {\r\n href += '#' + link.anchor\r\n }\r\n return '↳ \\\\href{' + href + '}{' + link.text + '}'\r\n}\r\n\r\n//\r\nconst toLatex = function(options) {\r\n options = Object.assign({}, defaults, options)\r\n let out = ''\r\n //if it's a redirect page, give it a 'soft landing':\r\n if (this.isRedirect() === true) {\r\n return softRedirect(this) //end it here.\r\n }\r\n //render infoboxes (up at the top)\r\n if (options.infoboxes === true) {\r\n out += this.infoboxes()\r\n .map(i => i.latex(options))\r\n .join('\\n')\r\n }\r\n //render each section\r\n if (options.sections === true || options.paragraphs === true || options.sentences === true) {\r\n out += this.sections()\r\n .map(s => s.latex(options))\r\n .join('\\n')\r\n }\r\n //default off\r\n //render citations\r\n if (options.references === true) {\r\n out += this.references()\r\n .map(c => c.latex(options))\r\n .join('\\n')\r\n }\r\n return out\r\n}\r\nmodule.exports = toLatex\r\n","const defaults = {\r\n headers: true,\r\n images: true,\r\n tables: true,\r\n lists: true,\r\n paragraphs: true\r\n}\r\n//map '==' depth to 'subsection', 'subsubsection', etc\r\nconst doSection = function(options) {\r\n options = Object.assign({}, defaults, options)\r\n let out = ''\r\n let num = 1\r\n //make the header\r\n if (options.headers === true && this.title()) {\r\n num = 1 + this.depth\r\n let vOpen = '\\n'\r\n let vClose = '}'\r\n switch (num) {\r\n case 1:\r\n vOpen += '\\\\chapter{'\r\n break\r\n case 2:\r\n vOpen += '\\\\section{'\r\n break\r\n case 3:\r\n vOpen += '\\\\subsection{'\r\n break\r\n case 4:\r\n vOpen += '\\\\subsubsection{'\r\n break\r\n case 5:\r\n vOpen += '\\\\paragraph{'\r\n vClose = '} \\\\\\\\ \\n'\r\n break\r\n case 6:\r\n vOpen += '\\\\subparagraph{'\r\n vClose = '} \\\\\\\\ \\n'\r\n break\r\n default:\r\n vOpen +=\r\n '\\n% section with depth=' + num + ' undefined - use subparagraph instead\\n\\\\subparagraph{'\r\n vClose = '} \\\\\\\\ \\n'\r\n }\r\n out += vOpen + this.title() + vClose\r\n out += '\\n'\r\n }\r\n //put any images under the header\r\n if (options.images === true && this.images()) {\r\n out += this.images()\r\n .map(img => img.latex(options))\r\n .join('\\n')\r\n //out += '\\n';\r\n }\r\n //make a out tablew\r\n if (options.tables === true && this.tables()) {\r\n out += this.tables()\r\n .map(t => t.latex(options))\r\n .join('\\n')\r\n }\r\n // //make a out bullet-list\r\n if (options.lists === true && this.lists()) {\r\n out += this.lists()\r\n .map(list => list.latex(options))\r\n .join('\\n')\r\n }\r\n //finally, write the sentence text.\r\n if (options.paragraphs === true || options.sentences === true) {\r\n out += this.paragraphs()\r\n .map(s => s.latex(options))\r\n .join(' ')\r\n out += '\\n'\r\n }\r\n // let title_tag = ' SECTION depth=' + num + ' - TITLE: ' + section.title + '\\n';\r\n // wrap a section comment\r\n //out = '\\n% BEGIN' + title_tag + out + '\\n% END' + title_tag;\r\n return out\r\n}\r\nmodule.exports = doSection\r\n","const defaults = {\r\n sentences: true\r\n}\r\n\r\nconst toLatex = function(options) {\r\n options = Object.assign({}, defaults, options)\r\n let out = ''\r\n if (options.sentences === true) {\r\n out += '\\n\\n% BEGIN Paragraph\\n'\r\n out += this.sentences().reduce((str, s) => {\r\n str += s.latex(options) + '\\n'\r\n return str\r\n }, '')\r\n out += '% END Paragraph'\r\n }\r\n return out\r\n}\r\nmodule.exports = toLatex\r\n","//escape a string like 'fun*2.Co' for a regExpr\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&')\r\n}\r\n\r\n//sometimes text-replacements can be ambiguous - words used multiple times..\r\nconst smartReplace = function(all, text, result) {\r\n if (!text || !all) {\r\n return all\r\n }\r\n\r\n if (typeof all === 'number') {\r\n all = String(all)\r\n }\r\n text = escapeRegExp(text)\r\n //try a word-boundary replace\r\n let reg = new RegExp('\\\\b' + text + '\\\\b')\r\n if (reg.test(all) === true) {\r\n all = all.replace(reg, result)\r\n } else {\r\n //otherwise, fall-back to a much messier, dangerous replacement\r\n // console.warn('missing \\'' + text + '\\'');\r\n all = all.replace(text, result)\r\n }\r\n return all\r\n}\r\n\r\nmodule.exports = smartReplace\r\n","const smartReplace = require('./_lib/smartReplace')\r\n\r\nconst defaults = {\r\n links: true,\r\n formatting: true\r\n}\r\n// create links, bold, italic in latex\r\nconst toLatex = function(options) {\r\n options = Object.assign({}, defaults, options)\r\n let text = this.text()\r\n //turn links back into links\r\n if (options.links === true && this.links().length > 0) {\r\n this.links().forEach(link => {\r\n let tag = link.latex()\r\n let str = link.text() || link.page()\r\n text = smartReplace(text, str, tag)\r\n })\r\n }\r\n if (options.formatting === true) {\r\n if (this.data.fmt) {\r\n if (this.data.fmt.bold) {\r\n this.data.fmt.bold.forEach(str => {\r\n let tag = '\\\\textbf{' + str + '}'\r\n text = smartReplace(text, str, tag)\r\n })\r\n }\r\n if (this.data.fmt.italic) {\r\n this.data.fmt.italic.forEach(str => {\r\n let tag = '\\\\textit{' + str + '}'\r\n text = smartReplace(text, str, tag)\r\n })\r\n }\r\n }\r\n }\r\n return text\r\n}\r\nmodule.exports = toLatex\r\n","const toLatex = function() {\r\n let href = this.href()\r\n href = href.replace(/ /g, '_')\r\n let str = this.text() || this.page()\r\n return '\\\\href{' + href + '}{' + str + '}'\r\n}\r\nmodule.exports = toLatex\r\n","//\r\nconst toLatex = function() {\r\n let alt = this.alt()\r\n let out = '\\\\begin{figure}'\r\n out += '\\n\\\\includegraphics[width=\\\\linewidth]{' + this.thumb() + '}'\r\n out += '\\n\\\\caption{' + alt + '}'\r\n // out += '\\n%\\\\label{fig:myimage1}';\r\n out += '\\n\\\\end{figure}'\r\n return out\r\n}\r\nmodule.exports = toLatex\r\n","const dontDo = {\r\n image: true,\r\n caption: true,\r\n alt: true,\r\n signature: true,\r\n 'signature alt': true\r\n}\r\n\r\nconst defaults = {\r\n images: true\r\n}\r\n\r\n//\r\nconst infobox = function(options) {\r\n options = Object.assign({}, defaults, options)\r\n let out = '\\n \\\\vspace*{0.3cm} % Info Box\\n\\n'\r\n out += '\\\\begin{tabular}{|@{\\\\qquad}l|p{9.5cm}@{\\\\qquad}|} \\n'\r\n out += ' \\\\hline %horizontal line\\n'\r\n //todo: render top image here\r\n Object.keys(this.data).forEach(k => {\r\n if (dontDo[k] === true) {\r\n return\r\n }\r\n let s = this.data[k]\r\n let val = s.latex(options)\r\n out += ' % ---------- \\n'\r\n out += ' ' + k + ' & \\n'\r\n out += ' ' + val + '\\\\\\\\ \\n'\r\n out += ' \\\\hline %horizontal line\\n'\r\n })\r\n out += '\\\\end{tabular} \\n'\r\n out += '\\n\\\\vspace*{0.3cm}\\n\\n'\r\n return out\r\n}\r\nmodule.exports = infobox\r\n","//\r\nconst toLatex = function(options) {\r\n let out = '\\\\begin{itemize}\\n'\r\n this.lines().forEach(s => {\r\n out += ' \\\\item ' + s.text(options) + '\\n'\r\n })\r\n out += '\\\\end{itemize}\\n'\r\n return out\r\n}\r\nmodule.exports = toLatex\r\n","//not so impressive right now\r\nconst toLatex = function() {\r\n let str = this.title()\r\n return '⌃ ' + str + '\\n'\r\n}\r\nmodule.exports = toLatex\r\n","//create a formal LATEX table\r\nconst doTable = function (options) {\r\n let rows = this.data\r\n let out = '\\n%\\\\vspace*{0.3cm}\\n'\r\n out +=\r\n '\\n% BEGIN TABLE: only left align columns in LaTeX table with horizontal line separation between columns'\r\n out +=\r\n \"\\n% Format Align Column: 'l'=left 'r'=right align, 'c'=center, 'p{5cm}'=block with column width 5cm \"\r\n out += '\\n\\\\begin{tabular}{|'\r\n Object.keys(rows[0]).forEach(() => {\r\n out += 'l|'\r\n })\r\n out += '} \\n'\r\n out += '\\n \\\\hline %horizontal line\\n'\r\n //make header\r\n out += '\\n % BEGIN: Table Header'\r\n let vSep = ' '\r\n Object.keys(rows[0]).forEach((k) => {\r\n out += '\\n ' + vSep\r\n\r\n if (k.indexOf('col-') === 0) {\r\n out += '\\\\textbf{' + k + '}'\r\n } else {\r\n out += ' '\r\n }\r\n vSep = ' & '\r\n })\r\n out += '\\\\\\\\ '\r\n out += '\\n % END: Table Header'\r\n out += '\\n % BEGIN: Table Body'\r\n out += '\\n \\\\hline % ----- table row -----'\r\n ////make rows\r\n rows.forEach((o) => {\r\n vSep = ' '\r\n out += '\\n % ----- table row -----'\r\n Object.keys(o).forEach((k) => {\r\n let s = o[k]\r\n let val = s.latex(options)\r\n out += '\\n ' + vSep + val + ''\r\n vSep = ' & '\r\n })\r\n out += ' \\\\\\\\ ' // newline in latex table = two backslash \\\\\r\n out += '\\n \\\\hline %horizontal line'\r\n })\r\n out += '\\n % END: Table Body'\r\n out += '\\\\end{tabular} \\n'\r\n out += '\\n\\\\vspace*{0.3cm}\\n\\n'\r\n return out\r\n}\r\nmodule.exports = doTable\r\n","const doc = require('./01-doc')\r\nconst section = require('./02-section')\r\nconst paragraph = require('./03-paragraph')\r\nconst sentence = require('./04-sentence')\r\nconst link = require('./05-link')\r\nconst image = require('./image')\r\nconst infobox = require('./infobox')\r\nconst list = require('./list')\r\nconst reference = require('./reference')\r\nconst table = require('./table')\r\n\r\nconst plugin = function(models) {\r\n models.Doc.prototype.latex = doc\r\n models.Section.prototype.latex = section\r\n models.Paragraph.prototype.latex = paragraph\r\n models.Sentence.prototype.latex = sentence\r\n models.Image.prototype.latex = image\r\n models.Link.prototype.latex = link\r\n models.Image.prototype.latex = image\r\n models.Infobox.prototype.latex = infobox\r\n models.List.prototype.latex = list\r\n models.Reference.prototype.latex = reference\r\n models.Table.prototype.latex = table\r\n}\r\nmodule.exports = plugin\r\n"],"names":["defaults","infoboxes","sections","softRedirect","doc","link","redirectTo","href","page","replace","anchor","text","toLatex","options","Object","assign","out","isRedirect","map","i","latex","join","paragraphs","sentences","s","references","c","headers","images","tables","lists","doSection","num","title","depth","vOpen","vClose","img","t","list","reduce","str","escapeRegExp","smartReplace","all","result","String","reg","RegExp","test","links","formatting","length","forEach","tag","data","fmt","bold","italic","alt","thumb","dontDo","image","caption","signature","infobox","keys","k","val","lines","doTable","rows","vSep","indexOf","o","plugin","models","Doc","prototype","Section","section","Paragraph","paragraph","Sentence","sentence","Image","Link","Infobox","List","Reference","reference","Table","table"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-latex.js","sources":["../src/01-doc.js","../src/02-section.js","../src/03-paragraph.js","../src/_lib/smartReplace.js","../src/04-sentence.js","../src/05-link.js","../src/image.js","../src/infobox.js","../src/list.js","../src/reference.js","../src/table.js","../src/index.js"],"sourcesContent":["const defaults = {\n infoboxes: true,\n sections: true\n}\n\n// we should try to make this look like the wikipedia does, i guess.\nconst softRedirect = function (doc) {\n let link = doc.redirectTo()\n let href = link.page\n href = './' + href.replace(/ /g, '_')\n //add anchor\n if (link.anchor) {\n href += '#' + link.anchor\n }\n return '↳ \\\\href{' + href + '}{' + link.text + '}'\n}\n\n//\nconst toLatex = function (options) {\n options = Object.assign({}, defaults, options)\n let out = ''\n //if it's a redirect page, give it a 'soft landing':\n if (this.isRedirect() === true) {\n return softRedirect(this) //end it here.\n }\n //render infoboxes (up at the top)\n if (options.infoboxes === true) {\n out += this.infoboxes()\n .map((i) => i.latex(options))\n .join('\\n')\n }\n //render each section\n if (options.sections === true || options.paragraphs === true || options.sentences === true) {\n out += this.sections()\n .map((s) => s.latex(options))\n .join('\\n')\n }\n //default off\n //render citations\n if (options.references === true) {\n out += this.references()\n .map((c) => c.latex(options))\n .join('\\n')\n }\n return out\n}\nmodule.exports = toLatex\n","const defaults = {\n headers: true,\n images: true,\n tables: true,\n lists: true,\n paragraphs: true\n}\n//map '==' depth to 'subsection', 'subsubsection', etc\nconst doSection = function (options) {\n options = Object.assign({}, defaults, options)\n let out = ''\n let num = 1\n\n //make the header\n if (options.headers === true && this.title()) {\n num = 1 + this.depth()\n let vOpen = '\\n'\n let vClose = '}'\n if (num === 1) {\n vOpen += '\\\\chapter{'\n } else if (num === 2) {\n vOpen += '\\\\section{'\n } else if (num === 3) {\n vOpen += '\\\\subsection{'\n } else if (num === 4) {\n vOpen += '\\\\subsubsection{'\n } else if (num === 5) {\n vOpen += '\\\\paragraph{'\n vClose = '} \\\\\\\\ \\n'\n } else if (num === 6) {\n vOpen += '\\\\subparagraph{'\n vClose = '} \\\\\\\\ \\n'\n } else {\n vOpen +=\n '\\n% section with depth=' + num + ' undefined - use subparagraph instead\\n\\\\subparagraph{'\n vClose = '} \\\\\\\\ \\n'\n }\n out += vOpen + this.title() + vClose\n out += '\\n'\n }\n\n //put any images under the header\n if (options.images === true && this.images()) {\n out += this.images()\n .map((img) => img.latex(options))\n .join('\\n')\n //out += '\\n';\n }\n\n //make a out table\n if (options.tables === true && this.tables()) {\n out += this.tables()\n .map((t) => t.latex(options))\n .join('\\n')\n }\n\n //make a out bullet-list\n if (options.lists === true && this.lists()) {\n out += this.lists()\n .map((list) => list.latex(options))\n .join('\\n')\n }\n\n //finally, write the sentence text.\n if (options.paragraphs === true || options.sentences === true) {\n out += this.paragraphs()\n .map((s) => s.latex(options))\n .join(' ')\n out += '\\n'\n }\n\n //let title_tag = ' SECTION depth=' + num + ' - TITLE: ' + section.title + '\\n';\n //wrap a section comment\n //out = '\\n% BEGIN' + title_tag + out + '\\n% END' + title_tag;\n return out\n}\nmodule.exports = doSection\n","const defaults = {\n sentences: true\n}\n\nconst toLatex = function (options) {\n options = Object.assign({}, defaults, options)\n let out = ''\n if (options.sentences === true) {\n out += '\\n\\n% BEGIN Paragraph\\n'\n out += this.sentences().reduce((str, s) => {\n str += s.latex(options) + '\\n'\n return str\n }, '')\n out += '% END Paragraph'\n }\n return out\n}\nmodule.exports = toLatex\n","//escape a string like 'fun*2.Co' for a regExpr\nfunction escapeRegExp(str) {\n return str.replace(/[\\-[\\]/{}()*+?.\\\\^$|]/g, '\\\\$&')\n}\n\n//sometimes text-replacements can be ambiguous - words used multiple times..\nconst smartReplace = function (all, text, result) {\n if (!text || !all) {\n return all\n }\n\n if (typeof all === 'number') {\n all = String(all)\n }\n text = escapeRegExp(text)\n //try a word-boundary replace\n let reg = new RegExp('\\\\b' + text + '\\\\b')\n if (reg.test(all) === true) {\n all = all.replace(reg, result)\n } else {\n //otherwise, fall-back to a much messier, dangerous replacement\n // console.warn('missing \\'' + text + '\\'');\n all = all.replace(text, result)\n }\n return all\n}\n\nmodule.exports = smartReplace\n","const smartReplace = require('./_lib/smartReplace')\n\nconst defaults = {\n links: true,\n formatting: true\n}\n// create links, bold, italic in latex\nconst toLatex = function (options) {\n options = Object.assign({}, defaults, options)\n let text = this.text()\n //turn links back into links\n if (options.links === true && this.links().length > 0) {\n this.links().forEach((link) => {\n let tag = link.latex()\n let str = link.text() || link.page()\n text = smartReplace(text, str, tag)\n })\n }\n if (options.formatting === true) {\n if (this.data.fmt) {\n if (this.data.fmt.bold) {\n this.data.fmt.bold.forEach((str) => {\n let tag = '\\\\textbf{' + str + '}'\n text = smartReplace(text, str, tag)\n })\n }\n if (this.data.fmt.italic) {\n this.data.fmt.italic.forEach((str) => {\n let tag = '\\\\textit{' + str + '}'\n text = smartReplace(text, str, tag)\n })\n }\n }\n }\n return text\n}\nmodule.exports = toLatex\n","const toLatex = function () {\n let href = this.href()\n href = href.replace(/ /g, '_')\n let str = this.text() || this.page()\n return '\\\\href{' + href + '}{' + str + '}'\n}\nmodule.exports = toLatex\n","//\nconst toLatex = function () {\n let alt = this.alt()\n let out = '\\\\begin{figure}'\n out += '\\n\\\\includegraphics[width=\\\\linewidth]{' + this.thumb() + '}'\n out += '\\n\\\\caption{' + alt + '}'\n // out += '\\n%\\\\label{fig:myimage1}';\n out += '\\n\\\\end{figure}'\n return out\n}\nmodule.exports = toLatex\n","const dontDo = {\n image: true,\n caption: true,\n alt: true,\n signature: true,\n 'signature alt': true\n}\n\nconst defaults = {\n images: true\n}\n\n//\nconst infobox = function (options) {\n options = Object.assign({}, defaults, options)\n let out = '\\n \\\\vspace*{0.3cm} % Info Box\\n\\n'\n out += '\\\\begin{tabular}{|@{\\\\qquad}l|p{9.5cm}@{\\\\qquad}|} \\n'\n out += ' \\\\hline %horizontal line\\n'\n //todo: render top image here\n Object.keys(this.data).forEach((k) => {\n if (dontDo[k] === true) {\n return\n }\n let s = this.data[k]\n let val = s.latex(options)\n out += ' % ---------- \\n'\n out += ' ' + k + ' & \\n'\n out += ' ' + val + '\\\\\\\\ \\n'\n out += ' \\\\hline %horizontal line\\n'\n })\n out += '\\\\end{tabular} \\n'\n out += '\\n\\\\vspace*{0.3cm}\\n\\n'\n return out\n}\nmodule.exports = infobox\n","//\nconst toLatex = function (options) {\n let out = '\\\\begin{itemize}\\n'\n this.lines().forEach((s) => {\n out += ' \\\\item ' + s.text(options) + '\\n'\n })\n out += '\\\\end{itemize}\\n'\n return out\n}\nmodule.exports = toLatex\n","//not so impressive right now\nconst toLatex = function () {\n let str = this.title()\n return '⌃ ' + str + '\\n'\n}\nmodule.exports = toLatex\n","//create a formal LATEX table\nconst doTable = function (options) {\n let rows = this.data\n let out = '\\n%\\\\vspace*{0.3cm}\\n'\n out +=\n '\\n% BEGIN TABLE: only left align columns in LaTeX table with horizontal line separation between columns'\n out +=\n \"\\n% Format Align Column: 'l'=left 'r'=right align, 'c'=center, 'p{5cm}'=block with column width 5cm \"\n out += '\\n\\\\begin{tabular}{|'\n Object.keys(rows[0]).forEach(() => {\n out += 'l|'\n })\n out += '} \\n'\n out += '\\n \\\\hline %horizontal line\\n'\n //make header\n out += '\\n % BEGIN: Table Header'\n let vSep = ' '\n Object.keys(rows[0]).forEach((k) => {\n out += '\\n ' + vSep\n\n if (k.indexOf('col-') === 0) {\n out += '\\\\textbf{' + k + '}'\n } else {\n out += ' '\n }\n vSep = ' & '\n })\n out += '\\\\\\\\ '\n out += '\\n % END: Table Header'\n out += '\\n % BEGIN: Table Body'\n out += '\\n \\\\hline % ----- table row -----'\n ////make rows\n rows.forEach((o) => {\n vSep = ' '\n out += '\\n % ----- table row -----'\n Object.keys(o).forEach((k) => {\n let s = o[k]\n let val = s.latex(options)\n out += '\\n ' + vSep + val + ''\n vSep = ' & '\n })\n out += ' \\\\\\\\ ' // newline in latex table = two backslash \\\\\n out += '\\n \\\\hline %horizontal line'\n })\n out += '\\n % END: Table Body'\n out += '\\\\end{tabular} \\n'\n out += '\\n\\\\vspace*{0.3cm}\\n\\n'\n return out\n}\nmodule.exports = doTable\n","const doc = require('./01-doc')\nconst section = require('./02-section')\nconst paragraph = require('./03-paragraph')\nconst sentence = require('./04-sentence')\nconst link = require('./05-link')\nconst image = require('./image')\nconst infobox = require('./infobox')\nconst list = require('./list')\nconst reference = require('./reference')\nconst table = require('./table')\n\nconst plugin = function (models) {\n models.Doc.prototype.latex = doc\n models.Section.prototype.latex = section\n models.Paragraph.prototype.latex = paragraph\n models.Sentence.prototype.latex = sentence\n models.Image.prototype.latex = image\n models.Link.prototype.latex = link\n models.Image.prototype.latex = image\n models.Infobox.prototype.latex = infobox\n models.List.prototype.latex = list\n models.Reference.prototype.latex = reference\n models.Table.prototype.latex = table\n}\nmodule.exports = plugin\n"],"names":["defaults","infoboxes","sections","softRedirect","doc","link","redirectTo","href","page","replace","anchor","text","toLatex","options","Object","assign","out","isRedirect","map","i","latex","join","paragraphs","sentences","s","references","c","_01Doc","headers","images","tables","lists","doSection","num","title","depth","vOpen","vClose","img","t","list","_02Section","reduce","str","_03Paragraph","escapeRegExp","smartReplace","all","result","String","reg","RegExp","test","smartReplace_1","require$$0","links","formatting","length","forEach","tag","data","fmt","bold","italic","_04Sentence","_05Link","alt","thumb","image","dontDo","caption","signature","infobox","keys","k","val","infobox_1","lines","reference","doTable","rows","vSep","indexOf","o","table","section","require$$1","paragraph","require$$2","sentence","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","plugin","models","Doc","prototype","Section","Paragraph","Sentence","Image","Link","Infobox","List","Reference","Table","src"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/latex/builds/wtf-plugin-latex.min.js b/plugins/latex/builds/wtf-plugin-latex.min.js index 04318acb..185ea4ba 100644 --- a/plugins/latex/builds/wtf-plugin-latex.min.js +++ b/plugins/latex/builds/wtf-plugin-latex.min.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).wtfLatex=e()}(this,(function(){"use strict";var t={infoboxes:!0,sections:!0},e=function(e){e=Object.assign({},t,e);var n,a,i="";return!0===this.isRedirect()?(n=this.redirectTo(),a="./"+(a=n.page).replace(/ /g,"_"),n.anchor&&(a+="#"+n.anchor),"↳ \\href{"+a+"}{"+n.text+"}"):(!0===e.infoboxes&&(i+=this.infoboxes().map((function(t){return t.latex(e)})).join("\n")),!0!==e.sections&&!0!==e.paragraphs&&!0!==e.sentences||(i+=this.sections().map((function(t){return t.latex(e)})).join("\n")),!0===e.references&&(i+=this.references().map((function(t){return t.latex(e)})).join("\n")),i)},n={headers:!0,images:!0,tables:!0,lists:!0,paragraphs:!0},a=function(t){var e="",a=1;if(!0===(t=Object.assign({},n,t)).headers&&this.title()){var i="\n",r="}";switch(a=1+this.depth){case 1:i+="\\chapter{";break;case 2:i+="\\section{";break;case 3:i+="\\subsection{";break;case 4:i+="\\subsubsection{";break;case 5:i+="\\paragraph{",r="} \\\\ \n";break;case 6:i+="\\subparagraph{",r="} \\\\ \n";break;default:i+="\n% section with depth="+a+" undefined - use subparagraph instead\n\\subparagraph{",r="} \\\\ \n"}e+=i+this.title()+r,e+="\n"}return!0===t.images&&this.images()&&(e+=this.images().map((function(e){return e.latex(t)})).join("\n")),!0===t.tables&&this.tables()&&(e+=this.tables().map((function(e){return e.latex(t)})).join("\n")),!0===t.lists&&this.lists()&&(e+=this.lists().map((function(e){return e.latex(t)})).join("\n")),!0!==t.paragraphs&&!0!==t.sentences||(e+=this.paragraphs().map((function(e){return e.latex(t)})).join(" "),e+="\n"),e},i={sentences:!0},r=function(t){var e="";return!0===(t=Object.assign({},i,t)).sentences&&(e+="\n\n% BEGIN Paragraph\n",e+=this.sentences().reduce((function(e,n){return e+=n.latex(t)+"\n"}),""),e+="% END Paragraph"),e};var s=function(t,e,n){if(!e||!t)return t;"number"==typeof t&&(t=String(t)),e=e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var a=new RegExp("\\b"+e+"\\b");return t=!0===a.test(t)?t.replace(a,n):t.replace(e,n)},o={links:!0,formatting:!0},c=function(t){t=Object.assign({},o,t);var e=this.text();return!0===t.links&&this.links().length>0&&this.links().forEach((function(t){var n=t.latex(),a=t.text()||t.page();e=s(e,a,n)})),!0===t.formatting&&this.data.fmt&&(this.data.fmt.bold&&this.data.fmt.bold.forEach((function(t){e=s(e,t,"\\textbf{"+t+"}")})),this.data.fmt.italic&&this.data.fmt.italic.forEach((function(t){e=s(e,t,"\\textit{"+t+"}")}))),e},l=function(){var t=this.href();return"\\href{"+(t=t.replace(/ /g,"_"))+"}{"+(this.text()||this.page())+"}"},h=function(){var t=this.alt(),e="\\begin{figure}";return e+="\n\\includegraphics[width=\\linewidth]{"+this.thumb()+"}",e+="\n\\caption{"+t+"}",e+="\n\\end{figure}"},u={image:!0,caption:!0,alt:!0,signature:!0,"signature alt":!0},f={images:!0},p=function(t){var e=this;t=Object.assign({},f,t);var n="\n \\vspace*{0.3cm} % Info Box\n\n";return n+="\\begin{tabular}{|@{\\qquad}l|p{9.5cm}@{\\qquad}|} \n",n+=" \\hline %horizontal line\n",Object.keys(this.data).forEach((function(a){if(!0!==u[a]){var i=e.data[a].latex(t);n+=" % ---------- \n",n+=" "+a+" & \n",n+=" "+i+"\\\\ \n",n+=" \\hline %horizontal line\n"}})),n+="\\end{tabular} \n",n+="\n\\vspace*{0.3cm}\n\n"},b=function(t){var e="\\begin{itemize}\n";return this.lines().forEach((function(n){e+=" \\item "+n.text(t)+"\n"})),e+="\\end{itemize}\n"},g=function(){return"⌃ "+this.title()+"\n"},d=function(t){var e=this.data,n="\n%\\vspace*{0.3cm}\n";n+="\n% BEGIN TABLE: only left align columns in LaTeX table with horizontal line separation between columns",n+="\n% Format Align Column: 'l'=left 'r'=right align, 'c'=center, 'p{5cm}'=block with column width 5cm ",n+="\n\\begin{tabular}{|",Object.keys(e[0]).forEach((function(){n+="l|"})),n+="} \n",n+="\n \\hline %horizontal line\n",n+="\n % BEGIN: Table Header";var a=" ";return Object.keys(e[0]).forEach((function(t){n+="\n "+a,0===t.indexOf("col-")?n+="\\textbf{"+t+"}":n+=" ",a=" & "})),n+="\\\\ ",n+="\n % END: Table Header",n+="\n % BEGIN: Table Body",n+="\n \\hline % ----- table row -----",e.forEach((function(e){a=" ",n+="\n % ----- table row -----",Object.keys(e).forEach((function(i){var r=e[i].latex(t);n+="\n "+a+r,a=" & "})),n+=" \\\\ ",n+="\n \\hline %horizontal line"})),n+="\n % END: Table Body",n+="\\end{tabular} \n",n+="\n\\vspace*{0.3cm}\n\n"};return function(t){t.Doc.prototype.latex=e,t.Section.prototype.latex=a,t.Paragraph.prototype.latex=r,t.Sentence.prototype.latex=c,t.Image.prototype.latex=h,t.Link.prototype.latex=l,t.Image.prototype.latex=h,t.Infobox.prototype.latex=p,t.List.prototype.latex=b,t.Reference.prototype.latex=g,t.Table.prototype.latex=d}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).wtfLatex=e()}(this,(function(){"use strict";const t={infoboxes:!0,sections:!0};const e={headers:!0,images:!0,tables:!0,lists:!0,paragraphs:!0};const n={sentences:!0};const a=function(t,e,n){if(!e||!t)return t;"number"==typeof t&&(t=String(t)),e=e.replace(/[\-[\]/{}()*+?.\\^$|]/g,"\\$&");let a=new RegExp("\\b"+e+"\\b");return t=!0===a.test(t)?t.replace(a,n):t.replace(e,n)},i={links:!0,formatting:!0};const s={image:!0,caption:!0,alt:!0,signature:!0,"signature alt":!0},r={images:!0};const o=function(e){e=Object.assign({},t,e);let n="";return!0===this.isRedirect()?function(t){let e=t.redirectTo(),n=e.page;return n="./"+n.replace(/ /g,"_"),e.anchor&&(n+="#"+e.anchor),"↳ \\href{"+n+"}{"+e.text+"}"}(this):(!0===e.infoboxes&&(n+=this.infoboxes().map((t=>t.latex(e))).join("\n")),!0!==e.sections&&!0!==e.paragraphs&&!0!==e.sentences||(n+=this.sections().map((t=>t.latex(e))).join("\n")),!0===e.references&&(n+=this.references().map((t=>t.latex(e))).join("\n")),n)},l=function(t){let n="",a=1;if(!0===(t=Object.assign({},e,t)).headers&&this.title()){a=1+this.depth();let t="\n",e="}";1===a?t+="\\chapter{":2===a?t+="\\section{":3===a?t+="\\subsection{":4===a?t+="\\subsubsection{":5===a?(t+="\\paragraph{",e="} \\\\ \n"):6===a?(t+="\\subparagraph{",e="} \\\\ \n"):(t+="\n% section with depth="+a+" undefined - use subparagraph instead\n\\subparagraph{",e="} \\\\ \n"),n+=t+this.title()+e,n+="\n"}return!0===t.images&&this.images()&&(n+=this.images().map((e=>e.latex(t))).join("\n")),!0===t.tables&&this.tables()&&(n+=this.tables().map((e=>e.latex(t))).join("\n")),!0===t.lists&&this.lists()&&(n+=this.lists().map((e=>e.latex(t))).join("\n")),!0!==t.paragraphs&&!0!==t.sentences||(n+=this.paragraphs().map((e=>e.latex(t))).join(" "),n+="\n"),n},c=function(t){let e="";return!0===(t=Object.assign({},n,t)).sentences&&(e+="\n\n% BEGIN Paragraph\n",e+=this.sentences().reduce(((e,n)=>e+=n.latex(t)+"\n"),""),e+="% END Paragraph"),e},h=function(t){t=Object.assign({},i,t);let e=this.text();return!0===t.links&&this.links().length>0&&this.links().forEach((t=>{let n=t.latex(),i=t.text()||t.page();e=a(e,i,n)})),!0===t.formatting&&this.data.fmt&&(this.data.fmt.bold&&this.data.fmt.bold.forEach((t=>{e=a(e,t,"\\textbf{"+t+"}")})),this.data.fmt.italic&&this.data.fmt.italic.forEach((t=>{e=a(e,t,"\\textit{"+t+"}")}))),e},p=function(){let t=this.href();return t=t.replace(/ /g,"_"),"\\href{"+t+"}{"+(this.text()||this.page())+"}"},f=function(){let t=this.alt(),e="\\begin{figure}";return e+="\n\\includegraphics[width=\\linewidth]{"+this.thumb()+"}",e+="\n\\caption{"+t+"}",e+="\n\\end{figure}",e},u=function(t){t=Object.assign({},r,t);let e="\n \\vspace*{0.3cm} % Info Box\n\n";return e+="\\begin{tabular}{|@{\\qquad}l|p{9.5cm}@{\\qquad}|} \n",e+=" \\hline %horizontal line\n",Object.keys(this.data).forEach((n=>{if(!0===s[n])return;let a=this.data[n].latex(t);e+=" % ---------- \n",e+=" "+n+" & \n",e+=" "+a+"\\\\ \n",e+=" \\hline %horizontal line\n"})),e+="\\end{tabular} \n",e+="\n\\vspace*{0.3cm}\n\n",e},b=function(t){let e="\\begin{itemize}\n";return this.lines().forEach((n=>{e+=" \\item "+n.text(t)+"\n"})),e+="\\end{itemize}\n",e},g=function(){return"⌃ "+this.title()+"\n"},d=function(t){let e=this.data,n="\n%\\vspace*{0.3cm}\n";n+="\n% BEGIN TABLE: only left align columns in LaTeX table with horizontal line separation between columns",n+="\n% Format Align Column: 'l'=left 'r'=right align, 'c'=center, 'p{5cm}'=block with column width 5cm ",n+="\n\\begin{tabular}{|",Object.keys(e[0]).forEach((()=>{n+="l|"})),n+="} \n",n+="\n \\hline %horizontal line\n",n+="\n % BEGIN: Table Header";let a=" ";return Object.keys(e[0]).forEach((t=>{n+="\n "+a,0===t.indexOf("col-")?n+="\\textbf{"+t+"}":n+=" ",a=" & "})),n+="\\\\ ",n+="\n % END: Table Header",n+="\n % BEGIN: Table Body",n+="\n \\hline % ----- table row -----",e.forEach((e=>{a=" ",n+="\n % ----- table row -----",Object.keys(e).forEach((i=>{let s=e[i].latex(t);n+="\n "+a+s,a=" & "})),n+=" \\\\ ",n+="\n \\hline %horizontal line"})),n+="\n % END: Table Body",n+="\\end{tabular} \n",n+="\n\\vspace*{0.3cm}\n\n",n};return function(t){t.Doc.prototype.latex=o,t.Section.prototype.latex=l,t.Paragraph.prototype.latex=c,t.Sentence.prototype.latex=h,t.Image.prototype.latex=f,t.Link.prototype.latex=p,t.Image.prototype.latex=f,t.Infobox.prototype.latex=u,t.List.prototype.latex=b,t.Reference.prototype.latex=g,t.Table.prototype.latex=d}})); diff --git a/plugins/latex/builds/wtf-plugin-latex.mjs b/plugins/latex/builds/wtf-plugin-latex.mjs index 1ee7af6f..a7c27add 100644 --- a/plugins/latex/builds/wtf-plugin-latex.mjs +++ b/plugins/latex/builds/wtf-plugin-latex.mjs @@ -1,12 +1,12 @@ -/* wtf-plugin-latex 0.2.0 MIT */ -var defaults = { +/* wtf-plugin-latex 0.2.1 MIT */ +const defaults$4 = { infoboxes: true, sections: true }; // we should try to make this look like the wikipedia does, i guess. -var softRedirect = function softRedirect(doc) { - var link = doc.redirectTo(); - var href = link.page; +const softRedirect = function (doc) { + let link = doc.redirectTo(); + let href = link.page; href = './' + href.replace(/ /g, '_'); //add anchor if (link.anchor) { @@ -17,9 +17,9 @@ var softRedirect = function softRedirect(doc) { }; // -var toLatex = function toLatex(options) { - options = Object.assign({}, defaults, options); - var out = ''; //if it's a redirect page, give it a 'soft landing': +const toLatex$6 = function (options) { + options = Object.assign({}, defaults$4, options); + let out = ''; //if it's a redirect page, give it a 'soft landing': if (this.isRedirect() === true) { return softRedirect(this); //end it here. @@ -27,32 +27,26 @@ var toLatex = function toLatex(options) { if (options.infoboxes === true) { - out += this.infoboxes().map(function (i) { - return i.latex(options); - }).join('\n'); + out += this.infoboxes().map(i => i.latex(options)).join('\n'); } //render each section if (options.sections === true || options.paragraphs === true || options.sentences === true) { - out += this.sections().map(function (s) { - return s.latex(options); - }).join('\n'); + out += this.sections().map(s => s.latex(options)).join('\n'); } //default off //render citations if (options.references === true) { - out += this.references().map(function (c) { - return c.latex(options); - }).join('\n'); + out += this.references().map(c => c.latex(options)).join('\n'); } return out; }; -var _01Doc = toLatex; +var _01Doc = toLatex$6; -var defaults$1 = { +const defaults$3 = { headers: true, images: true, tables: true, @@ -60,46 +54,33 @@ var defaults$1 = { paragraphs: true }; //map '==' depth to 'subsection', 'subsubsection', etc -var doSection = function doSection(options) { - options = Object.assign({}, defaults$1, options); - var out = ''; - var num = 1; //make the header +const doSection = function (options) { + options = Object.assign({}, defaults$3, options); + let out = ''; + let num = 1; //make the header if (options.headers === true && this.title()) { - num = 1 + this.depth; - var vOpen = '\n'; - var vClose = '}'; - - switch (num) { - case 1: - vOpen += '\\chapter{'; - break; - - case 2: - vOpen += '\\section{'; - break; - - case 3: - vOpen += '\\subsection{'; - break; - - case 4: - vOpen += '\\subsubsection{'; - break; - - case 5: - vOpen += '\\paragraph{'; - vClose = '} \\\\ \n'; - break; - - case 6: - vOpen += '\\subparagraph{'; - vClose = '} \\\\ \n'; - break; - - default: - vOpen += '\n% section with depth=' + num + ' undefined - use subparagraph instead\n\\subparagraph{'; - vClose = '} \\\\ \n'; + num = 1 + this.depth(); + let vOpen = '\n'; + let vClose = '}'; + + if (num === 1) { + vOpen += '\\chapter{'; + } else if (num === 2) { + vOpen += '\\section{'; + } else if (num === 3) { + vOpen += '\\subsection{'; + } else if (num === 4) { + vOpen += '\\subsubsection{'; + } else if (num === 5) { + vOpen += '\\paragraph{'; + vClose = '} \\\\ \n'; + } else if (num === 6) { + vOpen += '\\subparagraph{'; + vClose = '} \\\\ \n'; + } else { + vOpen += '\n% section with depth=' + num + ' undefined - use subparagraph instead\n\\subparagraph{'; + vClose = '} \\\\ \n'; } out += vOpen + this.title() + vClose; @@ -108,33 +89,25 @@ var doSection = function doSection(options) { if (options.images === true && this.images()) { - out += this.images().map(function (img) { - return img.latex(options); - }).join('\n'); //out += '\n'; - } //make a out tablew + out += this.images().map(img => img.latex(options)).join('\n'); //out += '\n'; + } //make a out table if (options.tables === true && this.tables()) { - out += this.tables().map(function (t) { - return t.latex(options); - }).join('\n'); - } // //make a out bullet-list + out += this.tables().map(t => t.latex(options)).join('\n'); + } //make a out bullet-list if (options.lists === true && this.lists()) { - out += this.lists().map(function (list) { - return list.latex(options); - }).join('\n'); + out += this.lists().map(list => list.latex(options)).join('\n'); } //finally, write the sentence text. if (options.paragraphs === true || options.sentences === true) { - out += this.paragraphs().map(function (s) { - return s.latex(options); - }).join(' '); + out += this.paragraphs().map(s => s.latex(options)).join(' '); out += '\n'; - } // let title_tag = ' SECTION depth=' + num + ' - TITLE: ' + section.title + '\n'; - // wrap a section comment + } //let title_tag = ' SECTION depth=' + num + ' - TITLE: ' + section.title + '\n'; + //wrap a section comment //out = '\n% BEGIN' + title_tag + out + '\n% END' + title_tag; @@ -143,17 +116,17 @@ var doSection = function doSection(options) { var _02Section = doSection; -var defaults$2 = { +const defaults$2 = { sentences: true }; -var toLatex$1 = function toLatex(options) { +const toLatex$5 = function (options) { options = Object.assign({}, defaults$2, options); - var out = ''; + let out = ''; if (options.sentences === true) { out += '\n\n% BEGIN Paragraph\n'; - out += this.sentences().reduce(function (str, s) { + out += this.sentences().reduce((str, s) => { str += s.latex(options) + '\n'; return str; }, ''); @@ -163,15 +136,14 @@ var toLatex$1 = function toLatex(options) { return out; }; -var _03Paragraph = toLatex$1; +var _03Paragraph = toLatex$5; -//escape a string like 'fun*2.Co' for a regExpr function escapeRegExp(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); + return str.replace(/[\-[\]/{}()*+?.\\^$|]/g, '\\$&'); } //sometimes text-replacements can be ambiguous - words used multiple times.. -var smartReplace = function smartReplace(all, text, result) { +const smartReplace$1 = function (all, text, result) { if (!text || !all) { return all; } @@ -182,7 +154,7 @@ var smartReplace = function smartReplace(all, text, result) { text = escapeRegExp(text); //try a word-boundary replace - var reg = new RegExp('\\b' + text + '\\b'); + let reg = new RegExp('\\b' + text + '\\b'); if (reg.test(all) === true) { all = all.replace(reg, result); @@ -195,38 +167,39 @@ var smartReplace = function smartReplace(all, text, result) { return all; }; -var smartReplace_1 = smartReplace; +var smartReplace_1 = smartReplace$1; -var defaults$3 = { +const smartReplace = smartReplace_1; +const defaults$1 = { links: true, formatting: true }; // create links, bold, italic in latex -var toLatex$2 = function toLatex(options) { - options = Object.assign({}, defaults$3, options); - var text = this.text(); //turn links back into links +const toLatex$4 = function (options) { + options = Object.assign({}, defaults$1, options); + let text = this.text(); //turn links back into links if (options.links === true && this.links().length > 0) { - this.links().forEach(function (link) { - var tag = link.latex(); - var str = link.text() || link.page(); - text = smartReplace_1(text, str, tag); + this.links().forEach(link => { + let tag = link.latex(); + let str = link.text() || link.page(); + text = smartReplace(text, str, tag); }); } if (options.formatting === true) { if (this.data.fmt) { if (this.data.fmt.bold) { - this.data.fmt.bold.forEach(function (str) { - var tag = '\\textbf{' + str + '}'; - text = smartReplace_1(text, str, tag); + this.data.fmt.bold.forEach(str => { + let tag = '\\textbf{' + str + '}'; + text = smartReplace(text, str, tag); }); } if (this.data.fmt.italic) { - this.data.fmt.italic.forEach(function (str) { - var tag = '\\textit{' + str + '}'; - text = smartReplace_1(text, str, tag); + this.data.fmt.italic.forEach(str => { + let tag = '\\textit{' + str + '}'; + text = smartReplace(text, str, tag); }); } } @@ -235,21 +208,20 @@ var toLatex$2 = function toLatex(options) { return text; }; -var _04Sentence = toLatex$2; +var _04Sentence = toLatex$4; -var toLatex$3 = function toLatex() { - var href = this.href(); +const toLatex$3 = function () { + let href = this.href(); href = href.replace(/ /g, '_'); - var str = this.text() || this.page(); + let str = this.text() || this.page(); return '\\href{' + href + '}{' + str + '}'; }; var _05Link = toLatex$3; -// -var toLatex$4 = function toLatex() { - var alt = this.alt(); - var out = '\\begin{figure}'; +const toLatex$2 = function () { + let alt = this.alt(); + let out = '\\begin{figure}'; out += '\n\\includegraphics[width=\\linewidth]{' + this.thumb() + '}'; out += '\n\\caption{' + alt + '}'; // out += '\n%\\label{fig:myimage1}'; @@ -257,34 +229,32 @@ var toLatex$4 = function toLatex() { return out; }; -var image = toLatex$4; +var image$1 = toLatex$2; -var dontDo = { +const dontDo = { image: true, caption: true, alt: true, signature: true, 'signature alt': true }; -var defaults$4 = { +const defaults = { images: true }; // -var infobox = function infobox(options) { - var _this = this; - - options = Object.assign({}, defaults$4, options); - var out = '\n \\vspace*{0.3cm} % Info Box\n\n'; +const infobox$1 = function (options) { + options = Object.assign({}, defaults, options); + let out = '\n \\vspace*{0.3cm} % Info Box\n\n'; out += '\\begin{tabular}{|@{\\qquad}l|p{9.5cm}@{\\qquad}|} \n'; out += ' \\hline %horizontal line\n'; //todo: render top image here - Object.keys(this.data).forEach(function (k) { + Object.keys(this.data).forEach(k => { if (dontDo[k] === true) { return; } - var s = _this.data[k]; - var val = s.latex(options); + let s = this.data[k]; + let val = s.latex(options); out += ' % ---------- \n'; out += ' ' + k + ' & \n'; out += ' ' + val + '\\\\ \n'; @@ -295,44 +265,41 @@ var infobox = function infobox(options) { return out; }; -var infobox_1 = infobox; +var infobox_1 = infobox$1; -// -var toLatex$5 = function toLatex(options) { - var out = '\\begin{itemize}\n'; - this.lines().forEach(function (s) { +const toLatex$1 = function (options) { + let out = '\\begin{itemize}\n'; + this.lines().forEach(s => { out += ' \\item ' + s.text(options) + '\n'; }); out += '\\end{itemize}\n'; return out; }; -var list = toLatex$5; +var list$1 = toLatex$1; -//not so impressive right now -var toLatex$6 = function toLatex() { - var str = this.title(); +const toLatex = function () { + let str = this.title(); return '⌃ ' + str + '\n'; }; -var reference = toLatex$6; +var reference$1 = toLatex; -//create a formal LATEX table -var doTable = function doTable(options) { - var rows = this.data; - var out = '\n%\\vspace*{0.3cm}\n'; +const doTable = function (options) { + let rows = this.data; + let out = '\n%\\vspace*{0.3cm}\n'; out += '\n% BEGIN TABLE: only left align columns in LaTeX table with horizontal line separation between columns'; out += "\n% Format Align Column: 'l'=left 'r'=right align, 'c'=center, 'p{5cm}'=block with column width 5cm "; out += '\n\\begin{tabular}{|'; - Object.keys(rows[0]).forEach(function () { + Object.keys(rows[0]).forEach(() => { out += 'l|'; }); out += '} \n'; out += '\n \\hline %horizontal line\n'; //make header out += '\n % BEGIN: Table Header'; - var vSep = ' '; - Object.keys(rows[0]).forEach(function (k) { + let vSep = ' '; + Object.keys(rows[0]).forEach(k => { out += '\n ' + vSep; if (k.indexOf('col-') === 0) { @@ -348,12 +315,12 @@ var doTable = function doTable(options) { out += '\n % BEGIN: Table Body'; out += '\n \\hline % ----- table row -----'; ////make rows - rows.forEach(function (o) { + rows.forEach(o => { vSep = ' '; out += '\n % ----- table row -----'; - Object.keys(o).forEach(function (k) { - var s = o[k]; - var val = s.latex(options); + Object.keys(o).forEach(k => { + let s = o[k]; + let val = s.latex(options); out += '\n ' + vSep + val + ''; vSep = ' & '; }); @@ -367,17 +334,28 @@ var doTable = function doTable(options) { return out; }; -var table = doTable; - -var plugin = function plugin(models) { - models.Doc.prototype.latex = _01Doc; - models.Section.prototype.latex = _02Section; - models.Paragraph.prototype.latex = _03Paragraph; - models.Sentence.prototype.latex = _04Sentence; +var table$1 = doTable; + +const doc = _01Doc; +const section = _02Section; +const paragraph = _03Paragraph; +const sentence = _04Sentence; +const link = _05Link; +const image = image$1; +const infobox = infobox_1; +const list = list$1; +const reference = reference$1; +const table = table$1; + +const plugin = function (models) { + models.Doc.prototype.latex = doc; + models.Section.prototype.latex = section; + models.Paragraph.prototype.latex = paragraph; + models.Sentence.prototype.latex = sentence; models.Image.prototype.latex = image; - models.Link.prototype.latex = _05Link; + models.Link.prototype.latex = link; models.Image.prototype.latex = image; - models.Infobox.prototype.latex = infobox_1; + models.Infobox.prototype.latex = infobox; models.List.prototype.latex = list; models.Reference.prototype.latex = reference; models.Table.prototype.latex = table; @@ -385,4 +363,4 @@ var plugin = function plugin(models) { var src = plugin; -export default src; +export { src as default }; diff --git a/plugins/latex/package-lock.json b/plugins/latex/package-lock.json index 035adf4c..98e69fda 100644 --- a/plugins/latex/package-lock.json +++ b/plugins/latex/package-lock.json @@ -9,52 +9,56 @@ "version": "0.2.0", "license": "MIT", "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "4.0.0", - "rollup-plugin-node-resolve": "5.2.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", - "dev": true + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -71,83 +75,102 @@ } }, "node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -164,193 +187,249 @@ } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "dependencies": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -359,189 +438,278 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=4" @@ -574,6 +742,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -682,452 +865,570 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -1137,55 +1438,59 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1193,55 +1498,166 @@ "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-babel/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, - "node_modules/@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", + "node_modules/@rollup/plugin-babel/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" } }, - "node_modules/@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "node_modules/@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -1254,15 +1670,6 @@ "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==", "dev": true }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1306,13 +1713,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" }, "peerDependencies": { @@ -1320,25 +1727,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1361,16 +1768,16 @@ } }, "node_modules/browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" @@ -1389,21 +1796,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "node_modules/buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "node_modules/builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -1418,10 +1810,14 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", - "dev": true + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } }, "node_modules/chalk": { "version": "2.4.2", @@ -1453,9 +1849,9 @@ "dev": true }, "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "node_modules/commander": { @@ -1464,6 +1860,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1480,12 +1882,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "dependencies": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "funding": { @@ -1503,9 +1905,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/debug": { @@ -1583,33 +1985,37 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.704", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", - "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -1678,12 +2084,6 @@ "node": ">=0.8.0" } }, - "node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1757,10 +2157,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -1772,6 +2197,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { @@ -1804,6 +2232,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1825,6 +2265,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1841,6 +2296,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -1881,9 +2350,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true, "engines": { "node": ">= 0.4" @@ -1925,12 +2394,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, "node_modules/is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -1956,22 +2419,22 @@ } }, "node_modules/is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "dependencies": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -1989,11 +2452,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2044,6 +2519,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -2127,12 +2614,6 @@ "node": ">=6" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -2179,15 +2660,15 @@ "dev": true }, "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2255,15 +2736,33 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "node_modules/randombytes": { @@ -2276,23 +2775,23 @@ } }, "node_modules/re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "node_modules/readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -2303,21 +2802,21 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "dependencies": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" }, "engines": { "node": ">=4" } }, "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "node_modules/regenerator-transform": { @@ -2346,17 +2845,17 @@ } }, "node_modules/regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" @@ -2369,9 +2868,9 @@ "dev": true }, "node_modules/regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -2390,12 +2889,16 @@ } }, "node_modules/resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "dependencies": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resumer": { @@ -2408,9 +2911,9 @@ } }, "node_modules/rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2419,30 +2922,7 @@ "node": ">=10.0.0" }, "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "node_modules/rollup-plugin-filesize-check": { @@ -2451,28 +2931,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "node_modules/rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "dependencies": { - "rollup-pluginutils": "^2.5.0" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "dependencies": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -2485,15 +2943,6 @@ "terser": "^5.0.0" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2567,9 +3016,9 @@ "dev": true }, "node_modules/split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "dependencies": { "through": "2" @@ -2579,23 +3028,23 @@ } }, "node_modules/string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" }, "engines": { "node": ">= 0.4" @@ -2643,101 +3092,40 @@ } }, "node_modules/tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "dependencies": { - "chalk": "4.1.0", - "tap-out": "3.0.0" + "colorette": "^1.2.2", + "tap-in": "3.2.1" }, "bin": { "tap-dancer": "src/index.js" } }, - "node_modules/tap-dancer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tap-dancer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/tap-dancer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/tap-dancer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "bin": { + "tap-in": "bin/tap-in.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", - "dev": true, - "dependencies": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" - }, - "bin": { - "tap-out": "bin/cmd.js" + "node": ">=8.0.0" } }, "node_modules/tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", @@ -2745,17 +3133,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "bin": { @@ -2817,9 +3207,9 @@ } }, "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "node_modules/unbox-primitive": { @@ -2838,40 +3228,40 @@ } }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, "engines": { "node": ">=4" @@ -2956,35 +3346,35 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" } }, "@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true }, "@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -2994,74 +3384,75 @@ } }, "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -3075,339 +3466,370 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, - "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "@babel/plugin-proposal-class-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { @@ -3428,6 +3850,15 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -3509,353 +3940,366 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -3865,52 +4309,53 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" } }, "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -3921,52 +4366,123 @@ } }, "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, "@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -3979,15 +4495,6 @@ "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==", "dev": true }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -4022,33 +4529,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" } }, "balanced-match": { @@ -4068,16 +4575,16 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "buffer-from": { @@ -4086,18 +4593,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true - }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -4109,9 +4604,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true }, "chalk": { @@ -4141,9 +4636,9 @@ "dev": true }, "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "commander": { @@ -4152,6 +4647,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -4168,12 +4669,12 @@ } }, "core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "requires": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "dependencies": { @@ -4186,9 +4687,9 @@ } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "debug": { @@ -4256,33 +4757,37 @@ } }, "electron-to-chromium": { - "version": "1.3.704", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", - "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" } }, "es-get-iterator": { @@ -4332,12 +4837,6 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4395,10 +4894,26 @@ "has-symbols": "^1.0.1" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4430,6 +4945,15 @@ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, + "has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -4442,6 +4966,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4458,6 +4991,17 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -4483,9 +5027,9 @@ } }, "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-core-module": { @@ -4509,12 +5053,6 @@ "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -4528,22 +5066,22 @@ "dev": true }, "is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "requires": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" } }, "is-set": { @@ -4552,12 +5090,21 @@ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -4586,6 +5133,15 @@ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -4647,12 +5203,6 @@ "minimist": "^1.2.5" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -4696,15 +5246,15 @@ "dev": true }, "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true }, "object-is": { @@ -4751,15 +5301,27 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "randombytes": { @@ -4772,23 +5334,23 @@ } }, "re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -4799,18 +5361,18 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "regenerator-transform": { @@ -4833,17 +5395,17 @@ } }, "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { @@ -4853,9 +5415,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -4870,11 +5432,12 @@ } }, "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -4888,35 +5451,12 @@ } }, "rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "rollup-plugin-filesize-check": { @@ -4925,28 +5465,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "requires": { - "rollup-pluginutils": "^2.5.0" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -4959,15 +5477,6 @@ "terser": "^5.0.0" } }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -5031,32 +5540,32 @@ "dev": true }, "split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "string.prototype.trimend": { @@ -5089,82 +5598,31 @@ } }, "tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "requires": { - "chalk": "4.1.0", - "tap-out": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "colorette": "^1.2.2", + "tap-in": "3.2.1" } }, - "tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", + "tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "requires": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" } }, "tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -5172,17 +5630,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "dependencies": { @@ -5230,9 +5690,9 @@ "dev": true }, "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "unbox-primitive": { @@ -5248,31 +5708,31 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "util-deprecate": { diff --git a/plugins/latex/package.json b/plugins/latex/package.json index 2405d39c..064c2586 100644 --- a/plugins/latex/package.json +++ b/plugins/latex/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-latex", "description": "latex plugin for wtf_wikipedia", - "version": "0.2.0", + "version": "0.2.1", "main": "./builds/wtf-plugin-latex.js", "unpkg": "./builds/wtf-plugin-latex.min.js", "module": "./builds/wtf-plugin-latex.mjs", @@ -31,17 +31,15 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "4.0.0", - "rollup-plugin-node-resolve": "5.2.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "license": "MIT" -} +} \ No newline at end of file diff --git a/plugins/latex/rollup.config.js b/plugins/latex/rollup.config.js index 22a44b36..69fe7205 100644 --- a/plugins/latex/rollup.config.js +++ b/plugins/latex/rollup.config.js @@ -1,6 +1,6 @@ -import commonjs from 'rollup-plugin-commonjs' +import commonjs from '@rollup/plugin-commonjs' import { terser } from 'rollup-plugin-terser' -import babel from 'rollup-plugin-babel' +import { babel } from '@rollup/plugin-babel' import sizeCheck from 'rollup-plugin-filesize-check' import { version } from './package.json' @@ -16,6 +16,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -37,6 +38,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -57,6 +59,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }), diff --git a/plugins/markdown/builds/wtf-plugin-markdown.js b/plugins/markdown/builds/wtf-plugin-markdown.js index 2a225720..a32c33ed 100644 --- a/plugins/markdown/builds/wtf-plugin-markdown.js +++ b/plugins/markdown/builds/wtf-plugin-markdown.js @@ -1,9 +1,9 @@ -/* wtf-plugin-markdown 0.2.1 MIT */ +/* wtf-plugin-markdown 0.2.2 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfPerson = factory()); -}(this, (function () { 'use strict'; +})(this, (function () { 'use strict'; const defaults$4 = { redirects: true, @@ -21,7 +21,7 @@ href += '#' + link.anchor; } - return `↳ [${link.text}](${href})`; + return "\u21B3 [".concat(link.text, "](").concat(href, ")"); }; //turn a Doc object into a markdown string @@ -140,13 +140,12 @@ var _03Paragraph = toMarkdown$5; - //escape a string like 'fun*2.Co' for a regExpr function escapeRegExp(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); + return str.replace(/[\-[\]/{}()*+?.\\^$|]/g, '\\$&'); } //sometimes text-replacements can be ambiguous - words used multiple times.. - const smartReplace = function (all, text, result) { + const smartReplace$1 = function (all, text, result) { if (!text || !all) { return all; } @@ -170,8 +169,9 @@ return all; }; - var smartReplace_1 = smartReplace; + var smartReplace_1 = smartReplace$1; + const smartReplace = smartReplace_1; const defaults$1 = { links: true, formatting: true @@ -185,18 +185,18 @@ this.links().forEach(link => { let mdLink = link.markdown(); let str = link.text() || link.page(); - md = smartReplace_1(md, str, mdLink); + md = smartReplace(md, str, mdLink); }); } //turn bolds into **bold** if (options.formatting === true) { this.bolds().forEach(b => { - md = smartReplace_1(md, b, '**' + b + '**'); + md = smartReplace(md, b, '**' + b + '**'); }); //support *italics* this.italics().forEach(i => { - md = smartReplace_1(md, i, '*' + i + '*'); + md = smartReplace(md, i, '*' + i + '*'); }); } @@ -205,7 +205,6 @@ var _04Sentence = toMarkdown$4; - // add `[text](href)` to the text const toMarkdown$3 = function () { let href = this.href(); href = href.replace(/ /g, '_'); // href = encodeURIComponent(href) @@ -216,17 +215,15 @@ var _05Link = toMarkdown$3; - //markdown images are like this: ![alt text](href) const toMarkdown$2 = function () { let alt = this.data.file.replace(/^(file|image):/i, ''); alt = alt.replace(/\.(jpg|jpeg|png|gif|svg)/i, ''); return '![' + alt + '](' + this.thumbnail() + ')'; }; - var image = toMarkdown$2; + var image$1 = toMarkdown$2; - //center-pad each cell, to make the table more legible - const pad = (str, cellWidth) => { + const pad$2 = (str, cellWidth) => { str = str || ''; str = String(str); cellWidth = cellWidth || 15; @@ -244,7 +241,7 @@ return str; }; - var pad_1 = pad; + var pad_1 = pad$2; const dontDo = { image: true, @@ -256,12 +253,13 @@ const defaults = { images: true }; // - // render an infobox as a table with two columns, key + value + + const pad$1 = pad_1; // render an infobox as a table with two columns, key + value const doInfobox = function (options) { options = Object.assign({}, defaults, options); - let md = '|' + pad_1('', 35) + '|' + pad_1('', 30) + '|\n'; - md += '|' + pad_1('---', 35) + '|' + pad_1('---', 30) + '|\n'; //todo: render top image here (somehow) + let md = '|' + pad$1('', 35) + '|' + pad$1('', 30) + '|\n'; + md += '|' + pad$1('---', 35) + '|' + pad$1('---', 30) + '|\n'; //todo: render top image here (somehow) Object.keys(this.data).forEach(k => { if (dontDo[k] === true) { @@ -273,14 +271,13 @@ let val = s.markdown(options); //markdown is more newline-sensitive than wiki val = val.split(/\n/g).join(', '); - md += '|' + pad_1(key, 35) + '|' + pad_1(val, 30) + ' |\n'; + md += '|' + pad$1(key, 35) + '|' + pad$1(val, 30) + ' |\n'; }); return md; }; - var infobox = doInfobox; + var infobox$1 = doInfobox; - // const toMarkdown$1 = function (options) { return this.lines().map(s => { let str = s.markdown(options); @@ -288,14 +285,13 @@ }).join('\n'); }; - var list = toMarkdown$1; + var list$1 = toMarkdown$1; - // const toMarkdown = function () { if (this.data && this.data.url && this.data.title) { - return `⌃ [${this.data.title}](${this.data.url})`; + return "\u2303 [".concat(this.data.title, "](").concat(this.data.url, ")"); } else if (this.data.encyclopedia) { - return `⌃ ${this.data.encyclopedia}`; + return "\u2303 ".concat(this.data.encyclopedia); } else if (this.data.title) { //cite book, etc let str = this.data.title; @@ -308,16 +304,17 @@ str += this.data.first + ' ' + this.data.last; } - return `⌃ ${str}`; + return "\u2303 ".concat(str); } else if (this.inline) { - return `⌃ ${this.inline.markdown()}`; + return "\u2303 ".concat(this.inline.markdown()); } return ''; }; - var reference = toMarkdown; + var reference$1 = toMarkdown; + const pad = pad_1; /* this is a markdown table: | Tables | Are | Cool | | ------------- |:-------------:| -----:| @@ -327,7 +324,7 @@ */ const makeRow = arr => { - arr = arr.map(s => pad_1(s, 14)); + arr = arr.map(s => pad(s, 14)); return '| ' + arr.join(' | ') + ' |'; }; //markdown tables are weird @@ -369,14 +366,25 @@ return md + '\n'; }; - var table = doTable; + var table$1 = doTable; + + const doc = _01Doc; + const section = _02Section; + const paragraph = _03Paragraph; + const sentence = _04Sentence; + const link = _05Link; + const image = image$1; + const infobox = infobox$1; + const list = list$1; + const reference = reference$1; + const table = table$1; const plugin = function (models) { - models.Doc.prototype.markdown = _01Doc; - models.Section.prototype.markdown = _02Section; - models.Paragraph.prototype.markdown = _03Paragraph; - models.Sentence.prototype.markdown = _04Sentence; - models.Link.prototype.markdown = _05Link; + models.Doc.prototype.markdown = doc; + models.Section.prototype.markdown = section; + models.Paragraph.prototype.markdown = paragraph; + models.Sentence.prototype.markdown = sentence; + models.Link.prototype.markdown = link; models.Image.prototype.markdown = image; models.Infobox.prototype.markdown = infobox; models.Table.prototype.markdown = table; @@ -388,5 +396,5 @@ return src; -}))); +})); //# sourceMappingURL=wtf-plugin-markdown.js.map diff --git a/plugins/markdown/builds/wtf-plugin-markdown.js.map b/plugins/markdown/builds/wtf-plugin-markdown.js.map index 2fbe9a86..733f98bb 100644 --- a/plugins/markdown/builds/wtf-plugin-markdown.js.map +++ b/plugins/markdown/builds/wtf-plugin-markdown.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-markdown.js","sources":["../src/01-doc.js","../src/02-section.js","../src/03-paragraph.js","../src/_lib/smartReplace.js","../src/04-sentence.js","../src/05-link.js","../src/image.js","../src/_lib/pad.js","../src/infobox.js","../src/list.js","../src/reference.js","../src/table.js","../src/index.js"],"sourcesContent":["const defaults = {\n redirects: true,\n infoboxes: true,\n templates: true,\n sections: true\n}\n//we should try to make this look like the wikipedia does, i guess.\nconst softRedirect = function (doc) {\n let link = doc.redirectTo()\n let href = link.page\n href = './' + href.replace(/ /g, '_')\n if (link.anchor) {\n href += '#' + link.anchor\n }\n return `↳ [${link.text}](${href})`\n}\n\n//turn a Doc object into a markdown string\nconst toMarkdown = function (options) {\n options = Object.assign({}, defaults, options)\n let data = this\n let md = ''\n //if it's a redirect page, give it a 'soft landing':\n if (options.redirects === true && this.isRedirect() === true) {\n return softRedirect(this) //end it here\n }\n //render infoboxes (up at the top)\n if (options.infoboxes === true && options.templates === true) {\n md += this.infoboxes()\n .map((infobox) => infobox.markdown(options))\n .join('\\n\\n')\n }\n //render each section\n if (options.sections === true || options.paragraphs === true || options.sentences === true) {\n md += data\n .sections()\n .map((s) => s.markdown(options))\n .join('\\n\\n')\n }\n //default false\n if (options.references === true) {\n md += '## References'\n md += this.citations()\n .map((c) => c.json(options))\n .join('\\n')\n }\n return md\n}\nmodule.exports = toMarkdown\n","const defaults = {\n headers: true,\n images: true,\n tables: true,\n lists: true,\n paragraphs: true\n}\n\nconst doSection = function (options) {\n options = Object.assign({}, defaults, options)\n let md = ''\n\n //make the header\n if (options.headers === true && this.title()) {\n let header = '##'\n for (let i = 0; i < this.depth(); i += 1) {\n header += '#'\n }\n md += header + ' ' + this.title() + '\\n'\n }\n\n //put any images under the header\n if (options.images === true) {\n let images = this.images()\n if (images.length > 0) {\n md += images.map((img) => img.markdown()).join('\\n')\n md += '\\n'\n }\n }\n\n //make a markdown table\n if (options.tables === true) {\n let tables = this.tables()\n if (tables.length > 0) {\n md += '\\n'\n md += tables.map((table) => table.markdown(options)).join('\\n')\n md += '\\n'\n }\n }\n\n //make a markdown bullet-list\n if (options.lists === true) {\n let lists = this.lists()\n if (lists.length > 0) {\n md += lists.map((list) => list.markdown(options)).join('\\n')\n md += '\\n'\n }\n }\n\n //finally, write the sentence text.\n if (options.paragraphs === true || options.sentences === true) {\n md += this.paragraphs()\n .map((p) => {\n return p\n .sentences()\n .map((s) => s.markdown(options))\n .join(' ')\n })\n .join('\\n\\n')\n }\n\n return md\n}\nmodule.exports = doSection\n","const defaults = {\n sentences: true\n}\n\nconst toMarkdown = function (options) {\n options = Object.assign({}, defaults, options)\n let md = ''\n if (options.sentences === true) {\n md += this.sentences().reduce((str, s) => {\n str += s.markdown(options) + '\\n'\n return str\n }, {})\n }\n return md\n}\nmodule.exports = toMarkdown\n","//escape a string like 'fun*2.Co' for a regExpr\nfunction escapeRegExp(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&')\n}\n\n//sometimes text-replacements can be ambiguous - words used multiple times..\nconst smartReplace = function (all, text, result) {\n if (!text || !all) {\n return all\n }\n\n if (typeof all === 'number') {\n all = String(all)\n }\n text = escapeRegExp(text)\n //try a word-boundary replace\n let reg = new RegExp('\\\\b' + text + '\\\\b')\n if (reg.test(all) === true) {\n all = all.replace(reg, result)\n } else {\n //otherwise, fall-back to a much messier, dangerous replacement\n // console.warn('missing \\'' + text + '\\'');\n all = all.replace(text, result)\n }\n return all\n}\n\nmodule.exports = smartReplace\n","const smartReplace = require('./_lib/smartReplace')\n\nconst defaults = {\n links: true,\n formatting: true\n}\n\n//create links, bold, italic in markdown\nconst toMarkdown = function (options) {\n options = Object.assign({}, defaults, options)\n let md = this.text()\n //turn links back into links\n if (options.links === true) {\n this.links().forEach((link) => {\n let mdLink = link.markdown()\n let str = link.text() || link.page()\n md = smartReplace(md, str, mdLink)\n })\n }\n //turn bolds into **bold**\n if (options.formatting === true) {\n this.bolds().forEach((b) => {\n md = smartReplace(md, b, '**' + b + '**')\n })\n //support *italics*\n this.italics().forEach((i) => {\n md = smartReplace(md, i, '*' + i + '*')\n })\n }\n return md\n}\nmodule.exports = toMarkdown\n","// add `[text](href)` to the text\nconst toMarkdown = function () {\n let href = this.href()\n href = href.replace(/ /g, '_')\n // href = encodeURIComponent(href)\n let str = this.text() || this.page()\n return '[' + str + '](' + href + ')'\n}\nmodule.exports = toMarkdown\n","//markdown images are like this: ![alt text](href)\nconst toMarkdown = function () {\n let alt = this.data.file.replace(/^(file|image):/i, '')\n alt = alt.replace(/\\.(jpg|jpeg|png|gif|svg)/i, '')\n return '![' + alt + '](' + this.thumbnail() + ')'\n}\nmodule.exports = toMarkdown\n","//center-pad each cell, to make the table more legible\nconst pad = (str, cellWidth) => {\n str = str || ''\n str = String(str)\n cellWidth = cellWidth || 15\n let diff = cellWidth - str.length\n diff = Math.ceil(diff / 2)\n for (let i = 0; i < diff; i += 1) {\n str = ' ' + str\n if (str.length < cellWidth) {\n str = str + ' '\n }\n }\n return str\n}\nmodule.exports = pad\n","const dontDo = {\n image: true,\n caption: true,\n alt: true,\n signature: true,\n 'signature alt': true\n}\n\nconst defaults = {\n images: true\n}\n\n//\nconst pad = require('./_lib/pad')\n\n// render an infobox as a table with two columns, key + value\nconst doInfobox = function (options) {\n options = Object.assign({}, defaults, options)\n let md = '|' + pad('', 35) + '|' + pad('', 30) + '|\\n'\n md += '|' + pad('---', 35) + '|' + pad('---', 30) + '|\\n'\n //todo: render top image here (somehow)\n Object.keys(this.data).forEach((k) => {\n if (dontDo[k] === true) {\n return\n }\n let key = '**' + k + '**'\n let s = this.data[k]\n let val = s.markdown(options)\n //markdown is more newline-sensitive than wiki\n val = val.split(/\\n/g).join(', ')\n md += '|' + pad(key, 35) + '|' + pad(val, 30) + ' |\\n'\n })\n return md\n}\nmodule.exports = doInfobox\n","//\nconst toMarkdown = function (options) {\n return this.lines()\n .map((s) => {\n let str = s.markdown(options)\n return ' * ' + str\n })\n .join('\\n')\n}\nmodule.exports = toMarkdown\n","//\nconst toMarkdown = function () {\n if (this.data && this.data.url && this.data.title) {\n return `⌃ [${this.data.title}](${this.data.url})`\n } else if (this.data.encyclopedia) {\n return `⌃ ${this.data.encyclopedia}`\n } else if (this.data.title) {\n //cite book, etc\n let str = this.data.title\n if (this.data.author) {\n str += this.data.author\n }\n if (this.data.first && this.data.last) {\n str += this.data.first + ' ' + this.data.last\n }\n return `⌃ ${str}`\n } else if (this.inline) {\n return `⌃ ${this.inline.markdown()}`\n }\n return ''\n}\nmodule.exports = toMarkdown\n","const pad = require('./_lib/pad')\n/* this is a markdown table:\n| Tables | Are | Cool |\n| ------------- |:-------------:| -----:|\n| col 3 is | right-aligned | $1600 |\n| col 2 is | centered | $12 |\n| zebra stripes | are neat | $1 |\n*/\n\nconst makeRow = (arr) => {\n arr = arr.map((s) => pad(s, 14))\n return '| ' + arr.join(' | ') + ' |'\n}\n\n//markdown tables are weird\nconst doTable = function (options) {\n let md = ''\n if (!this || this.length === 0) {\n return md\n }\n let rows = this.data\n let keys = Object.keys(rows[0])\n //first, grab the headers\n //remove auto-generated number keys\n let headers = keys.map((k) => {\n if (/^col[0-9]/.test(k) === true) {\n return ''\n }\n return k\n })\n //draw the header (necessary!)\n md += makeRow(headers) + '\\n'\n md += makeRow(headers.map(() => '---')) + '\\n'\n //do each row..\n md += rows\n .map((row) => {\n //each column..\n let arr = keys.map((k) => {\n if (!row[k]) {\n return ''\n }\n return row[k].markdown(options) || ''\n })\n //make it a nice padded row\n return makeRow(arr)\n })\n .join('\\n')\n return md + '\\n'\n}\nmodule.exports = doTable\n","const doc = require('./01-doc')\nconst section = require('./02-section')\nconst paragraph = require('./03-paragraph')\nconst sentence = require('./04-sentence')\nconst link = require('./05-link')\nconst image = require('./image')\nconst infobox = require('./infobox')\nconst list = require('./list')\nconst reference = require('./reference')\nconst table = require('./table')\n\nconst plugin = function (models) {\n models.Doc.prototype.markdown = doc\n models.Section.prototype.markdown = section\n models.Paragraph.prototype.markdown = paragraph\n models.Sentence.prototype.markdown = sentence\n models.Link.prototype.markdown = link\n models.Image.prototype.markdown = image\n models.Infobox.prototype.markdown = infobox\n models.Table.prototype.markdown = table\n models.List.prototype.markdown = list\n models.Reference.prototype.markdown = reference\n}\nmodule.exports = plugin\n"],"names":["defaults","redirects","infoboxes","templates","sections","softRedirect","doc","link","redirectTo","href","page","replace","anchor","text","toMarkdown","options","Object","assign","data","md","isRedirect","map","infobox","markdown","join","paragraphs","sentences","s","references","citations","c","json","headers","images","tables","lists","doSection","title","header","i","depth","length","img","table","list","p","reduce","str","escapeRegExp","smartReplace","all","result","String","reg","RegExp","test","links","formatting","forEach","mdLink","bolds","b","italics","alt","file","thumbnail","pad","cellWidth","diff","Math","ceil","dontDo","image","caption","signature","doInfobox","keys","k","key","val","split","lines","url","encyclopedia","author","first","last","inline","makeRow","arr","doTable","rows","row","plugin","models","Doc","prototype","Section","section","Paragraph","paragraph","Sentence","sentence","Link","Image","Infobox","Table","List","Reference","reference"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-markdown.js","sources":["../src/01-doc.js","../src/02-section.js","../src/03-paragraph.js","../src/_lib/smartReplace.js","../src/04-sentence.js","../src/05-link.js","../src/image.js","../src/_lib/pad.js","../src/infobox.js","../src/list.js","../src/reference.js","../src/table.js","../src/index.js"],"sourcesContent":["const defaults = {\n redirects: true,\n infoboxes: true,\n templates: true,\n sections: true\n}\n//we should try to make this look like the wikipedia does, i guess.\nconst softRedirect = function (doc) {\n let link = doc.redirectTo()\n let href = link.page\n href = './' + href.replace(/ /g, '_')\n if (link.anchor) {\n href += '#' + link.anchor\n }\n return `↳ [${link.text}](${href})`\n}\n\n//turn a Doc object into a markdown string\nconst toMarkdown = function (options) {\n options = Object.assign({}, defaults, options)\n let data = this\n let md = ''\n //if it's a redirect page, give it a 'soft landing':\n if (options.redirects === true && this.isRedirect() === true) {\n return softRedirect(this) //end it here\n }\n //render infoboxes (up at the top)\n if (options.infoboxes === true && options.templates === true) {\n md += this.infoboxes()\n .map((infobox) => infobox.markdown(options))\n .join('\\n\\n')\n }\n //render each section\n if (options.sections === true || options.paragraphs === true || options.sentences === true) {\n md += data\n .sections()\n .map((s) => s.markdown(options))\n .join('\\n\\n')\n }\n //default false\n if (options.references === true) {\n md += '## References'\n md += this.citations()\n .map((c) => c.json(options))\n .join('\\n')\n }\n return md\n}\nmodule.exports = toMarkdown\n","const defaults = {\n headers: true,\n images: true,\n tables: true,\n lists: true,\n paragraphs: true\n}\n\nconst doSection = function (options) {\n options = Object.assign({}, defaults, options)\n let md = ''\n\n //make the header\n if (options.headers === true && this.title()) {\n let header = '##'\n for (let i = 0; i < this.depth(); i += 1) {\n header += '#'\n }\n md += header + ' ' + this.title() + '\\n'\n }\n\n //put any images under the header\n if (options.images === true) {\n let images = this.images()\n if (images.length > 0) {\n md += images.map((img) => img.markdown()).join('\\n')\n md += '\\n'\n }\n }\n\n //make a markdown table\n if (options.tables === true) {\n let tables = this.tables()\n if (tables.length > 0) {\n md += '\\n'\n md += tables.map((table) => table.markdown(options)).join('\\n')\n md += '\\n'\n }\n }\n\n //make a markdown bullet-list\n if (options.lists === true) {\n let lists = this.lists()\n if (lists.length > 0) {\n md += lists.map((list) => list.markdown(options)).join('\\n')\n md += '\\n'\n }\n }\n\n //finally, write the sentence text.\n if (options.paragraphs === true || options.sentences === true) {\n md += this.paragraphs()\n .map((p) => {\n return p\n .sentences()\n .map((s) => s.markdown(options))\n .join(' ')\n })\n .join('\\n\\n')\n }\n\n return md\n}\nmodule.exports = doSection\n","const defaults = {\n sentences: true\n}\n\nconst toMarkdown = function (options) {\n options = Object.assign({}, defaults, options)\n let md = ''\n if (options.sentences === true) {\n md += this.sentences().reduce((str, s) => {\n str += s.markdown(options) + '\\n'\n return str\n }, {})\n }\n return md\n}\nmodule.exports = toMarkdown\n","//escape a string like 'fun*2.Co' for a regExpr\nfunction escapeRegExp(str) {\n return str.replace(/[\\-[\\]/{}()*+?.\\\\^$|]/g, '\\\\$&')\n}\n\n//sometimes text-replacements can be ambiguous - words used multiple times..\nconst smartReplace = function (all, text, result) {\n if (!text || !all) {\n return all\n }\n\n if (typeof all === 'number') {\n all = String(all)\n }\n text = escapeRegExp(text)\n //try a word-boundary replace\n let reg = new RegExp('\\\\b' + text + '\\\\b')\n if (reg.test(all) === true) {\n all = all.replace(reg, result)\n } else {\n //otherwise, fall-back to a much messier, dangerous replacement\n // console.warn('missing \\'' + text + '\\'');\n all = all.replace(text, result)\n }\n return all\n}\n\nmodule.exports = smartReplace\n","const smartReplace = require('./_lib/smartReplace')\n\nconst defaults = {\n links: true,\n formatting: true\n}\n\n//create links, bold, italic in markdown\nconst toMarkdown = function (options) {\n options = Object.assign({}, defaults, options)\n let md = this.text()\n //turn links back into links\n if (options.links === true) {\n this.links().forEach((link) => {\n let mdLink = link.markdown()\n let str = link.text() || link.page()\n md = smartReplace(md, str, mdLink)\n })\n }\n //turn bolds into **bold**\n if (options.formatting === true) {\n this.bolds().forEach((b) => {\n md = smartReplace(md, b, '**' + b + '**')\n })\n //support *italics*\n this.italics().forEach((i) => {\n md = smartReplace(md, i, '*' + i + '*')\n })\n }\n return md\n}\nmodule.exports = toMarkdown\n","// add `[text](href)` to the text\nconst toMarkdown = function () {\n let href = this.href()\n href = href.replace(/ /g, '_')\n // href = encodeURIComponent(href)\n let str = this.text() || this.page()\n return '[' + str + '](' + href + ')'\n}\nmodule.exports = toMarkdown\n","//markdown images are like this: ![alt text](href)\nconst toMarkdown = function () {\n let alt = this.data.file.replace(/^(file|image):/i, '')\n alt = alt.replace(/\\.(jpg|jpeg|png|gif|svg)/i, '')\n return '![' + alt + '](' + this.thumbnail() + ')'\n}\nmodule.exports = toMarkdown\n","//center-pad each cell, to make the table more legible\nconst pad = (str, cellWidth) => {\n str = str || ''\n str = String(str)\n cellWidth = cellWidth || 15\n let diff = cellWidth - str.length\n diff = Math.ceil(diff / 2)\n for (let i = 0; i < diff; i += 1) {\n str = ' ' + str\n if (str.length < cellWidth) {\n str = str + ' '\n }\n }\n return str\n}\nmodule.exports = pad\n","const dontDo = {\n image: true,\n caption: true,\n alt: true,\n signature: true,\n 'signature alt': true\n}\n\nconst defaults = {\n images: true\n}\n\n//\nconst pad = require('./_lib/pad')\n\n// render an infobox as a table with two columns, key + value\nconst doInfobox = function (options) {\n options = Object.assign({}, defaults, options)\n let md = '|' + pad('', 35) + '|' + pad('', 30) + '|\\n'\n md += '|' + pad('---', 35) + '|' + pad('---', 30) + '|\\n'\n //todo: render top image here (somehow)\n Object.keys(this.data).forEach((k) => {\n if (dontDo[k] === true) {\n return\n }\n let key = '**' + k + '**'\n let s = this.data[k]\n let val = s.markdown(options)\n //markdown is more newline-sensitive than wiki\n val = val.split(/\\n/g).join(', ')\n md += '|' + pad(key, 35) + '|' + pad(val, 30) + ' |\\n'\n })\n return md\n}\nmodule.exports = doInfobox\n","//\nconst toMarkdown = function (options) {\n return this.lines()\n .map((s) => {\n let str = s.markdown(options)\n return ' * ' + str\n })\n .join('\\n')\n}\nmodule.exports = toMarkdown\n","//\nconst toMarkdown = function () {\n if (this.data && this.data.url && this.data.title) {\n return `⌃ [${this.data.title}](${this.data.url})`\n } else if (this.data.encyclopedia) {\n return `⌃ ${this.data.encyclopedia}`\n } else if (this.data.title) {\n //cite book, etc\n let str = this.data.title\n if (this.data.author) {\n str += this.data.author\n }\n if (this.data.first && this.data.last) {\n str += this.data.first + ' ' + this.data.last\n }\n return `⌃ ${str}`\n } else if (this.inline) {\n return `⌃ ${this.inline.markdown()}`\n }\n return ''\n}\nmodule.exports = toMarkdown\n","const pad = require('./_lib/pad')\n/* this is a markdown table:\n| Tables | Are | Cool |\n| ------------- |:-------------:| -----:|\n| col 3 is | right-aligned | $1600 |\n| col 2 is | centered | $12 |\n| zebra stripes | are neat | $1 |\n*/\n\nconst makeRow = (arr) => {\n arr = arr.map((s) => pad(s, 14))\n return '| ' + arr.join(' | ') + ' |'\n}\n\n//markdown tables are weird\nconst doTable = function (options) {\n let md = ''\n if (!this || this.length === 0) {\n return md\n }\n let rows = this.data\n let keys = Object.keys(rows[0])\n //first, grab the headers\n //remove auto-generated number keys\n let headers = keys.map((k) => {\n if (/^col[0-9]/.test(k) === true) {\n return ''\n }\n return k\n })\n //draw the header (necessary!)\n md += makeRow(headers) + '\\n'\n md += makeRow(headers.map(() => '---')) + '\\n'\n //do each row..\n md += rows\n .map((row) => {\n //each column..\n let arr = keys.map((k) => {\n if (!row[k]) {\n return ''\n }\n return row[k].markdown(options) || ''\n })\n //make it a nice padded row\n return makeRow(arr)\n })\n .join('\\n')\n return md + '\\n'\n}\nmodule.exports = doTable\n","const doc = require('./01-doc')\nconst section = require('./02-section')\nconst paragraph = require('./03-paragraph')\nconst sentence = require('./04-sentence')\nconst link = require('./05-link')\nconst image = require('./image')\nconst infobox = require('./infobox')\nconst list = require('./list')\nconst reference = require('./reference')\nconst table = require('./table')\n\nconst plugin = function (models) {\n models.Doc.prototype.markdown = doc\n models.Section.prototype.markdown = section\n models.Paragraph.prototype.markdown = paragraph\n models.Sentence.prototype.markdown = sentence\n models.Link.prototype.markdown = link\n models.Image.prototype.markdown = image\n models.Infobox.prototype.markdown = infobox\n models.Table.prototype.markdown = table\n models.List.prototype.markdown = list\n models.Reference.prototype.markdown = reference\n}\nmodule.exports = plugin\n"],"names":["defaults","redirects","infoboxes","templates","sections","softRedirect","doc","link","redirectTo","href","page","replace","anchor","text","toMarkdown","options","Object","assign","data","md","isRedirect","map","infobox","markdown","join","paragraphs","sentences","s","references","citations","c","json","_01Doc","headers","images","tables","lists","doSection","title","header","i","depth","length","img","table","list","p","_02Section","reduce","str","_03Paragraph","escapeRegExp","smartReplace","all","result","String","reg","RegExp","test","smartReplace_1","require$$0","links","formatting","forEach","mdLink","bolds","b","italics","_04Sentence","_05Link","alt","file","thumbnail","image","pad","cellWidth","diff","Math","ceil","pad_1","dontDo","caption","signature","doInfobox","keys","k","key","val","split","lines","url","encyclopedia","author","first","last","inline","reference","makeRow","arr","doTable","rows","row","section","require$$1","paragraph","require$$2","sentence","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","plugin","models","Doc","prototype","Section","Paragraph","Sentence","Link","Image","Infobox","Table","List","Reference","src"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/markdown/builds/wtf-plugin-markdown.min.js b/plugins/markdown/builds/wtf-plugin-markdown.min.js index 586a6ba5..2f591187 100644 --- a/plugins/markdown/builds/wtf-plugin-markdown.min.js +++ b/plugins/markdown/builds/wtf-plugin-markdown.min.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).wtfPerson=e()}(this,(function(){"use strict";const t={redirects:!0,infoboxes:!0,templates:!0,sections:!0};var e=function(e){let n=this,a="";return!0===(e=Object.assign({},t,e)).redirects&&!0===this.isRedirect()?function(t){let e=t.redirectTo(),n=e.page;return n="./"+n.replace(/ /g,"_"),e.anchor&&(n+="#"+e.anchor),`↳ [${e.text}](${n})`}(this):(!0===e.infoboxes&&!0===e.templates&&(a+=this.infoboxes().map((t=>t.markdown(e))).join("\n\n")),!0!==e.sections&&!0!==e.paragraphs&&!0!==e.sentences||(a+=n.sections().map((t=>t.markdown(e))).join("\n\n")),!0===e.references&&(a+="## References",a+=this.citations().map((t=>t.json(e))).join("\n")),a)};const n={headers:!0,images:!0,tables:!0,lists:!0,paragraphs:!0};var a=function(t){let e="";if(!0===(t=Object.assign({},n,t)).headers&&this.title()){let t="##";for(let e=0;e0&&(e+=t.map((t=>t.markdown())).join("\n"),e+="\n")}if(!0===t.tables){let n=this.tables();n.length>0&&(e+="\n",e+=n.map((e=>e.markdown(t))).join("\n"),e+="\n")}if(!0===t.lists){let n=this.lists();n.length>0&&(e+=n.map((e=>e.markdown(t))).join("\n"),e+="\n")}return!0!==t.paragraphs&&!0!==t.sentences||(e+=this.paragraphs().map((e=>e.sentences().map((e=>e.markdown(t))).join(" "))).join("\n\n")),e};const i={sentences:!0};var r=function(t){let e="";return!0===(t=Object.assign({},i,t)).sentences&&(e+=this.sentences().reduce(((e,n)=>e+=n.markdown(t)+"\n"),{})),e};var s=function(t,e,n){if(!e||!t)return t;"number"==typeof t&&(t=String(t)),e=e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");let a=new RegExp("\\b"+e+"\\b");return t=!0===a.test(t)?t.replace(a,n):t.replace(e,n)};const o={links:!0,formatting:!0};var l=function(t){t=Object.assign({},o,t);let e=this.text();return!0===t.links&&this.links().forEach((t=>{let n=t.markdown(),a=t.text()||t.page();e=s(e,a,n)})),!0===t.formatting&&(this.bolds().forEach((t=>{e=s(e,t,"**"+t+"**")})),this.italics().forEach((t=>{e=s(e,t,"*"+t+"*")}))),e};var c=function(){let t=this.href();return t=t.replace(/ /g,"_"),"["+(this.text()||this.page())+"]("+t+")"};var h=function(){let t=this.data.file.replace(/^(file|image):/i,"");return t=t.replace(/\.(jpg|jpeg|png|gif|svg)/i,""),"!["+t+"]("+this.thumbnail()+")"};var p=(t,e)=>{t=t||"";let n=(e=e||15)-(t=String(t)).length;n=Math.ceil(n/2);for(let a=0;a{if(!0===d[n])return;let a="**"+n+"**",i=this.data[n].markdown(t);i=i.split(/\n/g).join(", "),e+="|"+p(a,35)+"|"+p(i,30)+" |\n"})),e};var u=function(t){return this.lines().map((e=>" * "+e.markdown(t))).join("\n")};var g=function(){if(this.data&&this.data.url&&this.data.title)return`⌃ [${this.data.title}](${this.data.url})`;if(this.data.encyclopedia)return"⌃ "+this.data.encyclopedia;if(this.data.title){let t=this.data.title;return this.data.author&&(t+=this.data.author),this.data.first&&this.data.last&&(t+=this.data.first+" "+this.data.last),"⌃ "+t}return this.inline?"⌃ "+this.inline.markdown():""};const k=t=>"| "+(t=t.map((t=>p(t,14)))).join(" | ")+" |";var w=function(t){let e="";if(!this||0===this.length)return e;let n=this.data,a=Object.keys(n[0]),i=a.map((t=>!0===/^col[0-9]/.test(t)?"":t));return e+=k(i)+"\n",e+=k(i.map((()=>"---")))+"\n",e+=n.map((e=>{let n=a.map((n=>e[n]&&e[n].markdown(t)||""));return k(n)})).join("\n"),e+"\n"};return function(t){t.Doc.prototype.markdown=e,t.Section.prototype.markdown=a,t.Paragraph.prototype.markdown=r,t.Sentence.prototype.markdown=l,t.Link.prototype.markdown=c,t.Image.prototype.markdown=h,t.Infobox.prototype.markdown=m,t.Table.prototype.markdown=w,t.List.prototype.markdown=u,t.Reference.prototype.markdown=g}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).wtfPerson=e()}(this,(function(){"use strict";const t={redirects:!0,infoboxes:!0,templates:!0,sections:!0};const e={headers:!0,images:!0,tables:!0,lists:!0,paragraphs:!0};const n={sentences:!0};const i=function(t,e,n){if(!e||!t)return t;"number"==typeof t&&(t=String(t)),e=e.replace(/[\-[\]/{}()*+?.\\^$|]/g,"\\$&");let i=new RegExp("\\b"+e+"\\b");return t=!0===i.test(t)?t.replace(i,n):t.replace(e,n)},a={links:!0,formatting:!0};var s=(t,e)=>{t=t||"";let n=(e=e||15)-(t=String(t)).length;n=Math.ceil(n/2);for(let i=0;i"| "+(t=t.map((t=>l(t,14)))).join(" | ")+" |";const p=function(e){let n=this,i="";return!0===(e=Object.assign({},t,e)).redirects&&!0===this.isRedirect()?function(t){let e=t.redirectTo(),n=e.page;return n="./"+n.replace(/ /g,"_"),e.anchor&&(n+="#"+e.anchor),"↳ [".concat(e.text,"](").concat(n,")")}(this):(!0===e.infoboxes&&!0===e.templates&&(i+=this.infoboxes().map((t=>t.markdown(e))).join("\n\n")),!0!==e.sections&&!0!==e.paragraphs&&!0!==e.sentences||(i+=n.sections().map((t=>t.markdown(e))).join("\n\n")),!0===e.references&&(i+="## References",i+=this.citations().map((t=>t.json(e))).join("\n")),i)},d=function(t){let n="";if(!0===(t=Object.assign({},e,t)).headers&&this.title()){let t="##";for(let e=0;e0&&(n+=t.map((t=>t.markdown())).join("\n"),n+="\n")}if(!0===t.tables){let e=this.tables();e.length>0&&(n+="\n",n+=e.map((e=>e.markdown(t))).join("\n"),n+="\n")}if(!0===t.lists){let e=this.lists();e.length>0&&(n+=e.map((e=>e.markdown(t))).join("\n"),n+="\n")}return!0!==t.paragraphs&&!0!==t.sentences||(n+=this.paragraphs().map((e=>e.sentences().map((e=>e.markdown(t))).join(" "))).join("\n\n")),n},f=function(t){let e="";return!0===(t=Object.assign({},n,t)).sentences&&(e+=this.sentences().reduce(((e,n)=>e+=n.markdown(t)+"\n"),{})),e},m=function(t){t=Object.assign({},a,t);let e=this.text();return!0===t.links&&this.links().forEach((t=>{let n=t.markdown(),a=t.text()||t.page();e=i(e,a,n)})),!0===t.formatting&&(this.bolds().forEach((t=>{e=i(e,t,"**"+t+"**")})),this.italics().forEach((t=>{e=i(e,t,"*"+t+"*")}))),e},u=function(){let t=this.href();return t=t.replace(/ /g,"_"),"["+(this.text()||this.page())+"]("+t+")"},g=function(){let t=this.data.file.replace(/^(file|image):/i,"");return t=t.replace(/\.(jpg|jpeg|png|gif|svg)/i,""),"!["+t+"]("+this.thumbnail()+")"},k=function(t){t=Object.assign({},o,t);let e="|"+c("",35)+"|"+c("",30)+"|\n";return e+="|"+c("---",35)+"|"+c("---",30)+"|\n",Object.keys(this.data).forEach((n=>{if(!0===r[n])return;let i="**"+n+"**",a=this.data[n].markdown(t);a=a.split(/\n/g).join(", "),e+="|"+c(i,35)+"|"+c(a,30)+" |\n"})),e},w=function(t){return this.lines().map((e=>" * "+e.markdown(t))).join("\n")},b=function(){if(this.data&&this.data.url&&this.data.title)return"⌃ [".concat(this.data.title,"](").concat(this.data.url,")");if(this.data.encyclopedia)return"⌃ ".concat(this.data.encyclopedia);if(this.data.title){let t=this.data.title;return this.data.author&&(t+=this.data.author),this.data.first&&this.data.last&&(t+=this.data.first+" "+this.data.last),"⌃ ".concat(t)}return this.inline?"⌃ ".concat(this.inline.markdown()):""},j=function(t){let e="";if(!this||0===this.length)return e;let n=this.data,i=Object.keys(n[0]),a=i.map((t=>!0===/^col[0-9]/.test(t)?"":t));return e+=h(a)+"\n",e+=h(a.map((()=>"---")))+"\n",e+=n.map((e=>{let n=i.map((n=>e[n]&&e[n].markdown(t)||""));return h(n)})).join("\n"),e+"\n"};return function(t){t.Doc.prototype.markdown=p,t.Section.prototype.markdown=d,t.Paragraph.prototype.markdown=f,t.Sentence.prototype.markdown=m,t.Link.prototype.markdown=u,t.Image.prototype.markdown=g,t.Infobox.prototype.markdown=k,t.Table.prototype.markdown=j,t.List.prototype.markdown=w,t.Reference.prototype.markdown=b}})); diff --git a/plugins/markdown/builds/wtf-plugin-markdown.mjs b/plugins/markdown/builds/wtf-plugin-markdown.mjs index c2b5b80e..ac3cd7df 100644 --- a/plugins/markdown/builds/wtf-plugin-markdown.mjs +++ b/plugins/markdown/builds/wtf-plugin-markdown.mjs @@ -1,4 +1,4 @@ -/* wtf-plugin-markdown 0.2.1 MIT */ +/* wtf-plugin-markdown 0.2.2 MIT */ const defaults$4 = { redirects: true, infoboxes: true, @@ -15,7 +15,7 @@ const softRedirect = function (doc) { href += '#' + link.anchor; } - return `↳ [${link.text}](${href})`; + return "\u21B3 [".concat(link.text, "](").concat(href, ")"); }; //turn a Doc object into a markdown string @@ -134,13 +134,12 @@ const toMarkdown$5 = function (options) { var _03Paragraph = toMarkdown$5; -//escape a string like 'fun*2.Co' for a regExpr function escapeRegExp(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); + return str.replace(/[\-[\]/{}()*+?.\\^$|]/g, '\\$&'); } //sometimes text-replacements can be ambiguous - words used multiple times.. -const smartReplace = function (all, text, result) { +const smartReplace$1 = function (all, text, result) { if (!text || !all) { return all; } @@ -164,8 +163,9 @@ const smartReplace = function (all, text, result) { return all; }; -var smartReplace_1 = smartReplace; +var smartReplace_1 = smartReplace$1; +const smartReplace = smartReplace_1; const defaults$1 = { links: true, formatting: true @@ -179,18 +179,18 @@ const toMarkdown$4 = function (options) { this.links().forEach(link => { let mdLink = link.markdown(); let str = link.text() || link.page(); - md = smartReplace_1(md, str, mdLink); + md = smartReplace(md, str, mdLink); }); } //turn bolds into **bold** if (options.formatting === true) { this.bolds().forEach(b => { - md = smartReplace_1(md, b, '**' + b + '**'); + md = smartReplace(md, b, '**' + b + '**'); }); //support *italics* this.italics().forEach(i => { - md = smartReplace_1(md, i, '*' + i + '*'); + md = smartReplace(md, i, '*' + i + '*'); }); } @@ -199,7 +199,6 @@ const toMarkdown$4 = function (options) { var _04Sentence = toMarkdown$4; -// add `[text](href)` to the text const toMarkdown$3 = function () { let href = this.href(); href = href.replace(/ /g, '_'); // href = encodeURIComponent(href) @@ -210,17 +209,15 @@ const toMarkdown$3 = function () { var _05Link = toMarkdown$3; -//markdown images are like this: ![alt text](href) const toMarkdown$2 = function () { let alt = this.data.file.replace(/^(file|image):/i, ''); alt = alt.replace(/\.(jpg|jpeg|png|gif|svg)/i, ''); return '![' + alt + '](' + this.thumbnail() + ')'; }; -var image = toMarkdown$2; +var image$1 = toMarkdown$2; -//center-pad each cell, to make the table more legible -const pad = (str, cellWidth) => { +const pad$2 = (str, cellWidth) => { str = str || ''; str = String(str); cellWidth = cellWidth || 15; @@ -238,7 +235,7 @@ const pad = (str, cellWidth) => { return str; }; -var pad_1 = pad; +var pad_1 = pad$2; const dontDo = { image: true, @@ -250,12 +247,13 @@ const dontDo = { const defaults = { images: true }; // -// render an infobox as a table with two columns, key + value + +const pad$1 = pad_1; // render an infobox as a table with two columns, key + value const doInfobox = function (options) { options = Object.assign({}, defaults, options); - let md = '|' + pad_1('', 35) + '|' + pad_1('', 30) + '|\n'; - md += '|' + pad_1('---', 35) + '|' + pad_1('---', 30) + '|\n'; //todo: render top image here (somehow) + let md = '|' + pad$1('', 35) + '|' + pad$1('', 30) + '|\n'; + md += '|' + pad$1('---', 35) + '|' + pad$1('---', 30) + '|\n'; //todo: render top image here (somehow) Object.keys(this.data).forEach(k => { if (dontDo[k] === true) { @@ -267,14 +265,13 @@ const doInfobox = function (options) { let val = s.markdown(options); //markdown is more newline-sensitive than wiki val = val.split(/\n/g).join(', '); - md += '|' + pad_1(key, 35) + '|' + pad_1(val, 30) + ' |\n'; + md += '|' + pad$1(key, 35) + '|' + pad$1(val, 30) + ' |\n'; }); return md; }; -var infobox = doInfobox; +var infobox$1 = doInfobox; -// const toMarkdown$1 = function (options) { return this.lines().map(s => { let str = s.markdown(options); @@ -282,14 +279,13 @@ const toMarkdown$1 = function (options) { }).join('\n'); }; -var list = toMarkdown$1; +var list$1 = toMarkdown$1; -// const toMarkdown = function () { if (this.data && this.data.url && this.data.title) { - return `⌃ [${this.data.title}](${this.data.url})`; + return "\u2303 [".concat(this.data.title, "](").concat(this.data.url, ")"); } else if (this.data.encyclopedia) { - return `⌃ ${this.data.encyclopedia}`; + return "\u2303 ".concat(this.data.encyclopedia); } else if (this.data.title) { //cite book, etc let str = this.data.title; @@ -302,16 +298,17 @@ const toMarkdown = function () { str += this.data.first + ' ' + this.data.last; } - return `⌃ ${str}`; + return "\u2303 ".concat(str); } else if (this.inline) { - return `⌃ ${this.inline.markdown()}`; + return "\u2303 ".concat(this.inline.markdown()); } return ''; }; -var reference = toMarkdown; +var reference$1 = toMarkdown; +const pad = pad_1; /* this is a markdown table: | Tables | Are | Cool | | ------------- |:-------------:| -----:| @@ -321,7 +318,7 @@ var reference = toMarkdown; */ const makeRow = arr => { - arr = arr.map(s => pad_1(s, 14)); + arr = arr.map(s => pad(s, 14)); return '| ' + arr.join(' | ') + ' |'; }; //markdown tables are weird @@ -363,14 +360,25 @@ const doTable = function (options) { return md + '\n'; }; -var table = doTable; +var table$1 = doTable; + +const doc = _01Doc; +const section = _02Section; +const paragraph = _03Paragraph; +const sentence = _04Sentence; +const link = _05Link; +const image = image$1; +const infobox = infobox$1; +const list = list$1; +const reference = reference$1; +const table = table$1; const plugin = function (models) { - models.Doc.prototype.markdown = _01Doc; - models.Section.prototype.markdown = _02Section; - models.Paragraph.prototype.markdown = _03Paragraph; - models.Sentence.prototype.markdown = _04Sentence; - models.Link.prototype.markdown = _05Link; + models.Doc.prototype.markdown = doc; + models.Section.prototype.markdown = section; + models.Paragraph.prototype.markdown = paragraph; + models.Sentence.prototype.markdown = sentence; + models.Link.prototype.markdown = link; models.Image.prototype.markdown = image; models.Infobox.prototype.markdown = infobox; models.Table.prototype.markdown = table; @@ -380,4 +388,4 @@ const plugin = function (models) { var src = plugin; -export default src; +export { src as default }; diff --git a/plugins/markdown/package-lock.json b/plugins/markdown/package-lock.json index 88e01202..b3efa249 100644 --- a/plugins/markdown/package-lock.json +++ b/plugins/markdown/package-lock.json @@ -9,52 +9,56 @@ "version": "0.2.1", "license": "MIT", "devDependencies": { - "@babel/core": "7.14.0", - "@babel/preset-env": "7.14.1", - "rollup": "2.47.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "4.0.0", - "rollup-plugin-node-resolve": "5.2.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", - "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", - "dev": true + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/core": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz", - "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.0", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helpers": "^7.14.0", - "@babel/parser": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -71,84 +75,102 @@ } }, "node_modules/@babel/generator": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", - "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "dependencies": { - "@babel/types": "^7.14.1", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", - "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.15", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.1.tgz", - "integrity": "sha512-r8rsUahG4ywm0QpGcCrLaUSOuNAISR3IZCg4Fx05Ozq31aCUrQsTLH6KPxy0N5ULoQ4Sn9qjNdGNtbPWAC6hYg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", - "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -165,193 +187,249 @@ } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "dependencies": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", - "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", - "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", - "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -360,217 +438,278 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz", - "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz", - "integrity": "sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-class-static-block": "^7.12.13" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.12.0" } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz", - "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-create-class-features-plugin": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-private-property-in-object": "^7.14.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=4" @@ -604,12 +743,15 @@ } }, "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz", - "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -724,466 +866,569 @@ } }, "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz", - "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz", - "integrity": "sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.13.17", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz", - "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz", - "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", - "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", - "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", - "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.1.tgz", - "integrity": "sha512-0M4yL1l7V4l+j/UHvxcdvNfLB9pPtIooHTbEhgD/6UGyh8Hy3Bm1Mj0buzjDXATCSz3JFibVdnoJZCrlUCanrQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.14.0", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.15", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-class-static-block": "^7.13.11", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-private-property-in-object": "^7.14.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -1193,111 +1438,226 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.0", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.14.1", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.17", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.14.0", - "@babel/plugin-transform-modules-commonjs": "^7.14.0", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.14.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.13.15", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.14.1", - "babel-plugin-polyfill-corejs2": "^0.2.0", - "babel-plugin-polyfill-corejs3": "^0.2.0", - "babel-plugin-polyfill-regenerator": "^0.2.0", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/runtime": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", - "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.4" + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } } }, - "node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "node_modules/@rollup/plugin-babel/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, - "node_modules/@babel/traverse": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", - "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", + "node_modules/@rollup/plugin-babel/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.14.0", - "@babel/types": "^7.14.0", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" } }, - "node_modules/@babel/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", - "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.14.0", - "to-fast-properties": "^2.0.0" + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "node_modules/@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -1310,15 +1670,6 @@ "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==", "dev": true }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1362,13 +1713,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", - "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "dependencies": { "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.0", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" }, "peerDependencies": { @@ -1376,25 +1727,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", - "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.0", - "core-js-compat": "^3.9.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", - "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.0" + "@babel/helper-define-polyfill-provider": "^0.3.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1417,16 +1768,16 @@ } }, "node_modules/browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" @@ -1445,21 +1796,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "node_modules/buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "node_modules/builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -1474,9 +1810,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001228", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", - "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true, "funding": { "type": "opencollective", @@ -1513,9 +1849,9 @@ "dev": true }, "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "node_modules/commander": { @@ -1524,6 +1860,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1540,12 +1882,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.12.1.tgz", - "integrity": "sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "dependencies": { - "browserslist": "^4.16.6", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "funding": { @@ -1563,9 +1905,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/debug": { @@ -1643,33 +1985,37 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.727", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz", - "integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -1738,12 +2084,6 @@ "node": ">=0.8.0" } }, - "node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1817,10 +2157,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -1832,6 +2197,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { @@ -1864,6 +2232,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1885,6 +2265,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1901,6 +2296,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -1941,9 +2350,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true, "engines": { "node": ">= 0.4" @@ -1985,12 +2394,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, "node_modules/is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -2016,22 +2419,22 @@ } }, "node_modules/is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "dependencies": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -2049,11 +2452,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2104,6 +2519,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -2233,15 +2660,15 @@ "dev": true }, "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2309,15 +2736,33 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "node_modules/randombytes": { @@ -2330,23 +2775,23 @@ } }, "node_modules/re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "node_modules/readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -2357,21 +2802,21 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "dependencies": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" }, "engines": { "node": ">=4" } }, "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "node_modules/regenerator-transform": { @@ -2400,17 +2845,17 @@ } }, "node_modules/regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" @@ -2423,9 +2868,9 @@ "dev": true }, "node_modules/regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -2444,12 +2889,16 @@ } }, "node_modules/resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "dependencies": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resumer": { @@ -2462,9 +2911,9 @@ } }, "node_modules/rollup": { - "version": "2.47.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.47.0.tgz", - "integrity": "sha512-rqBjgq9hQfW0vRmz+0S062ORRNJXvwRpzxhFXORvar/maZqY6za3rgQ/p1Glg+j1hnc1GtYyQCPiAei95uTElg==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2473,30 +2922,7 @@ "node": ">=10.0.0" }, "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "node_modules/rollup-plugin-filesize-check": { @@ -2505,28 +2931,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "node_modules/rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "dependencies": { - "rollup-pluginutils": "^2.5.0" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "dependencies": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -2539,15 +2943,6 @@ "terser": "^5.0.0" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2621,9 +3016,9 @@ "dev": true }, "node_modules/split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "dependencies": { "through": "2" @@ -2633,23 +3028,23 @@ } }, "node_modules/string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" }, "engines": { "node": ">= 0.4" @@ -2697,101 +3092,40 @@ } }, "node_modules/tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "dependencies": { - "chalk": "4.1.0", - "tap-out": "3.0.0" + "colorette": "^1.2.2", + "tap-in": "3.2.1" }, "bin": { "tap-dancer": "src/index.js" } }, - "node_modules/tap-dancer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tap-dancer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/tap-dancer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/tap-dancer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "bin": { + "tap-in": "bin/tap-in.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", - "dev": true, - "dependencies": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" - }, - "bin": { - "tap-out": "bin/cmd.js" + "node": ">=8.0.0" } }, "node_modules/tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", @@ -2799,17 +3133,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "bin": { @@ -2871,9 +3207,9 @@ } }, "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "node_modules/unbox-primitive": { @@ -2892,40 +3228,40 @@ } }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, "engines": { "node": ">=4" @@ -3010,35 +3346,35 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" } }, "@babel/compat-data": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", - "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true }, "@babel/core": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz", - "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.0", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helpers": "^7.14.0", - "@babel/parser": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -3048,75 +3384,75 @@ } }, "@babel/generator": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", - "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.14.1", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-compilation-targets": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", - "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.15", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.1.tgz", - "integrity": "sha512-r8rsUahG4ywm0QpGcCrLaUSOuNAISR3IZCg4Fx05Ozq31aCUrQsTLH6KPxy0N5ULoQ4Sn9qjNdGNtbPWAC6hYg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", - "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -3130,361 +3466,370 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", - "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helpers": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", - "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", - "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz", - "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz", - "integrity": "sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-class-static-block": "^7.12.13" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz", - "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-create-class-features-plugin": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-private-property-in-object": "^7.14.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { @@ -3506,12 +3851,12 @@ } }, "@babel/plugin-syntax-class-static-block": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz", - "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-dynamic-import": { @@ -3596,364 +3941,365 @@ } }, "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz", - "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz", - "integrity": "sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.17", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz", - "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz", - "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", - "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", - "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", - "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.1.tgz", - "integrity": "sha512-0M4yL1l7V4l+j/UHvxcdvNfLB9pPtIooHTbEhgD/6UGyh8Hy3Bm1Mj0buzjDXATCSz3JFibVdnoJZCrlUCanrQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.14.0", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.15", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-class-static-block": "^7.13.11", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-private-property-in-object": "^7.14.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -3963,53 +4309,53 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.0", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.14.1", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.17", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.14.0", - "@babel/plugin-transform-modules-commonjs": "^7.14.0", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.14.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.13.15", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.14.1", - "babel-plugin-polyfill-corejs2": "^0.2.0", - "babel-plugin-polyfill-corejs3": "^0.2.0", - "babel-plugin-polyfill-regenerator": "^0.2.0", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" } }, "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -4020,51 +4366,123 @@ } }, "@babel/runtime": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", - "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", - "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.14.0", - "@babel/types": "^7.14.0", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", - "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.0", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, "@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -4077,15 +4495,6 @@ "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==", "dev": true }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -4120,33 +4529,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", - "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "requires": { "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.0", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", - "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.0", - "core-js-compat": "^3.9.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", - "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.0" + "@babel/helper-define-polyfill-provider": "^0.3.0" } }, "balanced-match": { @@ -4166,16 +4575,16 @@ } }, "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "buffer-from": { @@ -4184,18 +4593,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true - }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -4207,9 +4604,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001228", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", - "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true }, "chalk": { @@ -4239,9 +4636,9 @@ "dev": true }, "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "commander": { @@ -4250,6 +4647,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -4266,12 +4669,12 @@ } }, "core-js-compat": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.12.1.tgz", - "integrity": "sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "requires": { - "browserslist": "^4.16.6", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "dependencies": { @@ -4284,9 +4687,9 @@ } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "debug": { @@ -4354,33 +4757,37 @@ } }, "electron-to-chromium": { - "version": "1.3.727", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz", - "integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" } }, "es-get-iterator": { @@ -4430,12 +4837,6 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4493,10 +4894,26 @@ "has-symbols": "^1.0.1" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4528,6 +4945,15 @@ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, + "has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -4540,6 +4966,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4556,6 +4991,17 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -4581,9 +5027,9 @@ } }, "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-core-module": { @@ -4607,12 +5053,6 @@ "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -4626,22 +5066,22 @@ "dev": true }, "is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "requires": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" } }, "is-set": { @@ -4650,12 +5090,21 @@ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -4684,6 +5133,15 @@ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -4788,15 +5246,15 @@ "dev": true }, "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true }, "object-is": { @@ -4843,15 +5301,27 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "randombytes": { @@ -4864,23 +5334,23 @@ } }, "re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -4891,18 +5361,18 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "regenerator-transform": { @@ -4925,17 +5395,17 @@ } }, "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { @@ -4945,9 +5415,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -4962,11 +5432,12 @@ } }, "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -4980,35 +5451,12 @@ } }, "rollup": { - "version": "2.47.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.47.0.tgz", - "integrity": "sha512-rqBjgq9hQfW0vRmz+0S062ORRNJXvwRpzxhFXORvar/maZqY6za3rgQ/p1Glg+j1hnc1GtYyQCPiAei95uTElg==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "rollup-plugin-filesize-check": { @@ -5017,28 +5465,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "requires": { - "rollup-pluginutils": "^2.5.0" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -5051,15 +5477,6 @@ "terser": "^5.0.0" } }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -5123,32 +5540,32 @@ "dev": true }, "split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "string.prototype.trimend": { @@ -5181,82 +5598,31 @@ } }, "tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "requires": { - "chalk": "4.1.0", - "tap-out": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "colorette": "^1.2.2", + "tap-in": "3.2.1" } }, - "tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", + "tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "requires": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" } }, "tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -5264,17 +5630,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "dependencies": { @@ -5322,9 +5690,9 @@ "dev": true }, "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "unbox-primitive": { @@ -5340,31 +5708,31 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "util-deprecate": { diff --git a/plugins/markdown/package.json b/plugins/markdown/package.json index b7432006..a27b52a5 100644 --- a/plugins/markdown/package.json +++ b/plugins/markdown/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-markdown", "description": "markdown plugin for wtf_wikipedia", - "version": "0.2.1", + "version": "0.2.2", "main": "./builds/wtf-plugin-markdown.js", "unpkg": "./builds/wtf-plugin-markdown.min.js", "module": "./builds/wtf-plugin-markdown.mjs", @@ -31,17 +31,15 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.14.0", - "@babel/preset-env": "7.14.1", - "rollup": "2.47.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "4.0.0", - "rollup-plugin-node-resolve": "5.2.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "license": "MIT" -} +} \ No newline at end of file diff --git a/plugins/markdown/rollup.config.js b/plugins/markdown/rollup.config.js index 39621916..2359a669 100644 --- a/plugins/markdown/rollup.config.js +++ b/plugins/markdown/rollup.config.js @@ -1,6 +1,6 @@ -import commonjs from 'rollup-plugin-commonjs' +import commonjs from '@rollup/plugin-commonjs' import { terser } from 'rollup-plugin-terser' -import babel from 'rollup-plugin-babel' +import { babel } from '@rollup/plugin-babel' import sizeCheck from 'rollup-plugin-filesize-check' import { version } from './package.json' @@ -16,6 +16,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -37,6 +38,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -57,6 +59,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }), diff --git a/plugins/person/builds/wtf-plugin-person.js b/plugins/person/builds/wtf-plugin-person.js index 19c3cafd..f49216d3 100644 --- a/plugins/person/builds/wtf-plugin-person.js +++ b/plugins/person/builds/wtf-plugin-person.js @@ -1,5007 +1,2687 @@ -/* wtf-plugin-person 0.2.0 MIT */ +/* wtf-plugin-person 0.2.1 MIT */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfPerson = factory()); -}(this, (function () { 'use strict'; - - // from ./plugins/classify/infobox, April 15 2020 - // https://en.wikipedia.org/wiki/Category:People_and_person_infobox_templates - var _infoboxes = { - actor: true, - adult_biography: true, - afl_biography: true, - alpine_ski_racer: true, - archbishop: true, - architect: true, - artist: true, - athlete: true, - baseball_biography: true, - basketball_biography: true, - boxer: true, - canadianmp: true, - cfl_player: true, - chef: true, - chess_player: true, - christian_leader: true, - college_coach: true, - college_football_player: true, - comedian: true, - comics_creator: true, - cricketer: true, - criminal: true, - cyclist: true, - economist: true, - engineer: true, - fashion_designer: true, - field_hockey_player: true, - figure_skater: true, - football_biography: true, - gaa_player: true, - golfer: true, - governor: true, - gridiron_football_person: true, - gymnast: true, - handball_biography: true, - hindu_leader: true, - horseracing_personality: true, - ice_hockey_player: true, - indian_politician: true, - judge: true, - lacrosse_player: true, - martial_artist: true, - mass_murderer: true, - medical_person: true, - military_person: true, - minister: true, - mlb_player: true, - model: true, - monarch: true, - mp: true, - nascar_driver: true, - nba_biography: true, - nfl_biography: true, - nfl_player: true, - officeholder: true, - person: true, - philosopher: true, - police_officer: true, - politician: true, - 'politician_(general)': true, - presenter: true, - president: true, - professional_wrestler: true, - racing_driver: true, - religious_biography: true, - roman_emperor: true, - royalty: true, - rugby_biography: true, - rugby_league_biography: true, - saint: true, - scholar: true, - scientist: true, - skier: true, - sportsperson: true, - squash_player: true, - state_representative: true, - state_senator: true, - swimmer: true, - tennis_biography: true, - volleyball_biography: true, - volleyball_player: true, - wrc_driver: true, - writer: true, - 'hockey team player': true, - 'snooker player': true, - bishop: true, - 'football biography': true, - 'military person': true, - 'baseball biography': true, - 'ice hockey player': true, - 'nfl player': true, - 'christian leader': true, - congressman: true, - 'basketball biography': true, - 'comics creator': true, - 'professional wrestler': true, - 'college coach': true, - 'tennis biography': true, - 'afl biography': true, - 'nfl biography': true, - 'rugby biography': true, - 'rugby league biography': true, - 'prime minister': true, - 'nba biography': true, - 'figure skater': true, - 'f1 driver': true, - 'gridiron football person': true, - 'indian politician': true, - 'racing driver': true, - 'martial artist': true, - 'chinese-language singer and actor': true, - astronaut: true, - senator: true, - 'nascar driver': true, - 'adult biography': true, - 'state representative': true, - 'state senator': true, - 'coa wide': true, - 'religious biography': true, - 'chess player': true, - 'pageant titleholder': true, - 'gaa player': true, - 'us cabinet official': true - }; - - const byInfobox = function (doc, prop) { - let infoboxes = doc.infoboxes(); - - for (let i = 0; i < infoboxes.length; i++) { - let inf = infoboxes[i]; - let type = inf.type(); - type = type.toLowerCase(); - type = type.trim(); - - if (_infoboxes.hasOwnProperty(type)) { - let s = inf.get(prop); - - if (s) { - return s.text(); - } - } - } - - return null; - }; - - var getInfobox = byInfobox; - - /* spencermountain/spacetime 6.14.0 Apache 2.0 */ - function _typeof(obj) { - "@babel/helpers - typeof"; - - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function (obj) { - return typeof obj; - }; - } else { - _typeof = function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - - return _typeof(obj); - } - - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - - return _arr; - } - - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - - return arr2; - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - var MSEC_IN_HOUR = 60 * 60 * 1000; //convert our local date syntax a javascript UTC date - - var toUtc = function toUtc(dstChange, offset, year) { - var _dstChange$split = dstChange.split('/'), - _dstChange$split2 = _slicedToArray(_dstChange$split, 2), - month = _dstChange$split2[0], - rest = _dstChange$split2[1]; - - var _rest$split = rest.split(':'), - _rest$split2 = _slicedToArray(_rest$split, 2), - day = _rest$split2[0], - hour = _rest$split2[1]; - - return Date.UTC(year, month - 1, day, hour) - offset * MSEC_IN_HOUR; - }; // compare epoch with dst change events (in utc) - - - var inSummerTime = function inSummerTime(epoch, start, end, summerOffset, winterOffset) { - var year = new Date(epoch).getUTCFullYear(); - var startUtc = toUtc(start, winterOffset, year); - var endUtc = toUtc(end, summerOffset, year); // simple number comparison now - - return epoch >= startUtc && epoch < endUtc; - }; - - var summerTime = inSummerTime; // it reproduces some things in ./index.js, but speeds up spacetime considerably - - var quickOffset = function quickOffset(s) { - var zones = s.timezones; - var obj = zones[s.tz]; - - if (obj === undefined) { - console.warn("Warning: couldn't find timezone " + s.tz); - return 0; - } - - if (obj.dst === undefined) { - return obj.offset; - } //get our two possible offsets - - - var jul = obj.offset; - var dec = obj.offset + 1; // assume it's the same for now - - if (obj.hem === 'n') { - dec = jul - 1; - } - - var split = obj.dst.split('->'); - var inSummer = summerTime(s.epoch, split[0], split[1], jul, dec); - - if (inSummer === true) { - return jul; - } - - return dec; - }; - - var quick = quickOffset; - var _build = { - "9|s": "2/dili,2/jayapura", - "9|n": "2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau", - "9.5|s|04/04:03->10/03:02": "4/adelaide,4/broken_hill,4/south,4/yancowinna", - "9.5|s": "4/darwin,4/north", - "8|s|03/08:01->10/04:00": "12/casey", - "8|s": "2/kuala_lumpur,2/makassar,2/singapore,4/perth,2/ujung_pandang,4/west", - "8|n": "2/brunei,2/choibalsan,2/hong_kong,2/irkutsk,2/kuching,2/macau,2/manila,2/shanghai,2/taipei,2/ulaanbaatar,2/chongqing,2/chungking,2/harbin,2/macao,2/ulan_bator", - "8.75|s": "4/eucla", - "7|s": "12/davis,2/jakarta,9/christmas", - "7|n": "2/bangkok,2/barnaul,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane,2/ho_chi_minh", - "6|s": "12/vostok", - "6|n": "2/almaty,2/bishkek,2/dhaka,2/omsk,2/qyzylorda,2/qostanay,2/thimphu,2/urumqi,9/chagos,2/dacca,2/kashgar,2/thimbu", - "6.5|n": "2/rangoon,9/cocos,2/yangon", - "5|s": "12/mawson,9/kerguelen", - "5|n": "2/aqtau,2/aqtobe,2/ashgabat,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives,2/ashkhabad", - "5.75|n": "2/katmandu,2/kathmandu", - "5.5|n": "2/calcutta,2/colombo,2/kolkata", - "4|s": "9/reunion", - "4|n": "2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius", - "4.5|n|03/22:00->09/21:24": "2/tehran", - "4.5|n": "2/kabul", - "3|s": "12/syowa,9/antananarivo", - "3|n|03/28:03->10/31:04": "2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye,8/nicosia", - "3|n|03/28:02->10/31:03": "8/chisinau,8/tiraspol", - "3|n|03/28:00->10/30:24": "2/beirut", - "3|n|03/27:00->10/30:01": "2/gaza,2/hebron", - "3|n|03/26:02->10/31:02": "2/jerusalem,2/tel_aviv", - "3|n|03/26:00->10/29:01": "2/amman", - "3|n|03/26:00->10/28:24": "2/damascus", - "3|n": "0/addis_ababa,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte,0/asmara,2/istanbul", - "2|s|03/28:02->10/31:02": "12/troll", - "2|s": "0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane", - "2|n|03/28:02->10/31:03": "0/ceuta,arctic/longyearbyen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich,3/jan_mayen", - "2|n": "0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad", - "1|s": "0/brazzaville,0/kinshasa,0/luanda,0/windhoek", - "1|n|04/11:03->05/16:02": "0/casablanca,0/el_aaiun", - "1|n|03/28:01->10/31:02": "3/canary,3/faeroe,3/madeira,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london,3/faroe,8/belfast", - "1|n": "0/algiers,0/bangui,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis", - "14|n": "11/kiritimati", - "13|s|04/04:04->09/26:03": "11/apia", - "13|s|01/15:02->11/05:03": "11/tongatapu", - "13|n": "11/enderbury,11/fakaofo", - "12|s|04/04:03->09/26:02": "12/mcmurdo,11/auckland,12/south_pole", - "12|s|01/17:03->11/14:02": "11/fiji", - "12|n": "2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis", - "12.75|s|04/04:03->04/04:02": "11/chatham", - "11|s|04/04:03->10/03:02": "12/macquarie", - "11|s": "11/bougainville", - "11|n": "2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/ponape,11/pohnpei", - "11.5|n|04/04:03->10/03:02": "11/norfolk", - "10|s|04/04:03->10/03:02": "4/currie,4/hobart,4/melbourne,4/sydney,4/act,4/canberra,4/nsw,4/tasmania,4/victoria", - "10|s": "12/dumontdurville,4/brisbane,4/lindeman,11/port_moresby,4/queensland", - "10|n": "2/ust-nera,2/vladivostok,2/yakutsk,11/guam,11/saipan,11/truk,11/chuuk,11/yap", - "10.5|s|04/04:01->10/03:02": "4/lord_howe,4/lhi", - "0|n|03/28:00->10/31:01": "1/scoresbysund,3/azores", - "0|n": "0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/utc,0/timbuktu,13/gmt-0,13/gmt+0,13/gmt0,13/greenwich,13/uct,13/universal,13/zulu", - "-9|n|03/14:02->11/07:02": "1/adak,1/atka,us/aleutian", - "-9|n": "11/gambier", - "-9.5|n": "11/marquesas", - "-8|n|03/14:02->11/07:02": "1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat,us/alaska", - "-8|n": "11/pitcairn", - "-7|n|03/14:02->11/07:02": "1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/ensenada,6/pacific,10/bajanorte,us/pacific-new,us/pacific", - "-7|n|03/08:02->11/01:01": "1/dawson,1/whitehorse,6/yukon", - "-7|n": "1/creston,1/dawson_creek,1/fort_nelson,1/hermosillo,1/phoenix,us/arizona", - "-6|s|04/03:22->09/04:22": "11/easter,7/easterisland", - "-6|n|04/04:02->10/31:02": "1/chihuahua,1/mazatlan,10/bajasur", - "-6|n|03/14:02->11/07:02": "1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/yellowknife,1/shiprock,6/mountain,us/mountain", - "-6|n": "1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,11/galapagos,6/east-saskatchewan,6/saskatchewan", - "-5|s": "1/lima,1/rio_branco,1/porto_acre,5/acre", - "-5|n|04/04:02->10/31:02": "1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general", - "-5|n|03/14:02->11/07:02": "1/chicago,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,1/indiana/knox,1/indiana/tell_city,1/north_dakota/beulah,1/north_dakota/center,1/north_dakota/new_salem,1/knox_in,6/central,us/central,us/indiana-starke", - "-5|n|03/12:03->11/05:01": "1/north_dakota", - "-5|n": "1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/atikokan", - "-4|s|05/13:23->08/13:01": "12/palmer", - "-4|s|04/03:24->09/05:00": "1/santiago,7/continental", - "-4|s|03/27:24->10/03:00": "1/asuncion", - "-4|s|02/16:24->11/03:00": "1/campo_grande,1/cuiaba", - "-4|s": "1/la_paz,1/manaus,5/west", - "-4|n|03/14:02->11/07:02": "1/detroit,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,1/indiana/marengo,1/indiana/petersburg,1/indiana/vevay,1/indiana/vincennes,1/indiana/winamac,1/kentucky/monticello,1/fort_wayne,1/indiana/indianapolis,1/kentucky/louisville,6/eastern,us/east-indiana,us/eastern,us/michigan", - "-4|n|03/14:00->11/07:01": "1/havana", - "-4|n|03/12:03->11/05:01": "1/indiana,1/kentucky", - "-4|n": "1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin", - "-3|s": "1/argentina,1/buenos_aires,1/catamarca,1/cordoba,1/fortaleza,1/jujuy,1/mendoza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,1/argentina/la_rioja,1/argentina/rio_gallegos,1/argentina/salta,1/argentina/san_juan,1/argentina/san_luis,1/argentina/tucuman,1/argentina/ushuaia,1/argentina/buenos_aires,1/argentina/catamarca,1/argentina/comodrivadavia,1/argentina/cordoba,1/argentina/jujuy,1/argentina/mendoza,1/rosario,5/east", - "-3|n|03/14:02->11/07:02": "1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic", - "-3|n": "1/araguaina,1/bahia,1/belem,1/cayenne,1/maceio,1/paramaribo,1/recife,1/santarem", - "-2|n|03/27:22->10/30:23": "1/godthab,1/nuuk", - "-2|n|03/14:02->11/07:02": "1/miquelon", - "-2|n": "1/noronha,3/south_georgia,5/denoronha", - "-2.5|n|03/14:02->11/07:02": "1/st_johns,6/newfoundland", - "-1|n": "3/cape_verde", - "-11|n": "11/midway,11/niue,11/pago_pago,11/samoa,us/samoa", - "-10|n": "11/honolulu,11/johnston,11/rarotonga,11/tahiti,us/hawaii" - }; - - var _build$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': _build - }); //prefixes for iana names.. - - - var _prefixes = ['africa', 'america', 'asia', 'atlantic', 'australia', 'brazil', 'canada', 'chile', 'europe', 'indian', 'mexico', 'pacific', 'antarctica', 'etc']; - - function createCommonjsModule(fn, module) { - return module = { - exports: {} - }, fn(module, module.exports), module.exports; - } - - function getCjsExportFromNamespace$1(n) { - return n && n['default'] || n; - } - - var data = getCjsExportFromNamespace$1(_build$1); - var all = {}; - Object.keys(data).forEach(function (k) { - var split = k.split('|'); - var obj = { - offset: Number(split[0]), - hem: split[1] - }; - - if (split[2]) { - obj.dst = split[2]; - } - - var names = data[k].split(','); - names.forEach(function (str) { - str = str.replace(/(^[0-9]+)\//, function (before, num) { - num = Number(num); - return _prefixes[num] + '/'; - }); - all[str] = obj; - }); - }); - all['utc'] = { - offset: 0, - hem: 'n' //default to northern hemisphere - (sorry!) - - }; //add etc/gmt+n - - for (var i = -14; i <= 14; i += 0.5) { - var num = i; - - if (num > 0) { - num = '+' + num; - } - - var name = 'etc/gmt' + num; - all[name] = { - offset: i * -1, - //they're negative! - hem: 'n' //(sorry) - - }; - name = 'utc/gmt' + num; //this one too, why not. - - all[name] = { - offset: i * -1, - hem: 'n' - }; - } - - var unpack = all; //find the implicit iana code for this machine. - //safely query the Intl object - //based on - https://bitbucket.org/pellepim/jstimezonedetect/src - - var fallbackTZ = 'utc'; // - //this Intl object is not supported often, yet - - var safeIntl = function safeIntl() { - if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') { - return null; - } - - var format = Intl.DateTimeFormat(); - - if (typeof format === 'undefined' || typeof format.resolvedOptions === 'undefined') { - return null; - } + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfPerson = factory()); +})(this, (function () { 'use strict'; + + function getDefaultExportFromNamespaceIfNotNamed (n) { + return n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n; + } + + // https://en.wikipedia.org/wiki/Category:People_and_person_infobox_templates + + var _infoboxes = { + actor: true, + adult_biography: true, + afl_biography: true, + alpine_ski_racer: true, + archbishop: true, + architect: true, + artist: true, + athlete: true, + baseball_biography: true, + basketball_biography: true, + boxer: true, + canadianmp: true, + cfl_player: true, + chef: true, + chess_player: true, + christian_leader: true, + college_coach: true, + college_football_player: true, + comedian: true, + comics_creator: true, + cricketer: true, + criminal: true, + cyclist: true, + economist: true, + engineer: true, + fashion_designer: true, + field_hockey_player: true, + figure_skater: true, + football_biography: true, + gaa_player: true, + golfer: true, + governor: true, + gridiron_football_person: true, + gymnast: true, + handball_biography: true, + hindu_leader: true, + horseracing_personality: true, + ice_hockey_player: true, + indian_politician: true, + judge: true, + lacrosse_player: true, + martial_artist: true, + mass_murderer: true, + medical_person: true, + military_person: true, + minister: true, + mlb_player: true, + model: true, + monarch: true, + mp: true, + nascar_driver: true, + nba_biography: true, + nfl_biography: true, + nfl_player: true, + officeholder: true, + person: true, + philosopher: true, + police_officer: true, + politician: true, + 'politician_(general)': true, + presenter: true, + president: true, + professional_wrestler: true, + racing_driver: true, + religious_biography: true, + roman_emperor: true, + royalty: true, + rugby_biography: true, + rugby_league_biography: true, + saint: true, + scholar: true, + scientist: true, + skier: true, + sportsperson: true, + squash_player: true, + state_representative: true, + state_senator: true, + swimmer: true, + tennis_biography: true, + volleyball_biography: true, + volleyball_player: true, + wrc_driver: true, + writer: true, + 'hockey team player': true, + 'snooker player': true, + bishop: true, + 'football biography': true, + 'military person': true, + 'baseball biography': true, + 'ice hockey player': true, + 'nfl player': true, + 'christian leader': true, + congressman: true, + 'basketball biography': true, + 'comics creator': true, + 'professional wrestler': true, + 'college coach': true, + 'tennis biography': true, + 'afl biography': true, + 'nfl biography': true, + 'rugby biography': true, + 'rugby league biography': true, + 'prime minister': true, + 'nba biography': true, + 'figure skater': true, + 'f1 driver': true, + 'gridiron football person': true, + 'indian politician': true, + 'racing driver': true, + 'martial artist': true, + 'chinese-language singer and actor': true, + astronaut: true, + senator: true, + 'nascar driver': true, + 'adult biography': true, + 'state representative': true, + 'state senator': true, + 'coa wide': true, + 'religious biography': true, + 'chess player': true, + 'pageant titleholder': true, + 'gaa player': true, + 'us cabinet official': true + }; + + const mapping = _infoboxes; + + const byInfobox$5 = function (doc, prop) { + let infoboxes = doc.infoboxes(); + + for (let i = 0; i < infoboxes.length; i++) { + let inf = infoboxes[i]; + let type = inf.type(); + type = type.toLowerCase(); + type = type.trim(); + + if (mapping.hasOwnProperty(type)) { + let s = inf.get(prop); + + if (s) { + return s.text(); + } + } + } + + return null; + }; + + var getInfobox = byInfobox$5; + + const e = (e, t, a) => { + const [n, r] = e.split("/"), + [o, i] = r.split(":"); + return Date.UTC(a, n - 1, o, i) - 36e5 * t; + }; + + var t = (t, a, n, r, o) => { + const i = new Date(t).getUTCFullYear(), + s = e(a, o, i), + u = e(n, r, i); + return t >= s && t < u; + }; + + var a = e => { + let a = e.timezones[e.tz]; + if (void 0 === a) return console.warn("Warning: couldn't find timezone " + e.tz), 0; + if (void 0 === a.dst) return a.offset; + let n = a.offset, + r = a.offset + 1; + "n" === a.hem && (r = n - 1); + let o = a.dst.split("->"); + return !0 === t(e.epoch, o[0], o[1], n, r) ? n : r; + }; + + var n, + r = (n = Object.freeze({ + __proto__: null, + default: { + "9|s": "2/dili,2/jayapura", + "9|n": "2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau", + "9.5|s|04/04:03->10/03:02": "4/adelaide,4/broken_hill,4/south,4/yancowinna", + "9.5|s": "4/darwin,4/north", + "8|s|03/08:01->10/04:00": "12/casey", + "8|s": "2/kuala_lumpur,2/makassar,2/singapore,4/perth,2/ujung_pandang,4/west", + "8|n": "2/brunei,2/choibalsan,2/hong_kong,2/irkutsk,2/kuching,2/macau,2/manila,2/shanghai,2/taipei,2/ulaanbaatar,2/chongqing,2/chungking,2/harbin,2/macao,2/ulan_bator", + "8.75|s": "4/eucla", + "7|s": "12/davis,2/jakarta,9/christmas", + "7|n": "2/bangkok,2/barnaul,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane,2/ho_chi_minh", + "6|s": "12/vostok", + "6|n": "2/almaty,2/bishkek,2/dhaka,2/omsk,2/qyzylorda,2/qostanay,2/thimphu,2/urumqi,9/chagos,2/dacca,2/kashgar,2/thimbu", + "6.5|n": "2/rangoon,9/cocos,2/yangon", + "5|s": "12/mawson,9/kerguelen", + "5|n": "2/aqtau,2/aqtobe,2/ashgabat,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives,2/ashkhabad", + "5.75|n": "2/katmandu,2/kathmandu", + "5.5|n": "2/calcutta,2/colombo,2/kolkata", + "4|s": "9/reunion", + "4|n": "2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius", + "4.5|n|03/22:00->09/21:24": "2/tehran", + "4.5|n": "2/kabul", + "3|s": "12/syowa,9/antananarivo", + "3|n|03/28:03->10/31:04": "2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye,8/nicosia", + "3|n|03/28:02->10/31:03": "8/chisinau,8/tiraspol", + "3|n|03/28:00->10/30:24": "2/beirut", + "3|n|03/27:00->10/30:01": "2/gaza,2/hebron", + "3|n|03/26:02->10/31:02": "2/jerusalem,2/tel_aviv", + "3|n|03/26:00->10/29:01": "2/amman", + "3|n|03/26:00->10/28:24": "2/damascus", + "3|n": "0/addis_ababa,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte,0/asmara,2/istanbul", + "2|s|03/28:02->10/31:02": "12/troll", + "2|s": "0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane", + "2|n|03/28:02->10/31:03": "0/ceuta,arctic/longyearbyen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich,3/jan_mayen", + "2|n": "0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad", + "1|s": "0/brazzaville,0/kinshasa,0/luanda,0/windhoek", + "1|n|04/11:03->05/16:02": "0/casablanca,0/el_aaiun", + "1|n|03/28:01->10/31:02": "3/canary,3/faeroe,3/madeira,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london,3/faroe,8/belfast", + "1|n": "0/algiers,0/bangui,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis", + "14|n": "11/kiritimati", + "13|s|04/04:04->09/26:03": "11/apia", + "13|s|01/15:02->11/05:03": "11/tongatapu", + "13|n": "11/enderbury,11/fakaofo", + "12|s|04/04:03->09/26:02": "12/mcmurdo,11/auckland,12/south_pole", + "12|s|01/17:03->11/14:02": "11/fiji", + "12|n": "2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis", + "12.75|s|04/04:03->09/26:02": "11/chatham", + "11|s|04/04:03->10/03:02": "12/macquarie", + "11|s": "11/bougainville", + "11|n": "2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/ponape,11/pohnpei", + "11.5|n|04/04:03->10/03:02": "11/norfolk", + "10|s|04/04:03->10/03:02": "4/currie,4/hobart,4/melbourne,4/sydney,4/act,4/canberra,4/nsw,4/tasmania,4/victoria", + "10|s": "12/dumontdurville,4/brisbane,4/lindeman,11/port_moresby,4/queensland", + "10|n": "2/ust-nera,2/vladivostok,2/yakutsk,11/guam,11/saipan,11/truk,11/chuuk,11/yap", + "10.5|s|04/04:01->10/03:02": "4/lord_howe,4/lhi", + "0|n|03/28:00->10/31:01": "1/scoresbysund,3/azores", + "0|n": "0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/utc,0/timbuktu,13/gmt-0,13/gmt+0,13/gmt0,13/greenwich,13/uct,13/universal,13/zulu", + "-9|n|03/14:02->11/07:02": "1/adak,1/atka,us/aleutian", + "-9|n": "11/gambier", + "-9.5|n": "11/marquesas", + "-8|n|03/14:02->11/07:02": "1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat,us/alaska", + "-8|n": "11/pitcairn", + "-7|n|03/14:02->11/07:02": "1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/ensenada,6/pacific,10/bajanorte,us/pacific-new,us/pacific", + "-7|n|03/08:02->11/01:01": "1/dawson,1/whitehorse,6/yukon", + "-7|n": "1/creston,1/dawson_creek,1/fort_nelson,1/hermosillo,1/phoenix,us/arizona", + "-6|s|04/03:22->09/04:22": "11/easter,7/easterisland", + "-6|n|04/04:02->10/31:02": "1/chihuahua,1/mazatlan,10/bajasur", + "-6|n|03/14:02->11/07:02": "1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/yellowknife,1/shiprock,6/mountain,us/mountain", + "-6|n": "1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,11/galapagos,6/east-saskatchewan,6/saskatchewan", + "-5|s": "1/lima,1/rio_branco,1/porto_acre,5/acre", + "-5|n|04/04:02->10/31:02": "1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general", + "-5|n|03/14:02->11/07:02": "1/chicago,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,1/indiana/knox,1/indiana/tell_city,1/north_dakota/beulah,1/north_dakota/center,1/north_dakota/new_salem,1/knox_in,6/central,us/central,us/indiana-starke", + "-5|n|03/12:03->11/05:01": "1/north_dakota", + "-5|n": "1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/atikokan", + "-4|s|05/13:23->08/13:01": "12/palmer", + "-4|s|04/03:24->09/05:00": "1/santiago,7/continental", + "-4|s|03/27:24->10/03:00": "1/asuncion", + "-4|s|02/16:24->11/03:00": "1/campo_grande,1/cuiaba", + "-4|s": "1/la_paz,1/manaus,5/west", + "-4|n|03/14:02->11/07:02": "1/detroit,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,1/indiana/marengo,1/indiana/petersburg,1/indiana/vevay,1/indiana/vincennes,1/indiana/winamac,1/kentucky/monticello,1/fort_wayne,1/indiana/indianapolis,1/kentucky/louisville,6/eastern,us/east-indiana,us/eastern,us/michigan", + "-4|n|03/14:00->11/07:01": "1/havana", + "-4|n|03/12:03->11/05:01": "1/indiana,1/kentucky", + "-4|n": "1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin", + "-3|s": "1/argentina,1/buenos_aires,1/catamarca,1/cordoba,1/fortaleza,1/jujuy,1/mendoza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,1/argentina/la_rioja,1/argentina/rio_gallegos,1/argentina/salta,1/argentina/san_juan,1/argentina/san_luis,1/argentina/tucuman,1/argentina/ushuaia,1/argentina/buenos_aires,1/argentina/catamarca,1/argentina/comodrivadavia,1/argentina/cordoba,1/argentina/jujuy,1/argentina/mendoza,1/rosario,5/east", + "-3|n|03/14:02->11/07:02": "1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic", + "-3|n": "1/araguaina,1/bahia,1/belem,1/cayenne,1/maceio,1/paramaribo,1/recife,1/santarem", + "-2|n|03/27:22->10/30:23": "1/godthab,1/nuuk", + "-2|n|03/14:02->11/07:02": "1/miquelon", + "-2|n": "1/noronha,3/south_georgia,5/denoronha", + "-2.5|n|03/14:02->11/07:02": "1/st_johns,6/newfoundland", + "-1|n": "3/cape_verde", + "-11|n": "11/midway,11/niue,11/pago_pago,11/samoa,us/samoa", + "-10|n": "11/honolulu,11/johnston,11/rarotonga,11/tahiti,us/hawaii" + } + })) && n.default || n, + o = ["africa", "america", "asia", "atlantic", "australia", "brazil", "canada", "chile", "europe", "indian", "mexico", "pacific", "antarctica", "etc"]; + let i = {}; + Object.keys(r).forEach(e => { + let t = e.split("|"), + a = { + offset: Number(t[0]), + hem: t[1] + }; + t[2] && (a.dst = t[2]), r[e].split(",").forEach(e => { + e = e.replace(/(^[0-9]+)\//, (e, t) => (t = Number(t), o[t] + "/")), i[e] = a; + }); + }), i.utc = { + offset: 0, + hem: "n" + }; + + for (let e = -14; e <= 14; e += .5) { + let t = e; + t > 0 && (t = "+" + t); + let a = "etc/gmt" + t; + i[a] = { + offset: -1 * e, + hem: "n" + }, a = "utc/gmt" + t, i[a] = { + offset: -1 * e, + hem: "n" + }; + } + + const s = /(\-?[0-9]+)h(rs)?/i, + u = /(\-?[0-9]+)/, + l = /utc([\-+]?[0-9]+)/i, + h = /gmt([\-+]?[0-9]+)/i, + c = function (e) { + return (e = Number(e)) >= -13 && e <= 13 ? "etc/gmt" + (e = ((e *= -1) > 0 ? "+" : "") + e) : null; + }; + + var d$1 = i, + m = function (e) { + let t = e.match(s); + if (null !== t) return c(t[1]); + if (t = e.match(l), null !== t) return c(t[1]); + + if (t = e.match(h), null !== t) { + let e = -1 * Number(t[1]); + return c(e); + } + + return t = e.match(u), null !== t ? c(t[1]) : null; + }; + + const p = (() => { + let e = (() => { + if ("undefined" == typeof Intl || void 0 === Intl.DateTimeFormat) return null; + let e = Intl.DateTimeFormat(); + if (void 0 === e || void 0 === e.resolvedOptions) return null; + let t = e.resolvedOptions().timeZone; + return t ? t.toLowerCase() : null; + })(); + + return null === e ? "utc" : e; + })(), + f = Object.keys(d$1).reduce((e, t) => { + let a = t.split("/")[1] || ""; + return a = a.replace(/_/g, " "), e[a] = t, e; + }, {}); + + var y, + g = (e, t) => { + if (!e) return p; + "string" != typeof e && console.error("Timezone must be a string - recieved: '", e, "'\n"); + let a = e.trim(); + if (a = a.toLowerCase(), !0 === t.hasOwnProperty(a)) return a; + if (a = (e => (e = (e = (e = (e = (e = e.replace(/ time/g, "")).replace(/ (standard|daylight|summer)/g, "")).replace(/\b(east|west|north|south)ern/g, "$1")).replace(/\b(africa|america|australia)n/g, "$1")).replace(/\beuropean/g, "europe")).replace(/\islands/g, "island"))(a), !0 === t.hasOwnProperty(a)) return a; + if (!0 === f.hasOwnProperty(a)) return f[a]; + + if (!0 === /[0-9]/.test(a)) { + let e = m(a); + if (e) return e; + } + + throw new Error("Spacetime: Cannot find timezone named: '" + e + "'. Please enter an IANA timezone id."); + }, + b = (function (e, t) { + t.isLeapYear = e => e % 4 == 0 && e % 100 != 0 || e % 400 == 0, t.isDate = e => "[object Date]" === Object.prototype.toString.call(e) && !isNaN(e.valueOf()), t.isArray = e => "[object Array]" === Object.prototype.toString.call(e), t.isObject = e => "[object Object]" === Object.prototype.toString.call(e), t.isBoolean = e => "[object Boolean]" === Object.prototype.toString.call(e), t.zeroPad = function (e) { + let t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2; + return (e += "").length >= t ? e : new Array(t - e.length + 1).join("0") + e; + }, t.titleCase = e => e ? e[0].toUpperCase() + e.substr(1) : "", t.ordinal = e => { + let t = e % 10, + a = e % 100; + return 1 === t && 11 !== a ? e + "st" : 2 === t && 12 !== a ? e + "nd" : 3 === t && 13 !== a ? e + "rd" : e + "th"; + }, t.toCardinal = e => (e = (e = String(e)).replace(/([0-9])(st|nd|rd|th)$/i, "$1"), parseInt(e, 10)), t.normalize = function () { + let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + return "day" === (e = (e = (e = (e = e.toLowerCase().trim()).replace(/ies$/, "y")).replace(/s$/, "")).replace(/-/g, "")) || "days" === e ? "date" : "min" === e || "mins" === e ? "minute" : e; + }, t.getEpoch = e => "number" == typeof e ? e : t.isDate(e) ? e.getTime() : e.epoch ? e.epoch : null, t.beADate = (e, a) => !1 === t.isObject(e) ? a.clone().set(e) : e, t.formatTimezone = function (e) { + let a = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; + const n = e > 0 ? "+" : "-", + r = Math.abs(e); + return "".concat(n).concat(t.zeroPad(parseInt("" + r, 10))).concat(a).concat(t.zeroPad(r % 1 * 60)); + }; + }(y = { + exports: {} + }, y.exports), y.exports); + + b.isLeapYear, b.isDate, b.isArray, b.isObject, b.isBoolean, b.zeroPad, b.titleCase, b.ordinal, b.toCardinal, b.normalize, b.getEpoch, b.beADate, b.formatTimezone; + const k = { + year: new Date().getFullYear(), + month: 0, + date: 1 + }; + var w = { + parseArray: (e, t, a) => { + if (0 === t.length) return e; + let n = ["year", "month", "date", "hour", "minute", "second", "millisecond"]; + + for (let r = 0; r < n.length; r++) { + let o = t[r] || a[n[r]] || k[n[r]] || 0; + e = e[n[r]](o); + } + + return e; + }, + parseObject: (e, t, a) => { + if (0 === Object.keys(t).length) return e; + t = Object.assign({}, k, a, t); + let n = Object.keys(t); + + for (let r = 0; r < n.length; r++) { + let o = n[r]; + if (void 0 === e[o] || "function" != typeof e[o]) continue; + if (null === t[o] || void 0 === t[o] || "" === t[o]) continue; + let i = t[o] || a[o] || k[o] || 0; + e = e[o](i); + } + + return e; + }, + parseNumber: function (e, t) { + return t > 0 && t < 25e8 && !1 === e.silent && (console.warn(" - Warning: You are setting the date to January 1970."), console.warn(" - did input seconds instead of milliseconds?")), e.epoch = t, e; + } + }; + + const v = function (e) { + return e.epoch = Date.now(), Object.keys(e._today || {}).forEach(t => { + "function" == typeof e[t] && (e = e[t](e._today[t])); + }), e; + }, + z = { + now: e => v(e), + today: e => v(e), + tonight: e => e = (e = v(e)).hour(18), + tomorrow: e => e = (e = (e = v(e)).add(1, "day")).startOf("day"), + yesterday: e => e = (e = (e = v(e)).subtract(1, "day")).startOf("day"), + christmas: e => { + let t = v(e).year(); + return e = e.set([t, 11, 25, 18, 0, 0]); + }, + "new years": e => { + let t = v(e).year(); + return e = e.set([t, 11, 31, 18, 0, 0]); + } + }; + + z["new years eve"] = z["new years"]; + var _ = z; + + var j = function (e) { + return e = (e = (e = (e = e.replace(/\b(mon|tues?|wed|wednes|thur?s?|fri|sat|satur|sun)(day)?\b/i, "")).replace(/([0-9])(th|rd|st|nd)/, "$1")).replace(/,/g, "")).replace(/ +/g, " ").trim(); + }; + + let O = { + millisecond: 1, + second: 1e3, + minute: 6e4, + hour: 36e5, + day: 864e5 + }; + O.date = O.day, O.month = 25488e5, O.week = 6048e5, O.year = 3154e7, Object.keys(O).forEach(e => { + O[e + "s"] = O[e]; + }); + var $ = O; + + const D = (e, t, a, n, r) => { + let o = e.d[a](); + if (o === t) return; + let i = null === r ? null : e.d[r](), + s = e.epoch, + u = t - o; + e.epoch += $[n] * u, "day" === n && Math.abs(u) > 28 && t < 28 && (e.epoch += $.hour), null !== r && i !== e.d[r]() && (e.epoch = s); + const l = $[n] / 2; + + for (; e.d[a]() < t;) e.epoch += l; + + for (; e.d[a]() > t;) e.epoch -= l; + + null !== r && i !== e.d[r]() && (e.epoch = s); + }, + M = { + year: { + valid: e => e > -4e3 && e < 4e3, + walkTo: (e, t) => D(e, t, "getFullYear", "year", null) + }, + month: { + valid: e => e >= 0 && e <= 11, + walkTo: (e, t) => { + let a = e.d, + n = a.getMonth(), + r = e.epoch, + o = a.getFullYear(); + if (n === t) return; + let i = t - n; + + for (e.epoch += $.day * (28 * i), o !== e.d.getFullYear() && (e.epoch = r); e.d.getMonth() < t;) e.epoch += $.day; + + for (; e.d.getMonth() > t;) e.epoch -= $.day; + } + }, + date: { + valid: e => e > 0 && e <= 31, + walkTo: (e, t) => D(e, t, "getDate", "day", "getMonth") + }, + hour: { + valid: e => e >= 0 && e < 24, + walkTo: (e, t) => D(e, t, "getHours", "hour", "getDate") + }, + minute: { + valid: e => e >= 0 && e < 60, + walkTo: (e, t) => D(e, t, "getMinutes", "minute", "getHours") + }, + second: { + valid: e => e >= 0 && e < 60, + walkTo: (e, t) => { + e.epoch = e.seconds(t).epoch; + } + }, + millisecond: { + valid: e => e >= 0 && e < 1e3, + walkTo: (e, t) => { + e.epoch = e.milliseconds(t).epoch; + } + } + }; + + var P = (e, t) => { + let a = Object.keys(M), + n = e.clone(); + + for (let r = 0; r < a.length; r++) { + let o = a[r], + i = t[o]; + if (void 0 === i && (i = n[o]()), "string" == typeof i && (i = parseInt(i, 10)), !M[o].valid(i)) return e.epoch = null, void (!1 === e.silent && console.warn("invalid " + o + ": " + i)); + M[o].walkTo(e, i); + } + }; + + let S = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sept", "oct", "nov", "dec"], + q = ["january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"]; + + var T = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + E = b, + N = { + short: () => S, + long: () => q, + mapping: () => function () { + const e = { + sep: 8 + }; + + for (let t = 0; t < S.length; t++) e[S[t]] = t; + + for (let t = 0; t < q.length; t++) e[q[t]] = t; + + return e; + }(), + set: e => { + S = e.short || S, q = e.long || q; + } + }, + C = (e, t) => { + if (!t) return e; + "Z" !== t && "z" !== t || (t = "+0000"); + let a = 0; + /^[\+-]?[0-9]{2}:[0-9]{2}$/.test(t) && (!0 === /:00/.test(t) && (t = t.replace(/:00/, "")), !0 === /:30/.test(t) && (t = t.replace(/:30/, ".5"))), /^[\+-]?[0-9]{4}$/.test(t) && (t = t.replace(/30$/, ".5")), a = parseFloat(t), Math.abs(a) > 100 && (a /= 100), a *= -1, a >= 0 && (a = "+" + a); + let n = "etc/gmt" + a; + return e.timezones[n] && (e.tz = n), e; + }, + I = function (e) { + let t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; + let a = (t = t.replace(/^\s+/, "").toLowerCase()).match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\.]?([0-9]{1,4})?/); + + if (null !== a) { + let n = Number(a[1]); + if (n < 0 || n > 24) return e.startOf("day"); + let r = Number(a[2]); + if (a[2].length < 2 || r < 0 || r > 59) return e.startOf("day"); + a[4] > 999 && (a[4] = parseInt(("" + a[4]).substring(0, 3), 10)), e = (e = (e = (e = e.hour(n)).minute(r)).seconds(a[3] || 0)).millisecond(a[4] || 0); + let o = t.match(/[\b0-9] ?(am|pm)\b/); + return null !== o && o[1] && (e = e.ampm(o[1])), e; + } + + if (a = t.match(/([0-9]+) ?(am|pm)/), null !== a && a[1]) { + let t = Number(a[1]); + return t > 12 || t < 1 ? e.startOf("day") : e = (e = (e = e.hour(a[1] || 0)).ampm(a[2])).startOf("hour"); + } + + return e = e.startOf("day"); + }; + + const Y = E.isLeapYear, + A = N.mapping(); + var x = P, + L = { + parseOffset: C, + parseTime: I, + parseYear: function () { + let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + let t = arguments.length > 1 ? arguments[1] : undefined; + + if (e = e.trim(), !0 === /^'[0-9][0-9]$/.test(e)) { + let t = Number(e.replace(/'/, "")); + return t > 50 ? 1900 + t : 2e3 + t; + } + + let a = parseInt(e, 10); + return !a && t && (a = t.year), a = a || new Date().getFullYear(), a; + }, + parseMonth: function (e) { + return e = e.toLowerCase().trim(), A[e]; + }, + validate: e => { + if (!0 !== T.hasOwnProperty(e.month)) return !1; + if (1 === e.month) return !!(Y(e.year) && e.date <= 29) || e.date <= 28; + let t = T[e.month] || 0; + return e.date <= t; + } + }; + const { + validate: F, + parseTime: B, + parseYear: Z, + parseMonth: H, + parseOffset: Q + } = L; + var G = [{ + reg: /^(\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\-\+:]+)?$/i, + parse: (e, t) => { + let a = { + year: t[1], + month: parseInt(t[2], 10) - 1, + date: t[3] + }; + return !1 === F(a) ? (e.epoch = null, e) : (Q(e, t[5]), x(e, a), e = B(e, t[4])); + } + }, { + reg: /^([0-9]{4})[\-\/\. ]([0-9]{1,2})[\-\/\. ]([0-9]{1,2})( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i, + parse: (e, t) => { + let a = { + year: t[1], + month: parseInt(t[2], 10) - 1, + date: parseInt(t[3], 10) + }; + return a.month >= 12 && (a.date = parseInt(t[2], 10), a.month = parseInt(t[3], 10) - 1), !1 === F(a) ? (e.epoch = null, e) : (x(e, a), e = B(e, t[4])); + } + }, { + reg: /^([0-9]{4})[\-\/\. ]([a-z]+)[\-\/\. ]([0-9]{1,2})( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i, + parse: (e, t) => { + let a = { + year: Z(t[1], e._today), + month: H(t[2]), + date: E.toCardinal(t[3] || "") + }; + return !1 === F(a) ? (e.epoch = null, e) : (x(e, a), e = B(e, t[4])); + } + }]; + const { + validate: U, + parseTime: V, + parseYear: W, + parseMonth: J + } = L; + var K = [{ + reg: /^([0-9]{1,2})[\-\/.]([0-9]{1,2})[\-\/.]?([0-9]{4})?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i, + parse: (e, t) => { + let a = parseInt(t[1], 10) - 1, + n = parseInt(t[2], 10); + (e.british || a >= 12) && (n = parseInt(t[1], 10), a = parseInt(t[2], 10) - 1); + let r = { + date: n, + month: a, + year: W(t[3], e._today) || new Date().getFullYear() + }; + return !1 === U(r) ? (e.epoch = null, e) : (x(e, r), e = V(e, t[4])); + } + }, { + reg: /^([a-z]+)[\-\/\. ]([0-9]{1,2})[\-\/\. ]?([0-9]{4}|'[0-9]{2})?( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i, + parse: (e, t) => { + let a = { + year: W(t[3], e._today), + month: J(t[1]), + date: E.toCardinal(t[2] || "") + }; + return !1 === U(a) ? (e.epoch = null, e) : (x(e, a), e = V(e, t[4])); + } + }, { + reg: /^([a-z]+) ([0-9]{1,2})( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i, + parse: (e, t) => { + let a = { + year: W(t[3], e._today), + month: J(t[1]), + date: E.toCardinal(t[2] || "") + }; + return !1 === U(a) ? (e.epoch = null, e) : (x(e, a), e = V(e, t[4])); + } + }, { + reg: /^([a-z]+) ([0-9]{1,2})( [0-9:]+)?( \+[0-9]{4})?( [0-9]{4})?$/i, + parse: (e, t) => { + let a = { + year: W(t[5], e._today), + month: J(t[1]), + date: E.toCardinal(t[2] || "") + }; + return !1 === U(a) ? (e.epoch = null, e) : (x(e, a), e = V(e, t[3])); + } + }]; + const { + validate: R, + parseTime: X, + parseYear: ee, + parseMonth: te + } = L; + var ae = [{ + reg: /^([0-9]{1,2})[\-\/]([a-z]+)[\-\/]?([0-9]{4})?$/i, + parse: (e, t) => { + let a = { + year: ee(t[3], e._today), + month: te(t[2]), + date: E.toCardinal(t[1] || "") + }; + return !1 === R(a) ? (e.epoch = null, e) : (x(e, a), e = X(e, t[4])); + } + }, { + reg: /^([0-9]{1,2})( [a-z]+)( [0-9]{4}| '[0-9]{2})? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i, + parse: (e, t) => { + let a = { + year: ee(t[3], e._today), + month: te(t[2]), + date: E.toCardinal(t[1]) + }; + return a.month && !1 !== R(a) ? (x(e, a), e = X(e, t[4])) : (e.epoch = null, e); + } + }, { + reg: /^([0-9]{1,2})[\. -/]([a-z]+)[\. -/]([0-9]{4})?( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i, + parse: (e, t) => { + let a = { + date: Number(t[1]), + month: te(t[2]), + year: Number(t[3]) + }; + return !1 === R(a) ? (e.epoch = null, e) : (x(e, a), e = e.startOf("day"), e = X(e, t[4])); + } + }]; + const { + validate: ne, + parseTime: re, + parseYear: oe, + parseMonth: ie + } = L; + var se = [].concat(G, K, ae, [{ + reg: /^([0-9]{4})[\-\/]([0-9]{2})$/i, + parse: (e, t) => { + let a = { + year: t[1], + month: parseInt(t[2], 10) - 1, + date: 1 + }; + return !1 === ne(a) ? (e.epoch = null, e) : (x(e, a), e = re(e, t[4])); + } + }, { + reg: /^([a-z]+) ([0-9]{4})$/i, + parse: (e, t) => { + let a = { + year: oe(t[2], e._today), + month: ie(t[1]), + date: e._today.date || 1 + }; + return !1 === ne(a) ? (e.epoch = null, e) : (x(e, a), e = re(e, t[4])); + } + }, { + reg: /^(q[0-9])( of)?( [0-9]{4})?/i, + parse: (e, t) => { + let a = t[1] || ""; + e = e.quarter(a); + let n = t[3] || ""; + return n && (n = n.trim(), e = e.year(n)), e; + } + }, { + reg: /^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i, + parse: (e, t) => { + let a = t[1] || ""; + e = e.season(a); + let n = t[3] || ""; + return n && (n = n.trim(), e = e.year(n)), e; + } + }, { + reg: /^[0-9,]+ ?b\.?c\.?$/i, + parse: (e, t) => { + let a = t[0] || ""; + a = a.replace(/^([0-9,]+) ?b\.?c\.?$/i, "-$1"); + let n = new Date(), + r = { + year: parseInt(a.trim(), 10), + month: n.getMonth(), + date: n.getDate() + }; + return !1 === ne(r) ? (e.epoch = null, e) : (x(e, r), e = re(e)); + } + }, { + reg: /^[0-9,]+ ?(a\.?d\.?|c\.?e\.?)$/i, + parse: (e, t) => { + let a = t[0] || ""; + a = a.replace(/,/g, ""); + let n = new Date(), + r = { + year: parseInt(a.trim(), 10), + month: n.getMonth(), + date: n.getDate() + }; + return !1 === ne(r) ? (e.epoch = null, e) : (x(e, r), e = re(e)); + } + }, { + reg: /^[0-9]{4}( ?a\.?d\.?)?$/i, + parse: (e, t) => { + let a = e._today; + a.month && !a.date && (a.date = 1); + let n = new Date(), + r = { + year: oe(t[0], a), + month: a.month || n.getMonth(), + date: a.date || n.getDate() + }; + return !1 === ne(r) ? (e.epoch = null, e) : (x(e, r), e = re(e)); + } + }]); + + var ue = w, + le = _, + he = j, + ce = function (e, t, a) { + for (let n = 0; n < se.length; n++) { + let r = t.match(se[n].reg); + + if (r) { + let t = se[n].parse(e, r, a); + if (null !== t && t.isValid()) return t; + } + } + + return !1 === e.silent && console.warn("Warning: couldn't parse date-string: '" + t + "'"), e.epoch = null, e; + }; + + const { + parseArray: de, + parseObject: me, + parseNumber: pe + } = ue, + fe = { + year: new Date().getFullYear(), + month: 0, + date: 1 + }; + + var ye = (e, t) => { + let a = e._today || fe; + if ("number" == typeof t) return pe(e, t); + + if (e.epoch = Date.now(), e._today && E.isObject(e._today) && Object.keys(e._today).length > 0) { + let t = me(e, a, fe); + t.isValid() && (e.epoch = t.epoch); + } + + return null == t || "" === t ? e : !0 === E.isDate(t) ? (e.epoch = t.getTime(), e) : !0 === E.isArray(t) ? e = de(e, t, a) : !0 === E.isObject(t) ? t.epoch ? (e.epoch = t.epoch, e.tz = t.tz, e) : e = me(e, t, a) : "string" != typeof t ? e : (t = he(t), !0 === le.hasOwnProperty(t) ? e = le[t](e) : ce(e, t)); + }; + + let ge = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"], + be = ["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"]; + let ke = !0; + + var we = { + short: () => ge, + long: () => be, + set: e => { + ge = e.short || ge, be = e.long || be; + }, + aliases: { + mo: 1, + tu: 2, + we: 3, + th: 4, + fr: 5, + sa: 6, + su: 7, + tues: 2, + weds: 3, + wedn: 3, + thur: 4, + thurs: 4 + } + }, + ve = { + useTitleCase: () => ke, + set: e => { + ke = e; + } + }, + ze = e => { + let t = e.timezone().current.offset; + return t ? E.formatTimezone(t, ":") : "Z"; + }; + + const _e = e => ve.useTitleCase() ? E.titleCase(e) : e, + je = { + day: e => _e(e.dayName()), + "day-short": e => _e(we.short()[e.day()]), + "day-number": e => e.day(), + "day-ordinal": e => E.ordinal(e.day()), + "day-pad": e => E.zeroPad(e.day()), + date: e => e.date(), + "date-ordinal": e => E.ordinal(e.date()), + "date-pad": e => E.zeroPad(e.date()), + month: e => _e(e.monthName()), + "month-short": e => _e(N.short()[e.month()]), + "month-number": e => e.month(), + "month-ordinal": e => E.ordinal(e.month()), + "month-pad": e => E.zeroPad(e.month()), + "iso-month": e => E.zeroPad(e.month() + 1), + year: e => { + let t = e.year(); + return t > 0 ? t : (t = Math.abs(t), t + " BC"); + }, + "year-short": e => { + let t = e.year(); + return t > 0 ? "'" + String(e.year()).substr(2, 4) : (t = Math.abs(t), t + " BC"); + }, + "iso-year": e => { + let t = e.year(), + a = t < 0, + n = E.zeroPad(Math.abs(t), 4); + return a && (n = E.zeroPad(n, 6), n = "-" + n), n; + }, + time: e => e.time(), + "time-24": e => "".concat(e.hour24(), ":").concat(E.zeroPad(e.minute())), + hour: e => e.hour12(), + "hour-pad": e => E.zeroPad(e.hour12()), + "hour-24": e => e.hour24(), + "hour-24-pad": e => E.zeroPad(e.hour24()), + minute: e => e.minute(), + "minute-pad": e => E.zeroPad(e.minute()), + second: e => e.second(), + "second-pad": e => E.zeroPad(e.second()), + millisecond: e => e.millisecond(), + "millisecond-pad": e => E.zeroPad(e.millisecond(), 3), + ampm: e => e.ampm(), + quarter: e => "Q" + e.quarter(), + season: e => e.season(), + era: e => e.era(), + json: e => e.json(), + timezone: e => e.timezone().name, + offset: e => ze(e), + numeric: e => "".concat(e.year(), "/").concat(E.zeroPad(e.month() + 1), "/").concat(E.zeroPad(e.date())), + "numeric-us": e => "".concat(E.zeroPad(e.month() + 1), "/").concat(E.zeroPad(e.date()), "/").concat(e.year()), + "numeric-uk": e => "".concat(E.zeroPad(e.date()), "/").concat(E.zeroPad(e.month() + 1), "/").concat(e.year()), + "mm/dd": e => "".concat(E.zeroPad(e.month() + 1), "/").concat(E.zeroPad(e.date())), + iso: e => "".concat(e.format("iso-year"), "-").concat(E.zeroPad(e.month() + 1), "-").concat(E.zeroPad(e.date()), "T").concat(E.zeroPad(e.h24()), ":").concat(E.zeroPad(e.minute()), ":").concat(E.zeroPad(e.second()), ".").concat(E.zeroPad(e.millisecond(), 3)).concat(ze(e)), + "iso-short": e => { + let t = E.zeroPad(e.month() + 1), + a = E.zeroPad(e.date()); + var n; + return "".concat((n = e.year()) >= 0 ? E.zeroPad(n, 4) : (n = Math.abs(n), "-" + E.zeroPad(n, 4)), "-").concat(t, "-").concat(a); + }, + "iso-utc": e => new Date(e.epoch).toISOString(), + nice: e => "".concat(N.short()[e.month()], " ").concat(E.ordinal(e.date()), ", ").concat(e.time()), + "nice-24": e => "".concat(N.short()[e.month()], " ").concat(E.ordinal(e.date()), ", ").concat(e.hour24(), ":").concat(E.zeroPad(e.minute())), + "nice-year": e => "".concat(N.short()[e.month()], " ").concat(E.ordinal(e.date()), ", ").concat(e.year()), + "nice-day": e => "".concat(we.short()[e.day()], " ").concat(_e(N.short()[e.month()]), " ").concat(E.ordinal(e.date())), + "nice-full": e => "".concat(e.dayName(), " ").concat(_e(e.monthName()), " ").concat(E.ordinal(e.date()), ", ").concat(e.time()), + "nice-full-24": e => "".concat(e.dayName(), " ").concat(_e(e.monthName()), " ").concat(E.ordinal(e.date()), ", ").concat(e.hour24(), ":").concat(E.zeroPad(e.minute())) + }, + Oe = { + "day-name": "day", + "month-name": "month", + "iso 8601": "iso", + "time-h24": "time-24", + "time-12": "time", + "time-h12": "time", + tz: "timezone", + "day-num": "day-number", + "month-num": "month-number", + "month-iso": "iso-month", + "year-iso": "iso-year", + "nice-short": "nice", + "nice-short-24": "nice-24", + mdy: "numeric-us", + dmy: "numeric-uk", + ymd: "numeric", + "yyyy/mm/dd": "numeric", + "mm/dd/yyyy": "numeric-us", + "dd/mm/yyyy": "numeric-us", + "little-endian": "numeric-uk", + "big-endian": "numeric", + "day-nice": "nice-day" + }; + + Object.keys(Oe).forEach(e => je[e] = je[Oe[e]]); + + var $e = function (e) { + let t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; + if (!0 !== e.isValid()) return ""; + + if (je.hasOwnProperty(t)) { + let a = je[t](e) || ""; + return "json" !== t && (a = String(a), "ampm" !== t && (a = _e(a))), a; + } + + if (-1 !== t.indexOf("{")) { + let a = /\{(.+?)\}/g; + return t = t.replace(a, (t, a) => { + if (a = a.toLowerCase().trim(), je.hasOwnProperty(a)) { + let t = String(je[a](e)); + return "ampm" !== a ? _e(t) : t; + } + + return ""; + }); + } + + return e.format("iso-short"); + }; + + const De = E.zeroPad, + Me = E.formatTimezone, + Pe = { + G: e => e.era(), + GG: e => e.era(), + GGG: e => e.era(), + GGGG: e => "AD" === e.era() ? "Anno Domini" : "Before Christ", + y: e => e.year(), + yy: e => parseInt(String(e.year()).substr(2, 4), 10), + yyy: e => e.year(), + yyyy: e => e.year(), + yyyyy: e => "0" + e.year(), + Q: e => e.quarter(), + QQ: e => e.quarter(), + QQQ: e => e.quarter(), + QQQQ: e => e.quarter(), + M: e => e.month() + 1, + MM: e => De(e.month() + 1), + MMM: e => e.format("month-short"), + MMMM: e => e.format("month"), + w: e => e.week(), + ww: e => De(e.week()), + d: e => e.date(), + dd: e => De(e.date()), + D: e => e.dayOfYear(), + DD: e => De(e.dayOfYear()), + DDD: e => De(e.dayOfYear(), 3), + E: e => e.format("day-short"), + EE: e => e.format("day-short"), + EEE: e => e.format("day-short"), + EEEE: e => e.format("day"), + EEEEE: e => e.format("day")[0], + e: e => e.day(), + ee: e => e.day(), + eee: e => e.format("day-short"), + eeee: e => e.format("day"), + eeeee: e => e.format("day")[0], + a: e => e.ampm().toUpperCase(), + aa: e => e.ampm().toUpperCase(), + aaa: e => e.ampm().toUpperCase(), + aaaa: e => e.ampm().toUpperCase(), + h: e => e.h12(), + hh: e => De(e.h12()), + H: e => e.hour(), + HH: e => De(e.hour()), + m: e => e.minute(), + mm: e => De(e.minute()), + s: e => e.second(), + ss: e => De(e.second()), + SSS: e => De(e.millisecond(), 3), + A: e => e.epoch - e.startOf("day").epoch, + z: e => e.timezone().name, + zz: e => e.timezone().name, + zzz: e => e.timezone().name, + zzzz: e => e.timezone().name, + Z: e => Me(e.timezone().current.offset), + ZZ: e => Me(e.timezone().current.offset), + ZZZ: e => Me(e.timezone().current.offset), + ZZZZ: e => Me(e.timezone().current.offset, ":") + }, + Se = (e, t, a) => { + let n = e, + r = t; + + for (let o = 0; o < a; o += 1) Pe[n] = Pe[r], n += e, r += t; + }; + + Se("q", "Q", 4), Se("L", "M", 4), Se("Y", "y", 4), Se("c", "e", 4), Se("k", "H", 2), Se("K", "h", 2), Se("S", "s", 2), Se("v", "z", 4), Se("V", "Z", 4); + + var qe = (e, t) => { + let a = t.split(""); + return a = function (e) { + for (let t = 0; t < e.length; t += 1) if ("'" === e[t]) for (let a = t + 1; a < e.length; a += 1) { + if (e[a] && (e[t] += e[a]), "'" === e[a]) { + e[a] = null; + break; + } + + e[a] = null; + } + + return e.filter(e => e); + }(a), a = function (e) { + for (let t = 0; t < e.length; t += 1) { + let a = e[t]; + + for (let n = t + 1; n < e.length && e[n] === a; n += 1) e[t] += e[n], e[n] = null; + } + + return (e = e.filter(e => e)).map(e => ("''" === e && (e = "'"), e)); + }(a), a.reduce((t, a) => (void 0 !== Pe[a] ? t += Pe[a](e) || "" : (/^'.{1,}'$/.test(a) && (a = a.replace(/'/g, "")), t += a), t), ""); + }; + + const Te = ["year", "season", "quarter", "month", "week", "day", "quarterHour", "hour", "minute"], + Ee = function (e, t) { + let a = e.clone().startOf(t), + n = e.clone().endOf(t).epoch - a.epoch, + r = (e.epoch - a.epoch) / n; + return parseFloat(r.toFixed(2)); + }; + + var Ne = (e, t) => { + if (t) return t = E.normalize(t), Ee(e, t); + let a = {}; + return Te.forEach(t => { + a[t] = Ee(e, t); + }), a; + }; + + var Ce = (e, t) => { + let a = e.progress(); + return "quarterhour" === (t = E.normalize(t)) && (t = "quarterHour"), void 0 !== a[t] ? (a[t] > .5 && (e = e.add(1, t)), e = e.startOf(t)) : !1 === e.silent && console.warn("no known unit '" + t + "'"), e; + }; + + const Ie = (e, t, a) => { + let n = 0; + + for (e = e.clone(); e.isBefore(t);) e = e.add(1, a), n += 1; + + return e.isAfter(t, a) && (n -= 1), n; + }; + + var Ye = (e, t, a) => e.isBefore(t) ? Ie(e, t, a) : -1 * Ie(t, e, a); + + var Ae = function (e, t) { + let a = t.epoch - e.epoch, + n = { + milliseconds: a, + seconds: parseInt(a / 1e3, 10) + }; + n.minutes = parseInt(n.seconds / 60, 10), n.hours = parseInt(n.minutes / 60, 10); + let r = e.clone(); + return n.years = ((e, t) => { + let a = t.year() - e.year(); + return (e = e.year(t.year())).isAfter(t) && (a -= 1), a; + })(r, t), r = e.add(n.years, "year"), n.months = 12 * n.years, r = e.add(n.months, "month"), n.months += Ye(r, t, "month"), n.weeks = 52 * n.years, r = e.add(n.weeks, "week"), n.weeks += Ye(r, t, "week"), n.days = 7 * n.weeks, r = e.add(n.days, "day"), n.days += Ye(r, t, "day"), n; + }; + + var xe = function (e, t, a) { + t = E.beADate(t, e); + let n = !1; + + if (e.isAfter(t)) { + let a = e; + e = t, t = a, n = !0; + } + + let r = Ae(e, t); + return n && (r = function (e) { + return Object.keys(e).forEach(t => { + e[t] *= -1; + }), e; + }(r)), a ? (a = E.normalize(a), !0 !== /s$/.test(a) && (a += "s"), "dates" === a && (a = "days"), r[a]) : r; + }; + + const Le = { + months: { + almost: 10, + over: 4 + }, + days: { + almost: 25, + over: 10 + }, + hours: { + almost: 20, + over: 8 + }, + minutes: { + almost: 50, + over: 20 + }, + seconds: { + almost: 50, + over: 20 + } + }; + + function Fe(e, t) { + return 1 === e && (t = t.slice(0, -1)), e + " " + t; + } + + var Be = (e, t) => { + const a = function (e, t) { + const a = e.isBefore(t), + n = a ? t : e; + let r = a ? e : t; + r = r.clone(); + const o = { + years: 0, + months: 0, + days: 0, + hours: 0, + minutes: 0, + seconds: 0 + }; + return Object.keys(o).forEach(e => { + if (r.isSame(n, e)) return; + let t = r.diff(n, e); + r = r.add(t, e), o[e] = t; + }), a && Object.keys(o).forEach(e => { + 0 !== o[e] && (o[e] *= -1); + }), o; + }(e, t = E.beADate(t, e)); + + if (!0 === Object.keys(a).every(e => !a[e])) return { + diff: a, + rounded: "now", + qualified: "now", + precise: "now" + }; + let n, + r, + o, + i = []; + return Object.keys(a).forEach((e, t, o) => { + const s = Math.abs(a[e]); + if (0 === s) return; + const u = Fe(s, e); + + if (i.push(u), !n) { + if (n = r = u, t > 4) return; + const i = o[t + 1], + l = Math.abs(a[i]); + l > Le[i].almost ? (n = Fe(s + 1, e), r = "almost " + n) : l > Le[i].over && (r = "over " + u); + } + }), o = i.splice(0, 2).join(", "), !0 === e.isAfter(t) ? (n += " ago", r += " ago", o += " ago") : (n = "in " + n, r = "in " + r, o = "in " + o), { + diff: a, + rounded: n, + qualified: r, + precise: o + }; + }, + Ze = { + north: [["spring", 2, 1], ["summer", 5, 1], ["fall", 8, 1], ["autumn", 8, 1], ["winter", 11, 1]], + south: [["fall", 2, 1], ["autumn", 2, 1], ["winter", 5, 1], ["spring", 8, 1], ["summer", 11, 1]] + }, + He = [null, [0, 1], [3, 1], [6, 1], [9, 1]]; + + const Qe = { + minute: e => (x(e, { + second: 0, + millisecond: 0 + }), e), + quarterhour: e => { + let t = e.minutes(); + return e = t >= 45 ? e.minutes(45) : t >= 30 ? e.minutes(30) : t >= 15 ? e.minutes(15) : e.minutes(0), x(e, { + second: 0, + millisecond: 0 + }), e; + }, + hour: e => (x(e, { + minute: 0, + second: 0, + millisecond: 0 + }), e), + day: e => (x(e, { + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }), e), + week: e => { + let t = e.clone(); + return (e = e.day(e._weekStart)).isAfter(t) && (e = e.subtract(1, "week")), x(e, { + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }), e; + }, + month: e => (x(e, { + date: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }), e), + quarter: e => { + let t = e.quarter(); + return He[t] && x(e, { + month: He[t][0], + date: He[t][1], + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }), e; + }, + season: e => { + let t = e.season(), + a = "north"; + "South" === e.hemisphere() && (a = "south"); + + for (let n = 0; n < Ze[a].length; n++) if (Ze[a][n][0] === t) { + let r = e.year(); + return "winter" === t && e.month() < 3 && (r -= 1), x(e, { + year: r, + month: Ze[a][n][1], + date: Ze[a][n][2], + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }), e; + } + + return e; + }, + year: e => (x(e, { + month: 0, + date: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }), e), + decade: e => { + let t = (e = e.startOf("year")).year(), + a = 10 * parseInt(t / 10, 10); + return e = e.year(a); + }, + century: e => { + let t = (e = e.startOf("year")).year(), + a = 100 * parseInt(t / 100, 10); + return e = e.year(a); + } + }; + Qe.date = Qe.day; + var Ge = g; + + var Ue = $e, + Ve = qe, + We = Ne, + Je = Ce, + Ke = xe, + Re = Be, + Xe = { + startOf: (e, t) => { + let a = e.clone(); + return t = E.normalize(t), Qe[t] ? Qe[t](a) : "summer" === t || "winter" === t ? (a = a.season(t), Qe.season(a)) : a; + }, + endOf: (e, t) => { + let a = e.clone(); + return t = E.normalize(t), Qe[t] ? (a = Qe[t](a), a = a.add(1, t), a = a.subtract(1, "millisecond"), a) : a; + } + }, + et = function (e) { + let t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; + let a = arguments.length > 2 ? arguments[2] : undefined; + if (!t || !a) return []; + + if (t = E.normalize(t), a = e.clone().set(a), e.isAfter(a)) { + let t = e; + e = a, a = t; + } + + let n = e.clone(); + !function (e) { + return !!we.short().find(t => t === e) || !!we.long().find(t => t === e); + }(t) ? n = n.next(t) : (n = n.next(t), t = "week"); + let r = []; + + for (; n.isBefore(a);) r.push(n), n = n.add(1, t); + + return r; + }, + tt = e => { + let a = e.timezones, + n = e.tz; + if (!1 === a.hasOwnProperty(n) && (n = Ge(e.tz, a)), null === n) return !1 === e.silent && console.warn("Warn: could not find given or local timezone - '" + e.tz + "'"), { + current: { + epochShift: 0 + } + }; + let r = a[n], + o = { + name: (i = n, i = (i = (i = i[0].toUpperCase() + i.substr(1)).replace(/\/gmt/, "/GMT")).replace(/[\/_]([a-z])/gi, e => e.toUpperCase())), + hasDst: Boolean(r.dst), + default_offset: r.offset, + hemisphere: "s" === r.hem ? "South" : "North", + current: {} + }; + var i, s; + + if (o.hasDst) { + let e = (s = r.dst) ? s.split("->") : []; + o.change = { + start: e[0], + back: e[1] + }; + } + + let u = r.offset, + l = u; + return !0 === o.hasDst && (l = "North" === o.hemisphere ? u - 1 : r.offset + 1), !1 === o.hasDst ? (o.current.offset = u, o.current.isDST = !1) : !0 === t(e.epoch, o.change.start, o.change.back, u, l) ? (o.current.offset = u, o.current.isDST = "North" === o.hemisphere) : (o.current.offset = l, o.current.isDST = "South" === o.hemisphere), o; + }, + at = ye; + + const nt = ["century", "decade", "year", "month", "date", "day", "hour", "minute", "second", "millisecond"], + rt = { + set: function (e, t) { + let a = this.clone(); + return a = at(a, e), t && (this.tz = Ge(t)), a; + }, + timezone: function () { + return tt(this); + }, + isDST: function () { + return tt(this).current.isDST; + }, + hasDST: function () { + return tt(this).hasDst; + }, + offset: function () { + return 60 * tt(this).current.offset; + }, + hemisphere: function () { + return tt(this).hemisphere; + }, + format: function (e) { + return Ue(this, e); + }, + unixFmt: function (e) { + return Ve(this, e); + }, + startOf: function (e) { + return Xe.startOf(this, e); + }, + endOf: function (e) { + return Xe.endOf(this, e); + }, + leapYear: function () { + let e = this.year(); + return E.isLeapYear(e); + }, + progress: function (e) { + return We(this, e); + }, + nearest: function (e) { + return Je(this, e); + }, + diff: function (e, t) { + return Ke(this, e, t); + }, + since: function (e) { + return e || (e = this.clone().set()), Re(this, e); + }, + next: function (e) { + return this.add(1, e).startOf(e); + }, + last: function (e) { + return this.subtract(1, e).startOf(e); + }, + isValid: function () { + return !(!this.epoch && 0 !== this.epoch) && !isNaN(this.d.getTime()); + }, + goto: function (e) { + let t = this.clone(); + return t.tz = Ge(e, t.timezones), t; + }, + every: function (e, t) { + if ("object" == typeof e && "string" == typeof t) { + let a = t; + t = e, e = a; + } + + return et(this, e, t); + }, + isAwake: function () { + let e = this.hour(); + return !(e < 8 || e > 22); + }, + isAsleep: function () { + return !this.isAwake(); + }, + daysInMonth: function () { + switch (this.month()) { + case 0: + return 31; + + case 1: + return this.leapYear() ? 29 : 28; + + case 2: + return 31; + + case 3: + return 30; + + case 4: + return 31; + + case 5: + return 30; + + case 6: + case 7: + return 31; + + case 8: + return 30; + + case 9: + return 31; + + case 10: + return 30; + + case 11: + return 31; + + default: + throw new Error("Invalid Month state."); + } + }, + log: function () { + return console.log(""), console.log(Ue(this, "nice-short")), this; + }, + logYear: function () { + return console.log(""), console.log(Ue(this, "full-short")), this; + }, + json: function () { + return nt.reduce((e, t) => (e[t] = this[t](), e), {}); + }, + debug: function () { + let e = this.timezone(), + t = this.format("MM") + " " + this.format("date-ordinal") + " " + this.year(); + return t += "\n - " + this.format("time"), console.log("\n\n", t + "\n - " + e.name + " (" + e.current.offset + ")"), this; + }, + from: function (e) { + return (e = this.clone().set(e)).since(this); + }, + fromNow: function () { + return this.clone().set(Date.now()).since(this); + }, + weekStart: function (e) { + if ("number" == typeof e) return this._weekStart = e, this; + + if ("string" == typeof e) { + e = e.toLowerCase().trim(); + let t = we.short().indexOf(e); + -1 === t && (t = we.long().indexOf(e)), -1 === t && (t = 1), this._weekStart = t; + } else console.warn("Spacetime Error: Cannot understand .weekStart() input:", e); + + return this; + } + }; + rt.inDST = rt.isDST, rt.round = rt.nearest, rt.each = rt.every; + var ot = rt; + + const it = E.isLeapYear, + st = e => ("string" == typeof e && (e = parseInt(e, 10)), e), + ut = ["year", "month", "date", "hour", "minute", "second", "millisecond"], + lt = (e, t, a) => { + let n = ut.indexOf(a), + r = ut.slice(n, ut.length); + + for (let a = 0; a < r.length; a++) { + let n = t[r[a]](); + e[r[a]](n); + } + + return e; + }, + ht = function (e, t, a, n) { + return !0 === a && e.isBefore(t) ? e = e.add(1, n) : !1 === a && e.isAfter(t) && (e = e.minus(1, n)), e; + }; + + var ct = { + milliseconds: (e, t) => { + t = st(t); + let a = e.millisecond() - t; + return e.epoch - a; + }, + seconds: (e, t, a) => { + t = st(t); + let n = e.clone(), + r = (e.second() - t) * $.second; + return e.epoch = e.epoch - r, (e = ht(e, n, a, "minute")).epoch; + }, + minutes: (e, t, a) => { + t = st(t); + let n = e.clone(), + r = (e.minute() - t) * $.minute; + return e.epoch -= r, lt(e, n, "second"), (e = ht(e, n, a, "hour")).epoch; + }, + hours: (e, t, a) => { + (t = st(t)) >= 24 ? t = 24 : t < 0 && (t = 0); + let n = e.clone(), + r = e.hour() - t, + o = r * $.hour; + return e.epoch -= o, e.date() !== n.date() && (e = n.clone(), r > 1 && (r -= 1), r < 1 && (r += 1), o = r * $.hour, e.epoch -= o), x(e, { + hour: t + }), lt(e, n, "minute"), (e = ht(e, n, a, "day")).epoch; + }, + time: (e, t, a) => { + let n = t.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/); + + if (!n) { + if (n = t.match(/([0-9]{1,2}) ?(am|pm)/), !n) return e.epoch; + n.splice(2, 0, "0"), n.splice(3, 0, ""); + } + + let r = !1, + o = parseInt(n[1], 10), + i = parseInt(n[2], 10); + i >= 60 && (i = 59), o > 12 && (r = !0), !1 === r && ("am" === n[4] && 12 === o && (o = 0), "pm" === n[4] && o < 12 && (o += 12)), n[3] = n[3] || "", n[3] = n[3].replace(/:/, ""); + let s = parseInt(n[3], 10) || 0, + u = e.clone(); + return e = (e = (e = (e = e.hour(o)).minute(i)).second(s)).millisecond(0), (e = ht(e, u, a, "day")).epoch; + }, + date: (e, t, a) => { + if ((t = st(t)) > 28) { + let a = e.month(), + n = T[a]; + 1 === a && 29 === t && it(e.year()) && (n = 29), t > n && (t = n); + } + + t <= 0 && (t = 1); + let n = e.clone(); + return x(e, { + date: t + }), (e = ht(e, n, a, "month")).epoch; + }, + month: (e, t, a) => { + "string" == typeof t && (t = N.mapping()[t.toLowerCase()]), (t = st(t)) >= 12 && (t = 11), t <= 0 && (t = 0); + let n = e.date(); + n > T[t] && (n = T[t]); + let r = e.clone(); + return x(e, { + month: t, + date: n + }), (e = ht(e, r, a, "year")).epoch; + }, + year: (e, t) => ("string" == typeof t && /^'[0-9]{2}$/.test(t) && (t = t.replace(/'/, "").trim(), t = (t = Number(t)) > 30 ? 1900 + t : 2e3 + t), t = st(t), x(e, { + year: t + }), e.epoch), + week: (e, t, a) => { + let n = e.clone(); + return t = st(t), "december" === (e = (e = (e = e.month(0)).date(1)).day("monday")).monthName() && e.date() >= 28 && (e = e.add(1, "week")), t -= 1, e = e.add(t, "weeks"), (e = ht(e, n, a, "year")).epoch; + }, + dayOfYear: (e, t, a) => { + t = st(t); + let n = e.clone(); + return (t -= 1) <= 0 ? t = 0 : t >= 365 && (t = 364), e = (e = e.startOf("year")).add(t, "day"), lt(e, n, "hour"), (e = ht(e, n, a, "year")).epoch; + } + }; + + const dt = e => e = (e = (e = e.minute(0)).second(0)).millisecond(1); + + var mt = { + millisecond: function (e) { + if (void 0 !== e) { + let t = this.clone(); + return t.epoch = ct.milliseconds(t, e), t; + } + + return this.d.getMilliseconds(); + }, + second: function (e, t) { + if (void 0 !== e) { + let a = this.clone(); + return a.epoch = ct.seconds(a, e, t), a; + } + + return this.d.getSeconds(); + }, + minute: function (e, t) { + if (void 0 !== e) { + let a = this.clone(); + return a.epoch = ct.minutes(a, e, t), a; + } + + return this.d.getMinutes(); + }, + hour: function (e, t) { + let a = this.d; + + if (void 0 !== e) { + let a = this.clone(); + return a.epoch = ct.hours(a, e, t), a; + } + + return a.getHours(); + }, + hourFloat: function (e, t) { + if (void 0 !== e) { + let a = this.clone(), + n = e % 1; + n *= 60; + let r = parseInt(e, 10); + return a.epoch = ct.hours(a, r, t), a.epoch = ct.minutes(a, n, t), a; + } + + let a = this.d, + n = a.getHours(), + r = a.getMinutes(); + return r /= 60, n + r; + }, + hour12: function (e, t) { + let a = this.d; + + if (void 0 !== e) { + let a = this.clone(), + n = (e = "" + e).match(/^([0-9]+)(am|pm)$/); + + if (n) { + let e = parseInt(n[1], 10); + "pm" === n[2] && (e += 12), a.epoch = ct.hours(a, e, t); + } + + return a; + } + + let n = a.getHours(); + return n > 12 && (n -= 12), 0 === n && (n = 12), n; + }, + time: function (e, t) { + if (void 0 !== e) { + let a = this.clone(); + return e = e.toLowerCase().trim(), a.epoch = ct.time(a, e, t), a; + } + + return "".concat(this.h12(), ":").concat(E.zeroPad(this.minute())).concat(this.ampm()); + }, + ampm: function (e, t) { + let a = "am", + n = this.hour(); + if (n >= 12 && (a = "pm"), "string" != typeof e) return a; + let r = this.clone(); + return e = e.toLowerCase().trim(), n >= 12 && "am" === e ? (n -= 12, r.hour(n, t)) : n < 12 && "pm" === e ? (n += 12, r.hour(n, t)) : r; + }, + dayTime: function (e, t) { + if (void 0 !== e) { + const a = { + morning: "7:00am", + breakfast: "7:00am", + noon: "12:00am", + lunch: "12:00pm", + afternoon: "2:00pm", + evening: "6:00pm", + dinner: "6:00pm", + night: "11:00pm", + midnight: "23:59pm" + }; + let n = this.clone(); + return e = (e = e || "").toLowerCase(), !0 === a.hasOwnProperty(e) && (n = n.time(a[e], t)), n; + } + + let a = this.hour(); + return a < 6 ? "night" : a < 12 ? "morning" : a < 17 ? "afternoon" : a < 22 ? "evening" : "night"; + }, + iso: function (e) { + return void 0 !== e ? this.set(e) : this.format("iso"); + } + }, + pt = { + date: function (e, t) { + if (void 0 !== e) { + let a = this.clone(); + return (e = parseInt(e, 10)) && (a.epoch = ct.date(a, e, t)), a; + } + + return this.d.getDate(); + }, + day: function (e, t) { + if (void 0 === e) return this.d.getDay(); + let a = this.clone(), + n = e; + "string" == typeof e && (e = e.toLowerCase(), we.aliases.hasOwnProperty(e) ? n = we.aliases[e] : (n = we.short().indexOf(e), -1 === n && (n = we.long().indexOf(e)))); + let r = this.d.getDay() - n; + !0 === t && r > 0 && (r -= 7), !1 === t && r < 0 && (r += 7); + let o = this.subtract(r, "days"); + return x(o, { + hour: a.hour(), + minute: a.minute(), + second: a.second() + }), o; + }, + dayName: function (e, t) { + if (void 0 === e) return we.long()[this.day()]; + let a = this.clone(); + return a = a.day(e, t), a; + } + }, + ft = { + dayOfYear: function (e, t) { + if (void 0 !== e) { + let a = this.clone(); + return a.epoch = ct.dayOfYear(a, e, t), a; + } + + let a, + n = 0, + r = this.d.getMonth(); + + for (let e = 1; e <= r; e++) a = new Date(), a.setDate(1), a.setFullYear(this.d.getFullYear()), a.setHours(1), a.setMinutes(1), a.setMonth(e), a.setHours(-2), n += a.getDate(); + + return n + this.d.getDate(); + }, + week: function (e, t) { + if (void 0 !== e) { + let a = this.clone(); + return a.epoch = ct.week(this, e, t), a = dt(a), a; + } + + let a = this.clone(); + a = a.month(0), a = a.date(1), a = dt(a), a = a.day("monday"), "december" === a.monthName() && a.date() >= 28 && (a = a.add(1, "week")); + let n = 1; + 1 === a.date() && (n = 0), a = a.minus(1, "second"); + const r = this.epoch; + if (a.epoch > r) return 1; + let o = 0, + i = 4 * this.month(); + + for (a.epoch += $.week * i, o += i; o <= 52; o++) { + if (a.epoch > r) return o + n; + a = a.add(1, "week"); + } + + return 52; + }, + month: function (e, t) { + if (void 0 !== e) { + let a = this.clone(); + return a.epoch = ct.month(a, e, t), a; + } + + return this.d.getMonth(); + }, + monthName: function (e, t) { + if (void 0 !== e) { + let a = this.clone(); + return a = a.month(e, t), a; + } + + return N.long()[this.month()]; + }, + quarter: function (e, t) { + if (void 0 !== e && ("string" == typeof e && (e = e.replace(/^q/i, ""), e = parseInt(e, 10)), He[e])) { + let a = this.clone(), + n = He[e][0]; + return a = a.month(n, t), a = a.date(1, t), a = a.startOf("day"), a; + } + + let a = this.d.getMonth(); + + for (let e = 1; e < He.length; e++) if (a < He[e][0]) return e - 1; + + return 4; + }, + season: function (e, t) { + let a = "north"; + + if ("South" === this.hemisphere() && (a = "south"), void 0 !== e) { + let n = this.clone(); + + for (let r = 0; r < Ze[a].length; r++) e === Ze[a][r][0] && (n = n.month(Ze[a][r][1], t), n = n.date(1), n = n.startOf("day")); + + return n; + } + + let n = this.d.getMonth(); + + for (let e = 0; e < Ze[a].length - 1; e++) if (n >= Ze[a][e][1] && n < Ze[a][e + 1][1]) return Ze[a][e][0]; + + return "winter"; + }, + year: function (e) { + if (void 0 !== e) { + let t = this.clone(); + return t.epoch = ct.year(t, e), t; + } + + return this.d.getFullYear(); + }, + era: function (e) { + if (void 0 !== e) { + let t = this.clone(); + e = e.toLowerCase(); + let a = t.d.getFullYear(); + return "bc" === e && a > 0 && (t.epoch = ct.year(t, -1 * a)), "ad" === e && a < 0 && (t.epoch = ct.year(t, -1 * a)), t; + } + + return this.d.getFullYear() < 0 ? "BC" : "AD"; + }, + decade: function (e) { + if (void 0 !== e) { + if (!(e = (e = (e = String(e)).replace(/([0-9])'?s$/, "$1")).replace(/([0-9])(th|rd|st|nd)/, "$1"))) return console.warn("Spacetime: Invalid decade input"), this; + 2 === e.length && /[0-9][0-9]/.test(e) && (e = "19" + e); + let t = Number(e); + return isNaN(t) ? this : (t = 10 * Math.floor(t / 10), this.year(t)); + } + + return this.startOf("decade").year(); + }, + century: function (e) { + if (void 0 !== e) { + "string" == typeof e && (e = (e = (e = e.replace(/([0-9])(th|rd|st|nd)/, "$1")).replace(/([0-9]+) ?(b\.?c\.?|a\.?d\.?)/i, (e, t, a) => (a.match(/b\.?c\.?/i) && (t = "-" + t), t))).replace(/c$/, "")); + let t = Number(e); + return isNaN(e) ? (console.warn("Spacetime: Invalid century input"), this) : (0 === t && (t = 1), t = t >= 0 ? 100 * (t - 1) : 100 * (t + 1), this.year(t)); + } + + let t = this.startOf("century").year(); + return t = Math.floor(t / 100), t < 0 ? t - 1 : t + 1; + }, + millenium: function (e) { + if (void 0 !== e) { + if ("string" == typeof e && (e = e.replace(/([0-9])(th|rd|st|nd)/, "$1"), e = Number(e), isNaN(e))) return console.warn("Spacetime: Invalid millenium input"), this; + e > 0 && (e -= 1); + let t = 1e3 * e; + return 0 === t && (t = 1), this.year(t); + } + + let t = Math.floor(this.year() / 1e3); + return t >= 0 && (t += 1), t; + } + }; + const yt = Object.assign({}, mt, pt, ft); + yt.milliseconds = yt.millisecond, yt.seconds = yt.second, yt.minutes = yt.minute, yt.hours = yt.hour, yt.hour24 = yt.hour, yt.h12 = yt.hour12, yt.h24 = yt.hour24, yt.days = yt.day; + + var gt = e => { + Object.keys(yt).forEach(t => { + e.prototype[t] = yt[t]; + }); + }; + + const bt = E.isLeapYear, + kt = function (e, t) { + return 1 === e && bt(t) ? 29 : T[e]; + }; + + var wt = { + months: (e, t) => { + if (e.month > 0) { + let a = parseInt(e.month / 12, 10); + e.year = t.year() + a, e.month = e.month % 12; + } else if (e.month < 0) { + let a = Math.floor(Math.abs(e.month) / 13, 10); + a = Math.abs(a) + 1, e.year = t.year() - a, e.month = e.month % 12, e.month = e.month + 12, 12 === e.month && (e.month = 0); + } + + return e; + }, + days: (e, t, a) => { + let n = t.year(), + r = t.month(), + o = kt(r, n); + + for (; a > o;) a -= o, r += 1, r >= 12 && (r -= 12, n += 1), o = kt(r, n); + + return e.month = r, e.date = a, e; + }, + daysBack: (e, t, a) => { + e.year = t.year(), e.month = t.month(); + let n = t.date(); + + for (e.date = n - Math.abs(a); e.date < 1;) { + e.month -= 1, e.month < 0 && (e.month = 11, e.year -= 1); + let t = kt(e.month, e.year); + e.date += t; + } + + return e; + } + }; + const vt = ["millisecond", "second", "minute", "hour", "date", "month"]; + let zt = { + second: vt.slice(0, 1), + minute: vt.slice(0, 2), + quarterhour: vt.slice(0, 2), + hour: vt.slice(0, 3), + date: vt.slice(0, 4), + month: vt.slice(0, 4), + quarter: vt.slice(0, 4), + season: vt.slice(0, 4), + year: vt, + decade: vt, + century: vt + }; + zt.week = zt.hour, zt.season = zt.date, zt.quarter = zt.date; + const _t = { + year: !0, + quarter: !0, + season: !0, + month: !0, + week: !0, + date: !0 + }, + jt = { + month: !0, + quarter: !0, + season: !0, + year: !0 + }; + + var Ot = e => { + e.prototype.add = function (e, t) { + let a = this.clone(); + if (!t || 0 === e) return a; + let n = this.clone(); + if ("millisecond" === (t = E.normalize(t))) return a.epoch += e, a; + "fortnight" === t && (e *= 2, t = "week"), $[t] ? a.epoch += $[t] * e : "week" === t || "weekend" === t ? a.epoch += $.day * (7 * e) : "quarter" === t || "season" === t ? a.epoch += $.month * (3 * e) : "quarterhour" === t && (a.epoch += 15 * $.minute * e); + let r = {}; + + if (zt[t] && zt[t].forEach(e => { + r[e] = n[e](); + }), _t[t]) { + const e = n.timezone().current.offset - a.timezone().current.offset; + a.epoch += 3600 * e * 1e3; + } + + if ("month" === t && (r.month = n.month() + e, r = wt.months(r, n)), "week" === t) { + let t = n.date() + 7 * e; + t <= 28 && t > 1 && (r.date = t); + } + + if ("weekend" === t && "saturday" !== a.dayName()) a = a.day("saturday", !0);else if ("date" === t) { + if (e < 0) r = wt.daysBack(r, n, e);else { + let t = n.date() + e; + r = wt.days(r, n, t); + } + 0 !== e && n.isSame(a, "day") && (r.date = n.date() + e); + } else if ("quarter" === t) { + if (r.month = n.month() + 3 * e, r.year = n.year(), r.month < 0) { + let e = Math.floor(r.month / 12), + t = r.month + 12 * Math.abs(e); + r.month = t, r.year += e; + } else if (r.month >= 12) { + let e = Math.floor(r.month / 12); + r.month = r.month % 12, r.year += e; + } + + r.date = n.date(); + } else if ("year" === t) { + let t = n.year() + e, + r = a.year(); + + if (r < t) { + let t = Math.floor(e / 4) || 1; + a.epoch += Math.abs($.day * t); + } else if (r > t) { + let t = Math.floor(e / 4) || 1; + a.epoch += $.day * t; + } + } else "decade" === t ? r.year = a.year() + 10 : "century" === t && (r.year = a.year() + 100); + + if (jt[t]) { + let e = T[r.month]; + r.date = n.date(), r.date > e && (r.date = e); + } + + return Object.keys(r).length > 1 && x(a, r), a; + }, e.prototype.subtract = function (e, t) { + return this.clone().add(-1 * e, t); + }, e.prototype.minus = e.prototype.subtract, e.prototype.plus = e.prototype.add; + }; + + const $t = { + millisecond: e => e.epoch, + second: e => [e.year(), e.month(), e.date(), e.hour(), e.minute(), e.second()].join("-"), + minute: e => [e.year(), e.month(), e.date(), e.hour(), e.minute()].join("-"), + hour: e => [e.year(), e.month(), e.date(), e.hour()].join("-"), + day: e => [e.year(), e.month(), e.date()].join("-"), + week: e => [e.year(), e.week()].join("-"), + month: e => [e.year(), e.month()].join("-"), + quarter: e => [e.year(), e.quarter()].join("-"), + year: e => e.year() + }; + $t.date = $t.day; + + var Dt = e => { + const t = { + isAfter: function (e) { + e = E.beADate(e, this); + let t = E.getEpoch(e); + return null === t ? null : this.epoch > t; + }, + isBefore: function (e) { + e = E.beADate(e, this); + let t = E.getEpoch(e); + return null === t ? null : this.epoch < t; + }, + isEqual: function (e) { + e = E.beADate(e, this); + let t = E.getEpoch(e); + return null === t ? null : this.epoch === t; + }, + isBetween: function (e, t) { + let a = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : !1; + e = E.beADate(e, this), t = E.beADate(t, this); + let n = E.getEpoch(e); + if (null === n) return null; + let r = E.getEpoch(t); + return null === r ? null : a ? this.isBetween(e, t) || this.isEqual(e) || this.isEqual(t) : n < this.epoch && this.epoch < r; + } + }; + Object.keys(t).forEach(a => { + e.prototype[a] = t[a]; + }); + }; + + var Mt = e => { + const t = { + i18n: e => { + E.isObject(e.days) && we.set(e.days), E.isObject(e.months) && N.set(e.months), E.isBoolean(e.useTitleCase) && ve.set(e.useTitleCase); + } + }; + Object.keys(t).forEach(a => { + e.prototype[a] = t[a]; + }); + }, + Pt = a, + St = ot, + qt = gt, + Tt = Ot, + Et = e => { + e.prototype.isSame = function (t, a) { + let n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : !0; + let r = this; + if (!a) return null; + + if ("string" == typeof t && "object" == typeof a) { + let e = t; + t = a, a = e; + } + + return "string" != typeof t && "number" != typeof t || (t = new e(t, this.timezone.name)), a = a.replace(/s$/, ""), !0 === n && r.tz !== t.tz && ((t = t.clone()).tz = r.tz), $t[a] ? $t[a](r) === $t[a](t) : null; + }; + }, + Nt = Dt, + Ct = Mt; + + let It = d$1; + + const Yt = function (e, t) { + let a = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + this.epoch = null, this.tz = Ge(t, It), this.silent = a.silent || !0, this.british = a.dmy || a.british, this._weekStart = 1, void 0 !== a.weekStart && (this._weekStart = a.weekStart), this._today = {}, void 0 !== a.today && (this._today = a.today), Object.defineProperty(this, "d", { + get: function () { + let e = Pt(this), + t = (new Date(this.epoch).getTimezoneOffset() || 0) + 60 * e; + t = 60 * t * 1e3; + let a = this.epoch + t; + return new Date(a); + } + }), Object.defineProperty(this, "timezones", { + get: () => It, + set: e => (It = e, e) + }); + let n = at(this, e); + this.epoch = n.epoch; + }; + + Object.keys(St).forEach(e => { + Yt.prototype[e] = St[e]; + }), Yt.prototype.clone = function () { + return new Yt(this.epoch, this.tz, { + silent: this.silent, + weekStart: this._weekStart, + today: this._today, + parsers: this.parsers + }); + }, Yt.prototype.toLocalDate = function () { + return this.toNativeDate(); + }, Yt.prototype.toNativeDate = function () { + return new Date(this.epoch); + }, qt(Yt), Tt(Yt), Et(Yt), Nt(Yt), Ct(Yt); + var At = Yt; + + var xt = (e, t) => { + let a = new At(null), + n = new At(null); + a = a.time(e), n = t ? n.time(t) : a.add(59, "minutes"); + let r = a.hour(), + o = n.hour(); + return Object.keys(a.timezones).filter(e => { + if (-1 === e.indexOf("/")) return !1; + let t = new At(null, e), + i = t.hour(); + return i >= r && i <= o && !(i === r && t.minute() < a.minute()) && !(i === o && t.minute() > n.minute()); + }); + }; + + const Lt = (e, t, a) => new At(e, t, a), + Ft = function (e) { + let t = e._today || {}; + return Object.keys(t).forEach(a => { + e = e[a](t[a]); + }), e; + }; + + Lt.now = (e, t) => { + let a = new At(new Date().getTime(), e, t); + return a = Ft(a), a; + }, Lt.today = (e, t) => { + let a = new At(new Date().getTime(), e, t); + return a = Ft(a), a.startOf("day"); + }, Lt.tomorrow = (e, t) => { + let a = new At(new Date().getTime(), e, t); + return a = Ft(a), a.add(1, "day").startOf("day"); + }, Lt.yesterday = (e, t) => { + let a = new At(new Date().getTime(), e, t); + return a = Ft(a), a.subtract(1, "day").startOf("day"); + }, Lt.extend = function () { + let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return Object.keys(e).forEach(t => { + At.prototype[t] = e[t]; + }), this; + }, Lt.timezones = function () { + return new At().timezones; + }, Lt.max = function (e, t) { + let a = new At(null, e, t); + return a.epoch = 864e13, a; + }, Lt.min = function (e, t) { + let a = new At(null, e, t); + return a.epoch = -864e13, a; + }, Lt.whereIts = xt, Lt.version = "6.16.3", Lt.plugin = Lt.extend; + var Bt = Lt; + + var spacetime$2 = /*#__PURE__*/Object.freeze({ + __proto__: null, + 'default': Bt + }); + + var require$$0 = /*@__PURE__*/getDefaultExportFromNamespaceIfNotNamed(spacetime$2); + + const spacetime$1 = require$$0; + + const parseSentence = function (doc) { + let s = doc.sentence(); + + if (!s) { + return null; + } + + let txt = s.text() || ''; + let paren = txt.match(/\(.*\)/); + + if (!paren || !paren[0]) { + return null; + } + + txt = paren[0] || ''; + txt = txt.trim(); + txt = txt.replace(/^\(/, ''); + txt = txt.replace(/\)$/, ''); + let split = txt.split(/ – /); + split = split.filter(str => str); // got birth/death info + + if (split[0] && split[1] && split.length === 2) { + return { + birth: split[0], + death: split[1] + }; + } // try for just birth date in parentheses + + + if (split[0]) { + let str = split[0].replace(/^(born|ne) (c\.)?/, ''); + let d = spacetime$1(str); + + if (d.isValid()) { + return { + birth: str + }; + } + } + + return null; + }; + + var getSentence = parseSentence; + + const byCategory$4 = function (doc) { + let cats = doc.categories(); + + for (let i = 0; i < cats.length; i += 1) { + let m = cats[i].match(/([0-9]{4}) births/); + + if (m && m[1]) { + let year = parseInt(m[1], 10); + + if (year && year > 1000) { + return year; + } + } + } + + return null; + }; + + var byCategory_1$1 = byCategory$4; + + const spacetime = require$$0; + + const parseDate$2 = function (str) { + if (!str) { + return null; + } // remove parentheses + + + str = str.replace(/\(.*\)/, ''); + str = str.trim(); // just the year + + if (str.match(/^[0-9]{4}$/)) { + return { + year: parseInt(str, 10) + }; + } // parse the full date + + + let s = spacetime(str); + return { + year: s.year(), + month: s.month(), + date: s.date() + }; + }; + + var parseDate_1 = parseDate$2; + + const byInfobox$4 = getInfobox; + const bySentence$1 = getSentence; + const byCategory$3 = byCategory_1$1; + const parseDate$1 = parseDate_1; + + const birthDate$1 = function (doc) { + let res = byInfobox$4(doc, 'birth_date'); + + if (res) { + return parseDate$1(res); + } // try parentheses in first sentence + + + res = bySentence$1(doc); + + if (res && res.birth) { + return parseDate$1(res.birth); + } // try to get year from 'Category:1955 births' + + + let year = byCategory$3(doc); + + if (year) { + return { + year: year + }; + } + + return null; + }; + + var birthDate_1 = birthDate$1; + + const byInfobox$3 = getInfobox; + + const birthPlace$1 = function (doc) { + let res = byInfobox$3(doc, 'birth_place'); + + if (res) { + return res; + } + + return null; + }; + + var birthPlace_1 = birthPlace$1; + + const aliveCats = { + 'Living people': true, + 'Year of birth missing (living people)': true, + 'Date of birth missing (living people)': true, + 'Place of birth missing (living people)': true, + 'Active politicians': true, + 'Biography articles of living people': true + }; + const didDie = { + 'Dead people': true, + 'Date of death missing': true, + 'Date of death unknown': true, + 'Place of death missing': true, + 'Place of death unknown': true, + 'Year of death missing': true, + 'Year of death unknown': true, + 'Year of death uncertain': true, + 'Recent deaths': true, + 'People declared dead in absentia': true, + 'Politicians elected posthumously': true, + 'People who died in office': true, + 'Assassinated heads of state‎ ': true, + 'Assassinated heads of government': true, + 'Assassinated mayors': true, + 'People who died in Nazi concentration camps': true, + 'People executed in Nazi concentration camps': true, + 'Politicians who died in Nazi concentration camps': true, + 'People who have received posthumous pardons': true, + 'People lost at sea‎': true, + 'Deaths due to shipwreck': true, + 'People who died at sea': true, + 'Unsolved deaths‎': true, + 'Deaths by horse-riding accident‎': true, + 'Deaths from falls‎': true, + 'Deaths by poisoning‎‎': true, + 'Deaths from cerebrovascular disease‎': true, + 'Deaths from asphyxiation‎': true, + 'Deaths from sepsis‎': true, + 'Deaths from pneumonia‎': true, + 'Deaths from dysentery‎‎': true, + 'Deaths by drowning‎': true + }; + + const byCat$1 = function (doc) { + let cats = doc.categories(); //confirmed alive categories + + if (cats.find(c => aliveCats.hasOwnProperty(c))) { + return true; + } //confirmed death categories + + + if (cats.find(c => didDie.hasOwnProperty(c))) { + return false; + } + + return null; + }; + + var byCategory$2 = byCat$1; + + // {{WikiProject Biography}} (with living=yes parameter) + // {{WikiProject banner shell}} (with blp=y parameter) + + const isAlive$2 = { + blp: true, + 'blp unsourced': true, + 'blp unsourced section': true, + 'blp primary sources': true, + 'blp self-published': true, + 'blp sources': true, + 'blp sources section': true, + 'blp imdb-only refimprove': true, + 'blp imdb refimprove': true, + 'blp no footnotes': true, + 'blp more footnotes': true, + 'blp one source': true, + 'active politician': true, + activepol: true, + 'current person': true + }; + const isDead = { + 'recent death': true, + 'recent death presumed': true, + 'recent death confirmed': true, + obituary: true, + elegy: true, + eulogy: true, + panegyric: true, + memorial: true + }; + + const byTemplate$1 = function (doc) { + let templates = doc.templates().map(tmpl => tmpl.json()); + + for (let i = 0; i < templates.length; i++) { + let title = templates[i].template || ''; + title = title.toLowerCase().trim(); + + if (isAlive$2.hasOwnProperty(title)) { + return true; + } + + if (isDead.hasOwnProperty(title)) { + return false; + } + } // `{{WikiProject Biography|living=yes|activepol=yes}}` + + + let bio = doc.template('WikiProject Biography'); + + if (bio) { + bio = bio.json(); //living blp BLP - var timezone = format.resolvedOptions().timeZone; + if (bio.living === 'yes' || bio.blp === 'yes' || bio.activepol === 'yes' || bio.BLP === 'yes') { + return true; + } - if (!timezone) { - return null; - } + if (bio.living === 'no' || bio.blp === 'no' || bio.BLP === 'no') { + return false; + } + } - return timezone.toLowerCase(); - }; + return null; + }; - var guessTz = function guessTz() { - var timezone = safeIntl(); + var byTemplate_1 = byTemplate$1; - if (timezone === null) { - return fallbackTZ; - } + const byCat = byCategory$2; + const byTemplate = byTemplate_1; // maximum age of a person - return timezone; - }; //do it once per computer + let d = new Date(); + const minYear = d.getFullYear() - 105; + const isAlive$1 = function (doc) { + // if we have a death date + let death = doc.deathDate(); - var guessTz_1 = guessTz; - var isOffset = /(\-?[0-9]+)h(rs)?/i; - var isNumber = /(\-?[0-9]+)/; - var utcOffset = /utc([\-+]?[0-9]+)/i; - var gmtOffset = /gmt([\-+]?[0-9]+)/i; + if (death) { + return false; + } // if we have a death place - var toIana = function toIana(num) { - num = Number(num); - if (num >= -13 && num <= 13) { - num = num * -1; //it's opposite! + let deathPlace = doc.deathPlace(); - num = (num > 0 ? '+' : '') + num; //add plus sign + if (deathPlace) { + return false; + } // does it have a good category? - return 'etc/gmt' + num; - } - return null; - }; + let fromCat = byCat(doc); - var parseOffset$1 = function parseOffset(tz) { - // '+5hrs' - var m = tz.match(isOffset); + if (fromCat === true || fromCat === false) { + return fromCat; + } // does it have a good template? - if (m !== null) { - return toIana(m[1]); - } // 'utc+5' + let fromTemplate = byTemplate(doc); - m = tz.match(utcOffset); + if (fromTemplate === true || fromTemplate === false) { + return fromTemplate; + } // were they born in 1900? - if (m !== null) { - return toIana(m[1]); - } // 'GMT-5' (not opposite) + let birth = doc.birthDate(); - m = tz.match(gmtOffset); + if (birth && birth.year && birth.year < minYear) { + return true; + } - if (m !== null) { - var num = Number(m[1]) * -1; - return toIana(num); - } // '+5' + return null; + }; + var isAlive_1 = isAlive$1; - m = tz.match(isNumber); + const byCategory$1 = function (doc) { + let cats = doc.categories(); - if (m !== null) { - return toIana(m[1]); - } + for (let i = 0; i < cats.length; i += 1) { + let m = cats[i].match(/([0-9]{4}) deaths/); - return null; - }; + if (m && m[1]) { + let year = parseInt(m[1], 10); - var parseOffset_1$1 = parseOffset$1; - var local = guessTz_1(); //add all the city names by themselves + if (year && year > 1000) { + return year; + } + } + } - var cities = Object.keys(unpack).reduce(function (h, k) { - var city = k.split('/')[1] || ''; - city = city.replace(/_/g, ' '); - h[city] = k; - return h; - }, {}); //try to match these against iana form + return null; + }; - var normalize = function normalize(tz) { - tz = tz.replace(/ time/g, ''); - tz = tz.replace(/ (standard|daylight|summer)/g, ''); - tz = tz.replace(/\b(east|west|north|south)ern/g, '$1'); - tz = tz.replace(/\b(africa|america|australia)n/g, '$1'); - tz = tz.replace(/\beuropean/g, 'europe'); - tz = tz.replace(/\islands/g, 'island'); - return tz; - }; // try our best to reconcile the timzone to this given string + var byCategory_1 = byCategory$1; + const byInfobox$2 = getInfobox; + const bySentence = getSentence; + const byCategory = byCategory_1; + const parseDate = parseDate_1; - var lookupTz = function lookupTz(str, zones) { - if (!str) { - return local; - } + const deathDate$1 = function (doc) { + let res = byInfobox$2(doc, 'death_date'); - if (typeof str !== 'string') { - console.error("Timezone must be a string - recieved: '", str, "'\n"); - } + if (res) { + return parseDate(res); + } // try parentheses in first sentence - var tz = str.trim(); // let split = str.split('/') - //support long timezones like 'America/Argentina/Rio_Gallegos' - // if (split.length > 2 && zones.hasOwnProperty(tz) === false) { - // tz = split[0] + '/' + split[1] - // } - tz = tz.toLowerCase(); + res = bySentence(doc); - if (zones.hasOwnProperty(tz) === true) { - return tz; - } //lookup more loosely.. + if (res && res.death) { + return parseDate(res.death); + } // try to get year from 'Category:1955 deaths' - tz = normalize(tz); + let year = byCategory(doc); - if (zones.hasOwnProperty(tz) === true) { - return tz; - } //try city-names + if (year) { + return { + year: year + }; + } + return null; + }; - if (cities.hasOwnProperty(tz) === true) { - return cities[tz]; - } // //try to parse '-5h' + var deathDate_1 = deathDate$1; + const byInfobox$1 = getInfobox; - if (/[0-9]/.test(tz) === true) { - var id = parseOffset_1$1(tz); + const deathPlace$1 = function (doc) { + let res = byInfobox$1(doc, 'death_place'); - if (id) { - return id; - } - } + if (res) { + return res; + } - throw new Error("Spacetime: Cannot find timezone named: '" + str + "'. Please enter an IANA timezone id."); - }; + return null; + }; - var find = lookupTz; - var o = { - millisecond: 1 - }; - o.second = 1000; - o.minute = 60000; - o.hour = 3.6e6; // dst is supported post-hoc + var deathPlace_1 = deathPlace$1; - o.day = 8.64e7; // + const byInfobox = getInfobox; - o.date = o.day; - o.month = 8.64e7 * 29.5; //(average) + const getNationality = function (doc) { + let res = byInfobox(doc, 'nationality'); - o.week = 6.048e8; - o.year = 3.154e10; // leap-years are supported post-hoc - //add plurals + if (res) { + return res; + } - Object.keys(o).forEach(function (k) { - o[k + 's'] = o[k]; - }); - var milliseconds = o; - - var walk = function walk(s, n, fn, unit, previous) { - var current = s.d[fn](); - - if (current === n) { - return; //already there - } - - var startUnit = previous === null ? null : s.d[previous](); - var original = s.epoch; //try to get it as close as we can - - var diff = n - current; - s.epoch += milliseconds[unit] * diff; //DST edge-case: if we are going many days, be a little conservative - // console.log(unit, diff) - - if (unit === 'day') { - // s.epoch -= ms.minute - //but don't push it over a month - if (Math.abs(diff) > 28 && n < 28) { - s.epoch += milliseconds.hour; - } - } // 1st time: oops, did we change previous unit? revert it. - - - if (previous !== null && startUnit !== s.d[previous]()) { - // console.warn('spacetime warning: missed setting ' + unit) - s.epoch = original; // s.epoch += ms[unit] * diff * 0.89 // maybe try and make it close...? - } //repair it if we've gone too far or something - //(go by half-steps, just in case) - - - var halfStep = milliseconds[unit] / 2; - - while (s.d[fn]() < n) { - s.epoch += halfStep; - } - - while (s.d[fn]() > n) { - s.epoch -= halfStep; - } // 2nd time: did we change previous unit? revert it. - - - if (previous !== null && startUnit !== s.d[previous]()) { - // console.warn('spacetime warning: missed setting ' + unit) - s.epoch = original; - } - }; //find the desired date by a increment/check while loop - - - var units$3 = { - year: { - valid: function valid(n) { - return n > -4000 && n < 4000; - }, - walkTo: function walkTo(s, n) { - return walk(s, n, 'getFullYear', 'year', null); - } - }, - month: { - valid: function valid(n) { - return n >= 0 && n <= 11; - }, - walkTo: function walkTo(s, n) { - var d = s.d; - var current = d.getMonth(); - var original = s.epoch; - var startUnit = d.getFullYear(); - - if (current === n) { - return; - } //try to get it as close as we can.. - - - var diff = n - current; - s.epoch += milliseconds.day * (diff * 28); //special case - //oops, did we change the year? revert it. - - if (startUnit !== s.d.getFullYear()) { - s.epoch = original; - } //increment by day - - - while (s.d.getMonth() < n) { - s.epoch += milliseconds.day; - } - - while (s.d.getMonth() > n) { - s.epoch -= milliseconds.day; - } - } - }, - date: { - valid: function valid(n) { - return n > 0 && n <= 31; - }, - walkTo: function walkTo(s, n) { - return walk(s, n, 'getDate', 'day', 'getMonth'); - } - }, - hour: { - valid: function valid(n) { - return n >= 0 && n < 24; - }, - walkTo: function walkTo(s, n) { - return walk(s, n, 'getHours', 'hour', 'getDate'); - } - }, - minute: { - valid: function valid(n) { - return n >= 0 && n < 60; - }, - walkTo: function walkTo(s, n) { - return walk(s, n, 'getMinutes', 'minute', 'getHours'); - } - }, - second: { - valid: function valid(n) { - return n >= 0 && n < 60; - }, - walkTo: function walkTo(s, n) { - //do this one directly - s.epoch = s.seconds(n).epoch; - } - }, - millisecond: { - valid: function valid(n) { - return n >= 0 && n < 1000; - }, - walkTo: function walkTo(s, n) { - //do this one directly - s.epoch = s.milliseconds(n).epoch; - } - } - }; - - var walkTo = function walkTo(s, wants) { - var keys = Object.keys(units$3); - var old = s.clone(); - - for (var i = 0; i < keys.length; i++) { - var k = keys[i]; - var n = wants[k]; - - if (n === undefined) { - n = old[k](); - } - - if (typeof n === 'string') { - n = parseInt(n, 10); - } //make-sure it's valid - - - if (!units$3[k].valid(n)) { - s.epoch = null; - - if (s.silent === false) { - console.warn('invalid ' + k + ': ' + n); - } - - return; - } - - units$3[k].walkTo(s, n); - } - - return; - }; - - var walk_1 = walkTo; - var shortMonths = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sept', 'oct', 'nov', 'dec']; - var longMonths = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december']; - - function buildMapping() { - var obj = { - sep: 8 //support this format - - }; - - for (var i = 0; i < shortMonths.length; i++) { - obj[shortMonths[i]] = i; - } - - for (var _i = 0; _i < longMonths.length; _i++) { - obj[longMonths[_i]] = _i; - } - - return obj; - } - - var months$1 = { - "short": function short() { - return shortMonths; - }, - "long": function long() { - return longMonths; - }, - mapping: function mapping() { - return buildMapping(); - }, - set: function set(i18n) { - shortMonths = i18n["short"] || shortMonths; - longMonths = i18n["long"] || longMonths; - } - }; //pull-apart ISO offsets, like "+0100" - - var parseOffset = function parseOffset(s, offset) { - if (!offset) { - return s; - } //this is a fancy-move + return null; + }; + var nationality$1 = getNationality; - if (offset === 'Z' || offset === 'z') { - offset = '+0000'; - } // according to ISO8601, tz could be hh:mm, hhmm or hh - // so need few more steps before the calculation. + const birthDate = birthDate_1; + const birthPlace = birthPlace_1; + const isAlive = isAlive_1; + const deathDate = deathDate_1; + const deathPlace = deathPlace_1; + const nationality = nationality$1; + const addMethod = function (models) { + models.Doc.prototype.birthDate = function () { + return birthDate(this); + }; - var num = 0; // for (+-)hh:mm + models.Doc.prototype.birthPlace = function () { + return birthPlace(this); + }; - if (/^[\+-]?[0-9]{2}:[0-9]{2}$/.test(offset)) { - //support "+01:00" - if (/:00/.test(offset) === true) { - offset = offset.replace(/:00/, ''); - } //support "+01:30" + models.Doc.prototype.isAlive = function () { + return isAlive(this); + }; + models.Doc.prototype.deathDate = function () { + return deathDate(this); + }; - if (/:30/.test(offset) === true) { - offset = offset.replace(/:30/, '.5'); - } - } // for (+-)hhmm + models.Doc.prototype.deathPlace = function () { + return deathPlace(this); + }; + models.Doc.prototype.nationality = function () { + return nationality(this); + }; + }; - if (/^[\+-]?[0-9]{4}$/.test(offset)) { - offset = offset.replace(/30$/, '.5'); - } + var src = addMethod; - num = parseFloat(offset); //divide by 100 or 10 - , "+0100", "+01" + return src; - if (Math.abs(num) > 100) { - num = num / 100; - } //okay, try to match it to a utc timezone - //remember - this is opposite! a -5 offset maps to Etc/GMT+5 ¯\_(:/)_/¯ - //https://askubuntu.com/questions/519550/why-is-the-8-timezone-called-gmt-8-in-the-filesystem - - - num *= -1; - - if (num >= 0) { - num = '+' + num; - } - - var tz = 'etc/gmt' + num; - var zones = s.timezones; - - if (zones[tz]) { - // log a warning if we're over-writing a given timezone? - // console.log('changing timezone to: ' + tz) - s.tz = tz; - } - - return s; - }; - - var parseOffset_1 = parseOffset; - - var parseTime = function parseTime(s) { - var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - str = str.replace(/^\s+/, '').toLowerCase(); //trim - //formal time formats - 04:30.23 - - var arr = str.match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\.]?([0-9]{1,4})?/); - - if (arr !== null) { - //validate it a little - var h = Number(arr[1]); - - if (h < 0 || h > 24) { - return s.startOf('day'); - } - - var m = Number(arr[2]); //don't accept '5:3pm' - - if (arr[2].length < 2 || m < 0 || m > 59) { - return s.startOf('day'); - } - - if (arr[4] > 999) { - // fix overflow issue with milliseconds, if input is longer than standard (e.g. 2017-08-06T09:00:00.123456Z) - arr[4] = parseInt("".concat(arr[4]).substring(0, 3), 10); - } - - s = s.hour(h); - s = s.minute(m); - s = s.seconds(arr[3] || 0); - s = s.millisecond(arr[4] || 0); //parse-out am/pm - - var ampm = str.match(/[\b0-9](am|pm)\b/); - - if (ampm !== null && ampm[1]) { - s = s.ampm(ampm[1]); - } - - return s; - } //try an informal form - 5pm (no minutes) - - - arr = str.match(/([0-9]+) ?(am|pm)/); - - if (arr !== null && arr[1]) { - var _h = Number(arr[1]); //validate it a little.. - - - if (_h > 12 || _h < 1) { - return s.startOf('day'); - } - - s = s.hour(arr[1] || 0); - s = s.ampm(arr[2]); - s = s.startOf('hour'); - return s; - } //no time info found, use start-of-day - - - s = s.startOf('day'); - return s; - }; - - var parseTime_1 = parseTime; - var monthLengths = [31, // January - 31 days - 28, // February - 28 days in a common year and 29 days in leap years - 31, // March - 31 days - 30, // April - 30 days - 31, // May - 31 days - 30, // June - 30 days - 31, // July - 31 days - 31, // August - 31 days - 30, // September - 30 days - 31, // October - 31 days - 30, // November - 30 days - 31 // December - 31 days - ]; - var monthLengths_1 = monthLengths; // 28 - feb - - var fns = createCommonjsModule(function (module, exports) { - //git:blame @JuliasCaesar https://www.timeanddate.com/date/leapyear.html - exports.isLeapYear = function (year) { - return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; - }; // unsurprisingly-nasty `typeof date` call - - - exports.isDate = function (d) { - return Object.prototype.toString.call(d) === '[object Date]' && !isNaN(d.valueOf()); - }; - - exports.isArray = function (input) { - return Object.prototype.toString.call(input) === '[object Array]'; - }; - - exports.isObject = function (input) { - return Object.prototype.toString.call(input) === '[object Object]'; - }; - - exports.isBoolean = function (input) { - return Object.prototype.toString.call(input) === '[object Boolean]'; - }; - - exports.zeroPad = function (str) { - var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2; - var pad = '0'; - str = str + ''; - return str.length >= len ? str : new Array(len - str.length + 1).join(pad) + str; - }; - - exports.titleCase = function (str) { - if (!str) { - return ''; - } - - return str[0].toUpperCase() + str.substr(1); - }; - - exports.ordinal = function (i) { - var j = i % 10; - var k = i % 100; - - if (j === 1 && k !== 11) { - return i + 'st'; - } - - if (j === 2 && k !== 12) { - return i + 'nd'; - } - - if (j === 3 && k !== 13) { - return i + 'rd'; - } - - return i + 'th'; - }; //strip 'st' off '1st'.. - - - exports.toCardinal = function (str) { - str = String(str); - str = str.replace(/([0-9])(st|nd|rd|th)$/i, '$1'); - return parseInt(str, 10); - }; //used mostly for cleanup of unit names, like 'months' - - - exports.normalize = function () { - var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - str = str.toLowerCase().trim(); - str = str.replace(/ies$/, 'y'); //'centuries' - - str = str.replace(/s$/, ''); - str = str.replace(/-/g, ''); - - if (str === 'day' || str === 'days') { - return 'date'; - } - - if (str === 'min' || str === 'mins') { - return 'minute'; - } - - return str; - }; - - exports.getEpoch = function (tmp) { - //support epoch - if (typeof tmp === 'number') { - return tmp; - } //suport date objects - - - if (exports.isDate(tmp)) { - return tmp.getTime(); - } - - if (tmp.epoch) { - return tmp.epoch; - } - - return null; - }; //make sure this input is a spacetime obj - - - exports.beADate = function (d, s) { - if (exports.isObject(d) === false) { - return s.clone().set(d); - } - - return d; - }; - - exports.formatTimezone = function (offset) { - var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - var sign = offset > 0 ? '+' : '-'; - var absOffset = Math.abs(offset); - var hours = exports.zeroPad(parseInt('' + absOffset, 10)); - var minutes = exports.zeroPad(absOffset % 1 * 60); - return "".concat(sign).concat(hours).concat(delimiter).concat(minutes); - }; - }); - fns.isLeapYear; - fns.isDate; - fns.isArray; - fns.isObject; - fns.isBoolean; - fns.zeroPad; - fns.titleCase; - fns.ordinal; - fns.toCardinal; - fns.normalize; - fns.getEpoch; - fns.beADate; - fns.formatTimezone; - var isLeapYear$2 = fns.isLeapYear; //given a month, return whether day number exists in it - - var hasDate = function hasDate(obj) { - //invalid values - if (monthLengths_1.hasOwnProperty(obj.month) !== true) { - return false; - } //support leap-year in february - - - if (obj.month === 1) { - if (isLeapYear$2(obj.year) && obj.date <= 29) { - return true; - } else { - return obj.date <= 28; - } - } //is this date too-big for this month? - - - var max = monthLengths_1[obj.month] || 0; - - if (obj.date <= max) { - return true; - } - - return false; - }; - - var hasDate_1 = hasDate; - var months = months$1.mapping(); - - var parseYear = function parseYear() { - var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var today = arguments.length > 1 ? arguments[1] : undefined; - var year = parseInt(str.trim(), 10); // use a given year from options.today - - if (!year && today) { - year = today.year; - } // fallback to this year - - - year = year || new Date().getFullYear(); - return year; - }; - - var strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00-0700 - { - reg: /^(\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\-\+:]+)?$/i, - parse: function parse(s, arr, givenTz, options) { - var month = parseInt(arr[2], 10) - 1; - var obj = { - year: arr[1], - month: month, - date: arr[3] - }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - parseOffset_1(s, arr[5]); - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; - } - }, //iso "2015-03-25" or "2015/03/25" or "2015/03/25 12:26:14 PM" - { - reg: /^([0-9]{4})[\-\/.]([0-9]{1,2})[\-\/.]([0-9]{1,2}),?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i, - parse: function parse(s, arr) { - var obj = { - year: arr[1], - month: parseInt(arr[2], 10) - 1, - date: parseInt(arr[3], 10) - }; - - if (obj.month >= 12) { - //support yyyy/dd/mm (weird, but ok) - obj.date = parseInt(arr[2], 10); - obj.month = parseInt(arr[3], 10) - 1; - } - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; - } - }, //mm/dd/yyyy - uk/canada "6/28/2019, 12:26:14 PM" - { - reg: /^([0-9]{1,2})[\-\/.]([0-9]{1,2})[\-\/.]?([0-9]{4})?,?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i, - parse: function parse(s, arr) { - var month = parseInt(arr[1], 10) - 1; - var date = parseInt(arr[2], 10); //support dd/mm/yyy - - if (s.british || month >= 12) { - date = parseInt(arr[1], 10); - month = parseInt(arr[2], 10) - 1; - } - - var year = parseYear(arr[3], s._today) || new Date().getFullYear(); - var obj = { - year: year, - month: month, - date: date - }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; - } - }, // '2012-06' last attempt at iso-like format - { - reg: /^([0-9]{4})[\-\/]([0-9]{2})$/i, - parse: function parse(s, arr, givenTz, options) { - var month = parseInt(arr[2], 10) - 1; - var obj = { - year: arr[1], - month: month, - date: 1 - }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - parseOffset_1(s, arr[5]); - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; - } - }, //common british format - "25-feb-2015" - { - reg: /^([0-9]{1,2})[\-\/]([a-z]+)[\-\/]?([0-9]{4})?$/i, - parse: function parse(s, arr) { - var month = months[arr[2].toLowerCase()]; - var year = parseYear(arr[3], s._today); - var obj = { - year: year, - month: month, - date: fns.toCardinal(arr[1] || '') - }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; - } - }, //alt short format - "feb-25-2015" - { - reg: /^([a-z]+)[\-\/]([0-9]{1,2})[\-\/]?([0-9]{4})?$/i, - parse: function parse(s, arr) { - var month = months[arr[1].toLowerCase()]; - var year = parseYear(arr[3], s._today); - var obj = { - year: year, - month: month, - date: fns.toCardinal(arr[2] || '') - }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; - } - }, //Long "Mar 25 2015" - //February 22, 2017 15:30:00 - { - reg: /^([a-z]+) ([0-9]{1,2}(?:st|nd|rd|th)?),?( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i, - parse: function parse(s, arr) { - var month = months[arr[1].toLowerCase()]; - var year = parseYear(arr[3], s._today); - var obj = { - year: year, - month: month, - date: fns.toCardinal(arr[2] || '') - }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; - } - }, //February 2017 (implied date) - { - reg: /^([a-z]+) ([0-9]{4})$/i, - parse: function parse(s, arr) { - var month = months[arr[1].toLowerCase()]; - var year = parseYear(arr[2], s._today); - var obj = { - year: year, - month: month, - date: s._today.date || 1 - }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; - } - }, //Long "25 Mar 2015" - { - reg: /^([0-9]{1,2}(?:st|nd|rd|th)?) ([a-z]+),?( [0-9]{4})?,? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i, - parse: function parse(s, arr) { - var month = months[arr[2].toLowerCase()]; - - if (!month) { - return null; - } - - var year = parseYear(arr[3], s._today); - var obj = { - year: year, - month: month, - date: fns.toCardinal(arr[1]) - }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; - } - }, { - // 'q2 2002' - reg: /^(q[0-9])( of)?( [0-9]{4})?/i, - parse: function parse(s, arr) { - var quarter = arr[1] || ''; - s = s.quarter(quarter); - var year = arr[3] || ''; - - if (year) { - year = year.trim(); - s = s.year(year); - } - - return s; - } - }, { - // 'summer 2002' - reg: /^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i, - parse: function parse(s, arr) { - var season = arr[1] || ''; - s = s.season(season); - var year = arr[3] || ''; - - if (year) { - year = year.trim(); - s = s.year(year); - } - - return s; - } - }, { - // '200bc' - reg: /^[0-9,]+ ?b\.?c\.?$/i, - parse: function parse(s, arr) { - var str = arr[0] || ''; //make negative-year - - str = str.replace(/^([0-9,]+) ?b\.?c\.?$/i, '-$1'); //remove commas - - str = str.replace(/,/g, ''); - var year = parseInt(str.trim(), 10); - var d = new Date(); - var obj = { - year: year, - month: d.getMonth(), - date: d.getDate() - }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s); - return s; - } - }, { - // '200ad' - reg: /^[0-9,]+ ?(a\.?d\.?|c\.?e\.?)$/i, - parse: function parse(s, arr) { - var str = arr[0] || ''; //remove commas - - str = str.replace(/,/g, ''); - var year = parseInt(str.trim(), 10); - var d = new Date(); - var obj = { - year: year, - month: d.getMonth(), - date: d.getDate() - }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s); - return s; - } - }, { - // '1992' - reg: /^[0-9]{4}( ?a\.?d\.?)?$/i, - parse: function parse(s, arr) { - var today = s._today; - var year = parseYear(arr[0], today); - var d = new Date(); // using today's date, but a new month is awkward. - - if (today.month && !today.date) { - today.date = 1; - } - - var obj = { - year: year, - month: today.month || d.getMonth(), - date: today.date || d.getDate() - }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s); - return s; - } - }]; - var strParse = strFmt; // pull in 'today' data for the baseline moment - - var getNow = function getNow(s) { - s.epoch = Date.now(); - Object.keys(s._today || {}).forEach(function (k) { - if (typeof s[k] === 'function') { - s = s[k](s._today[k]); - } - }); - return s; - }; - - var dates = { - now: function now(s) { - return getNow(s); - }, - today: function today(s) { - return getNow(s); - }, - tonight: function tonight(s) { - s = getNow(s); - s = s.hour(18); //6pm - - return s; - }, - tomorrow: function tomorrow(s) { - s = getNow(s); - s = s.add(1, 'day'); - s = s.startOf('day'); - return s; - }, - yesterday: function yesterday(s) { - s = getNow(s); - s = s.subtract(1, 'day'); - s = s.startOf('day'); - return s; - }, - christmas: function christmas(s) { - var year = getNow(s).year(); - s = s.set([year, 11, 25, 18, 0, 0]); // Dec 25 - - return s; - }, - 'new years': function newYears(s) { - var year = getNow(s).year(); - s = s.set([year, 11, 31, 18, 0, 0]); // Dec 31 - - return s; - } - }; - dates['new years eve'] = dates['new years']; - var namedDates = dates; // - can't use built-in js parser ;( - //========================================= - // ISO Date "2015-03-25" - // Short Date "03/25/2015" or "2015/03/25" - // Long Date "Mar 25 2015" or "25 Mar 2015" - // Full Date "Wednesday March 25 2015" - //========================================= - //-- also - - // if the given epoch is really small, they've probably given seconds and not milliseconds - // anything below this number is likely (but not necessarily) a mistaken input. - // this may seem like an arbitrary number, but it's 'within jan 1970' - // this is only really ambiguous until 2054 or so - - var minimumEpoch = 2500000000; - var defaults = { - year: new Date().getFullYear(), - month: 0, - date: 1 - }; //support [2016, 03, 01] format - - var handleArray = function handleArray(s, arr, today) { - if (arr.length === 0) { - return s; - } - - var order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; - - for (var i = 0; i < order.length; i++) { - var num = arr[i] || today[order[i]] || defaults[order[i]] || 0; - s = s[order[i]](num); - } - - return s; - }; //support {year:2016, month:3} format - - - var handleObject = function handleObject(s, obj, today) { - // if obj is empty, do nothing - if (Object.keys(obj).length === 0) { - return s; - } - - obj = Object.assign({}, defaults, today, obj); - var keys = Object.keys(obj); - - for (var i = 0; i < keys.length; i++) { - var unit = keys[i]; //make sure we have this method - - if (s[unit] === undefined || typeof s[unit] !== 'function') { - continue; - } //make sure the value is a number - - - if (obj[unit] === null || obj[unit] === undefined || obj[unit] === '') { - continue; - } - - var num = obj[unit] || today[unit] || defaults[unit] || 0; - s = s[unit](num); - } - - return s; - }; //find the epoch from different input styles - - - var parseInput = function parseInput(s, input, givenTz) { - var today = s._today || defaults; //if we've been given a epoch number, it's easy - - if (typeof input === 'number') { - if (input > 0 && input < minimumEpoch && s.silent === false) { - console.warn(' - Warning: You are setting the date to January 1970.'); - console.warn(' - did input seconds instead of milliseconds?'); - } - - s.epoch = input; - return s; - } //set tmp time - - - s.epoch = Date.now(); // overwrite tmp time with 'today' value, if exists - - if (s._today && fns.isObject(s._today) && Object.keys(s._today).length > 0) { - var res = handleObject(s, today, defaults); - - if (res.isValid()) { - s.epoch = res.epoch; - } - } // null input means 'now' - - - if (input === null || input === undefined || input === '') { - return s; //k, we're good. - } //support input of Date() object - - - if (fns.isDate(input) === true) { - s.epoch = input.getTime(); - return s; - } //support [2016, 03, 01] format - - - if (fns.isArray(input) === true) { - s = handleArray(s, input, today); - return s; - } //support {year:2016, month:3} format - - - if (fns.isObject(input) === true) { - //support spacetime object as input - if (input.epoch) { - s.epoch = input.epoch; - s.tz = input.tz; - return s; - } - - s = handleObject(s, input, today); - return s; - } //input as a string.. - - - if (typeof input !== 'string') { - return s; - } //little cleanup.. - - - input = input.replace(/\b(mon|tues|wed|wednes|thu|thurs|fri|sat|satur|sun)(day)?\b/i, ''); - input = input.replace(/,/g, ''); - input = input.replace(/ +/g, ' ').trim(); //try some known-words, like 'now' - - if (namedDates.hasOwnProperty(input) === true) { - s = namedDates[input](s); - return s; - } //try each text-parse template, use the first good result - - - for (var i = 0; i < strParse.length; i++) { - var m = input.match(strParse[i].reg); - - if (m) { - // console.log(strFmt[i].reg) - var _res = strParse[i].parse(s, m, givenTz); - - if (_res !== null && _res.isValid()) { - return _res; - } - } - } - - if (s.silent === false) { - console.warn("Warning: couldn't parse date-string: '" + input + "'"); - } - - s.epoch = null; - return s; - }; - - var input = parseInput; - var shortDays = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; - var longDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']; - var days = { - "short": function short() { - return shortDays; - }, - "long": function long() { - return longDays; - }, - set: function set(i18n) { - shortDays = i18n["short"] || shortDays; - longDays = i18n["long"] || longDays; - }, - aliases: { - mo: 1, - tu: 2, - we: 3, - th: 4, - fr: 5, - sa: 6, - su: 7, - tues: 2, - weds: 3, - wedn: 3, - thur: 4, - thurs: 4 - } - }; - var titleCaseEnabled = true; - var caseFormat = { - useTitleCase: function useTitleCase() { - return titleCaseEnabled; - }, - set: function set(useTitleCase) { - titleCaseEnabled = useTitleCase; - } - }; // it's kind of nuts how involved this is - // "+01:00", "+0100", or simply "+01" - - var isoOffset = function isoOffset(s) { - var offset = s.timezone().current.offset; - return !offset ? 'Z' : fns.formatTimezone(offset, ':'); - }; - - var _offset = isoOffset; - - var applyCaseFormat = function applyCaseFormat(str) { - if (caseFormat.useTitleCase()) { - return fns.titleCase(str); - } - - return str; - }; - - var format = { - day: function day(s) { - return applyCaseFormat(s.dayName()); - }, - 'day-short': function dayShort(s) { - return applyCaseFormat(days["short"]()[s.day()]); - }, - 'day-number': function dayNumber(s) { - return s.day(); - }, - 'day-ordinal': function dayOrdinal(s) { - return fns.ordinal(s.day()); - }, - 'day-pad': function dayPad(s) { - return fns.zeroPad(s.day()); - }, - date: function date(s) { - return s.date(); - }, - 'date-ordinal': function dateOrdinal(s) { - return fns.ordinal(s.date()); - }, - 'date-pad': function datePad(s) { - return fns.zeroPad(s.date()); - }, - month: function month(s) { - return applyCaseFormat(s.monthName()); - }, - 'month-short': function monthShort(s) { - return applyCaseFormat(months$1["short"]()[s.month()]); - }, - 'month-number': function monthNumber(s) { - return s.month(); - }, - 'month-ordinal': function monthOrdinal(s) { - return fns.ordinal(s.month()); - }, - 'month-pad': function monthPad(s) { - return fns.zeroPad(s.month()); - }, - 'iso-month': function isoMonth(s) { - return fns.zeroPad(s.month() + 1); - }, - //1-based months - year: function year(s) { - var year = s.year(); - - if (year > 0) { - return year; - } - - year = Math.abs(year); - return year + ' BC'; - }, - 'year-short': function yearShort(s) { - var year = s.year(); - - if (year > 0) { - return "'".concat(String(s.year()).substr(2, 4)); - } - - year = Math.abs(year); - return year + ' BC'; - }, - 'iso-year': function isoYear(s) { - var year = s.year(); - var isNegative = year < 0; - var str = fns.zeroPad(Math.abs(year), 4); //0-padded - - if (isNegative) { - //negative years are for some reason 6-digits ('-00008') - str = fns.zeroPad(str, 6); - str = '-' + str; - } - - return str; - }, - time: function time(s) { - return s.time(); - }, - 'time-24': function time24(s) { - return "".concat(s.hour24(), ":").concat(fns.zeroPad(s.minute())); - }, - hour: function hour(s) { - return s.hour12(); - }, - 'hour-pad': function hourPad(s) { - return fns.zeroPad(s.hour12()); - }, - 'hour-24': function hour24(s) { - return s.hour24(); - }, - 'hour-24-pad': function hour24Pad(s) { - return fns.zeroPad(s.hour24()); - }, - minute: function minute(s) { - return s.minute(); - }, - 'minute-pad': function minutePad(s) { - return fns.zeroPad(s.minute()); - }, - second: function second(s) { - return s.second(); - }, - 'second-pad': function secondPad(s) { - return fns.zeroPad(s.second()); - }, - ampm: function ampm(s) { - return s.ampm(); - }, - quarter: function quarter(s) { - return 'Q' + s.quarter(); - }, - season: function season(s) { - return s.season(); - }, - era: function era(s) { - return s.era(); - }, - json: function json(s) { - return s.json(); - }, - timezone: function timezone(s) { - return s.timezone().name; - }, - offset: function offset(s) { - return _offset(s); - }, - numeric: function numeric(s) { - return "".concat(s.year(), "/").concat(fns.zeroPad(s.month() + 1), "/").concat(fns.zeroPad(s.date())); - }, - // yyyy/mm/dd - 'numeric-us': function numericUs(s) { - return "".concat(fns.zeroPad(s.month() + 1), "/").concat(fns.zeroPad(s.date()), "/").concat(s.year()); - }, - // mm/dd/yyyy - 'numeric-uk': function numericUk(s) { - return "".concat(fns.zeroPad(s.date()), "/").concat(fns.zeroPad(s.month() + 1), "/").concat(s.year()); - }, - //dd/mm/yyyy - 'mm/dd': function mmDd(s) { - return "".concat(fns.zeroPad(s.month() + 1), "/").concat(fns.zeroPad(s.date())); - }, - //mm/dd - // ... https://en.wikipedia.org/wiki/ISO_8601 ;((( - iso: function iso(s) { - var year = s.format('iso-year'); - var month = fns.zeroPad(s.month() + 1); //1-based months - - var date = fns.zeroPad(s.date()); - var hour = fns.zeroPad(s.h24()); - var minute = fns.zeroPad(s.minute()); - var second = fns.zeroPad(s.second()); - var ms = fns.zeroPad(s.millisecond(), 3); - - var offset = _offset(s); - - return "".concat(year, "-").concat(month, "-").concat(date, "T").concat(hour, ":").concat(minute, ":").concat(second, ".").concat(ms).concat(offset); //2018-03-09T08:50:00.000-05:00 - }, - 'iso-short': function isoShort(s) { - var month = fns.zeroPad(s.month() + 1); //1-based months - - var date = fns.zeroPad(s.date()); - return "".concat(s.year(), "-").concat(month, "-").concat(date); //2017-02-15 - }, - 'iso-utc': function isoUtc(s) { - return new Date(s.epoch).toISOString(); //2017-03-08T19:45:28.367Z - }, - //i made these up - nice: function nice(s) { - return "".concat(months$1["short"]()[s.month()], " ").concat(fns.ordinal(s.date()), ", ").concat(s.time()); - }, - 'nice-24': function nice24(s) { - return "".concat(months$1["short"]()[s.month()], " ").concat(fns.ordinal(s.date()), ", ").concat(s.hour24(), ":").concat(fns.zeroPad(s.minute())); - }, - 'nice-year': function niceYear(s) { - return "".concat(months$1["short"]()[s.month()], " ").concat(fns.ordinal(s.date()), ", ").concat(s.year()); - }, - 'nice-day': function niceDay(s) { - return "".concat(days["short"]()[s.day()], " ").concat(applyCaseFormat(months$1["short"]()[s.month()]), " ").concat(fns.ordinal(s.date())); - }, - 'nice-full': function niceFull(s) { - return "".concat(s.dayName(), " ").concat(applyCaseFormat(s.monthName()), " ").concat(fns.ordinal(s.date()), ", ").concat(s.time()); - }, - 'nice-full-24': function niceFull24(s) { - return "".concat(s.dayName(), " ").concat(applyCaseFormat(s.monthName()), " ").concat(fns.ordinal(s.date()), ", ").concat(s.hour24(), ":").concat(fns.zeroPad(s.minute())); - } - }; //aliases - - var aliases = { - 'day-name': 'day', - 'month-name': 'month', - 'iso 8601': 'iso', - 'time-h24': 'time-24', - 'time-12': 'time', - 'time-h12': 'time', - tz: 'timezone', - 'day-num': 'day-number', - 'month-num': 'month-number', - 'month-iso': 'iso-month', - 'year-iso': 'iso-year', - 'nice-short': 'nice', - 'nice-short-24': 'nice-24', - mdy: 'numeric-us', - dmy: 'numeric-uk', - ymd: 'numeric', - 'yyyy/mm/dd': 'numeric', - 'mm/dd/yyyy': 'numeric-us', - 'dd/mm/yyyy': 'numeric-us', - 'little-endian': 'numeric-uk', - 'big-endian': 'numeric', - 'day-nice': 'nice-day' - }; - Object.keys(aliases).forEach(function (k) { - return format[k] = format[aliases[k]]; - }); - - var printFormat = function printFormat(s) { - var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; //don't print anything if it's an invalid date - - if (s.isValid() !== true) { - return ''; - } //support .format('month') - - - if (format.hasOwnProperty(str)) { - var out = format[str](s) || ''; - - if (str !== 'json') { - out = String(out); - - if (str !== 'ampm') { - out = applyCaseFormat(out); - } - } - - return out; - } //support '{hour}:{minute}' notation - - - if (str.indexOf('{') !== -1) { - var sections = /\{(.+?)\}/g; - str = str.replace(sections, function (_, fmt) { - fmt = fmt.toLowerCase().trim(); - - if (format.hasOwnProperty(fmt)) { - var _out = String(format[fmt](s)); - - if (fmt !== 'ampm') { - return applyCaseFormat(_out); - } - - return _out; - } - - return ''; - }); - return str; - } - - return s.format('iso-short'); - }; - - var format_1 = printFormat; - var pad = fns.zeroPad; - var formatTimezone = fns.formatTimezone; //parse this insane unix-time-templating thing, from the 19th century - //http://unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns - //time-symbols we support - - var mapping = { - G: function G(s) { - return s.era(); - }, - GG: function GG(s) { - return s.era(); - }, - GGG: function GGG(s) { - return s.era(); - }, - GGGG: function GGGG(s) { - return s.era() === 'AD' ? 'Anno Domini' : 'Before Christ'; - }, - //year - y: function y(s) { - return s.year(); - }, - yy: function yy(s) { - //last two chars - return parseInt(String(s.year()).substr(2, 4), 10); - }, - yyy: function yyy(s) { - return s.year(); - }, - yyyy: function yyyy(s) { - return s.year(); - }, - yyyyy: function yyyyy(s) { - return '0' + s.year(); - }, - // u: (s) => {},//extended non-gregorian years - //quarter - Q: function Q(s) { - return s.quarter(); - }, - QQ: function QQ(s) { - return s.quarter(); - }, - QQQ: function QQQ(s) { - return s.quarter(); - }, - QQQQ: function QQQQ(s) { - return s.quarter(); - }, - //month - M: function M(s) { - return s.month() + 1; - }, - MM: function MM(s) { - return pad(s.month() + 1); - }, - MMM: function MMM(s) { - return s.format('month-short'); - }, - MMMM: function MMMM(s) { - return s.format('month'); - }, - //week - w: function w(s) { - return s.week(); - }, - ww: function ww(s) { - return pad(s.week()); - }, - //week of month - // W: (s) => s.week(), - //date of month - d: function d(s) { - return s.date(); - }, - dd: function dd(s) { - return pad(s.date()); - }, - //date of year - D: function D(s) { - return s.dayOfYear(); - }, - DD: function DD(s) { - return pad(s.dayOfYear()); - }, - DDD: function DDD(s) { - return pad(s.dayOfYear(), 3); - }, - // F: (s) => {},//date of week in month - // g: (s) => {},//modified julian day - //day - E: function E(s) { - return s.format('day-short'); - }, - EE: function EE(s) { - return s.format('day-short'); - }, - EEE: function EEE(s) { - return s.format('day-short'); - }, - EEEE: function EEEE(s) { - return s.format('day'); - }, - EEEEE: function EEEEE(s) { - return s.format('day')[0]; - }, - e: function e(s) { - return s.day(); - }, - ee: function ee(s) { - return s.day(); - }, - eee: function eee(s) { - return s.format('day-short'); - }, - eeee: function eeee(s) { - return s.format('day'); - }, - eeeee: function eeeee(s) { - return s.format('day')[0]; - }, - //am/pm - a: function a(s) { - return s.ampm().toUpperCase(); - }, - aa: function aa(s) { - return s.ampm().toUpperCase(); - }, - aaa: function aaa(s) { - return s.ampm().toUpperCase(); - }, - aaaa: function aaaa(s) { - return s.ampm().toUpperCase(); - }, - //hour - h: function h(s) { - return s.h12(); - }, - hh: function hh(s) { - return pad(s.h12()); - }, - H: function H(s) { - return s.hour(); - }, - HH: function HH(s) { - return pad(s.hour()); - }, - // j: (s) => {},//weird hour format - m: function m(s) { - return s.minute(); - }, - mm: function mm(s) { - return pad(s.minute()); - }, - s: function s(_s) { - return _s.second(); - }, - ss: function ss(s) { - return pad(s.second()); - }, - //milliseconds in the day - A: function A(s) { - return s.epoch - s.startOf('day').epoch; - }, - //timezone - z: function z(s) { - return s.timezone().name; - }, - zz: function zz(s) { - return s.timezone().name; - }, - zzz: function zzz(s) { - return s.timezone().name; - }, - zzzz: function zzzz(s) { - return s.timezone().name; - }, - Z: function Z(s) { - return formatTimezone(s.timezone().current.offset); - }, - ZZ: function ZZ(s) { - return formatTimezone(s.timezone().current.offset); - }, - ZZZ: function ZZZ(s) { - return formatTimezone(s.timezone().current.offset); - }, - ZZZZ: function ZZZZ(s) { - return formatTimezone(s.timezone().current.offset, ':'); - } - }; - - var addAlias = function addAlias(_char, to, n) { - var name = _char; - var toName = to; - - for (var i = 0; i < n; i += 1) { - mapping[name] = mapping[toName]; - name += _char; - toName += to; - } - }; - - addAlias('q', 'Q', 4); - addAlias('L', 'M', 4); - addAlias('Y', 'y', 4); - addAlias('c', 'e', 4); - addAlias('k', 'H', 2); - addAlias('K', 'h', 2); - addAlias('S', 's', 2); - addAlias('v', 'z', 4); - addAlias('V', 'Z', 4); // support unix-style escaping with ' character - - var escapeChars = function escapeChars(arr) { - for (var i = 0; i < arr.length; i += 1) { - if (arr[i] === "'") { - // greedy-search for next apostrophe - for (var o = i + 1; o < arr.length; o += 1) { - if (arr[o]) { - arr[i] += arr[o]; - } - - if (arr[o] === "'") { - arr[o] = null; - break; - } - - arr[o] = null; - } - } - } - - return arr.filter(function (ch) { - return ch; - }); - }; //combine consecutive chars, like 'yyyy' as one. - - - var combineRepeated = function combineRepeated(arr) { - for (var i = 0; i < arr.length; i += 1) { - var c = arr[i]; // greedy-forward - - for (var o = i + 1; o < arr.length; o += 1) { - if (arr[o] === c) { - arr[i] += arr[o]; - arr[o] = null; - } else { - break; - } - } - } // '' means one apostrophe - - - arr = arr.filter(function (ch) { - return ch; - }); - arr = arr.map(function (str) { - if (str === "''") { - str = "'"; - } - - return str; - }); - return arr; - }; - - var unixFmt = function unixFmt(s, str) { - var arr = str.split(''); // support character escaping - - arr = escapeChars(arr); //combine 'yyyy' as string. - - arr = combineRepeated(arr); - return arr.reduce(function (txt, c) { - if (mapping[c] !== undefined) { - txt += mapping[c](s) || ''; - } else { - // 'unescape' - if (/^'.{1,}'$/.test(c)) { - c = c.replace(/'/g, ''); - } - - txt += c; - } - - return txt; - }, ''); - }; - - var unixFmt_1 = unixFmt; - var units$2 = ['year', 'season', 'quarter', 'month', 'week', 'day', 'quarterHour', 'hour', 'minute']; - - var doUnit = function doUnit(s, k) { - var start = s.clone().startOf(k); - var end = s.clone().endOf(k); - var duration = end.epoch - start.epoch; - var percent = (s.epoch - start.epoch) / duration; - return parseFloat(percent.toFixed(2)); - }; //how far it is along, from 0-1 - - - var progress = function progress(s, unit) { - if (unit) { - unit = fns.normalize(unit); - return doUnit(s, unit); - } - - var obj = {}; - units$2.forEach(function (k) { - obj[k] = doUnit(s, k); - }); - return obj; - }; - - var progress_1 = progress; - - var nearest = function nearest(s, unit) { - //how far have we gone? - var prog = s.progress(); - unit = fns.normalize(unit); //fix camel-case for this one - - if (unit === 'quarterhour') { - unit = 'quarterHour'; - } - - if (prog[unit] !== undefined) { - // go forward one? - if (prog[unit] > 0.5) { - s = s.add(1, unit); - } // go to start - - - s = s.startOf(unit); - } else if (s.silent === false) { - console.warn("no known unit '" + unit + "'"); - } - - return s; - }; - - var nearest_1 = nearest; //increment until dates are the same - - var climb = function climb(a, b, unit) { - var i = 0; - a = a.clone(); - - while (a.isBefore(b)) { - //do proper, expensive increment to catch all-the-tricks - a = a.add(1, unit); - i += 1; - } //oops, we went too-far.. - - - if (a.isAfter(b, unit)) { - i -= 1; - } - - return i; - }; // do a thurough +=1 on the unit, until they match - // for speed-reasons, only used on day, month, week. - - - var diffOne = function diffOne(a, b, unit) { - if (a.isBefore(b)) { - return climb(a, b, unit); - } else { - return climb(b, a, unit) * -1; //reverse it - } - }; - - var one = diffOne; // 2020 - 2019 may be 1 year, or 0 years - // - '1 year difference' means 366 days during a leap year - - var fastYear = function fastYear(a, b) { - var years = b.year() - a.year(); // should we decrement it by 1? - - a = a.year(b.year()); - - if (a.isAfter(b)) { - years -= 1; - } - - return years; - }; // use a waterfall-method for computing a diff of any 'pre-knowable' units - // compute years, then compute months, etc.. - // ... then ms-math for any very-small units - - - var diff$1 = function diff(a, b) { - // an hour is always the same # of milliseconds - // so these units can be 'pre-calculated' - var msDiff = b.epoch - a.epoch; - var obj = { - milliseconds: msDiff, - seconds: parseInt(msDiff / 1000, 10) - }; - obj.minutes = parseInt(obj.seconds / 60, 10); - obj.hours = parseInt(obj.minutes / 60, 10); //do the year - - var tmp = a.clone(); - obj.years = fastYear(tmp, b); - tmp = a.add(obj.years, 'year'); //there's always 12 months in a year... - - obj.months = obj.years * 12; - tmp = a.add(obj.months, 'month'); - obj.months += one(tmp, b, 'month'); // there's always atleast 52 weeks in a year.. - // (month * 4) isn't as close - - obj.weeks = obj.years * 52; - tmp = a.add(obj.weeks, 'week'); - obj.weeks += one(tmp, b, 'week'); // there's always atleast 7 days in a week - - obj.days = obj.weeks * 7; - tmp = a.add(obj.days, 'day'); - obj.days += one(tmp, b, 'day'); - return obj; - }; - - var waterfall = diff$1; - - var reverseDiff = function reverseDiff(obj) { - Object.keys(obj).forEach(function (k) { - obj[k] *= -1; - }); - return obj; - }; // this method counts a total # of each unit, between a, b. - // '1 month' means 28 days in february - // '1 year' means 366 days in a leap year - - - var main$1 = function main(a, b, unit) { - b = fns.beADate(b, a); //reverse values, if necessary - - var reversed = false; - - if (a.isAfter(b)) { - var tmp = a; - a = b; - b = tmp; - reversed = true; - } //compute them all (i know!) - - - var obj = waterfall(a, b); - - if (reversed) { - obj = reverseDiff(obj); - } //return just the requested unit - - - if (unit) { - //make sure it's plural-form - unit = fns.normalize(unit); - - if (/s$/.test(unit) !== true) { - unit += 's'; - } - - if (unit === 'dates') { - unit = 'days'; - } - - return obj[unit]; - } - - return obj; - }; - - var diff = main$1; //our conceptual 'break-points' for each unit - - var qualifiers = { - months: { - almost: 10, - over: 4 - }, - days: { - almost: 25, - over: 10 - }, - hours: { - almost: 20, - over: 8 - }, - minutes: { - almost: 50, - over: 20 - }, - seconds: { - almost: 50, - over: 20 - } - }; //get number of hours/minutes... between the two dates - - function getDiff(a, b) { - var isBefore = a.isBefore(b); - var later = isBefore ? b : a; - var earlier = isBefore ? a : b; - earlier = earlier.clone(); - var diff = { - years: 0, - months: 0, - days: 0, - hours: 0, - minutes: 0, - seconds: 0 - }; - Object.keys(diff).forEach(function (unit) { - if (earlier.isSame(later, unit)) { - return; - } - - var max = earlier.diff(later, unit); - earlier = earlier.add(max, unit); - diff[unit] = max; - }); //reverse it, if necessary - - if (isBefore) { - Object.keys(diff).forEach(function (u) { - if (diff[u] !== 0) { - diff[u] *= -1; - } - }); - } - - return diff; - } // Expects a plural unit arg - - - function pluralize(value, unit) { - if (value === 1) { - unit = unit.slice(0, -1); - } - - return value + ' ' + unit; - } //create the human-readable diff between the two dates - - - var since = function since(start, end) { - end = fns.beADate(end, start); - var diff = getDiff(start, end); - var isNow = Object.keys(diff).every(function (u) { - return !diff[u]; - }); - - if (isNow === true) { - return { - diff: diff, - rounded: 'now', - qualified: 'now', - precise: 'now' - }; - } - - var rounded; - var qualified; - var precise; - var englishValues = []; //go through each value and create its text-representation - - Object.keys(diff).forEach(function (unit, i, units) { - var value = Math.abs(diff[unit]); - - if (value === 0) { - return; - } - - var englishValue = pluralize(value, unit); - englishValues.push(englishValue); - - if (!rounded) { - rounded = qualified = englishValue; - - if (i > 4) { - return; - } //is it a 'almost' something, etc? - - - var nextUnit = units[i + 1]; - var nextValue = Math.abs(diff[nextUnit]); - - if (nextValue > qualifiers[nextUnit].almost) { - rounded = pluralize(value + 1, unit); - qualified = 'almost ' + rounded; - } else if (nextValue > qualifiers[nextUnit].over) qualified = 'over ' + englishValue; - } - }); //make them into a string - - precise = englishValues.splice(0, 2).join(', '); //handle before/after logic - - if (start.isAfter(end) === true) { - rounded += ' ago'; - qualified += ' ago'; - precise += ' ago'; - } else { - rounded = 'in ' + rounded; - qualified = 'in ' + qualified; - precise = 'in ' + precise; - } - - return { - diff: diff, - rounded: rounded, - qualified: qualified, - precise: precise - }; - }; - - var since_1 = since; //https://www.timeanddate.com/calendar/aboutseasons.html - // Spring - from March 1 to May 31; - // Summer - from June 1 to August 31; - // Fall (autumn) - from September 1 to November 30; and, - // Winter - from December 1 to February 28 (February 29 in a leap year). - - var seasons = { - north: [['spring', 2, 1], //spring march 1 - ['summer', 5, 1], //june 1 - ['fall', 8, 1], //sept 1 - ['autumn', 8, 1], //sept 1 - ['winter', 11, 1] //dec 1 - ], - south: [['fall', 2, 1], //march 1 - ['autumn', 2, 1], //march 1 - ['winter', 5, 1], //june 1 - ['spring', 8, 1], //sept 1 - ['summer', 11, 1] //dec 1 - ] - }; - var quarters = [null, [0, 1], //jan 1 - [3, 1], //apr 1 - [6, 1], //july 1 - [9, 1] //oct 1 - ]; - var units$1 = { - minute: function minute(s) { - walk_1(s, { - second: 0, - millisecond: 0 - }); - return s; - }, - quarterhour: function quarterhour(s) { - var minute = s.minutes(); - - if (minute >= 45) { - s = s.minutes(45); - } else if (minute >= 30) { - s = s.minutes(30); - } else if (minute >= 15) { - s = s.minutes(15); - } else { - s = s.minutes(0); - } - - walk_1(s, { - second: 0, - millisecond: 0 - }); - return s; - }, - hour: function hour(s) { - walk_1(s, { - minute: 0, - second: 0, - millisecond: 0 - }); - return s; - }, - day: function day(s) { - walk_1(s, { - hour: 0, - minute: 0, - second: 0, - millisecond: 0 - }); - return s; - }, - week: function week(s) { - var original = s.clone(); - s = s.day(s._weekStart); //monday - - if (s.isAfter(original)) { - s = s.subtract(1, 'week'); - } - - walk_1(s, { - hour: 0, - minute: 0, - second: 0, - millisecond: 0 - }); - return s; - }, - month: function month(s) { - walk_1(s, { - date: 1, - hour: 0, - minute: 0, - second: 0, - millisecond: 0 - }); - return s; - }, - quarter: function quarter(s) { - var q = s.quarter(); - - if (quarters[q]) { - walk_1(s, { - month: quarters[q][0], - date: quarters[q][1], - hour: 0, - minute: 0, - second: 0, - millisecond: 0 - }); - } - - return s; - }, - season: function season(s) { - var current = s.season(); - var hem = 'north'; - - if (s.hemisphere() === 'South') { - hem = 'south'; - } - - for (var i = 0; i < seasons[hem].length; i++) { - if (seasons[hem][i][0] === current) { - //winter goes between years - var year = s.year(); - - if (current === 'winter' && s.month() < 3) { - year -= 1; - } - - walk_1(s, { - year: year, - month: seasons[hem][i][1], - date: seasons[hem][i][2], - hour: 0, - minute: 0, - second: 0, - millisecond: 0 - }); - return s; - } - } - - return s; - }, - year: function year(s) { - walk_1(s, { - month: 0, - date: 1, - hour: 0, - minute: 0, - second: 0, - millisecond: 0 - }); - return s; - }, - decade: function decade(s) { - s = s.startOf('year'); - var year = s.year(); - var decade = parseInt(year / 10, 10) * 10; - s = s.year(decade); - return s; - }, - century: function century(s) { - s = s.startOf('year'); - var year = s.year(); // near 0AD goes '-1 | +1' - - var decade = parseInt(year / 100, 10) * 100; - s = s.year(decade); - return s; - } - }; - units$1.date = units$1.day; - - var startOf = function startOf(a, unit) { - var s = a.clone(); - unit = fns.normalize(unit); - - if (units$1[unit]) { - return units$1[unit](s); - } - - if (unit === 'summer' || unit === 'winter') { - s = s.season(unit); - return units$1.season(s); - } - - return s; - }; //piggy-backs off startOf - - - var endOf = function endOf(a, unit) { - var s = a.clone(); - unit = fns.normalize(unit); - - if (units$1[unit]) { - // go to beginning, go to next one, step back 1ms - s = units$1[unit](s); // startof - - s = s.add(1, unit); - s = s.subtract(1, 'millisecond'); - return s; - } - - return s; - }; - - var startOf_1 = { - startOf: startOf, - endOf: endOf - }; - - var isDay = function isDay(unit) { - if (days["short"]().find(function (s) { - return s === unit; - })) { - return true; - } - - if (days["long"]().find(function (s) { - return s === unit; - })) { - return true; - } - - return false; - }; // return a list of the weeks/months/days between a -> b - // returns spacetime objects in the timezone of the input - - - var every = function every(start) { - var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - var end = arguments.length > 2 ? arguments[2] : undefined; - - if (!unit || !end) { - return []; - } //cleanup unit param - - - unit = fns.normalize(unit); //cleanup to param - - end = start.clone().set(end); //swap them, if they're backwards - - if (start.isAfter(end)) { - var tmp = start; - start = end; - end = tmp; - } //support 'every wednesday' - - - var d = start.clone(); - - if (isDay(unit)) { - d = d.next(unit); - unit = 'week'; - } else { - d = d.next(unit); - } //okay, actually start doing it - - - var result = []; - - while (d.isBefore(end)) { - result.push(d); - d = d.add(1, unit); - } - - return result; - }; - - var every_1 = every; - - var parseDst = function parseDst(dst) { - if (!dst) { - return []; - } - - return dst.split('->'); - }; - - var titleCase = function titleCase(str) { - str = str[0].toUpperCase() + str.substr(1); - str = str.replace(/\/gmt/, '/GMT'); - str = str.replace(/[\/_]([a-z])/gi, function (s) { - return s.toUpperCase(); - }); - return str; - }; //get metadata about this timezone - - - var timezone = function timezone(s) { - var zones = s.timezones; - var tz = s.tz; - - if (zones.hasOwnProperty(tz) === false) { - tz = find(s.tz, zones); - } - - if (tz === null) { - if (s.silent === false) { - console.warn("Warn: could not find given or local timezone - '" + s.tz + "'"); - } - - return { - current: { - epochShift: 0 - } - }; - } - - var found = zones[tz]; - var result = { - name: titleCase(tz), - hasDst: Boolean(found.dst), - default_offset: found.offset, - //do north-hemisphere version as default (sorry!) - hemisphere: found.hem === 's' ? 'South' : 'North', - current: {} - }; - - if (result.hasDst) { - var arr = parseDst(found.dst); - result.change = { - start: arr[0], - back: arr[1] - }; - } //find the offsets for summer/winter times - //(these variable names are north-centric) - - - var summer = found.offset; // (july) - - var winter = summer; // (january) assume it's the same for now - - if (result.hasDst === true) { - if (result.hemisphere === 'North') { - winter = summer - 1; - } else { - //southern hemisphere - winter = found.offset + 1; - } - } //find out which offset to use right now - //use 'summer' time july-time - - - if (result.hasDst === false) { - result.current.offset = summer; - result.current.isDST = false; - } else if (summerTime(s.epoch, result.change.start, result.change.back, summer, winter) === true) { - result.current.offset = summer; - result.current.isDST = result.hemisphere === 'North'; //dst 'on' in winter in north - } else { - //use 'winter' january-time - result.current.offset = winter; - result.current.isDST = result.hemisphere === 'South'; //dst 'on' in summer in south - } - - return result; - }; - - var timezone_1 = timezone; - var units = ['century', 'decade', 'year', 'month', 'date', 'day', 'hour', 'minute', 'second', 'millisecond']; //the spacetime instance methods (also, the API) - - var methods$4 = { - set: function set(input$1, tz) { - var s = this.clone(); - s = input(s, input$1, null); - - if (tz) { - this.tz = find(tz); - } - - return s; - }, - timezone: function timezone() { - return timezone_1(this); - }, - isDST: function isDST() { - return timezone_1(this).current.isDST; - }, - hasDST: function hasDST() { - return timezone_1(this).hasDst; - }, - offset: function offset() { - return timezone_1(this).current.offset * 60; - }, - hemisphere: function hemisphere() { - return timezone_1(this).hemisphere; - }, - format: function format(fmt) { - return format_1(this, fmt); - }, - unixFmt: function unixFmt(fmt) { - return unixFmt_1(this, fmt); - }, - startOf: function startOf(unit) { - return startOf_1.startOf(this, unit); - }, - endOf: function endOf(unit) { - return startOf_1.endOf(this, unit); - }, - leapYear: function leapYear() { - var year = this.year(); - return fns.isLeapYear(year); - }, - progress: function progress(unit) { - return progress_1(this, unit); - }, - nearest: function nearest(unit) { - return nearest_1(this, unit); - }, - diff: function diff$1(d, unit) { - return diff(this, d, unit); - }, - since: function since(d) { - if (!d) { - d = this.clone().set(); - } - - return since_1(this, d); - }, - next: function next(unit) { - var s = this.add(1, unit); - return s.startOf(unit); - }, - //the start of the previous year/week/century - last: function last(unit) { - var s = this.subtract(1, unit); - return s.startOf(unit); - }, - isValid: function isValid() { - //null/undefined epochs - if (!this.epoch && this.epoch !== 0) { - return false; - } - - return !isNaN(this.d.getTime()); - }, - //travel to this timezone - "goto": function goto(tz) { - var s = this.clone(); - s.tz = find(tz, s.timezones); //science! - - return s; - }, - //get each week/month/day between a -> b - every: function every(unit, to) { - // allow swapping these params: - if (_typeof(unit) === 'object' && typeof to === 'string') { - var tmp = to; - to = unit; - unit = tmp; - } - - return every_1(this, unit, to); - }, - isAwake: function isAwake() { - var hour = this.hour(); //10pm -> 8am - - if (hour < 8 || hour > 22) { - return false; - } - - return true; - }, - isAsleep: function isAsleep() { - return !this.isAwake(); - }, - //pretty-printing - log: function log() { - console.log(''); - console.log(format_1(this, 'nice-short')); - return this; - }, - logYear: function logYear() { - console.log(''); - console.log(format_1(this, 'full-short')); - return this; - }, - json: function json() { - var _this = this; - - return units.reduce(function (h, unit) { - h[unit] = _this[unit](); - return h; - }, {}); - }, - debug: function debug() { - var tz = this.timezone(); - var date = this.format('MM') + ' ' + this.format('date-ordinal') + ' ' + this.year(); - date += '\n - ' + this.format('time'); - console.log('\n\n', date + '\n - ' + tz.name + ' (' + tz.current.offset + ')'); - return this; - }, - //alias of 'since' but opposite - like moment.js - from: function from(d) { - d = this.clone().set(d); - return d.since(this); - }, - fromNow: function fromNow() { - var d = this.clone().set(Date.now()); - return d.since(this); - }, - weekStart: function weekStart(input) { - //accept a number directly - if (typeof input === 'number') { - this._weekStart = input; - return this; - } - - if (typeof input === 'string') { - // accept 'wednesday' - input = input.toLowerCase().trim(); - var num = days["short"]().indexOf(input); - - if (num === -1) { - num = days["long"]().indexOf(input); - } - - if (num === -1) { - num = 1; //go back to default - } - - this._weekStart = num; - } else { - console.warn('Spacetime Error: Cannot understand .weekStart() input:', input); - } - - return this; - } - }; // aliases - - methods$4.inDST = methods$4.isDST; - methods$4.round = methods$4.nearest; - methods$4.each = methods$4.every; - var methods_1 = methods$4; //these methods wrap around them. - - var isLeapYear$1 = fns.isLeapYear; - - var validate = function validate(n) { - //handle number as a string - if (typeof n === 'string') { - n = parseInt(n, 10); - } - - return n; - }; - - var order$1 = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; //reduce hostile micro-changes when moving dates by millisecond - - var confirm = function confirm(s, tmp, unit) { - var n = order$1.indexOf(unit); - var arr = order$1.slice(n, order$1.length); - - for (var i = 0; i < arr.length; i++) { - var want = tmp[arr[i]](); - s[arr[i]](want); - } - - return s; - }; - - var set = { - milliseconds: function milliseconds(s, n) { - n = validate(n); - var current = s.millisecond(); - var diff = current - n; //milliseconds to shift by - - return s.epoch - diff; - }, - seconds: function seconds(s, n) { - n = validate(n); - var diff = s.second() - n; - var shift = diff * milliseconds.second; - return s.epoch - shift; - }, - minutes: function minutes(s, n) { - n = validate(n); - var old = s.clone(); - var diff = s.minute() - n; - var shift = diff * milliseconds.minute; - s.epoch -= shift; // check against a screw-up - // if (old.hour() != s.hour()) { - // walkTo(old, { - // minute: n - // }) - // return old.epoch - // } - - confirm(s, old, 'second'); - return s.epoch; - }, - hours: function hours(s, n) { - n = validate(n); - - if (n >= 24) { - n = 24; - } else if (n < 0) { - n = 0; - } - - var old = s.clone(); - var diff = s.hour() - n; - var shift = diff * milliseconds.hour; - s.epoch -= shift; // oops, did we change the day? - - if (s.date() !== old.date()) { - s = old.clone(); - - if (diff > 1) { - diff -= 1; - } - - if (diff < 1) { - diff += 1; - } - - shift = diff * milliseconds.hour; - s.epoch -= shift; - } - - walk_1(s, { - hour: n - }); - confirm(s, old, 'minute'); - return s.epoch; - }, - //support setting time by '4:25pm' - this isn't very-well developed.. - time: function time(s, str) { - var m = str.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/); - - if (!m) { - //fallback to support just '2am' - m = str.match(/([0-9]{1,2}) ?(am|pm)/); - - if (!m) { - return s.epoch; - } - - m.splice(2, 0, '0'); //add implicit 0 minutes - - m.splice(3, 0, ''); //add implicit seconds - } - - var h24 = false; - var hour = parseInt(m[1], 10); - var minute = parseInt(m[2], 10); - - if (hour > 12) { - h24 = true; - } //make the hour into proper 24h time - - - if (h24 === false) { - if (m[4] === 'am' && hour === 12) { - //12am is midnight - hour = 0; - } - - if (m[4] === 'pm' && hour < 12) { - //12pm is noon - hour += 12; - } - } // handle seconds - - - m[3] = m[3] || ''; - m[3] = m[3].replace(/:/, ''); - var sec = parseInt(m[3], 10) || 0; - s = s.hour(hour); - s = s.minute(minute); - s = s.second(sec); - s = s.millisecond(0); - return s.epoch; - }, - date: function date(s, n) { - n = validate(n); //avoid setting february 31st - - if (n > 28) { - var month = s.month(); - var max = monthLengths_1[month]; // support leap day in february - - if (month === 1 && n === 29 && isLeapYear$1(s.year())) { - max = 29; - } - - if (n > max) { - n = max; - } - } //avoid setting < 0 - - - if (n <= 0) { - n = 1; - } - - walk_1(s, { - date: n - }); - return s.epoch; - }, - //this one's tricky - month: function month(s, n) { - if (typeof n === 'string') { - n = months$1.mapping()[n.toLowerCase()]; - } - - n = validate(n); //don't go past december - - if (n >= 12) { - n = 11; - } - - if (n <= 0) { - n = 0; - } - - var date = s.date(); //there's no 30th of february, etc. - - if (date > monthLengths_1[n]) { - //make it as close as we can.. - date = monthLengths_1[n]; - } - - walk_1(s, { - month: n, - date: date - }); - return s.epoch; - }, - year: function year(s, n) { - // support '97 - if (typeof n === 'string' && /^'[0-9]{2}$/.test(n)) { - n = n.replace(/'/, '').trim(); - n = Number(n); // '89 is 1989 - - if (n > 30) { - //change this in 10y - n = 1900 + n; - } else { - // '12 is 2012 - n = 2000 + n; - } - } - - n = validate(n); - walk_1(s, { - year: n - }); - return s.epoch; - }, - dayOfYear: function dayOfYear(s, n) { - n = validate(n); - var old = s.clone(); - n -= 1; //days are 1-based - - if (n <= 0) { - n = 0; - } else if (n >= 365) { - n = 364; - } - - s = s.startOf('year'); - s = s.add(n, 'day'); - confirm(s, old, 'hour'); - return s.epoch; - } - }; - var methods$3 = { - millisecond: function millisecond(num) { - if (num !== undefined) { - var s = this.clone(); - s.epoch = set.milliseconds(s, num); - return s; - } - - return this.d.getMilliseconds(); - }, - second: function second(num) { - if (num !== undefined) { - var s = this.clone(); - s.epoch = set.seconds(s, num); - return s; - } - - return this.d.getSeconds(); - }, - minute: function minute(num) { - if (num !== undefined) { - var s = this.clone(); - s.epoch = set.minutes(s, num); - return s; - } - - return this.d.getMinutes(); - }, - hour: function hour(num) { - var d = this.d; - - if (num !== undefined) { - var s = this.clone(); - s.epoch = set.hours(s, num); - return s; - } - - return d.getHours(); - }, - //'3:30' is 3.5 - hourFloat: function hourFloat(num) { - if (num !== undefined) { - var s = this.clone(); - - var _minute = num % 1; - - _minute = _minute * 60; - - var _hour = parseInt(num, 10); - - s.epoch = set.hours(s, _hour); - s.epoch = set.minutes(s, _minute); - return s; - } - - var d = this.d; - var hour = d.getHours(); - var minute = d.getMinutes(); - minute = minute / 60; - return hour + minute; - }, - // hour in 12h format - hour12: function hour12(str) { - var d = this.d; - - if (str !== undefined) { - var s = this.clone(); - str = '' + str; - var m = str.match(/^([0-9]+)(am|pm)$/); - - if (m) { - var hour = parseInt(m[1], 10); - - if (m[2] === 'pm') { - hour += 12; - } - - s.epoch = set.hours(s, hour); - } - - return s; - } //get the hour - - - var hour12 = d.getHours(); - - if (hour12 > 12) { - hour12 = hour12 - 12; - } - - if (hour12 === 0) { - hour12 = 12; - } - - return hour12; - }, - //some ambiguity here with 12/24h - time: function time(str) { - if (str !== undefined) { - var s = this.clone(); - str = str.toLowerCase().trim(); - s.epoch = set.time(s, str); - return s; - } - - return "".concat(this.h12(), ":").concat(fns.zeroPad(this.minute())).concat(this.ampm()); - }, - // either 'am' or 'pm' - ampm: function ampm(input) { - var which = 'am'; - var hour = this.hour(); - - if (hour >= 12) { - which = 'pm'; - } - - if (typeof input !== 'string') { - return which; - } //okay, we're doing a setter - - - var s = this.clone(); - input = input.toLowerCase().trim(); //ampm should never change the day - // - so use `.hour(n)` instead of `.minus(12,'hour')` - - if (hour >= 12 && input === 'am') { - //noon is 12pm - hour -= 12; - return s.hour(hour); - } - - if (hour < 12 && input === 'pm') { - hour += 12; - return s.hour(hour); - } - - return s; - }, - //some hard-coded times of day, like 'noon' - dayTime: function dayTime(str) { - if (str !== undefined) { - var times = { - morning: '7:00am', - breakfast: '7:00am', - noon: '12:00am', - lunch: '12:00pm', - afternoon: '2:00pm', - evening: '6:00pm', - dinner: '6:00pm', - night: '11:00pm', - midnight: '23:59pm' - }; - var s = this.clone(); - str = str || ''; - str = str.toLowerCase(); - - if (times.hasOwnProperty(str) === true) { - s = s.time(times[str]); - } - - return s; - } - - var h = this.hour(); - - if (h < 6) { - return 'night'; - } - - if (h < 12) { - //until noon - return 'morning'; - } - - if (h < 17) { - //until 5pm - return 'afternoon'; - } - - if (h < 22) { - //until 10pm - return 'evening'; - } - - return 'night'; - }, - //parse a proper iso string - iso: function iso(num) { - if (num !== undefined) { - return this.set(num); - } - - return this.format('iso'); - } - }; - var _01Time = methods$3; - var methods$2 = { - // # day in the month - date: function date(num) { - if (num !== undefined) { - var s = this.clone(); - num = parseInt(num, 10); - - if (num) { - s.epoch = set.date(s, num); - } - - return s; - } - - return this.d.getDate(); - }, - //like 'wednesday' (hard!) - day: function day(input) { - if (input === undefined) { - return this.d.getDay(); - } - - var original = this.clone(); - var want = input; // accept 'wednesday' - - if (typeof input === 'string') { - input = input.toLowerCase(); - - if (days.aliases.hasOwnProperty(input)) { - want = days.aliases[input]; - } else { - want = days["short"]().indexOf(input); - - if (want === -1) { - want = days["long"]().indexOf(input); - } - } - } //move approx - - - var day = this.d.getDay(); - var diff = day - want; - var s = this.subtract(diff, 'days'); //tighten it back up - - walk_1(s, { - hour: original.hour(), - minute: original.minute(), - second: original.second() - }); - return s; - }, - //these are helpful name-wrappers - dayName: function dayName(input) { - if (input === undefined) { - return days["long"]()[this.day()]; - } - - var s = this.clone(); - s = s.day(input); - return s; - }, - //either name or number - month: function month(input) { - if (input !== undefined) { - var s = this.clone(); - s.epoch = set.month(s, input); - return s; - } - - return this.d.getMonth(); - } - }; - var _02Date = methods$2; - - var clearMinutes = function clearMinutes(s) { - s = s.minute(0); - s = s.second(0); - s = s.millisecond(1); - return s; - }; - - var methods$1 = { - // day 0-366 - dayOfYear: function dayOfYear(num) { - if (num !== undefined) { - var s = this.clone(); - s.epoch = set.dayOfYear(s, num); - return s; - } //days since newyears - jan 1st is 1, jan 2nd is 2... - - - var sum = 0; - var month = this.d.getMonth(); - var tmp; //count the num days in each month - - for (var i = 1; i <= month; i++) { - tmp = new Date(); - tmp.setDate(1); - tmp.setFullYear(this.d.getFullYear()); //the year matters, because leap-years - - tmp.setHours(1); - tmp.setMinutes(1); - tmp.setMonth(i); - tmp.setHours(-2); //the last day of the month - - sum += tmp.getDate(); - } - - return sum + this.d.getDate(); - }, - //since the start of the year - week: function week(num) { - // week-setter - if (num !== undefined) { - var s = this.clone(); - s = s.month(0); - s = s.date(1); - s = s.day('monday'); - s = clearMinutes(s); //first week starts first Thurs in Jan - // so mon dec 28th is 1st week - // so mon dec 29th is not the week - - if (s.monthName() === 'december' && s.date() >= 28) { - s = s.add(1, 'week'); - } - - num -= 1; //1-based - - s = s.add(num, 'weeks'); - return s; - } //find-out which week it is - - - var tmp = this.clone(); - tmp = tmp.month(0); - tmp = tmp.date(1); - tmp = clearMinutes(tmp); - tmp = tmp.day('monday'); //don't go into last-year - - if (tmp.monthName() === 'december' && tmp.date() >= 28) { - tmp = tmp.add(1, 'week'); - } // is first monday the 1st? - - - var toAdd = 1; - - if (tmp.date() === 1) { - toAdd = 0; - } - - tmp = tmp.minus(1, 'second'); - var thisOne = this.epoch; //if the week technically hasn't started yet - - if (tmp.epoch > thisOne) { - return 1; - } //speed it up, if we can - - - var i = 0; - var skipWeeks = this.month() * 4; - tmp.epoch += milliseconds.week * skipWeeks; - i += skipWeeks; - - for (; i <= 52; i++) { - if (tmp.epoch > thisOne) { - return i + toAdd; - } - - tmp = tmp.add(1, 'week'); - } - - return 52; - }, - //'january' - monthName: function monthName(input) { - if (input === undefined) { - return months$1["long"]()[this.month()]; - } - - var s = this.clone(); - s = s.month(input); - return s; - }, - //q1, q2, q3, q4 - quarter: function quarter(num) { - if (num !== undefined) { - if (typeof num === 'string') { - num = num.replace(/^q/i, ''); - num = parseInt(num, 10); - } - - if (quarters[num]) { - var s = this.clone(); - var _month = quarters[num][0]; - s = s.month(_month); - s = s.date(1); - s = s.startOf('day'); - return s; - } - } - - var month = this.d.getMonth(); - - for (var i = 1; i < quarters.length; i++) { - if (month < quarters[i][0]) { - return i - 1; - } - } - - return 4; - }, - //spring, summer, winter, fall - season: function season(input) { - var hem = 'north'; - - if (this.hemisphere() === 'South') { - hem = 'south'; - } - - if (input !== undefined) { - var s = this.clone(); - - for (var i = 0; i < seasons[hem].length; i++) { - if (input === seasons[hem][i][0]) { - s = s.month(seasons[hem][i][1]); - s = s.date(1); - s = s.startOf('day'); - } - } - - return s; - } - - var month = this.d.getMonth(); - - for (var _i = 0; _i < seasons[hem].length - 1; _i++) { - if (month >= seasons[hem][_i][1] && month < seasons[hem][_i + 1][1]) { - return seasons[hem][_i][0]; - } - } - - return 'winter'; - }, - //the year number - year: function year(num) { - if (num !== undefined) { - var s = this.clone(); - s.epoch = set.year(s, num); - return s; - } - - return this.d.getFullYear(); - }, - //bc/ad years - era: function era(str) { - if (str !== undefined) { - var s = this.clone(); - str = str.toLowerCase(); //TODO: there is no year-0AD i think. may have off-by-1 error here - - var year = s.d.getFullYear(); //make '1992' into 1992bc.. - - if (str === 'bc' && year > 0) { - s.epoch = set.year(s, year * -1); - } //make '1992bc' into '1992' - - - if (str === 'ad' && year < 0) { - s.epoch = set.year(s, year * -1); - } - - return s; - } - - if (this.d.getFullYear() < 0) { - return 'BC'; - } - - return 'AD'; - }, - // 2019 -> 2010 - decade: function decade(input) { - if (input !== undefined) { - input = String(input); - input = input.replace(/([0-9])'?s$/, '$1'); //1950's - - input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals - - if (!input) { - console.warn('Spacetime: Invalid decade input'); - return this; - } // assume 20th century?? for '70s'. - - - if (input.length === 2 && /[0-9][0-9]/.test(input)) { - input = '19' + input; - } - - var year = Number(input); - - if (isNaN(year)) { - return this; - } // round it down to the decade - - - year = Math.floor(year / 10) * 10; - return this.year(year); //.startOf('decade') - } - - return this.startOf('decade').year(); - }, - // 1950 -> 19+1 - century: function century(input) { - if (input !== undefined) { - if (typeof input === 'string') { - input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals - - input = input.replace(/([0-9]+) ?(b\.?c\.?|a\.?d\.?)/i, function (a, b, c) { - if (c.match(/b\.?c\.?/i)) { - b = '-' + b; - } - - return b; - }); - input = input.replace(/c$/, ''); //20thC - } - - var year = Number(input); - - if (isNaN(input)) { - console.warn('Spacetime: Invalid century input'); - return this; - } // there is no century 0 - - - if (year === 0) { - year = 1; - } - - if (year >= 0) { - year = (year - 1) * 100; - } else { - year = (year + 1) * 100; - } - - return this.year(year); - } // century getter - - - var num = this.startOf('century').year(); - num = Math.floor(num / 100); - - if (num < 0) { - return num - 1; - } - - return num + 1; - }, - // 2019 -> 2+1 - millenium: function millenium(input) { - if (input !== undefined) { - if (typeof input === 'string') { - input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals - - input = Number(input); - - if (isNaN(input)) { - console.warn('Spacetime: Invalid millenium input'); - return this; - } - } - - if (input > 0) { - input -= 1; - } - - var year = input * 1000; // there is no year 0 - - if (year === 0) { - year = 1; - } - - return this.year(year); - } // get the current millenium - - - var num = Math.floor(this.year() / 1000); - - if (num >= 0) { - num += 1; - } - - return num; - } - }; - var _03Year = methods$1; - var methods = Object.assign({}, _01Time, _02Date, _03Year); //aliases - - methods.milliseconds = methods.millisecond; - methods.seconds = methods.second; - methods.minutes = methods.minute; - methods.hours = methods.hour; - methods.hour24 = methods.hour; - methods.h12 = methods.hour12; - methods.h24 = methods.hour24; - methods.days = methods.day; - - var addMethods$4 = function addMethods(Space) { - //hook the methods into prototype - Object.keys(methods).forEach(function (k) { - Space.prototype[k] = methods[k]; - }); - }; - - var query = addMethods$4; - var isLeapYear = fns.isLeapYear; - - var getMonthLength = function getMonthLength(month, year) { - if (month === 1 && isLeapYear(year)) { - return 29; - } - - return monthLengths_1[month]; - }; //month is the one thing we 'model/compute' - //- because ms-shifting can be off by enough - - - var rollMonth = function rollMonth(want, old) { - //increment year - if (want.month > 0) { - var years = parseInt(want.month / 12, 10); - want.year = old.year() + years; - want.month = want.month % 12; - } else if (want.month < 0) { - //decrement year - var _years = Math.floor(Math.abs(want.month) / 13, 10); - - _years = Math.abs(_years) + 1; - want.year = old.year() - _years; //ignore extras - - want.month = want.month % 12; - want.month = want.month + 12; - - if (want.month === 12) { - want.month = 0; - } - } - - return want; - }; // briefly support day=-2 (this does not need to be perfect.) - - - var rollDaysDown = function rollDaysDown(want, old, sum) { - want.year = old.year(); - want.month = old.month(); - var date = old.date(); - want.date = date - Math.abs(sum); - - while (want.date < 1) { - want.month -= 1; - - if (want.month < 0) { - want.month = 11; - want.year -= 1; - } - - var max = getMonthLength(want.month, want.year); - want.date += max; - } - - return want; - }; // briefly support day=33 (this does not need to be perfect.) - - - var rollDaysUp = function rollDaysUp(want, old, sum) { - var year = old.year(); - var month = old.month(); - var max = getMonthLength(month, year); - - while (sum > max) { - sum -= max; - month += 1; - - if (month >= 12) { - month -= 12; - year += 1; - } - - max = getMonthLength(month, year); - } - - want.month = month; - want.date = sum; - return want; - }; - - var _model = { - months: rollMonth, - days: rollDaysUp, - daysBack: rollDaysDown - }; // but briefly: - // millisecond-math, and some post-processing covers most-things - // we 'model' the calendar here only a little bit - // and that usually works-out... - - var order = ['millisecond', 'second', 'minute', 'hour', 'date', 'month']; - var keep = { - second: order.slice(0, 1), - minute: order.slice(0, 2), - quarterhour: order.slice(0, 2), - hour: order.slice(0, 3), - date: order.slice(0, 4), - month: order.slice(0, 4), - quarter: order.slice(0, 4), - season: order.slice(0, 4), - year: order, - decade: order, - century: order - }; - keep.week = keep.hour; - keep.season = keep.date; - keep.quarter = keep.date; // Units need to be dst adjuested - - var dstAwareUnits = { - year: true, - quarter: true, - season: true, - month: true, - week: true, - day: true - }; - var keepDate = { - month: true, - quarter: true, - season: true, - year: true - }; - - var addMethods$3 = function addMethods(SpaceTime) { - SpaceTime.prototype.add = function (num, unit) { - var s = this.clone(); - - if (!unit || num === 0) { - return s; //don't bother - } - - var old = this.clone(); - unit = fns.normalize(unit); - - if (unit === 'millisecond') { - s.epoch += num; - return s; - } // support 'fortnight' alias - - - if (unit === 'fortnight') { - num *= 2; - unit = 'week'; - } //move forward by the estimated milliseconds (rough) - - - if (milliseconds[unit]) { - s.epoch += milliseconds[unit] * num; - } else if (unit === 'week') { - s.epoch += milliseconds.day * (num * 7); - } else if (unit === 'quarter' || unit === 'season') { - s.epoch += milliseconds.month * (num * 3); - } else if (unit === 'quarterhour') { - s.epoch += milliseconds.minute * 15 * num; - } //now ensure our milliseconds/etc are in-line - - - var want = {}; - - if (keep[unit]) { - keep[unit].forEach(function (u) { - want[u] = old[u](); - }); - } - - if (dstAwareUnits[unit]) { - var diff = old.timezone().current.offset - s.timezone().current.offset; - s.epoch += diff * 3600 * 1000; - } //ensure month/year has ticked-over - - - if (unit === 'month') { - want.month = old.month() + num; //month is the one unit we 'model' directly - - want = _model.months(want, old); - } //support coercing a week, too - - - if (unit === 'week') { - var sum = old.date() + num * 7; - - if (sum <= 28 && sum > 1) { - want.date = sum; - } - } //support 25-hour day-changes on dst-changes - else if (unit === 'date') { - if (num < 0) { - want = _model.daysBack(want, old, num); - } else { - //specify a naive date number, if it's easy to do... - var _sum = old.date() + num; // ok, model this one too - - - want = _model.days(want, old, _sum); - } //manually punt it if we haven't moved at all.. - - - if (num !== 0 && old.isSame(s, 'day')) { - want.date = old.date() + num; - } - } // ensure a quarter is 3 months over - else if (unit === 'quarter') { - want.month = old.month() + num * 3; - want.year = old.year(); // handle rollover - - if (want.month < 0) { - var years = Math.floor(want.month / 12); - var remainder = want.month + Math.abs(years) * 12; - want.month = remainder; - want.year += years; - } else if (want.month >= 12) { - var _years = Math.floor(want.month / 12); - - want.month = want.month % 12; - want.year += _years; - } - - want.date = old.date(); - } //ensure year has changed (leap-years) - else if (unit === 'year') { - var wantYear = old.year() + num; - var haveYear = s.year(); - - if (haveYear < wantYear) { - s.epoch += milliseconds.day; - } else if (haveYear > wantYear) { - s.epoch += milliseconds.day; - } - } //these are easier - else if (unit === 'decade') { - want.year = s.year() + 10; - } else if (unit === 'century') { - want.year = s.year() + 100; - } //keep current date, unless the month doesn't have it. - - - if (keepDate[unit]) { - var max = monthLengths_1[want.month]; - want.date = old.date(); - - if (want.date > max) { - want.date = max; - } - } - - if (Object.keys(want).length > 1) { - walk_1(s, want); - } - - return s; - }; //subtract is only add *-1 - - - SpaceTime.prototype.subtract = function (num, unit) { - var s = this.clone(); - return s.add(num * -1, unit); - }; //add aliases - - - SpaceTime.prototype.minus = SpaceTime.prototype.subtract; - SpaceTime.prototype.plus = SpaceTime.prototype.add; - }; - - var add = addMethods$3; //make a string, for easy comparison between dates - - var print = { - millisecond: function millisecond(s) { - return s.epoch; - }, - second: function second(s) { - return [s.year(), s.month(), s.date(), s.hour(), s.minute(), s.second()].join('-'); - }, - minute: function minute(s) { - return [s.year(), s.month(), s.date(), s.hour(), s.minute()].join('-'); - }, - hour: function hour(s) { - return [s.year(), s.month(), s.date(), s.hour()].join('-'); - }, - day: function day(s) { - return [s.year(), s.month(), s.date()].join('-'); - }, - week: function week(s) { - return [s.year(), s.week()].join('-'); - }, - month: function month(s) { - return [s.year(), s.month()].join('-'); - }, - quarter: function quarter(s) { - return [s.year(), s.quarter()].join('-'); - }, - year: function year(s) { - return s.year(); - } - }; - print.date = print.day; - - var addMethods$2 = function addMethods(SpaceTime) { - SpaceTime.prototype.isSame = function (b, unit) { - var tzAware = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; - var a = this; - - if (!unit) { - return null; - } // support swapped params - - - if (typeof b === 'string' && _typeof(unit) === 'object') { - var tmp = b; - b = unit; - unit = tmp; - } - - if (typeof b === 'string' || typeof b === 'number') { - b = new SpaceTime(b, this.timezone.name); - } //support 'seconds' aswell as 'second' - - - unit = unit.replace(/s$/, ''); // make them the same timezone for proper comparison - - if (tzAware === true && a.tz !== b.tz) { - b = b.clone(); - b.tz = a.tz; - } - - if (print[unit]) { - return print[unit](a) === print[unit](b); - } - - return null; - }; - }; - - var same = addMethods$2; - - var addMethods$1 = function addMethods(SpaceTime) { - var methods = { - isAfter: function isAfter(d) { - d = fns.beADate(d, this); - var epoch = fns.getEpoch(d); - - if (epoch === null) { - return null; - } - - return this.epoch > epoch; - }, - isBefore: function isBefore(d) { - d = fns.beADate(d, this); - var epoch = fns.getEpoch(d); - - if (epoch === null) { - return null; - } - - return this.epoch < epoch; - }, - isEqual: function isEqual(d) { - d = fns.beADate(d, this); - var epoch = fns.getEpoch(d); - - if (epoch === null) { - return null; - } - - return this.epoch === epoch; - }, - isBetween: function isBetween(start, end) { - var isInclusive = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - start = fns.beADate(start, this); - end = fns.beADate(end, this); - var startEpoch = fns.getEpoch(start); - - if (startEpoch === null) { - return null; - } - - var endEpoch = fns.getEpoch(end); - - if (endEpoch === null) { - return null; - } - - if (isInclusive) { - return this.isBetween(start, end) || this.isEqual(start) || this.isEqual(end); - } - - return startEpoch < this.epoch && this.epoch < endEpoch; - } - }; //hook them into proto - - Object.keys(methods).forEach(function (k) { - SpaceTime.prototype[k] = methods[k]; - }); - }; - - var compare = addMethods$1; - - var addMethods = function addMethods(SpaceTime) { - var methods = { - i18n: function i18n(data) { - //change the day names - if (fns.isObject(data.days)) { - days.set(data.days); - } //change the month names - - - if (fns.isObject(data.months)) { - months$1.set(data.months); - } // change the the display style of the month / day names - - - if (fns.isBoolean(data.useTitleCase)) { - caseFormat.set(data.useTitleCase); - } - } - }; //hook them into proto - - Object.keys(methods).forEach(function (k) { - SpaceTime.prototype[k] = methods[k]; - }); - }; - - var i18n = addMethods; - var timezones = unpack; //fake timezone-support, for fakers (es5 class) - - var SpaceTime = function SpaceTime(input$1, tz) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; //the holy moment - - this.epoch = null; //the shift for the given timezone - - this.tz = find(tz, timezones); //whether to output warnings to console - - this.silent = options.silent || true; // favour british interpretation of 02/02/2018, etc - - this.british = options.dmy || options.british; //does the week start on sunday, or monday: - - this._weekStart = 1; //default to monday - - if (options.weekStart !== undefined) { - this._weekStart = options.weekStart; - } // the reference today date object, (for testing) - - - this._today = {}; - - if (options.today !== undefined) { - this._today = options.today; - } //add getter/setters - - - Object.defineProperty(this, 'd', { - //return a js date object - get: function get() { - var offset = quick(this); //every computer is somewhere- get this computer's built-in offset - - var bias = new Date(this.epoch).getTimezoneOffset() || 0; //movement - - var shift = bias + offset * 60; //in minutes - - shift = shift * 60 * 1000; //in ms - //remove this computer's offset - - var epoch = this.epoch + shift; - var d = new Date(epoch); - return d; - } - }); //add this data on the object, to allow adding new timezones - - Object.defineProperty(this, 'timezones', { - get: function get() { - return timezones; - }, - set: function set(obj) { - timezones = obj; - return obj; - } - }); //parse the various formats - - var tmp = input(this, input$1, tz); - this.epoch = tmp.epoch; - }; //(add instance methods to prototype) - - - Object.keys(methods_1).forEach(function (k) { - SpaceTime.prototype[k] = methods_1[k]; - }); // ¯\_(ツ)_/¯ - - SpaceTime.prototype.clone = function () { - return new SpaceTime(this.epoch, this.tz, { - silent: this.silent, - weekStart: this._weekStart, - today: this._today - }); - }; //return native date object at the same epoch - - - SpaceTime.prototype.toLocalDate = function () { - return new Date(this.epoch); - }; //append more methods - - - query(SpaceTime); - add(SpaceTime); - same(SpaceTime); - compare(SpaceTime); - i18n(SpaceTime); - var spacetime$1 = SpaceTime; - - var whereIts = function whereIts(a, b) { - var start = new spacetime$1(null); - var end = new spacetime$1(null); - start = start.time(a); //if b is undefined, use as 'within one hour' - - if (b) { - end = end.time(b); - } else { - end = start.add(59, 'minutes'); - } - - var startHour = start.hour(); - var endHour = end.hour(); - var tzs = Object.keys(start.timezones).filter(function (tz) { - if (tz.indexOf('/') === -1) { - return false; - } - - var m = new spacetime$1(null, tz); - var hour = m.hour(); //do 'calendar-compare' not real-time-compare - - if (hour >= startHour && hour <= endHour) { - //test minutes too, if applicable - if (hour === startHour && m.minute() < start.minute()) { - return false; - } - - if (hour === endHour && m.minute() > end.minute()) { - return false; - } - - return true; - } - - return false; - }); - return tzs; - }; - - var whereIts_1 = whereIts; - var _version = '6.14.0'; - - var main = function main(input, tz, options) { - return new spacetime$1(input, tz, options); - }; // set all properties of a given 'today' object - - - var setToday = function setToday(s) { - var today = s._today || {}; - Object.keys(today).forEach(function (k) { - s = s[k](today[k]); - }); - return s; - }; //some helper functions on the main method - - - main.now = function (tz, options) { - var s = new spacetime$1(new Date().getTime(), tz, options); - s = setToday(s); - return s; - }; - - main.today = function (tz, options) { - var s = new spacetime$1(new Date().getTime(), tz, options); - s = setToday(s); - return s.startOf('day'); - }; - - main.tomorrow = function (tz, options) { - var s = new spacetime$1(new Date().getTime(), tz, options); - s = setToday(s); - return s.add(1, 'day').startOf('day'); - }; - - main.yesterday = function (tz, options) { - var s = new spacetime$1(new Date().getTime(), tz, options); - s = setToday(s); - return s.subtract(1, 'day').startOf('day'); - }; - - main.extend = function (obj) { - Object.keys(obj).forEach(function (k) { - spacetime$1.prototype[k] = obj[k]; - }); - return this; - }; - - main.timezones = function () { - var s = new spacetime$1(); - return s.timezones; - }; - - main.max = function (tz, options) { - var s = new spacetime$1(null, tz, options); - s.epoch = 8640000000000000; - return s; - }; - - main.min = function (tz, options) { - var s = new spacetime$1(null, tz, options); - s.epoch = -8640000000000000; - return s; - }; //find tz by time - - - main.whereIts = whereIts_1; - main.version = _version; //aliases: - - main.plugin = main.extend; - var src$1 = main; - - var spacetime$2 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': src$1 - }); - - function getCjsExportFromNamespace (n) { - return n && n['default'] || n; - } - - var spacetime = getCjsExportFromNamespace(spacetime$2); - - const parseSentence = function (doc) { - let s = doc.sentence(); - - if (!s) { - return null; - } - - let txt = s.text() || ''; - let paren = txt.match(/\(.*\)/); - - if (!paren || !paren[0]) { - return null; - } - - txt = paren[0] || ''; - txt = txt.trim(); - txt = txt.replace(/^\(/, ''); - txt = txt.replace(/\)$/, ''); - let split = txt.split(/ – /); - split = split.filter(str => str); // got birth/death info - - if (split[0] && split[1] && split.length === 2) { - return { - birth: split[0], - death: split[1] - }; - } // try for just birth date in parentheses - - - if (split[0]) { - let str = split[0].replace(/^(born|ne) (c\.)?/, ''); - let d = spacetime(str); - - if (d.isValid()) { - return { - birth: str - }; - } - } - - return null; - }; - - var getSentence = parseSentence; - - const byCategory$2 = function (doc) { - let cats = doc.categories(); - - for (let i = 0; i < cats.length; i += 1) { - let m = cats[i].match(/([0-9]{4}) births/); - - if (m && m[1]) { - let year = parseInt(m[1], 10); - - if (year && year > 1000) { - return year; - } - } - } - - return null; - }; - - var byCategory_1$1 = byCategory$2; - - const parseDate = function (str) { - if (!str) { - return null; - } // remove parentheses - - - str = str.replace(/\(.*\)/, ''); - str = str.trim(); // just the year - - if (str.match(/^[0-9]{4}$/)) { - return { - year: parseInt(str, 10) - }; - } // parse the full date - - - let s = spacetime(str); - return { - year: s.year(), - month: s.month(), - date: s.date() - }; - }; - - var parseDate_1 = parseDate; - - const birthDate = function (doc) { - let res = getInfobox(doc, 'birth_date'); - - if (res) { - return parseDate_1(res); - } // try parentheses in first sentence - - - res = getSentence(doc); - - if (res && res.birth) { - return parseDate_1(res.birth); - } // try to get year from 'Category:1955 births' - - - let year = byCategory_1$1(doc); - - if (year) { - return { - year: year - }; - } - - return null; - }; - - var birthDate_1 = birthDate; - - const birthPlace = function (doc) { - let res = getInfobox(doc, 'birth_place'); - - if (res) { - return res; - } - - return null; - }; - - var birthPlace_1 = birthPlace; - - const aliveCats = { - 'Living people': true, - 'Year of birth missing (living people)': true, - 'Date of birth missing (living people)': true, - 'Place of birth missing (living people)': true, - 'Active politicians': true, - 'Biography articles of living people': true - }; - const didDie = { - 'Dead people': true, - 'Date of death missing': true, - 'Date of death unknown': true, - 'Place of death missing': true, - 'Place of death unknown': true, - 'Year of death missing': true, - 'Year of death unknown': true, - 'Year of death uncertain': true, - 'Recent deaths': true, - 'People declared dead in absentia': true, - 'Politicians elected posthumously': true, - 'People who died in office': true, - 'Assassinated heads of state‎ ': true, - 'Assassinated heads of government': true, - 'Assassinated mayors': true, - 'People who died in Nazi concentration camps': true, - 'People executed in Nazi concentration camps': true, - 'Politicians who died in Nazi concentration camps': true, - 'People who have received posthumous pardons': true, - 'People lost at sea‎': true, - 'Deaths due to shipwreck': true, - 'People who died at sea': true, - 'Unsolved deaths‎': true, - 'Deaths by horse-riding accident‎': true, - 'Deaths from falls‎': true, - 'Deaths by poisoning‎‎': true, - 'Deaths from cerebrovascular disease‎': true, - 'Deaths from asphyxiation‎': true, - 'Deaths from sepsis‎': true, - 'Deaths from pneumonia‎': true, - 'Deaths from dysentery‎‎': true, - 'Deaths by drowning‎': true - }; - - const byCat = function (doc) { - let cats = doc.categories(); //confirmed alive categories - - if (cats.find(c => aliveCats.hasOwnProperty(c))) { - return true; - } //confirmed death categories - - - if (cats.find(c => didDie.hasOwnProperty(c))) { - return false; - } - - return null; - }; - - var byCategory$1 = byCat; - - // blp = biography of living persons - // {{WikiProject Biography}} (with living=yes parameter) - // {{WikiProject banner shell}} (with blp=y parameter) - const isAlive$1 = { - blp: true, - 'blp unsourced': true, - 'blp unsourced section': true, - 'blp primary sources': true, - 'blp self-published': true, - 'blp sources': true, - 'blp sources section': true, - 'blp imdb-only refimprove': true, - 'blp imdb refimprove': true, - 'blp no footnotes': true, - 'blp more footnotes': true, - 'blp one source': true, - 'active politician': true, - activepol: true, - 'current person': true - }; - const isDead = { - 'recent death': true, - 'recent death presumed': true, - 'recent death confirmed': true, - obituary: true, - elegy: true, - eulogy: true, - panegyric: true, - memorial: true - }; - - const byTemplate = function (doc) { - let templates = doc.templates().map(tmpl => tmpl.json()); - - for (let i = 0; i < templates.length; i++) { - let title = templates[i].template || ''; - title = title.toLowerCase().trim(); - - if (isAlive$1.hasOwnProperty(title)) { - return true; - } - - if (isDead.hasOwnProperty(title)) { - return false; - } - } // `{{WikiProject Biography|living=yes|activepol=yes}}` - - - let bio = doc.template('WikiProject Biography'); - - if (bio) { - bio = bio.json(); //living blp BLP - - if (bio.living === 'yes' || bio.blp === 'yes' || bio.activepol === 'yes' || bio.BLP === 'yes') { - return true; - } - - if (bio.living === 'no' || bio.blp === 'no' || bio.BLP === 'no') { - return false; - } - } - - return null; - }; - - var byTemplate_1 = byTemplate; - - let d = new Date(); - const minYear = d.getFullYear() - 105; - - const isAlive = function (doc) { - // if we have a death date - let death = doc.deathDate(); - - if (death) { - return false; - } // if we have a death place - - - let deathPlace = doc.deathPlace(); - - if (deathPlace) { - return false; - } // does it have a good category? - - - let fromCat = byCategory$1(doc); - - if (fromCat === true || fromCat === false) { - return fromCat; - } // does it have a good template? - - - let fromTemplate = byTemplate_1(doc); - - if (fromTemplate === true || fromTemplate === false) { - return fromTemplate; - } // were they born in 1900? - - - let birth = doc.birthDate(); - - if (birth && birth.year && birth.year < minYear) { - return true; - } - - return null; - }; - - var isAlive_1 = isAlive; - - const byCategory = function (doc) { - let cats = doc.categories(); - - for (let i = 0; i < cats.length; i += 1) { - let m = cats[i].match(/([0-9]{4}) deaths/); - - if (m && m[1]) { - let year = parseInt(m[1], 10); - - if (year && year > 1000) { - return year; - } - } - } - - return null; - }; - - var byCategory_1 = byCategory; - - const deathDate = function (doc) { - let res = getInfobox(doc, 'death_date'); - - if (res) { - return parseDate_1(res); - } // try parentheses in first sentence - - - res = getSentence(doc); - - if (res && res.death) { - return parseDate_1(res.death); - } // try to get year from 'Category:1955 deaths' - - - let year = byCategory_1(doc); - - if (year) { - return { - year: year - }; - } - - return null; - }; - - var deathDate_1 = deathDate; - - const deathPlace = function (doc) { - let res = getInfobox(doc, 'death_place'); - - if (res) { - return res; - } - - return null; - }; - - var deathPlace_1 = deathPlace; - - const getNationality = function (doc) { - let res = getInfobox(doc, 'nationality'); - - if (res) { - return res; - } - - return null; - }; - - var nationality = getNationality; - - const addMethod = function (models) { - models.Doc.prototype.birthDate = function () { - return birthDate_1(this); - }; - - models.Doc.prototype.birthPlace = function () { - return birthPlace_1(this); - }; - - models.Doc.prototype.isAlive = function () { - return isAlive_1(this); - }; - - models.Doc.prototype.deathDate = function () { - return deathDate_1(this); - }; - - models.Doc.prototype.deathPlace = function () { - return deathPlace_1(this); - }; - - models.Doc.prototype.nationality = function () { - return nationality(this); - }; - }; - - var src = addMethod; - - return src; - -}))); +})); //# sourceMappingURL=wtf-plugin-person.js.map diff --git a/plugins/person/builds/wtf-plugin-person.js.map b/plugins/person/builds/wtf-plugin-person.js.map index d04bc8e0..f4d635b5 100644 --- a/plugins/person/builds/wtf-plugin-person.js.map +++ b/plugins/person/builds/wtf-plugin-person.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-person.js","sources":["../src/_lib/_infoboxes.js","../src/getInfobox.js","../node_modules/spacetime/builds/spacetime.mjs","../src/getSentence.js","../src/birthDate/byCategory.js","../src/parseDate.js","../src/birthDate/index.js","../src/birthPlace/index.js","../src/isAlive/byCategory.js","../src/isAlive/byTemplate.js","../src/isAlive/index.js","../src/deathDate/byCategory.js","../src/deathDate/index.js","../src/deathPlace/index.js","../src/nationality/index.js","../src/index.js"],"sourcesContent":["// from ./plugins/classify/infobox, April 15 2020\n// https://en.wikipedia.org/wiki/Category:People_and_person_infobox_templates\nmodule.exports = {\n actor: true,\n adult_biography: true,\n afl_biography: true,\n alpine_ski_racer: true,\n archbishop: true,\n architect: true,\n artist: true,\n athlete: true,\n baseball_biography: true,\n basketball_biography: true,\n boxer: true,\n canadianmp: true,\n cfl_player: true,\n chef: true,\n chess_player: true,\n christian_leader: true,\n college_coach: true,\n college_football_player: true,\n comedian: true,\n comics_creator: true,\n cricketer: true,\n criminal: true,\n cyclist: true,\n economist: true,\n engineer: true,\n fashion_designer: true,\n field_hockey_player: true,\n figure_skater: true,\n football_biography: true,\n gaa_player: true,\n golfer: true,\n governor: true,\n gridiron_football_person: true,\n gymnast: true,\n handball_biography: true,\n hindu_leader: true,\n horseracing_personality: true,\n ice_hockey_player: true,\n indian_politician: true,\n judge: true,\n lacrosse_player: true,\n martial_artist: true,\n mass_murderer: true,\n medical_person: true,\n military_person: true,\n minister: true,\n mlb_player: true,\n model: true,\n monarch: true,\n mp: true,\n nascar_driver: true,\n nba_biography: true,\n nfl_biography: true,\n nfl_player: true,\n officeholder: true,\n person: true,\n philosopher: true,\n police_officer: true,\n politician: true,\n 'politician_(general)': true,\n presenter: true,\n president: true,\n professional_wrestler: true,\n racing_driver: true,\n religious_biography: true,\n roman_emperor: true,\n royalty: true,\n rugby_biography: true,\n rugby_league_biography: true,\n saint: true,\n scholar: true,\n scientist: true,\n skier: true,\n sportsperson: true,\n squash_player: true,\n state_representative: true,\n state_senator: true,\n swimmer: true,\n tennis_biography: true,\n volleyball_biography: true,\n volleyball_player: true,\n wrc_driver: true,\n writer: true,\n 'hockey team player': true,\n 'snooker player': true,\n bishop: true,\n 'football biography': true,\n 'military person': true,\n 'baseball biography': true,\n 'ice hockey player': true,\n 'nfl player': true,\n 'christian leader': true,\n congressman: true,\n 'basketball biography': true,\n 'comics creator': true,\n 'professional wrestler': true,\n 'college coach': true,\n 'tennis biography': true,\n 'afl biography': true,\n 'nfl biography': true,\n 'rugby biography': true,\n 'rugby league biography': true,\n 'prime minister': true,\n 'nba biography': true,\n 'figure skater': true,\n 'f1 driver': true,\n 'gridiron football person': true,\n 'indian politician': true,\n 'racing driver': true,\n 'martial artist': true,\n 'chinese-language singer and actor': true,\n astronaut: true,\n senator: true,\n 'nascar driver': true,\n 'adult biography': true,\n 'state representative': true,\n 'state senator': true,\n 'coa wide': true,\n 'religious biography': true,\n 'chess player': true,\n 'pageant titleholder': true,\n 'gaa player': true,\n 'us cabinet official': true,\n}\n","const mapping = require('./_lib/_infoboxes')\n\nconst byInfobox = function (doc, prop) {\n let infoboxes = doc.infoboxes()\n for (let i = 0; i < infoboxes.length; i++) {\n let inf = infoboxes[i]\n let type = inf.type()\n type = type.toLowerCase()\n type = type.trim()\n\n if (mapping.hasOwnProperty(type)) {\n let s = inf.get(prop)\n if (s) {\n return s.text()\n }\n }\n }\n return null\n}\nmodule.exports = byInfobox\n","/* spencermountain/spacetime 6.14.0 Apache 2.0 */\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar MSEC_IN_HOUR = 60 * 60 * 1000; //convert our local date syntax a javascript UTC date\n\nvar toUtc = function toUtc(dstChange, offset, year) {\n var _dstChange$split = dstChange.split('/'),\n _dstChange$split2 = _slicedToArray(_dstChange$split, 2),\n month = _dstChange$split2[0],\n rest = _dstChange$split2[1];\n\n var _rest$split = rest.split(':'),\n _rest$split2 = _slicedToArray(_rest$split, 2),\n day = _rest$split2[0],\n hour = _rest$split2[1];\n\n return Date.UTC(year, month - 1, day, hour) - offset * MSEC_IN_HOUR;\n}; // compare epoch with dst change events (in utc)\n\n\nvar inSummerTime = function inSummerTime(epoch, start, end, summerOffset, winterOffset) {\n var year = new Date(epoch).getUTCFullYear();\n var startUtc = toUtc(start, winterOffset, year);\n var endUtc = toUtc(end, summerOffset, year); // simple number comparison now\n\n return epoch >= startUtc && epoch < endUtc;\n};\n\nvar summerTime = inSummerTime;\n\n// it reproduces some things in ./index.js, but speeds up spacetime considerably\n\nvar quickOffset = function quickOffset(s) {\n var zones = s.timezones;\n var obj = zones[s.tz];\n\n if (obj === undefined) {\n console.warn(\"Warning: couldn't find timezone \" + s.tz);\n return 0;\n }\n\n if (obj.dst === undefined) {\n return obj.offset;\n } //get our two possible offsets\n\n\n var jul = obj.offset;\n var dec = obj.offset + 1; // assume it's the same for now\n\n if (obj.hem === 'n') {\n dec = jul - 1;\n }\n\n var split = obj.dst.split('->');\n var inSummer = summerTime(s.epoch, split[0], split[1], jul, dec);\n\n if (inSummer === true) {\n return jul;\n }\n\n return dec;\n};\n\nvar quick = quickOffset;\n\nvar _build = {\n\t\"9|s\": \"2/dili,2/jayapura\",\n\t\"9|n\": \"2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau\",\n\t\"9.5|s|04/04:03->10/03:02\": \"4/adelaide,4/broken_hill,4/south,4/yancowinna\",\n\t\"9.5|s\": \"4/darwin,4/north\",\n\t\"8|s|03/08:01->10/04:00\": \"12/casey\",\n\t\"8|s\": \"2/kuala_lumpur,2/makassar,2/singapore,4/perth,2/ujung_pandang,4/west\",\n\t\"8|n\": \"2/brunei,2/choibalsan,2/hong_kong,2/irkutsk,2/kuching,2/macau,2/manila,2/shanghai,2/taipei,2/ulaanbaatar,2/chongqing,2/chungking,2/harbin,2/macao,2/ulan_bator\",\n\t\"8.75|s\": \"4/eucla\",\n\t\"7|s\": \"12/davis,2/jakarta,9/christmas\",\n\t\"7|n\": \"2/bangkok,2/barnaul,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane,2/ho_chi_minh\",\n\t\"6|s\": \"12/vostok\",\n\t\"6|n\": \"2/almaty,2/bishkek,2/dhaka,2/omsk,2/qyzylorda,2/qostanay,2/thimphu,2/urumqi,9/chagos,2/dacca,2/kashgar,2/thimbu\",\n\t\"6.5|n\": \"2/rangoon,9/cocos,2/yangon\",\n\t\"5|s\": \"12/mawson,9/kerguelen\",\n\t\"5|n\": \"2/aqtau,2/aqtobe,2/ashgabat,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives,2/ashkhabad\",\n\t\"5.75|n\": \"2/katmandu,2/kathmandu\",\n\t\"5.5|n\": \"2/calcutta,2/colombo,2/kolkata\",\n\t\"4|s\": \"9/reunion\",\n\t\"4|n\": \"2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius\",\n\t\"4.5|n|03/22:00->09/21:24\": \"2/tehran\",\n\t\"4.5|n\": \"2/kabul\",\n\t\"3|s\": \"12/syowa,9/antananarivo\",\n\t\"3|n|03/28:03->10/31:04\": \"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye,8/nicosia\",\n\t\"3|n|03/28:02->10/31:03\": \"8/chisinau,8/tiraspol\",\n\t\"3|n|03/28:00->10/30:24\": \"2/beirut\",\n\t\"3|n|03/27:00->10/30:01\": \"2/gaza,2/hebron\",\n\t\"3|n|03/26:02->10/31:02\": \"2/jerusalem,2/tel_aviv\",\n\t\"3|n|03/26:00->10/29:01\": \"2/amman\",\n\t\"3|n|03/26:00->10/28:24\": \"2/damascus\",\n\t\"3|n\": \"0/addis_ababa,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte,0/asmara,2/istanbul\",\n\t\"2|s|03/28:02->10/31:02\": \"12/troll\",\n\t\"2|s\": \"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane\",\n\t\"2|n|03/28:02->10/31:03\": \"0/ceuta,arctic/longyearbyen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich,3/jan_mayen\",\n\t\"2|n\": \"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad\",\n\t\"1|s\": \"0/brazzaville,0/kinshasa,0/luanda,0/windhoek\",\n\t\"1|n|04/11:03->05/16:02\": \"0/casablanca,0/el_aaiun\",\n\t\"1|n|03/28:01->10/31:02\": \"3/canary,3/faeroe,3/madeira,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london,3/faroe,8/belfast\",\n\t\"1|n\": \"0/algiers,0/bangui,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis\",\n\t\"14|n\": \"11/kiritimati\",\n\t\"13|s|04/04:04->09/26:03\": \"11/apia\",\n\t\"13|s|01/15:02->11/05:03\": \"11/tongatapu\",\n\t\"13|n\": \"11/enderbury,11/fakaofo\",\n\t\"12|s|04/04:03->09/26:02\": \"12/mcmurdo,11/auckland,12/south_pole\",\n\t\"12|s|01/17:03->11/14:02\": \"11/fiji\",\n\t\"12|n\": \"2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis\",\n\t\"12.75|s|04/04:03->04/04:02\": \"11/chatham\",\n\t\"11|s|04/04:03->10/03:02\": \"12/macquarie\",\n\t\"11|s\": \"11/bougainville\",\n\t\"11|n\": \"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/ponape,11/pohnpei\",\n\t\"11.5|n|04/04:03->10/03:02\": \"11/norfolk\",\n\t\"10|s|04/04:03->10/03:02\": \"4/currie,4/hobart,4/melbourne,4/sydney,4/act,4/canberra,4/nsw,4/tasmania,4/victoria\",\n\t\"10|s\": \"12/dumontdurville,4/brisbane,4/lindeman,11/port_moresby,4/queensland\",\n\t\"10|n\": \"2/ust-nera,2/vladivostok,2/yakutsk,11/guam,11/saipan,11/truk,11/chuuk,11/yap\",\n\t\"10.5|s|04/04:01->10/03:02\": \"4/lord_howe,4/lhi\",\n\t\"0|n|03/28:00->10/31:01\": \"1/scoresbysund,3/azores\",\n\t\"0|n\": \"0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/utc,0/timbuktu,13/gmt-0,13/gmt+0,13/gmt0,13/greenwich,13/uct,13/universal,13/zulu\",\n\t\"-9|n|03/14:02->11/07:02\": \"1/adak,1/atka,us/aleutian\",\n\t\"-9|n\": \"11/gambier\",\n\t\"-9.5|n\": \"11/marquesas\",\n\t\"-8|n|03/14:02->11/07:02\": \"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat,us/alaska\",\n\t\"-8|n\": \"11/pitcairn\",\n\t\"-7|n|03/14:02->11/07:02\": \"1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/ensenada,6/pacific,10/bajanorte,us/pacific-new,us/pacific\",\n\t\"-7|n|03/08:02->11/01:01\": \"1/dawson,1/whitehorse,6/yukon\",\n\t\"-7|n\": \"1/creston,1/dawson_creek,1/fort_nelson,1/hermosillo,1/phoenix,us/arizona\",\n\t\"-6|s|04/03:22->09/04:22\": \"11/easter,7/easterisland\",\n\t\"-6|n|04/04:02->10/31:02\": \"1/chihuahua,1/mazatlan,10/bajasur\",\n\t\"-6|n|03/14:02->11/07:02\": \"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/yellowknife,1/shiprock,6/mountain,us/mountain\",\n\t\"-6|n\": \"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,11/galapagos,6/east-saskatchewan,6/saskatchewan\",\n\t\"-5|s\": \"1/lima,1/rio_branco,1/porto_acre,5/acre\",\n\t\"-5|n|04/04:02->10/31:02\": \"1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general\",\n\t\"-5|n|03/14:02->11/07:02\": \"1/chicago,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,1/indiana/knox,1/indiana/tell_city,1/north_dakota/beulah,1/north_dakota/center,1/north_dakota/new_salem,1/knox_in,6/central,us/central,us/indiana-starke\",\n\t\"-5|n|03/12:03->11/05:01\": \"1/north_dakota\",\n\t\"-5|n\": \"1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/atikokan\",\n\t\"-4|s|05/13:23->08/13:01\": \"12/palmer\",\n\t\"-4|s|04/03:24->09/05:00\": \"1/santiago,7/continental\",\n\t\"-4|s|03/27:24->10/03:00\": \"1/asuncion\",\n\t\"-4|s|02/16:24->11/03:00\": \"1/campo_grande,1/cuiaba\",\n\t\"-4|s\": \"1/la_paz,1/manaus,5/west\",\n\t\"-4|n|03/14:02->11/07:02\": \"1/detroit,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,1/indiana/marengo,1/indiana/petersburg,1/indiana/vevay,1/indiana/vincennes,1/indiana/winamac,1/kentucky/monticello,1/fort_wayne,1/indiana/indianapolis,1/kentucky/louisville,6/eastern,us/east-indiana,us/eastern,us/michigan\",\n\t\"-4|n|03/14:00->11/07:01\": \"1/havana\",\n\t\"-4|n|03/12:03->11/05:01\": \"1/indiana,1/kentucky\",\n\t\"-4|n\": \"1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin\",\n\t\"-3|s\": \"1/argentina,1/buenos_aires,1/catamarca,1/cordoba,1/fortaleza,1/jujuy,1/mendoza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,1/argentina/la_rioja,1/argentina/rio_gallegos,1/argentina/salta,1/argentina/san_juan,1/argentina/san_luis,1/argentina/tucuman,1/argentina/ushuaia,1/argentina/buenos_aires,1/argentina/catamarca,1/argentina/comodrivadavia,1/argentina/cordoba,1/argentina/jujuy,1/argentina/mendoza,1/rosario,5/east\",\n\t\"-3|n|03/14:02->11/07:02\": \"1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic\",\n\t\"-3|n\": \"1/araguaina,1/bahia,1/belem,1/cayenne,1/maceio,1/paramaribo,1/recife,1/santarem\",\n\t\"-2|n|03/27:22->10/30:23\": \"1/godthab,1/nuuk\",\n\t\"-2|n|03/14:02->11/07:02\": \"1/miquelon\",\n\t\"-2|n\": \"1/noronha,3/south_georgia,5/denoronha\",\n\t\"-2.5|n|03/14:02->11/07:02\": \"1/st_johns,6/newfoundland\",\n\t\"-1|n\": \"3/cape_verde\",\n\t\"-11|n\": \"11/midway,11/niue,11/pago_pago,11/samoa,us/samoa\",\n\t\"-10|n\": \"11/honolulu,11/johnston,11/rarotonga,11/tahiti,us/hawaii\"\n};\n\nvar _build$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n 'default': _build\n});\n\n//prefixes for iana names..\nvar _prefixes = ['africa', 'america', 'asia', 'atlantic', 'australia', 'brazil', 'canada', 'chile', 'europe', 'indian', 'mexico', 'pacific', 'antarctica', 'etc'];\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar data = getCjsExportFromNamespace(_build$1);\n\nvar all = {};\nObject.keys(data).forEach(function (k) {\n var split = k.split('|');\n var obj = {\n offset: Number(split[0]),\n hem: split[1]\n };\n\n if (split[2]) {\n obj.dst = split[2];\n }\n\n var names = data[k].split(',');\n names.forEach(function (str) {\n str = str.replace(/(^[0-9]+)\\//, function (before, num) {\n num = Number(num);\n return _prefixes[num] + '/';\n });\n all[str] = obj;\n });\n});\nall['utc'] = {\n offset: 0,\n hem: 'n' //default to northern hemisphere - (sorry!)\n\n}; //add etc/gmt+n\n\nfor (var i = -14; i <= 14; i += 0.5) {\n var num = i;\n\n if (num > 0) {\n num = '+' + num;\n }\n\n var name = 'etc/gmt' + num;\n all[name] = {\n offset: i * -1,\n //they're negative!\n hem: 'n' //(sorry)\n\n };\n name = 'utc/gmt' + num; //this one too, why not.\n\n all[name] = {\n offset: i * -1,\n hem: 'n'\n };\n}\n\nvar unpack = all;\n\n//find the implicit iana code for this machine.\n//safely query the Intl object\n//based on - https://bitbucket.org/pellepim/jstimezonedetect/src\nvar fallbackTZ = 'utc'; //\n//this Intl object is not supported often, yet\n\nvar safeIntl = function safeIntl() {\n if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n return null;\n }\n\n var format = Intl.DateTimeFormat();\n\n if (typeof format === 'undefined' || typeof format.resolvedOptions === 'undefined') {\n return null;\n }\n\n var timezone = format.resolvedOptions().timeZone;\n\n if (!timezone) {\n return null;\n }\n\n return timezone.toLowerCase();\n};\n\nvar guessTz = function guessTz() {\n var timezone = safeIntl();\n\n if (timezone === null) {\n return fallbackTZ;\n }\n\n return timezone;\n}; //do it once per computer\n\n\nvar guessTz_1 = guessTz;\n\nvar isOffset = /(\\-?[0-9]+)h(rs)?/i;\nvar isNumber = /(\\-?[0-9]+)/;\nvar utcOffset = /utc([\\-+]?[0-9]+)/i;\nvar gmtOffset = /gmt([\\-+]?[0-9]+)/i;\n\nvar toIana = function toIana(num) {\n num = Number(num);\n\n if (num >= -13 && num <= 13) {\n num = num * -1; //it's opposite!\n\n num = (num > 0 ? '+' : '') + num; //add plus sign\n\n return 'etc/gmt' + num;\n }\n\n return null;\n};\n\nvar parseOffset$1 = function parseOffset(tz) {\n // '+5hrs'\n var m = tz.match(isOffset);\n\n if (m !== null) {\n return toIana(m[1]);\n } // 'utc+5'\n\n\n m = tz.match(utcOffset);\n\n if (m !== null) {\n return toIana(m[1]);\n } // 'GMT-5' (not opposite)\n\n\n m = tz.match(gmtOffset);\n\n if (m !== null) {\n var num = Number(m[1]) * -1;\n return toIana(num);\n } // '+5'\n\n\n m = tz.match(isNumber);\n\n if (m !== null) {\n return toIana(m[1]);\n }\n\n return null;\n};\n\nvar parseOffset_1$1 = parseOffset$1;\n\nvar local = guessTz_1(); //add all the city names by themselves\n\nvar cities = Object.keys(unpack).reduce(function (h, k) {\n var city = k.split('/')[1] || '';\n city = city.replace(/_/g, ' ');\n h[city] = k;\n return h;\n}, {}); //try to match these against iana form\n\nvar normalize = function normalize(tz) {\n tz = tz.replace(/ time/g, '');\n tz = tz.replace(/ (standard|daylight|summer)/g, '');\n tz = tz.replace(/\\b(east|west|north|south)ern/g, '$1');\n tz = tz.replace(/\\b(africa|america|australia)n/g, '$1');\n tz = tz.replace(/\\beuropean/g, 'europe');\n tz = tz.replace(/\\islands/g, 'island');\n return tz;\n}; // try our best to reconcile the timzone to this given string\n\n\nvar lookupTz = function lookupTz(str, zones) {\n if (!str) {\n return local;\n }\n\n if (typeof str !== 'string') {\n console.error(\"Timezone must be a string - recieved: '\", str, \"'\\n\");\n }\n\n var tz = str.trim(); // let split = str.split('/')\n //support long timezones like 'America/Argentina/Rio_Gallegos'\n // if (split.length > 2 && zones.hasOwnProperty(tz) === false) {\n // tz = split[0] + '/' + split[1]\n // }\n\n tz = tz.toLowerCase();\n\n if (zones.hasOwnProperty(tz) === true) {\n return tz;\n } //lookup more loosely..\n\n\n tz = normalize(tz);\n\n if (zones.hasOwnProperty(tz) === true) {\n return tz;\n } //try city-names\n\n\n if (cities.hasOwnProperty(tz) === true) {\n return cities[tz];\n } // //try to parse '-5h'\n\n\n if (/[0-9]/.test(tz) === true) {\n var id = parseOffset_1$1(tz);\n\n if (id) {\n return id;\n }\n }\n\n throw new Error(\"Spacetime: Cannot find timezone named: '\" + str + \"'. Please enter an IANA timezone id.\");\n};\n\nvar find = lookupTz;\n\nvar o = {\n millisecond: 1\n};\no.second = 1000;\no.minute = 60000;\no.hour = 3.6e6; // dst is supported post-hoc\n\no.day = 8.64e7; //\n\no.date = o.day;\no.month = 8.64e7 * 29.5; //(average)\n\no.week = 6.048e8;\no.year = 3.154e10; // leap-years are supported post-hoc\n//add plurals\n\nObject.keys(o).forEach(function (k) {\n o[k + 's'] = o[k];\n});\nvar milliseconds = o;\n\nvar walk = function walk(s, n, fn, unit, previous) {\n var current = s.d[fn]();\n\n if (current === n) {\n return; //already there\n }\n\n var startUnit = previous === null ? null : s.d[previous]();\n var original = s.epoch; //try to get it as close as we can\n\n var diff = n - current;\n s.epoch += milliseconds[unit] * diff; //DST edge-case: if we are going many days, be a little conservative\n // console.log(unit, diff)\n\n if (unit === 'day') {\n // s.epoch -= ms.minute\n //but don't push it over a month\n if (Math.abs(diff) > 28 && n < 28) {\n s.epoch += milliseconds.hour;\n }\n } // 1st time: oops, did we change previous unit? revert it.\n\n\n if (previous !== null && startUnit !== s.d[previous]()) {\n // console.warn('spacetime warning: missed setting ' + unit)\n s.epoch = original; // s.epoch += ms[unit] * diff * 0.89 // maybe try and make it close...?\n } //repair it if we've gone too far or something\n //(go by half-steps, just in case)\n\n\n var halfStep = milliseconds[unit] / 2;\n\n while (s.d[fn]() < n) {\n s.epoch += halfStep;\n }\n\n while (s.d[fn]() > n) {\n s.epoch -= halfStep;\n } // 2nd time: did we change previous unit? revert it.\n\n\n if (previous !== null && startUnit !== s.d[previous]()) {\n // console.warn('spacetime warning: missed setting ' + unit)\n s.epoch = original;\n }\n}; //find the desired date by a increment/check while loop\n\n\nvar units$3 = {\n year: {\n valid: function valid(n) {\n return n > -4000 && n < 4000;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getFullYear', 'year', null);\n }\n },\n month: {\n valid: function valid(n) {\n return n >= 0 && n <= 11;\n },\n walkTo: function walkTo(s, n) {\n var d = s.d;\n var current = d.getMonth();\n var original = s.epoch;\n var startUnit = d.getFullYear();\n\n if (current === n) {\n return;\n } //try to get it as close as we can..\n\n\n var diff = n - current;\n s.epoch += milliseconds.day * (diff * 28); //special case\n //oops, did we change the year? revert it.\n\n if (startUnit !== s.d.getFullYear()) {\n s.epoch = original;\n } //increment by day\n\n\n while (s.d.getMonth() < n) {\n s.epoch += milliseconds.day;\n }\n\n while (s.d.getMonth() > n) {\n s.epoch -= milliseconds.day;\n }\n }\n },\n date: {\n valid: function valid(n) {\n return n > 0 && n <= 31;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getDate', 'day', 'getMonth');\n }\n },\n hour: {\n valid: function valid(n) {\n return n >= 0 && n < 24;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getHours', 'hour', 'getDate');\n }\n },\n minute: {\n valid: function valid(n) {\n return n >= 0 && n < 60;\n },\n walkTo: function walkTo(s, n) {\n return walk(s, n, 'getMinutes', 'minute', 'getHours');\n }\n },\n second: {\n valid: function valid(n) {\n return n >= 0 && n < 60;\n },\n walkTo: function walkTo(s, n) {\n //do this one directly\n s.epoch = s.seconds(n).epoch;\n }\n },\n millisecond: {\n valid: function valid(n) {\n return n >= 0 && n < 1000;\n },\n walkTo: function walkTo(s, n) {\n //do this one directly\n s.epoch = s.milliseconds(n).epoch;\n }\n }\n};\n\nvar walkTo = function walkTo(s, wants) {\n var keys = Object.keys(units$3);\n var old = s.clone();\n\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i];\n var n = wants[k];\n\n if (n === undefined) {\n n = old[k]();\n }\n\n if (typeof n === 'string') {\n n = parseInt(n, 10);\n } //make-sure it's valid\n\n\n if (!units$3[k].valid(n)) {\n s.epoch = null;\n\n if (s.silent === false) {\n console.warn('invalid ' + k + ': ' + n);\n }\n\n return;\n }\n\n units$3[k].walkTo(s, n);\n }\n\n return;\n};\n\nvar walk_1 = walkTo;\n\nvar shortMonths = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sept', 'oct', 'nov', 'dec'];\nvar longMonths = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\n\nfunction buildMapping() {\n var obj = {\n sep: 8 //support this format\n\n };\n\n for (var i = 0; i < shortMonths.length; i++) {\n obj[shortMonths[i]] = i;\n }\n\n for (var _i = 0; _i < longMonths.length; _i++) {\n obj[longMonths[_i]] = _i;\n }\n\n return obj;\n}\n\nvar months$1 = {\n \"short\": function short() {\n return shortMonths;\n },\n \"long\": function long() {\n return longMonths;\n },\n mapping: function mapping() {\n return buildMapping();\n },\n set: function set(i18n) {\n shortMonths = i18n[\"short\"] || shortMonths;\n longMonths = i18n[\"long\"] || longMonths;\n }\n};\n\n//pull-apart ISO offsets, like \"+0100\"\nvar parseOffset = function parseOffset(s, offset) {\n if (!offset) {\n return s;\n } //this is a fancy-move\n\n\n if (offset === 'Z' || offset === 'z') {\n offset = '+0000';\n } // according to ISO8601, tz could be hh:mm, hhmm or hh\n // so need few more steps before the calculation.\n\n\n var num = 0; // for (+-)hh:mm\n\n if (/^[\\+-]?[0-9]{2}:[0-9]{2}$/.test(offset)) {\n //support \"+01:00\"\n if (/:00/.test(offset) === true) {\n offset = offset.replace(/:00/, '');\n } //support \"+01:30\"\n\n\n if (/:30/.test(offset) === true) {\n offset = offset.replace(/:30/, '.5');\n }\n } // for (+-)hhmm\n\n\n if (/^[\\+-]?[0-9]{4}$/.test(offset)) {\n offset = offset.replace(/30$/, '.5');\n }\n\n num = parseFloat(offset); //divide by 100 or 10 - , \"+0100\", \"+01\"\n\n if (Math.abs(num) > 100) {\n num = num / 100;\n } //okay, try to match it to a utc timezone\n //remember - this is opposite! a -5 offset maps to Etc/GMT+5 ¯\\_(:/)_/¯\n //https://askubuntu.com/questions/519550/why-is-the-8-timezone-called-gmt-8-in-the-filesystem\n\n\n num *= -1;\n\n if (num >= 0) {\n num = '+' + num;\n }\n\n var tz = 'etc/gmt' + num;\n var zones = s.timezones;\n\n if (zones[tz]) {\n // log a warning if we're over-writing a given timezone?\n // console.log('changing timezone to: ' + tz)\n s.tz = tz;\n }\n\n return s;\n};\n\nvar parseOffset_1 = parseOffset;\n\nvar parseTime = function parseTime(s) {\n var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n str = str.replace(/^\\s+/, '').toLowerCase(); //trim\n //formal time formats - 04:30.23\n\n var arr = str.match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\\.]?([0-9]{1,4})?/);\n\n if (arr !== null) {\n //validate it a little\n var h = Number(arr[1]);\n\n if (h < 0 || h > 24) {\n return s.startOf('day');\n }\n\n var m = Number(arr[2]); //don't accept '5:3pm'\n\n if (arr[2].length < 2 || m < 0 || m > 59) {\n return s.startOf('day');\n }\n\n if (arr[4] > 999) {\n // fix overflow issue with milliseconds, if input is longer than standard (e.g. 2017-08-06T09:00:00.123456Z)\n arr[4] = parseInt(\"\".concat(arr[4]).substring(0, 3), 10);\n }\n\n s = s.hour(h);\n s = s.minute(m);\n s = s.seconds(arr[3] || 0);\n s = s.millisecond(arr[4] || 0); //parse-out am/pm\n\n var ampm = str.match(/[\\b0-9](am|pm)\\b/);\n\n if (ampm !== null && ampm[1]) {\n s = s.ampm(ampm[1]);\n }\n\n return s;\n } //try an informal form - 5pm (no minutes)\n\n\n arr = str.match(/([0-9]+) ?(am|pm)/);\n\n if (arr !== null && arr[1]) {\n var _h = Number(arr[1]); //validate it a little..\n\n\n if (_h > 12 || _h < 1) {\n return s.startOf('day');\n }\n\n s = s.hour(arr[1] || 0);\n s = s.ampm(arr[2]);\n s = s.startOf('hour');\n return s;\n } //no time info found, use start-of-day\n\n\n s = s.startOf('day');\n return s;\n};\n\nvar parseTime_1 = parseTime;\n\nvar monthLengths = [31, // January - 31 days\n28, // February - 28 days in a common year and 29 days in leap years\n31, // March - 31 days\n30, // April - 30 days\n31, // May - 31 days\n30, // June - 30 days\n31, // July - 31 days\n31, // August - 31 days\n30, // September - 30 days\n31, // October - 31 days\n30, // November - 30 days\n31 // December - 31 days\n];\nvar monthLengths_1 = monthLengths; // 28 - feb\n\nvar fns = createCommonjsModule(function (module, exports) {\n //git:blame @JuliasCaesar https://www.timeanddate.com/date/leapyear.html\n exports.isLeapYear = function (year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n }; // unsurprisingly-nasty `typeof date` call\n\n\n exports.isDate = function (d) {\n return Object.prototype.toString.call(d) === '[object Date]' && !isNaN(d.valueOf());\n };\n\n exports.isArray = function (input) {\n return Object.prototype.toString.call(input) === '[object Array]';\n };\n\n exports.isObject = function (input) {\n return Object.prototype.toString.call(input) === '[object Object]';\n };\n\n exports.isBoolean = function (input) {\n return Object.prototype.toString.call(input) === '[object Boolean]';\n };\n\n exports.zeroPad = function (str) {\n var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var pad = '0';\n str = str + '';\n return str.length >= len ? str : new Array(len - str.length + 1).join(pad) + str;\n };\n\n exports.titleCase = function (str) {\n if (!str) {\n return '';\n }\n\n return str[0].toUpperCase() + str.substr(1);\n };\n\n exports.ordinal = function (i) {\n var j = i % 10;\n var k = i % 100;\n\n if (j === 1 && k !== 11) {\n return i + 'st';\n }\n\n if (j === 2 && k !== 12) {\n return i + 'nd';\n }\n\n if (j === 3 && k !== 13) {\n return i + 'rd';\n }\n\n return i + 'th';\n }; //strip 'st' off '1st'..\n\n\n exports.toCardinal = function (str) {\n str = String(str);\n str = str.replace(/([0-9])(st|nd|rd|th)$/i, '$1');\n return parseInt(str, 10);\n }; //used mostly for cleanup of unit names, like 'months'\n\n\n exports.normalize = function () {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n str = str.toLowerCase().trim();\n str = str.replace(/ies$/, 'y'); //'centuries'\n\n str = str.replace(/s$/, '');\n str = str.replace(/-/g, '');\n\n if (str === 'day' || str === 'days') {\n return 'date';\n }\n\n if (str === 'min' || str === 'mins') {\n return 'minute';\n }\n\n return str;\n };\n\n exports.getEpoch = function (tmp) {\n //support epoch\n if (typeof tmp === 'number') {\n return tmp;\n } //suport date objects\n\n\n if (exports.isDate(tmp)) {\n return tmp.getTime();\n }\n\n if (tmp.epoch) {\n return tmp.epoch;\n }\n\n return null;\n }; //make sure this input is a spacetime obj\n\n\n exports.beADate = function (d, s) {\n if (exports.isObject(d) === false) {\n return s.clone().set(d);\n }\n\n return d;\n };\n\n exports.formatTimezone = function (offset) {\n var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var sign = offset > 0 ? '+' : '-';\n var absOffset = Math.abs(offset);\n var hours = exports.zeroPad(parseInt('' + absOffset, 10));\n var minutes = exports.zeroPad(absOffset % 1 * 60);\n return \"\".concat(sign).concat(hours).concat(delimiter).concat(minutes);\n };\n});\nfns.isLeapYear;\nfns.isDate;\nfns.isArray;\nfns.isObject;\nfns.isBoolean;\nfns.zeroPad;\nfns.titleCase;\nfns.ordinal;\nfns.toCardinal;\nfns.normalize;\nfns.getEpoch;\nfns.beADate;\nfns.formatTimezone;\n\nvar isLeapYear$2 = fns.isLeapYear; //given a month, return whether day number exists in it\n\nvar hasDate = function hasDate(obj) {\n //invalid values\n if (monthLengths_1.hasOwnProperty(obj.month) !== true) {\n return false;\n } //support leap-year in february\n\n\n if (obj.month === 1) {\n if (isLeapYear$2(obj.year) && obj.date <= 29) {\n return true;\n } else {\n return obj.date <= 28;\n }\n } //is this date too-big for this month?\n\n\n var max = monthLengths_1[obj.month] || 0;\n\n if (obj.date <= max) {\n return true;\n }\n\n return false;\n};\n\nvar hasDate_1 = hasDate;\n\nvar months = months$1.mapping();\n\nvar parseYear = function parseYear() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var today = arguments.length > 1 ? arguments[1] : undefined;\n var year = parseInt(str.trim(), 10); // use a given year from options.today\n\n if (!year && today) {\n year = today.year;\n } // fallback to this year\n\n\n year = year || new Date().getFullYear();\n return year;\n};\n\nvar strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00-0700\n{\n reg: /^(\\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\\-\\+:]+)?$/i,\n parse: function parse(s, arr, givenTz, options) {\n var month = parseInt(arr[2], 10) - 1;\n var obj = {\n year: arr[1],\n month: month,\n date: arr[3]\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n parseOffset_1(s, arr[5]);\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //iso \"2015-03-25\" or \"2015/03/25\" or \"2015/03/25 12:26:14 PM\"\n{\n reg: /^([0-9]{4})[\\-\\/.]([0-9]{1,2})[\\-\\/.]([0-9]{1,2}),?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var obj = {\n year: arr[1],\n month: parseInt(arr[2], 10) - 1,\n date: parseInt(arr[3], 10)\n };\n\n if (obj.month >= 12) {\n //support yyyy/dd/mm (weird, but ok)\n obj.date = parseInt(arr[2], 10);\n obj.month = parseInt(arr[3], 10) - 1;\n }\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //mm/dd/yyyy - uk/canada \"6/28/2019, 12:26:14 PM\"\n{\n reg: /^([0-9]{1,2})[\\-\\/.]([0-9]{1,2})[\\-\\/.]?([0-9]{4})?,?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var month = parseInt(arr[1], 10) - 1;\n var date = parseInt(arr[2], 10); //support dd/mm/yyy\n\n if (s.british || month >= 12) {\n date = parseInt(arr[1], 10);\n month = parseInt(arr[2], 10) - 1;\n }\n\n var year = parseYear(arr[3], s._today) || new Date().getFullYear();\n var obj = {\n year: year,\n month: month,\n date: date\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, // '2012-06' last attempt at iso-like format\n{\n reg: /^([0-9]{4})[\\-\\/]([0-9]{2})$/i,\n parse: function parse(s, arr, givenTz, options) {\n var month = parseInt(arr[2], 10) - 1;\n var obj = {\n year: arr[1],\n month: month,\n date: 1\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n parseOffset_1(s, arr[5]);\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //common british format - \"25-feb-2015\"\n{\n reg: /^([0-9]{1,2})[\\-\\/]([a-z]+)[\\-\\/]?([0-9]{4})?$/i,\n parse: function parse(s, arr) {\n var month = months[arr[2].toLowerCase()];\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[1] || '')\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //alt short format - \"feb-25-2015\"\n{\n reg: /^([a-z]+)[\\-\\/]([0-9]{1,2})[\\-\\/]?([0-9]{4})?$/i,\n parse: function parse(s, arr) {\n var month = months[arr[1].toLowerCase()];\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[2] || '')\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //Long \"Mar 25 2015\"\n//February 22, 2017 15:30:00\n{\n reg: /^([a-z]+) ([0-9]{1,2}(?:st|nd|rd|th)?),?( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i,\n parse: function parse(s, arr) {\n var month = months[arr[1].toLowerCase()];\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[2] || '')\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //February 2017 (implied date)\n{\n reg: /^([a-z]+) ([0-9]{4})$/i,\n parse: function parse(s, arr) {\n var month = months[arr[1].toLowerCase()];\n var year = parseYear(arr[2], s._today);\n var obj = {\n year: year,\n month: month,\n date: s._today.date || 1\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, //Long \"25 Mar 2015\"\n{\n reg: /^([0-9]{1,2}(?:st|nd|rd|th)?) ([a-z]+),?( [0-9]{4})?,? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,\n parse: function parse(s, arr) {\n var month = months[arr[2].toLowerCase()];\n\n if (!month) {\n return null;\n }\n\n var year = parseYear(arr[3], s._today);\n var obj = {\n year: year,\n month: month,\n date: fns.toCardinal(arr[1])\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s, arr[4]);\n return s;\n }\n}, {\n // 'q2 2002'\n reg: /^(q[0-9])( of)?( [0-9]{4})?/i,\n parse: function parse(s, arr) {\n var quarter = arr[1] || '';\n s = s.quarter(quarter);\n var year = arr[3] || '';\n\n if (year) {\n year = year.trim();\n s = s.year(year);\n }\n\n return s;\n }\n}, {\n // 'summer 2002'\n reg: /^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i,\n parse: function parse(s, arr) {\n var season = arr[1] || '';\n s = s.season(season);\n var year = arr[3] || '';\n\n if (year) {\n year = year.trim();\n s = s.year(year);\n }\n\n return s;\n }\n}, {\n // '200bc'\n reg: /^[0-9,]+ ?b\\.?c\\.?$/i,\n parse: function parse(s, arr) {\n var str = arr[0] || ''; //make negative-year\n\n str = str.replace(/^([0-9,]+) ?b\\.?c\\.?$/i, '-$1'); //remove commas\n\n str = str.replace(/,/g, '');\n var year = parseInt(str.trim(), 10);\n var d = new Date();\n var obj = {\n year: year,\n month: d.getMonth(),\n date: d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}, {\n // '200ad'\n reg: /^[0-9,]+ ?(a\\.?d\\.?|c\\.?e\\.?)$/i,\n parse: function parse(s, arr) {\n var str = arr[0] || ''; //remove commas\n\n str = str.replace(/,/g, '');\n var year = parseInt(str.trim(), 10);\n var d = new Date();\n var obj = {\n year: year,\n month: d.getMonth(),\n date: d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}, {\n // '1992'\n reg: /^[0-9]{4}( ?a\\.?d\\.?)?$/i,\n parse: function parse(s, arr) {\n var today = s._today;\n var year = parseYear(arr[0], today);\n var d = new Date(); // using today's date, but a new month is awkward.\n\n if (today.month && !today.date) {\n today.date = 1;\n }\n\n var obj = {\n year: year,\n month: today.month || d.getMonth(),\n date: today.date || d.getDate()\n };\n\n if (hasDate_1(obj) === false) {\n s.epoch = null;\n return s;\n }\n\n walk_1(s, obj);\n s = parseTime_1(s);\n return s;\n }\n}];\nvar strParse = strFmt;\n\n// pull in 'today' data for the baseline moment\nvar getNow = function getNow(s) {\n s.epoch = Date.now();\n Object.keys(s._today || {}).forEach(function (k) {\n if (typeof s[k] === 'function') {\n s = s[k](s._today[k]);\n }\n });\n return s;\n};\n\nvar dates = {\n now: function now(s) {\n return getNow(s);\n },\n today: function today(s) {\n return getNow(s);\n },\n tonight: function tonight(s) {\n s = getNow(s);\n s = s.hour(18); //6pm\n\n return s;\n },\n tomorrow: function tomorrow(s) {\n s = getNow(s);\n s = s.add(1, 'day');\n s = s.startOf('day');\n return s;\n },\n yesterday: function yesterday(s) {\n s = getNow(s);\n s = s.subtract(1, 'day');\n s = s.startOf('day');\n return s;\n },\n christmas: function christmas(s) {\n var year = getNow(s).year();\n s = s.set([year, 11, 25, 18, 0, 0]); // Dec 25\n\n return s;\n },\n 'new years': function newYears(s) {\n var year = getNow(s).year();\n s = s.set([year, 11, 31, 18, 0, 0]); // Dec 31\n\n return s;\n }\n};\ndates['new years eve'] = dates['new years'];\nvar namedDates = dates;\n\n// - can't use built-in js parser ;(\n//=========================================\n// ISO Date\t \"2015-03-25\"\n// Short Date\t\"03/25/2015\" or \"2015/03/25\"\n// Long Date\t\"Mar 25 2015\" or \"25 Mar 2015\"\n// Full Date\t\"Wednesday March 25 2015\"\n//=========================================\n//-- also -\n// if the given epoch is really small, they've probably given seconds and not milliseconds\n// anything below this number is likely (but not necessarily) a mistaken input.\n// this may seem like an arbitrary number, but it's 'within jan 1970'\n// this is only really ambiguous until 2054 or so\n\nvar minimumEpoch = 2500000000;\nvar defaults = {\n year: new Date().getFullYear(),\n month: 0,\n date: 1\n}; //support [2016, 03, 01] format\n\nvar handleArray = function handleArray(s, arr, today) {\n if (arr.length === 0) {\n return s;\n }\n\n var order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond'];\n\n for (var i = 0; i < order.length; i++) {\n var num = arr[i] || today[order[i]] || defaults[order[i]] || 0;\n s = s[order[i]](num);\n }\n\n return s;\n}; //support {year:2016, month:3} format\n\n\nvar handleObject = function handleObject(s, obj, today) {\n // if obj is empty, do nothing\n if (Object.keys(obj).length === 0) {\n return s;\n }\n\n obj = Object.assign({}, defaults, today, obj);\n var keys = Object.keys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n var unit = keys[i]; //make sure we have this method\n\n if (s[unit] === undefined || typeof s[unit] !== 'function') {\n continue;\n } //make sure the value is a number\n\n\n if (obj[unit] === null || obj[unit] === undefined || obj[unit] === '') {\n continue;\n }\n\n var num = obj[unit] || today[unit] || defaults[unit] || 0;\n s = s[unit](num);\n }\n\n return s;\n}; //find the epoch from different input styles\n\n\nvar parseInput = function parseInput(s, input, givenTz) {\n var today = s._today || defaults; //if we've been given a epoch number, it's easy\n\n if (typeof input === 'number') {\n if (input > 0 && input < minimumEpoch && s.silent === false) {\n console.warn(' - Warning: You are setting the date to January 1970.');\n console.warn(' - did input seconds instead of milliseconds?');\n }\n\n s.epoch = input;\n return s;\n } //set tmp time\n\n\n s.epoch = Date.now(); // overwrite tmp time with 'today' value, if exists\n\n if (s._today && fns.isObject(s._today) && Object.keys(s._today).length > 0) {\n var res = handleObject(s, today, defaults);\n\n if (res.isValid()) {\n s.epoch = res.epoch;\n }\n } // null input means 'now'\n\n\n if (input === null || input === undefined || input === '') {\n return s; //k, we're good.\n } //support input of Date() object\n\n\n if (fns.isDate(input) === true) {\n s.epoch = input.getTime();\n return s;\n } //support [2016, 03, 01] format\n\n\n if (fns.isArray(input) === true) {\n s = handleArray(s, input, today);\n return s;\n } //support {year:2016, month:3} format\n\n\n if (fns.isObject(input) === true) {\n //support spacetime object as input\n if (input.epoch) {\n s.epoch = input.epoch;\n s.tz = input.tz;\n return s;\n }\n\n s = handleObject(s, input, today);\n return s;\n } //input as a string..\n\n\n if (typeof input !== 'string') {\n return s;\n } //little cleanup..\n\n\n input = input.replace(/\\b(mon|tues|wed|wednes|thu|thurs|fri|sat|satur|sun)(day)?\\b/i, '');\n input = input.replace(/,/g, '');\n input = input.replace(/ +/g, ' ').trim(); //try some known-words, like 'now'\n\n if (namedDates.hasOwnProperty(input) === true) {\n s = namedDates[input](s);\n return s;\n } //try each text-parse template, use the first good result\n\n\n for (var i = 0; i < strParse.length; i++) {\n var m = input.match(strParse[i].reg);\n\n if (m) {\n // console.log(strFmt[i].reg)\n var _res = strParse[i].parse(s, m, givenTz);\n\n if (_res !== null && _res.isValid()) {\n return _res;\n }\n }\n }\n\n if (s.silent === false) {\n console.warn(\"Warning: couldn't parse date-string: '\" + input + \"'\");\n }\n\n s.epoch = null;\n return s;\n};\n\nvar input = parseInput;\n\nvar shortDays = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nvar longDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nvar days = {\n \"short\": function short() {\n return shortDays;\n },\n \"long\": function long() {\n return longDays;\n },\n set: function set(i18n) {\n shortDays = i18n[\"short\"] || shortDays;\n longDays = i18n[\"long\"] || longDays;\n },\n aliases: {\n mo: 1,\n tu: 2,\n we: 3,\n th: 4,\n fr: 5,\n sa: 6,\n su: 7,\n tues: 2,\n weds: 3,\n wedn: 3,\n thur: 4,\n thurs: 4\n }\n};\n\nvar titleCaseEnabled = true;\nvar caseFormat = {\n useTitleCase: function useTitleCase() {\n return titleCaseEnabled;\n },\n set: function set(useTitleCase) {\n titleCaseEnabled = useTitleCase;\n }\n};\n\n// it's kind of nuts how involved this is\n// \"+01:00\", \"+0100\", or simply \"+01\"\n\nvar isoOffset = function isoOffset(s) {\n var offset = s.timezone().current.offset;\n return !offset ? 'Z' : fns.formatTimezone(offset, ':');\n};\n\nvar _offset = isoOffset;\n\nvar applyCaseFormat = function applyCaseFormat(str) {\n if (caseFormat.useTitleCase()) {\n return fns.titleCase(str);\n }\n\n return str;\n};\n\nvar format = {\n day: function day(s) {\n return applyCaseFormat(s.dayName());\n },\n 'day-short': function dayShort(s) {\n return applyCaseFormat(days[\"short\"]()[s.day()]);\n },\n 'day-number': function dayNumber(s) {\n return s.day();\n },\n 'day-ordinal': function dayOrdinal(s) {\n return fns.ordinal(s.day());\n },\n 'day-pad': function dayPad(s) {\n return fns.zeroPad(s.day());\n },\n date: function date(s) {\n return s.date();\n },\n 'date-ordinal': function dateOrdinal(s) {\n return fns.ordinal(s.date());\n },\n 'date-pad': function datePad(s) {\n return fns.zeroPad(s.date());\n },\n month: function month(s) {\n return applyCaseFormat(s.monthName());\n },\n 'month-short': function monthShort(s) {\n return applyCaseFormat(months$1[\"short\"]()[s.month()]);\n },\n 'month-number': function monthNumber(s) {\n return s.month();\n },\n 'month-ordinal': function monthOrdinal(s) {\n return fns.ordinal(s.month());\n },\n 'month-pad': function monthPad(s) {\n return fns.zeroPad(s.month());\n },\n 'iso-month': function isoMonth(s) {\n return fns.zeroPad(s.month() + 1);\n },\n //1-based months\n year: function year(s) {\n var year = s.year();\n\n if (year > 0) {\n return year;\n }\n\n year = Math.abs(year);\n return year + ' BC';\n },\n 'year-short': function yearShort(s) {\n var year = s.year();\n\n if (year > 0) {\n return \"'\".concat(String(s.year()).substr(2, 4));\n }\n\n year = Math.abs(year);\n return year + ' BC';\n },\n 'iso-year': function isoYear(s) {\n var year = s.year();\n var isNegative = year < 0;\n var str = fns.zeroPad(Math.abs(year), 4); //0-padded\n\n if (isNegative) {\n //negative years are for some reason 6-digits ('-00008')\n str = fns.zeroPad(str, 6);\n str = '-' + str;\n }\n\n return str;\n },\n time: function time(s) {\n return s.time();\n },\n 'time-24': function time24(s) {\n return \"\".concat(s.hour24(), \":\").concat(fns.zeroPad(s.minute()));\n },\n hour: function hour(s) {\n return s.hour12();\n },\n 'hour-pad': function hourPad(s) {\n return fns.zeroPad(s.hour12());\n },\n 'hour-24': function hour24(s) {\n return s.hour24();\n },\n 'hour-24-pad': function hour24Pad(s) {\n return fns.zeroPad(s.hour24());\n },\n minute: function minute(s) {\n return s.minute();\n },\n 'minute-pad': function minutePad(s) {\n return fns.zeroPad(s.minute());\n },\n second: function second(s) {\n return s.second();\n },\n 'second-pad': function secondPad(s) {\n return fns.zeroPad(s.second());\n },\n ampm: function ampm(s) {\n return s.ampm();\n },\n quarter: function quarter(s) {\n return 'Q' + s.quarter();\n },\n season: function season(s) {\n return s.season();\n },\n era: function era(s) {\n return s.era();\n },\n json: function json(s) {\n return s.json();\n },\n timezone: function timezone(s) {\n return s.timezone().name;\n },\n offset: function offset(s) {\n return _offset(s);\n },\n numeric: function numeric(s) {\n return \"\".concat(s.year(), \"/\").concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()));\n },\n // yyyy/mm/dd\n 'numeric-us': function numericUs(s) {\n return \"\".concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()), \"/\").concat(s.year());\n },\n // mm/dd/yyyy\n 'numeric-uk': function numericUk(s) {\n return \"\".concat(fns.zeroPad(s.date()), \"/\").concat(fns.zeroPad(s.month() + 1), \"/\").concat(s.year());\n },\n //dd/mm/yyyy\n 'mm/dd': function mmDd(s) {\n return \"\".concat(fns.zeroPad(s.month() + 1), \"/\").concat(fns.zeroPad(s.date()));\n },\n //mm/dd\n // ... https://en.wikipedia.org/wiki/ISO_8601 ;(((\n iso: function iso(s) {\n var year = s.format('iso-year');\n var month = fns.zeroPad(s.month() + 1); //1-based months\n\n var date = fns.zeroPad(s.date());\n var hour = fns.zeroPad(s.h24());\n var minute = fns.zeroPad(s.minute());\n var second = fns.zeroPad(s.second());\n var ms = fns.zeroPad(s.millisecond(), 3);\n var offset = _offset(s);\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(date, \"T\").concat(hour, \":\").concat(minute, \":\").concat(second, \".\").concat(ms).concat(offset); //2018-03-09T08:50:00.000-05:00\n },\n 'iso-short': function isoShort(s) {\n var month = fns.zeroPad(s.month() + 1); //1-based months\n\n var date = fns.zeroPad(s.date());\n return \"\".concat(s.year(), \"-\").concat(month, \"-\").concat(date); //2017-02-15\n },\n 'iso-utc': function isoUtc(s) {\n return new Date(s.epoch).toISOString(); //2017-03-08T19:45:28.367Z\n },\n //i made these up\n nice: function nice(s) {\n return \"\".concat(months$1[\"short\"]()[s.month()], \" \").concat(fns.ordinal(s.date()), \", \").concat(s.time());\n },\n 'nice-24': function nice24(s) {\n return \"\".concat(months$1[\"short\"]()[s.month()], \" \").concat(fns.ordinal(s.date()), \", \").concat(s.hour24(), \":\").concat(fns.zeroPad(s.minute()));\n },\n 'nice-year': function niceYear(s) {\n return \"\".concat(months$1[\"short\"]()[s.month()], \" \").concat(fns.ordinal(s.date()), \", \").concat(s.year());\n },\n 'nice-day': function niceDay(s) {\n return \"\".concat(days[\"short\"]()[s.day()], \" \").concat(applyCaseFormat(months$1[\"short\"]()[s.month()]), \" \").concat(fns.ordinal(s.date()));\n },\n 'nice-full': function niceFull(s) {\n return \"\".concat(s.dayName(), \" \").concat(applyCaseFormat(s.monthName()), \" \").concat(fns.ordinal(s.date()), \", \").concat(s.time());\n },\n 'nice-full-24': function niceFull24(s) {\n return \"\".concat(s.dayName(), \" \").concat(applyCaseFormat(s.monthName()), \" \").concat(fns.ordinal(s.date()), \", \").concat(s.hour24(), \":\").concat(fns.zeroPad(s.minute()));\n }\n}; //aliases\n\nvar aliases = {\n 'day-name': 'day',\n 'month-name': 'month',\n 'iso 8601': 'iso',\n 'time-h24': 'time-24',\n 'time-12': 'time',\n 'time-h12': 'time',\n tz: 'timezone',\n 'day-num': 'day-number',\n 'month-num': 'month-number',\n 'month-iso': 'iso-month',\n 'year-iso': 'iso-year',\n 'nice-short': 'nice',\n 'nice-short-24': 'nice-24',\n mdy: 'numeric-us',\n dmy: 'numeric-uk',\n ymd: 'numeric',\n 'yyyy/mm/dd': 'numeric',\n 'mm/dd/yyyy': 'numeric-us',\n 'dd/mm/yyyy': 'numeric-us',\n 'little-endian': 'numeric-uk',\n 'big-endian': 'numeric',\n 'day-nice': 'nice-day'\n};\nObject.keys(aliases).forEach(function (k) {\n return format[k] = format[aliases[k]];\n});\n\nvar printFormat = function printFormat(s) {\n var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n //don't print anything if it's an invalid date\n if (s.isValid() !== true) {\n return '';\n } //support .format('month')\n\n\n if (format.hasOwnProperty(str)) {\n var out = format[str](s) || '';\n\n if (str !== 'json') {\n out = String(out);\n\n if (str !== 'ampm') {\n out = applyCaseFormat(out);\n }\n }\n\n return out;\n } //support '{hour}:{minute}' notation\n\n\n if (str.indexOf('{') !== -1) {\n var sections = /\\{(.+?)\\}/g;\n str = str.replace(sections, function (_, fmt) {\n fmt = fmt.toLowerCase().trim();\n\n if (format.hasOwnProperty(fmt)) {\n var _out = String(format[fmt](s));\n\n if (fmt !== 'ampm') {\n return applyCaseFormat(_out);\n }\n\n return _out;\n }\n\n return '';\n });\n return str;\n }\n\n return s.format('iso-short');\n};\n\nvar format_1 = printFormat;\n\nvar pad = fns.zeroPad;\nvar formatTimezone = fns.formatTimezone; //parse this insane unix-time-templating thing, from the 19th century\n//http://unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns\n//time-symbols we support\n\nvar mapping = {\n G: function G(s) {\n return s.era();\n },\n GG: function GG(s) {\n return s.era();\n },\n GGG: function GGG(s) {\n return s.era();\n },\n GGGG: function GGGG(s) {\n return s.era() === 'AD' ? 'Anno Domini' : 'Before Christ';\n },\n //year\n y: function y(s) {\n return s.year();\n },\n yy: function yy(s) {\n //last two chars\n return parseInt(String(s.year()).substr(2, 4), 10);\n },\n yyy: function yyy(s) {\n return s.year();\n },\n yyyy: function yyyy(s) {\n return s.year();\n },\n yyyyy: function yyyyy(s) {\n return '0' + s.year();\n },\n // u: (s) => {},//extended non-gregorian years\n //quarter\n Q: function Q(s) {\n return s.quarter();\n },\n QQ: function QQ(s) {\n return s.quarter();\n },\n QQQ: function QQQ(s) {\n return s.quarter();\n },\n QQQQ: function QQQQ(s) {\n return s.quarter();\n },\n //month\n M: function M(s) {\n return s.month() + 1;\n },\n MM: function MM(s) {\n return pad(s.month() + 1);\n },\n MMM: function MMM(s) {\n return s.format('month-short');\n },\n MMMM: function MMMM(s) {\n return s.format('month');\n },\n //week\n w: function w(s) {\n return s.week();\n },\n ww: function ww(s) {\n return pad(s.week());\n },\n //week of month\n // W: (s) => s.week(),\n //date of month\n d: function d(s) {\n return s.date();\n },\n dd: function dd(s) {\n return pad(s.date());\n },\n //date of year\n D: function D(s) {\n return s.dayOfYear();\n },\n DD: function DD(s) {\n return pad(s.dayOfYear());\n },\n DDD: function DDD(s) {\n return pad(s.dayOfYear(), 3);\n },\n // F: (s) => {},//date of week in month\n // g: (s) => {},//modified julian day\n //day\n E: function E(s) {\n return s.format('day-short');\n },\n EE: function EE(s) {\n return s.format('day-short');\n },\n EEE: function EEE(s) {\n return s.format('day-short');\n },\n EEEE: function EEEE(s) {\n return s.format('day');\n },\n EEEEE: function EEEEE(s) {\n return s.format('day')[0];\n },\n e: function e(s) {\n return s.day();\n },\n ee: function ee(s) {\n return s.day();\n },\n eee: function eee(s) {\n return s.format('day-short');\n },\n eeee: function eeee(s) {\n return s.format('day');\n },\n eeeee: function eeeee(s) {\n return s.format('day')[0];\n },\n //am/pm\n a: function a(s) {\n return s.ampm().toUpperCase();\n },\n aa: function aa(s) {\n return s.ampm().toUpperCase();\n },\n aaa: function aaa(s) {\n return s.ampm().toUpperCase();\n },\n aaaa: function aaaa(s) {\n return s.ampm().toUpperCase();\n },\n //hour\n h: function h(s) {\n return s.h12();\n },\n hh: function hh(s) {\n return pad(s.h12());\n },\n H: function H(s) {\n return s.hour();\n },\n HH: function HH(s) {\n return pad(s.hour());\n },\n // j: (s) => {},//weird hour format\n m: function m(s) {\n return s.minute();\n },\n mm: function mm(s) {\n return pad(s.minute());\n },\n s: function s(_s) {\n return _s.second();\n },\n ss: function ss(s) {\n return pad(s.second());\n },\n //milliseconds in the day\n A: function A(s) {\n return s.epoch - s.startOf('day').epoch;\n },\n //timezone\n z: function z(s) {\n return s.timezone().name;\n },\n zz: function zz(s) {\n return s.timezone().name;\n },\n zzz: function zzz(s) {\n return s.timezone().name;\n },\n zzzz: function zzzz(s) {\n return s.timezone().name;\n },\n Z: function Z(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZ: function ZZ(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZZ: function ZZZ(s) {\n return formatTimezone(s.timezone().current.offset);\n },\n ZZZZ: function ZZZZ(s) {\n return formatTimezone(s.timezone().current.offset, ':');\n }\n};\n\nvar addAlias = function addAlias(_char, to, n) {\n var name = _char;\n var toName = to;\n\n for (var i = 0; i < n; i += 1) {\n mapping[name] = mapping[toName];\n name += _char;\n toName += to;\n }\n};\n\naddAlias('q', 'Q', 4);\naddAlias('L', 'M', 4);\naddAlias('Y', 'y', 4);\naddAlias('c', 'e', 4);\naddAlias('k', 'H', 2);\naddAlias('K', 'h', 2);\naddAlias('S', 's', 2);\naddAlias('v', 'z', 4);\naddAlias('V', 'Z', 4); // support unix-style escaping with ' character\n\nvar escapeChars = function escapeChars(arr) {\n for (var i = 0; i < arr.length; i += 1) {\n if (arr[i] === \"'\") {\n // greedy-search for next apostrophe\n for (var o = i + 1; o < arr.length; o += 1) {\n if (arr[o]) {\n arr[i] += arr[o];\n }\n\n if (arr[o] === \"'\") {\n arr[o] = null;\n break;\n }\n\n arr[o] = null;\n }\n }\n }\n\n return arr.filter(function (ch) {\n return ch;\n });\n}; //combine consecutive chars, like 'yyyy' as one.\n\n\nvar combineRepeated = function combineRepeated(arr) {\n for (var i = 0; i < arr.length; i += 1) {\n var c = arr[i]; // greedy-forward\n\n for (var o = i + 1; o < arr.length; o += 1) {\n if (arr[o] === c) {\n arr[i] += arr[o];\n arr[o] = null;\n } else {\n break;\n }\n }\n } // '' means one apostrophe\n\n\n arr = arr.filter(function (ch) {\n return ch;\n });\n arr = arr.map(function (str) {\n if (str === \"''\") {\n str = \"'\";\n }\n\n return str;\n });\n return arr;\n};\n\nvar unixFmt = function unixFmt(s, str) {\n var arr = str.split(''); // support character escaping\n\n arr = escapeChars(arr); //combine 'yyyy' as string.\n\n arr = combineRepeated(arr);\n return arr.reduce(function (txt, c) {\n if (mapping[c] !== undefined) {\n txt += mapping[c](s) || '';\n } else {\n // 'unescape'\n if (/^'.{1,}'$/.test(c)) {\n c = c.replace(/'/g, '');\n }\n\n txt += c;\n }\n\n return txt;\n }, '');\n};\n\nvar unixFmt_1 = unixFmt;\n\nvar units$2 = ['year', 'season', 'quarter', 'month', 'week', 'day', 'quarterHour', 'hour', 'minute'];\n\nvar doUnit = function doUnit(s, k) {\n var start = s.clone().startOf(k);\n var end = s.clone().endOf(k);\n var duration = end.epoch - start.epoch;\n var percent = (s.epoch - start.epoch) / duration;\n return parseFloat(percent.toFixed(2));\n}; //how far it is along, from 0-1\n\n\nvar progress = function progress(s, unit) {\n if (unit) {\n unit = fns.normalize(unit);\n return doUnit(s, unit);\n }\n\n var obj = {};\n units$2.forEach(function (k) {\n obj[k] = doUnit(s, k);\n });\n return obj;\n};\n\nvar progress_1 = progress;\n\nvar nearest = function nearest(s, unit) {\n //how far have we gone?\n var prog = s.progress();\n unit = fns.normalize(unit); //fix camel-case for this one\n\n if (unit === 'quarterhour') {\n unit = 'quarterHour';\n }\n\n if (prog[unit] !== undefined) {\n // go forward one?\n if (prog[unit] > 0.5) {\n s = s.add(1, unit);\n } // go to start\n\n\n s = s.startOf(unit);\n } else if (s.silent === false) {\n console.warn(\"no known unit '\" + unit + \"'\");\n }\n\n return s;\n};\n\nvar nearest_1 = nearest;\n\n//increment until dates are the same\nvar climb = function climb(a, b, unit) {\n var i = 0;\n a = a.clone();\n\n while (a.isBefore(b)) {\n //do proper, expensive increment to catch all-the-tricks\n a = a.add(1, unit);\n i += 1;\n } //oops, we went too-far..\n\n\n if (a.isAfter(b, unit)) {\n i -= 1;\n }\n\n return i;\n}; // do a thurough +=1 on the unit, until they match\n// for speed-reasons, only used on day, month, week.\n\n\nvar diffOne = function diffOne(a, b, unit) {\n if (a.isBefore(b)) {\n return climb(a, b, unit);\n } else {\n return climb(b, a, unit) * -1; //reverse it\n }\n};\n\nvar one = diffOne;\n\n// 2020 - 2019 may be 1 year, or 0 years\n// - '1 year difference' means 366 days during a leap year\n\nvar fastYear = function fastYear(a, b) {\n var years = b.year() - a.year(); // should we decrement it by 1?\n\n a = a.year(b.year());\n\n if (a.isAfter(b)) {\n years -= 1;\n }\n\n return years;\n}; // use a waterfall-method for computing a diff of any 'pre-knowable' units\n// compute years, then compute months, etc..\n// ... then ms-math for any very-small units\n\n\nvar diff$1 = function diff(a, b) {\n // an hour is always the same # of milliseconds\n // so these units can be 'pre-calculated'\n var msDiff = b.epoch - a.epoch;\n var obj = {\n milliseconds: msDiff,\n seconds: parseInt(msDiff / 1000, 10)\n };\n obj.minutes = parseInt(obj.seconds / 60, 10);\n obj.hours = parseInt(obj.minutes / 60, 10); //do the year\n\n var tmp = a.clone();\n obj.years = fastYear(tmp, b);\n tmp = a.add(obj.years, 'year'); //there's always 12 months in a year...\n\n obj.months = obj.years * 12;\n tmp = a.add(obj.months, 'month');\n obj.months += one(tmp, b, 'month'); // there's always atleast 52 weeks in a year..\n // (month * 4) isn't as close\n\n obj.weeks = obj.years * 52;\n tmp = a.add(obj.weeks, 'week');\n obj.weeks += one(tmp, b, 'week'); // there's always atleast 7 days in a week\n\n obj.days = obj.weeks * 7;\n tmp = a.add(obj.days, 'day');\n obj.days += one(tmp, b, 'day');\n return obj;\n};\n\nvar waterfall = diff$1;\n\nvar reverseDiff = function reverseDiff(obj) {\n Object.keys(obj).forEach(function (k) {\n obj[k] *= -1;\n });\n return obj;\n}; // this method counts a total # of each unit, between a, b.\n// '1 month' means 28 days in february\n// '1 year' means 366 days in a leap year\n\n\nvar main$1 = function main(a, b, unit) {\n b = fns.beADate(b, a); //reverse values, if necessary\n\n var reversed = false;\n\n if (a.isAfter(b)) {\n var tmp = a;\n a = b;\n b = tmp;\n reversed = true;\n } //compute them all (i know!)\n\n\n var obj = waterfall(a, b);\n\n if (reversed) {\n obj = reverseDiff(obj);\n } //return just the requested unit\n\n\n if (unit) {\n //make sure it's plural-form\n unit = fns.normalize(unit);\n\n if (/s$/.test(unit) !== true) {\n unit += 's';\n }\n\n if (unit === 'dates') {\n unit = 'days';\n }\n\n return obj[unit];\n }\n\n return obj;\n};\n\nvar diff = main$1;\n\n//our conceptual 'break-points' for each unit\n\nvar qualifiers = {\n months: {\n almost: 10,\n over: 4\n },\n days: {\n almost: 25,\n over: 10\n },\n hours: {\n almost: 20,\n over: 8\n },\n minutes: {\n almost: 50,\n over: 20\n },\n seconds: {\n almost: 50,\n over: 20\n }\n}; //get number of hours/minutes... between the two dates\n\nfunction getDiff(a, b) {\n var isBefore = a.isBefore(b);\n var later = isBefore ? b : a;\n var earlier = isBefore ? a : b;\n earlier = earlier.clone();\n var diff = {\n years: 0,\n months: 0,\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0\n };\n Object.keys(diff).forEach(function (unit) {\n if (earlier.isSame(later, unit)) {\n return;\n }\n\n var max = earlier.diff(later, unit);\n earlier = earlier.add(max, unit);\n diff[unit] = max;\n }); //reverse it, if necessary\n\n if (isBefore) {\n Object.keys(diff).forEach(function (u) {\n if (diff[u] !== 0) {\n diff[u] *= -1;\n }\n });\n }\n\n return diff;\n} // Expects a plural unit arg\n\n\nfunction pluralize(value, unit) {\n if (value === 1) {\n unit = unit.slice(0, -1);\n }\n\n return value + ' ' + unit;\n} //create the human-readable diff between the two dates\n\n\nvar since = function since(start, end) {\n end = fns.beADate(end, start);\n var diff = getDiff(start, end);\n var isNow = Object.keys(diff).every(function (u) {\n return !diff[u];\n });\n\n if (isNow === true) {\n return {\n diff: diff,\n rounded: 'now',\n qualified: 'now',\n precise: 'now'\n };\n }\n\n var rounded;\n var qualified;\n var precise;\n var englishValues = []; //go through each value and create its text-representation\n\n Object.keys(diff).forEach(function (unit, i, units) {\n var value = Math.abs(diff[unit]);\n\n if (value === 0) {\n return;\n }\n\n var englishValue = pluralize(value, unit);\n englishValues.push(englishValue);\n\n if (!rounded) {\n rounded = qualified = englishValue;\n\n if (i > 4) {\n return;\n } //is it a 'almost' something, etc?\n\n\n var nextUnit = units[i + 1];\n var nextValue = Math.abs(diff[nextUnit]);\n\n if (nextValue > qualifiers[nextUnit].almost) {\n rounded = pluralize(value + 1, unit);\n qualified = 'almost ' + rounded;\n } else if (nextValue > qualifiers[nextUnit].over) qualified = 'over ' + englishValue;\n }\n }); //make them into a string\n\n precise = englishValues.splice(0, 2).join(', '); //handle before/after logic\n\n if (start.isAfter(end) === true) {\n rounded += ' ago';\n qualified += ' ago';\n precise += ' ago';\n } else {\n rounded = 'in ' + rounded;\n qualified = 'in ' + qualified;\n precise = 'in ' + precise;\n }\n\n return {\n diff: diff,\n rounded: rounded,\n qualified: qualified,\n precise: precise\n };\n};\n\nvar since_1 = since;\n\n//https://www.timeanddate.com/calendar/aboutseasons.html\n// Spring - from March 1 to May 31;\n// Summer - from June 1 to August 31;\n// Fall (autumn) - from September 1 to November 30; and,\n// Winter - from December 1 to February 28 (February 29 in a leap year).\nvar seasons = {\n north: [['spring', 2, 1], //spring march 1\n ['summer', 5, 1], //june 1\n ['fall', 8, 1], //sept 1\n ['autumn', 8, 1], //sept 1\n ['winter', 11, 1] //dec 1\n ],\n south: [['fall', 2, 1], //march 1\n ['autumn', 2, 1], //march 1\n ['winter', 5, 1], //june 1\n ['spring', 8, 1], //sept 1\n ['summer', 11, 1] //dec 1\n ]\n};\n\nvar quarters = [null, [0, 1], //jan 1\n[3, 1], //apr 1\n[6, 1], //july 1\n[9, 1] //oct 1\n];\n\nvar units$1 = {\n minute: function minute(s) {\n walk_1(s, {\n second: 0,\n millisecond: 0\n });\n return s;\n },\n quarterhour: function quarterhour(s) {\n var minute = s.minutes();\n\n if (minute >= 45) {\n s = s.minutes(45);\n } else if (minute >= 30) {\n s = s.minutes(30);\n } else if (minute >= 15) {\n s = s.minutes(15);\n } else {\n s = s.minutes(0);\n }\n\n walk_1(s, {\n second: 0,\n millisecond: 0\n });\n return s;\n },\n hour: function hour(s) {\n walk_1(s, {\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n day: function day(s) {\n walk_1(s, {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n week: function week(s) {\n var original = s.clone();\n s = s.day(s._weekStart); //monday\n\n if (s.isAfter(original)) {\n s = s.subtract(1, 'week');\n }\n\n walk_1(s, {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n month: function month(s) {\n walk_1(s, {\n date: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n quarter: function quarter(s) {\n var q = s.quarter();\n\n if (quarters[q]) {\n walk_1(s, {\n month: quarters[q][0],\n date: quarters[q][1],\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n }\n\n return s;\n },\n season: function season(s) {\n var current = s.season();\n var hem = 'north';\n\n if (s.hemisphere() === 'South') {\n hem = 'south';\n }\n\n for (var i = 0; i < seasons[hem].length; i++) {\n if (seasons[hem][i][0] === current) {\n //winter goes between years\n var year = s.year();\n\n if (current === 'winter' && s.month() < 3) {\n year -= 1;\n }\n\n walk_1(s, {\n year: year,\n month: seasons[hem][i][1],\n date: seasons[hem][i][2],\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n }\n }\n\n return s;\n },\n year: function year(s) {\n walk_1(s, {\n month: 0,\n date: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n });\n return s;\n },\n decade: function decade(s) {\n s = s.startOf('year');\n var year = s.year();\n var decade = parseInt(year / 10, 10) * 10;\n s = s.year(decade);\n return s;\n },\n century: function century(s) {\n s = s.startOf('year');\n var year = s.year(); // near 0AD goes '-1 | +1'\n\n var decade = parseInt(year / 100, 10) * 100;\n s = s.year(decade);\n return s;\n }\n};\nunits$1.date = units$1.day;\n\nvar startOf = function startOf(a, unit) {\n var s = a.clone();\n unit = fns.normalize(unit);\n\n if (units$1[unit]) {\n return units$1[unit](s);\n }\n\n if (unit === 'summer' || unit === 'winter') {\n s = s.season(unit);\n return units$1.season(s);\n }\n\n return s;\n}; //piggy-backs off startOf\n\n\nvar endOf = function endOf(a, unit) {\n var s = a.clone();\n unit = fns.normalize(unit);\n\n if (units$1[unit]) {\n // go to beginning, go to next one, step back 1ms\n s = units$1[unit](s); // startof\n\n s = s.add(1, unit);\n s = s.subtract(1, 'millisecond');\n return s;\n }\n\n return s;\n};\n\nvar startOf_1 = {\n startOf: startOf,\n endOf: endOf\n};\n\nvar isDay = function isDay(unit) {\n if (days[\"short\"]().find(function (s) {\n return s === unit;\n })) {\n return true;\n }\n\n if (days[\"long\"]().find(function (s) {\n return s === unit;\n })) {\n return true;\n }\n\n return false;\n}; // return a list of the weeks/months/days between a -> b\n// returns spacetime objects in the timezone of the input\n\n\nvar every = function every(start) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var end = arguments.length > 2 ? arguments[2] : undefined;\n\n if (!unit || !end) {\n return [];\n } //cleanup unit param\n\n\n unit = fns.normalize(unit); //cleanup to param\n\n end = start.clone().set(end); //swap them, if they're backwards\n\n if (start.isAfter(end)) {\n var tmp = start;\n start = end;\n end = tmp;\n } //support 'every wednesday'\n\n\n var d = start.clone();\n\n if (isDay(unit)) {\n d = d.next(unit);\n unit = 'week';\n } else {\n d = d.next(unit);\n } //okay, actually start doing it\n\n\n var result = [];\n\n while (d.isBefore(end)) {\n result.push(d);\n d = d.add(1, unit);\n }\n\n return result;\n};\n\nvar every_1 = every;\n\nvar parseDst = function parseDst(dst) {\n if (!dst) {\n return [];\n }\n\n return dst.split('->');\n};\n\nvar titleCase = function titleCase(str) {\n str = str[0].toUpperCase() + str.substr(1);\n str = str.replace(/\\/gmt/, '/GMT');\n str = str.replace(/[\\/_]([a-z])/gi, function (s) {\n return s.toUpperCase();\n });\n return str;\n}; //get metadata about this timezone\n\n\nvar timezone = function timezone(s) {\n var zones = s.timezones;\n var tz = s.tz;\n\n if (zones.hasOwnProperty(tz) === false) {\n tz = find(s.tz, zones);\n }\n\n if (tz === null) {\n if (s.silent === false) {\n console.warn(\"Warn: could not find given or local timezone - '\" + s.tz + \"'\");\n }\n\n return {\n current: {\n epochShift: 0\n }\n };\n }\n\n var found = zones[tz];\n var result = {\n name: titleCase(tz),\n hasDst: Boolean(found.dst),\n default_offset: found.offset,\n //do north-hemisphere version as default (sorry!)\n hemisphere: found.hem === 's' ? 'South' : 'North',\n current: {}\n };\n\n if (result.hasDst) {\n var arr = parseDst(found.dst);\n result.change = {\n start: arr[0],\n back: arr[1]\n };\n } //find the offsets for summer/winter times\n //(these variable names are north-centric)\n\n\n var summer = found.offset; // (july)\n\n var winter = summer; // (january) assume it's the same for now\n\n if (result.hasDst === true) {\n if (result.hemisphere === 'North') {\n winter = summer - 1;\n } else {\n //southern hemisphere\n winter = found.offset + 1;\n }\n } //find out which offset to use right now\n //use 'summer' time july-time\n\n\n if (result.hasDst === false) {\n result.current.offset = summer;\n result.current.isDST = false;\n } else if (summerTime(s.epoch, result.change.start, result.change.back, summer, winter) === true) {\n result.current.offset = summer;\n result.current.isDST = result.hemisphere === 'North'; //dst 'on' in winter in north\n } else {\n //use 'winter' january-time\n result.current.offset = winter;\n result.current.isDST = result.hemisphere === 'South'; //dst 'on' in summer in south\n }\n\n return result;\n};\n\nvar timezone_1 = timezone;\n\nvar units = ['century', 'decade', 'year', 'month', 'date', 'day', 'hour', 'minute', 'second', 'millisecond']; //the spacetime instance methods (also, the API)\n\nvar methods$4 = {\n set: function set(input$1, tz) {\n var s = this.clone();\n s = input(s, input$1, null);\n\n if (tz) {\n this.tz = find(tz);\n }\n\n return s;\n },\n timezone: function timezone() {\n return timezone_1(this);\n },\n isDST: function isDST() {\n return timezone_1(this).current.isDST;\n },\n hasDST: function hasDST() {\n return timezone_1(this).hasDst;\n },\n offset: function offset() {\n return timezone_1(this).current.offset * 60;\n },\n hemisphere: function hemisphere() {\n return timezone_1(this).hemisphere;\n },\n format: function format(fmt) {\n return format_1(this, fmt);\n },\n unixFmt: function unixFmt(fmt) {\n return unixFmt_1(this, fmt);\n },\n startOf: function startOf(unit) {\n return startOf_1.startOf(this, unit);\n },\n endOf: function endOf(unit) {\n return startOf_1.endOf(this, unit);\n },\n leapYear: function leapYear() {\n var year = this.year();\n return fns.isLeapYear(year);\n },\n progress: function progress(unit) {\n return progress_1(this, unit);\n },\n nearest: function nearest(unit) {\n return nearest_1(this, unit);\n },\n diff: function diff$1(d, unit) {\n return diff(this, d, unit);\n },\n since: function since(d) {\n if (!d) {\n d = this.clone().set();\n }\n\n return since_1(this, d);\n },\n next: function next(unit) {\n var s = this.add(1, unit);\n return s.startOf(unit);\n },\n //the start of the previous year/week/century\n last: function last(unit) {\n var s = this.subtract(1, unit);\n return s.startOf(unit);\n },\n isValid: function isValid() {\n //null/undefined epochs\n if (!this.epoch && this.epoch !== 0) {\n return false;\n }\n\n return !isNaN(this.d.getTime());\n },\n //travel to this timezone\n \"goto\": function goto(tz) {\n var s = this.clone();\n s.tz = find(tz, s.timezones); //science!\n\n return s;\n },\n //get each week/month/day between a -> b\n every: function every(unit, to) {\n // allow swapping these params:\n if (_typeof(unit) === 'object' && typeof to === 'string') {\n var tmp = to;\n to = unit;\n unit = tmp;\n }\n\n return every_1(this, unit, to);\n },\n isAwake: function isAwake() {\n var hour = this.hour(); //10pm -> 8am\n\n if (hour < 8 || hour > 22) {\n return false;\n }\n\n return true;\n },\n isAsleep: function isAsleep() {\n return !this.isAwake();\n },\n //pretty-printing\n log: function log() {\n console.log('');\n console.log(format_1(this, 'nice-short'));\n return this;\n },\n logYear: function logYear() {\n console.log('');\n console.log(format_1(this, 'full-short'));\n return this;\n },\n json: function json() {\n var _this = this;\n\n return units.reduce(function (h, unit) {\n h[unit] = _this[unit]();\n return h;\n }, {});\n },\n debug: function debug() {\n var tz = this.timezone();\n var date = this.format('MM') + ' ' + this.format('date-ordinal') + ' ' + this.year();\n date += '\\n - ' + this.format('time');\n console.log('\\n\\n', date + '\\n - ' + tz.name + ' (' + tz.current.offset + ')');\n return this;\n },\n //alias of 'since' but opposite - like moment.js\n from: function from(d) {\n d = this.clone().set(d);\n return d.since(this);\n },\n fromNow: function fromNow() {\n var d = this.clone().set(Date.now());\n return d.since(this);\n },\n weekStart: function weekStart(input) {\n //accept a number directly\n if (typeof input === 'number') {\n this._weekStart = input;\n return this;\n }\n\n if (typeof input === 'string') {\n // accept 'wednesday'\n input = input.toLowerCase().trim();\n var num = days[\"short\"]().indexOf(input);\n\n if (num === -1) {\n num = days[\"long\"]().indexOf(input);\n }\n\n if (num === -1) {\n num = 1; //go back to default\n }\n\n this._weekStart = num;\n } else {\n console.warn('Spacetime Error: Cannot understand .weekStart() input:', input);\n }\n\n return this;\n }\n}; // aliases\n\nmethods$4.inDST = methods$4.isDST;\nmethods$4.round = methods$4.nearest;\nmethods$4.each = methods$4.every;\nvar methods_1 = methods$4;\n\n//these methods wrap around them.\n\nvar isLeapYear$1 = fns.isLeapYear;\n\nvar validate = function validate(n) {\n //handle number as a string\n if (typeof n === 'string') {\n n = parseInt(n, 10);\n }\n\n return n;\n};\n\nvar order$1 = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; //reduce hostile micro-changes when moving dates by millisecond\n\nvar confirm = function confirm(s, tmp, unit) {\n var n = order$1.indexOf(unit);\n var arr = order$1.slice(n, order$1.length);\n\n for (var i = 0; i < arr.length; i++) {\n var want = tmp[arr[i]]();\n s[arr[i]](want);\n }\n\n return s;\n};\n\nvar set = {\n milliseconds: function milliseconds(s, n) {\n n = validate(n);\n var current = s.millisecond();\n var diff = current - n; //milliseconds to shift by\n\n return s.epoch - diff;\n },\n seconds: function seconds(s, n) {\n n = validate(n);\n var diff = s.second() - n;\n var shift = diff * milliseconds.second;\n return s.epoch - shift;\n },\n minutes: function minutes(s, n) {\n n = validate(n);\n var old = s.clone();\n var diff = s.minute() - n;\n var shift = diff * milliseconds.minute;\n s.epoch -= shift; // check against a screw-up\n // if (old.hour() != s.hour()) {\n // walkTo(old, {\n // minute: n\n // })\n // return old.epoch\n // }\n\n confirm(s, old, 'second');\n return s.epoch;\n },\n hours: function hours(s, n) {\n n = validate(n);\n\n if (n >= 24) {\n n = 24;\n } else if (n < 0) {\n n = 0;\n }\n\n var old = s.clone();\n var diff = s.hour() - n;\n var shift = diff * milliseconds.hour;\n s.epoch -= shift; // oops, did we change the day?\n\n if (s.date() !== old.date()) {\n s = old.clone();\n\n if (diff > 1) {\n diff -= 1;\n }\n\n if (diff < 1) {\n diff += 1;\n }\n\n shift = diff * milliseconds.hour;\n s.epoch -= shift;\n }\n\n walk_1(s, {\n hour: n\n });\n confirm(s, old, 'minute');\n return s.epoch;\n },\n //support setting time by '4:25pm' - this isn't very-well developed..\n time: function time(s, str) {\n var m = str.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/);\n\n if (!m) {\n //fallback to support just '2am'\n m = str.match(/([0-9]{1,2}) ?(am|pm)/);\n\n if (!m) {\n return s.epoch;\n }\n\n m.splice(2, 0, '0'); //add implicit 0 minutes\n\n m.splice(3, 0, ''); //add implicit seconds\n }\n\n var h24 = false;\n var hour = parseInt(m[1], 10);\n var minute = parseInt(m[2], 10);\n\n if (hour > 12) {\n h24 = true;\n } //make the hour into proper 24h time\n\n\n if (h24 === false) {\n if (m[4] === 'am' && hour === 12) {\n //12am is midnight\n hour = 0;\n }\n\n if (m[4] === 'pm' && hour < 12) {\n //12pm is noon\n hour += 12;\n }\n } // handle seconds\n\n\n m[3] = m[3] || '';\n m[3] = m[3].replace(/:/, '');\n var sec = parseInt(m[3], 10) || 0;\n s = s.hour(hour);\n s = s.minute(minute);\n s = s.second(sec);\n s = s.millisecond(0);\n return s.epoch;\n },\n date: function date(s, n) {\n n = validate(n); //avoid setting february 31st\n\n if (n > 28) {\n var month = s.month();\n var max = monthLengths_1[month]; // support leap day in february\n\n if (month === 1 && n === 29 && isLeapYear$1(s.year())) {\n max = 29;\n }\n\n if (n > max) {\n n = max;\n }\n } //avoid setting < 0\n\n\n if (n <= 0) {\n n = 1;\n }\n\n walk_1(s, {\n date: n\n });\n return s.epoch;\n },\n //this one's tricky\n month: function month(s, n) {\n if (typeof n === 'string') {\n n = months$1.mapping()[n.toLowerCase()];\n }\n\n n = validate(n); //don't go past december\n\n if (n >= 12) {\n n = 11;\n }\n\n if (n <= 0) {\n n = 0;\n }\n\n var date = s.date(); //there's no 30th of february, etc.\n\n if (date > monthLengths_1[n]) {\n //make it as close as we can..\n date = monthLengths_1[n];\n }\n\n walk_1(s, {\n month: n,\n date: date\n });\n return s.epoch;\n },\n year: function year(s, n) {\n // support '97\n if (typeof n === 'string' && /^'[0-9]{2}$/.test(n)) {\n n = n.replace(/'/, '').trim();\n n = Number(n); // '89 is 1989\n\n if (n > 30) {\n //change this in 10y\n n = 1900 + n;\n } else {\n // '12 is 2012\n n = 2000 + n;\n }\n }\n\n n = validate(n);\n walk_1(s, {\n year: n\n });\n return s.epoch;\n },\n dayOfYear: function dayOfYear(s, n) {\n n = validate(n);\n var old = s.clone();\n n -= 1; //days are 1-based\n\n if (n <= 0) {\n n = 0;\n } else if (n >= 365) {\n n = 364;\n }\n\n s = s.startOf('year');\n s = s.add(n, 'day');\n confirm(s, old, 'hour');\n return s.epoch;\n }\n};\n\nvar methods$3 = {\n millisecond: function millisecond(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.milliseconds(s, num);\n return s;\n }\n\n return this.d.getMilliseconds();\n },\n second: function second(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.seconds(s, num);\n return s;\n }\n\n return this.d.getSeconds();\n },\n minute: function minute(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.minutes(s, num);\n return s;\n }\n\n return this.d.getMinutes();\n },\n hour: function hour(num) {\n var d = this.d;\n\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.hours(s, num);\n return s;\n }\n\n return d.getHours();\n },\n //'3:30' is 3.5\n hourFloat: function hourFloat(num) {\n if (num !== undefined) {\n var s = this.clone();\n\n var _minute = num % 1;\n\n _minute = _minute * 60;\n\n var _hour = parseInt(num, 10);\n\n s.epoch = set.hours(s, _hour);\n s.epoch = set.minutes(s, _minute);\n return s;\n }\n\n var d = this.d;\n var hour = d.getHours();\n var minute = d.getMinutes();\n minute = minute / 60;\n return hour + minute;\n },\n // hour in 12h format\n hour12: function hour12(str) {\n var d = this.d;\n\n if (str !== undefined) {\n var s = this.clone();\n str = '' + str;\n var m = str.match(/^([0-9]+)(am|pm)$/);\n\n if (m) {\n var hour = parseInt(m[1], 10);\n\n if (m[2] === 'pm') {\n hour += 12;\n }\n\n s.epoch = set.hours(s, hour);\n }\n\n return s;\n } //get the hour\n\n\n var hour12 = d.getHours();\n\n if (hour12 > 12) {\n hour12 = hour12 - 12;\n }\n\n if (hour12 === 0) {\n hour12 = 12;\n }\n\n return hour12;\n },\n //some ambiguity here with 12/24h\n time: function time(str) {\n if (str !== undefined) {\n var s = this.clone();\n str = str.toLowerCase().trim();\n s.epoch = set.time(s, str);\n return s;\n }\n\n return \"\".concat(this.h12(), \":\").concat(fns.zeroPad(this.minute())).concat(this.ampm());\n },\n // either 'am' or 'pm'\n ampm: function ampm(input) {\n var which = 'am';\n var hour = this.hour();\n\n if (hour >= 12) {\n which = 'pm';\n }\n\n if (typeof input !== 'string') {\n return which;\n } //okay, we're doing a setter\n\n\n var s = this.clone();\n input = input.toLowerCase().trim(); //ampm should never change the day\n // - so use `.hour(n)` instead of `.minus(12,'hour')`\n\n if (hour >= 12 && input === 'am') {\n //noon is 12pm\n hour -= 12;\n return s.hour(hour);\n }\n\n if (hour < 12 && input === 'pm') {\n hour += 12;\n return s.hour(hour);\n }\n\n return s;\n },\n //some hard-coded times of day, like 'noon'\n dayTime: function dayTime(str) {\n if (str !== undefined) {\n var times = {\n morning: '7:00am',\n breakfast: '7:00am',\n noon: '12:00am',\n lunch: '12:00pm',\n afternoon: '2:00pm',\n evening: '6:00pm',\n dinner: '6:00pm',\n night: '11:00pm',\n midnight: '23:59pm'\n };\n var s = this.clone();\n str = str || '';\n str = str.toLowerCase();\n\n if (times.hasOwnProperty(str) === true) {\n s = s.time(times[str]);\n }\n\n return s;\n }\n\n var h = this.hour();\n\n if (h < 6) {\n return 'night';\n }\n\n if (h < 12) {\n //until noon\n return 'morning';\n }\n\n if (h < 17) {\n //until 5pm\n return 'afternoon';\n }\n\n if (h < 22) {\n //until 10pm\n return 'evening';\n }\n\n return 'night';\n },\n //parse a proper iso string\n iso: function iso(num) {\n if (num !== undefined) {\n return this.set(num);\n }\n\n return this.format('iso');\n }\n};\nvar _01Time = methods$3;\n\nvar methods$2 = {\n // # day in the month\n date: function date(num) {\n if (num !== undefined) {\n var s = this.clone();\n num = parseInt(num, 10);\n\n if (num) {\n s.epoch = set.date(s, num);\n }\n\n return s;\n }\n\n return this.d.getDate();\n },\n //like 'wednesday' (hard!)\n day: function day(input) {\n if (input === undefined) {\n return this.d.getDay();\n }\n\n var original = this.clone();\n var want = input; // accept 'wednesday'\n\n if (typeof input === 'string') {\n input = input.toLowerCase();\n\n if (days.aliases.hasOwnProperty(input)) {\n want = days.aliases[input];\n } else {\n want = days[\"short\"]().indexOf(input);\n\n if (want === -1) {\n want = days[\"long\"]().indexOf(input);\n }\n }\n } //move approx\n\n\n var day = this.d.getDay();\n var diff = day - want;\n var s = this.subtract(diff, 'days'); //tighten it back up\n\n walk_1(s, {\n hour: original.hour(),\n minute: original.minute(),\n second: original.second()\n });\n return s;\n },\n //these are helpful name-wrappers\n dayName: function dayName(input) {\n if (input === undefined) {\n return days[\"long\"]()[this.day()];\n }\n\n var s = this.clone();\n s = s.day(input);\n return s;\n },\n //either name or number\n month: function month(input) {\n if (input !== undefined) {\n var s = this.clone();\n s.epoch = set.month(s, input);\n return s;\n }\n\n return this.d.getMonth();\n }\n};\nvar _02Date = methods$2;\n\nvar clearMinutes = function clearMinutes(s) {\n s = s.minute(0);\n s = s.second(0);\n s = s.millisecond(1);\n return s;\n};\n\nvar methods$1 = {\n // day 0-366\n dayOfYear: function dayOfYear(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.dayOfYear(s, num);\n return s;\n } //days since newyears - jan 1st is 1, jan 2nd is 2...\n\n\n var sum = 0;\n var month = this.d.getMonth();\n var tmp; //count the num days in each month\n\n for (var i = 1; i <= month; i++) {\n tmp = new Date();\n tmp.setDate(1);\n tmp.setFullYear(this.d.getFullYear()); //the year matters, because leap-years\n\n tmp.setHours(1);\n tmp.setMinutes(1);\n tmp.setMonth(i);\n tmp.setHours(-2); //the last day of the month\n\n sum += tmp.getDate();\n }\n\n return sum + this.d.getDate();\n },\n //since the start of the year\n week: function week(num) {\n // week-setter\n if (num !== undefined) {\n var s = this.clone();\n s = s.month(0);\n s = s.date(1);\n s = s.day('monday');\n s = clearMinutes(s); //first week starts first Thurs in Jan\n // so mon dec 28th is 1st week\n // so mon dec 29th is not the week\n\n if (s.monthName() === 'december' && s.date() >= 28) {\n s = s.add(1, 'week');\n }\n\n num -= 1; //1-based\n\n s = s.add(num, 'weeks');\n return s;\n } //find-out which week it is\n\n\n var tmp = this.clone();\n tmp = tmp.month(0);\n tmp = tmp.date(1);\n tmp = clearMinutes(tmp);\n tmp = tmp.day('monday'); //don't go into last-year\n\n if (tmp.monthName() === 'december' && tmp.date() >= 28) {\n tmp = tmp.add(1, 'week');\n } // is first monday the 1st?\n\n\n var toAdd = 1;\n\n if (tmp.date() === 1) {\n toAdd = 0;\n }\n\n tmp = tmp.minus(1, 'second');\n var thisOne = this.epoch; //if the week technically hasn't started yet\n\n if (tmp.epoch > thisOne) {\n return 1;\n } //speed it up, if we can\n\n\n var i = 0;\n var skipWeeks = this.month() * 4;\n tmp.epoch += milliseconds.week * skipWeeks;\n i += skipWeeks;\n\n for (; i <= 52; i++) {\n if (tmp.epoch > thisOne) {\n return i + toAdd;\n }\n\n tmp = tmp.add(1, 'week');\n }\n\n return 52;\n },\n //'january'\n monthName: function monthName(input) {\n if (input === undefined) {\n return months$1[\"long\"]()[this.month()];\n }\n\n var s = this.clone();\n s = s.month(input);\n return s;\n },\n //q1, q2, q3, q4\n quarter: function quarter(num) {\n if (num !== undefined) {\n if (typeof num === 'string') {\n num = num.replace(/^q/i, '');\n num = parseInt(num, 10);\n }\n\n if (quarters[num]) {\n var s = this.clone();\n var _month = quarters[num][0];\n s = s.month(_month);\n s = s.date(1);\n s = s.startOf('day');\n return s;\n }\n }\n\n var month = this.d.getMonth();\n\n for (var i = 1; i < quarters.length; i++) {\n if (month < quarters[i][0]) {\n return i - 1;\n }\n }\n\n return 4;\n },\n //spring, summer, winter, fall\n season: function season(input) {\n var hem = 'north';\n\n if (this.hemisphere() === 'South') {\n hem = 'south';\n }\n\n if (input !== undefined) {\n var s = this.clone();\n\n for (var i = 0; i < seasons[hem].length; i++) {\n if (input === seasons[hem][i][0]) {\n s = s.month(seasons[hem][i][1]);\n s = s.date(1);\n s = s.startOf('day');\n }\n }\n\n return s;\n }\n\n var month = this.d.getMonth();\n\n for (var _i = 0; _i < seasons[hem].length - 1; _i++) {\n if (month >= seasons[hem][_i][1] && month < seasons[hem][_i + 1][1]) {\n return seasons[hem][_i][0];\n }\n }\n\n return 'winter';\n },\n //the year number\n year: function year(num) {\n if (num !== undefined) {\n var s = this.clone();\n s.epoch = set.year(s, num);\n return s;\n }\n\n return this.d.getFullYear();\n },\n //bc/ad years\n era: function era(str) {\n if (str !== undefined) {\n var s = this.clone();\n str = str.toLowerCase(); //TODO: there is no year-0AD i think. may have off-by-1 error here\n\n var year = s.d.getFullYear(); //make '1992' into 1992bc..\n\n if (str === 'bc' && year > 0) {\n s.epoch = set.year(s, year * -1);\n } //make '1992bc' into '1992'\n\n\n if (str === 'ad' && year < 0) {\n s.epoch = set.year(s, year * -1);\n }\n\n return s;\n }\n\n if (this.d.getFullYear() < 0) {\n return 'BC';\n }\n\n return 'AD';\n },\n // 2019 -> 2010\n decade: function decade(input) {\n if (input !== undefined) {\n input = String(input);\n input = input.replace(/([0-9])'?s$/, '$1'); //1950's\n\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n if (!input) {\n console.warn('Spacetime: Invalid decade input');\n return this;\n } // assume 20th century?? for '70s'.\n\n\n if (input.length === 2 && /[0-9][0-9]/.test(input)) {\n input = '19' + input;\n }\n\n var year = Number(input);\n\n if (isNaN(year)) {\n return this;\n } // round it down to the decade\n\n\n year = Math.floor(year / 10) * 10;\n return this.year(year); //.startOf('decade')\n }\n\n return this.startOf('decade').year();\n },\n // 1950 -> 19+1\n century: function century(input) {\n if (input !== undefined) {\n if (typeof input === 'string') {\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n input = input.replace(/([0-9]+) ?(b\\.?c\\.?|a\\.?d\\.?)/i, function (a, b, c) {\n if (c.match(/b\\.?c\\.?/i)) {\n b = '-' + b;\n }\n\n return b;\n });\n input = input.replace(/c$/, ''); //20thC\n }\n\n var year = Number(input);\n\n if (isNaN(input)) {\n console.warn('Spacetime: Invalid century input');\n return this;\n } // there is no century 0\n\n\n if (year === 0) {\n year = 1;\n }\n\n if (year >= 0) {\n year = (year - 1) * 100;\n } else {\n year = (year + 1) * 100;\n }\n\n return this.year(year);\n } // century getter\n\n\n var num = this.startOf('century').year();\n num = Math.floor(num / 100);\n\n if (num < 0) {\n return num - 1;\n }\n\n return num + 1;\n },\n // 2019 -> 2+1\n millenium: function millenium(input) {\n if (input !== undefined) {\n if (typeof input === 'string') {\n input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n\n input = Number(input);\n\n if (isNaN(input)) {\n console.warn('Spacetime: Invalid millenium input');\n return this;\n }\n }\n\n if (input > 0) {\n input -= 1;\n }\n\n var year = input * 1000; // there is no year 0\n\n if (year === 0) {\n year = 1;\n }\n\n return this.year(year);\n } // get the current millenium\n\n\n var num = Math.floor(this.year() / 1000);\n\n if (num >= 0) {\n num += 1;\n }\n\n return num;\n }\n};\nvar _03Year = methods$1;\n\nvar methods = Object.assign({}, _01Time, _02Date, _03Year); //aliases\n\nmethods.milliseconds = methods.millisecond;\nmethods.seconds = methods.second;\nmethods.minutes = methods.minute;\nmethods.hours = methods.hour;\nmethods.hour24 = methods.hour;\nmethods.h12 = methods.hour12;\nmethods.h24 = methods.hour24;\nmethods.days = methods.day;\n\nvar addMethods$4 = function addMethods(Space) {\n //hook the methods into prototype\n Object.keys(methods).forEach(function (k) {\n Space.prototype[k] = methods[k];\n });\n};\n\nvar query = addMethods$4;\n\nvar isLeapYear = fns.isLeapYear;\n\nvar getMonthLength = function getMonthLength(month, year) {\n if (month === 1 && isLeapYear(year)) {\n return 29;\n }\n\n return monthLengths_1[month];\n}; //month is the one thing we 'model/compute'\n//- because ms-shifting can be off by enough\n\n\nvar rollMonth = function rollMonth(want, old) {\n //increment year\n if (want.month > 0) {\n var years = parseInt(want.month / 12, 10);\n want.year = old.year() + years;\n want.month = want.month % 12;\n } else if (want.month < 0) {\n //decrement year\n var _years = Math.floor(Math.abs(want.month) / 13, 10);\n\n _years = Math.abs(_years) + 1;\n want.year = old.year() - _years; //ignore extras\n\n want.month = want.month % 12;\n want.month = want.month + 12;\n\n if (want.month === 12) {\n want.month = 0;\n }\n }\n\n return want;\n}; // briefly support day=-2 (this does not need to be perfect.)\n\n\nvar rollDaysDown = function rollDaysDown(want, old, sum) {\n want.year = old.year();\n want.month = old.month();\n var date = old.date();\n want.date = date - Math.abs(sum);\n\n while (want.date < 1) {\n want.month -= 1;\n\n if (want.month < 0) {\n want.month = 11;\n want.year -= 1;\n }\n\n var max = getMonthLength(want.month, want.year);\n want.date += max;\n }\n\n return want;\n}; // briefly support day=33 (this does not need to be perfect.)\n\n\nvar rollDaysUp = function rollDaysUp(want, old, sum) {\n var year = old.year();\n var month = old.month();\n var max = getMonthLength(month, year);\n\n while (sum > max) {\n sum -= max;\n month += 1;\n\n if (month >= 12) {\n month -= 12;\n year += 1;\n }\n\n max = getMonthLength(month, year);\n }\n\n want.month = month;\n want.date = sum;\n return want;\n};\n\nvar _model = {\n months: rollMonth,\n days: rollDaysUp,\n daysBack: rollDaysDown\n};\n\n// but briefly:\n// millisecond-math, and some post-processing covers most-things\n// we 'model' the calendar here only a little bit\n// and that usually works-out...\n\nvar order = ['millisecond', 'second', 'minute', 'hour', 'date', 'month'];\nvar keep = {\n second: order.slice(0, 1),\n minute: order.slice(0, 2),\n quarterhour: order.slice(0, 2),\n hour: order.slice(0, 3),\n date: order.slice(0, 4),\n month: order.slice(0, 4),\n quarter: order.slice(0, 4),\n season: order.slice(0, 4),\n year: order,\n decade: order,\n century: order\n};\nkeep.week = keep.hour;\nkeep.season = keep.date;\nkeep.quarter = keep.date; // Units need to be dst adjuested\n\nvar dstAwareUnits = {\n year: true,\n quarter: true,\n season: true,\n month: true,\n week: true,\n day: true\n};\nvar keepDate = {\n month: true,\n quarter: true,\n season: true,\n year: true\n};\n\nvar addMethods$3 = function addMethods(SpaceTime) {\n SpaceTime.prototype.add = function (num, unit) {\n var s = this.clone();\n\n if (!unit || num === 0) {\n return s; //don't bother\n }\n\n var old = this.clone();\n unit = fns.normalize(unit);\n\n if (unit === 'millisecond') {\n s.epoch += num;\n return s;\n } // support 'fortnight' alias\n\n\n if (unit === 'fortnight') {\n num *= 2;\n unit = 'week';\n } //move forward by the estimated milliseconds (rough)\n\n\n if (milliseconds[unit]) {\n s.epoch += milliseconds[unit] * num;\n } else if (unit === 'week') {\n s.epoch += milliseconds.day * (num * 7);\n } else if (unit === 'quarter' || unit === 'season') {\n s.epoch += milliseconds.month * (num * 3);\n } else if (unit === 'quarterhour') {\n s.epoch += milliseconds.minute * 15 * num;\n } //now ensure our milliseconds/etc are in-line\n\n\n var want = {};\n\n if (keep[unit]) {\n keep[unit].forEach(function (u) {\n want[u] = old[u]();\n });\n }\n\n if (dstAwareUnits[unit]) {\n var diff = old.timezone().current.offset - s.timezone().current.offset;\n s.epoch += diff * 3600 * 1000;\n } //ensure month/year has ticked-over\n\n\n if (unit === 'month') {\n want.month = old.month() + num; //month is the one unit we 'model' directly\n\n want = _model.months(want, old);\n } //support coercing a week, too\n\n\n if (unit === 'week') {\n var sum = old.date() + num * 7;\n\n if (sum <= 28 && sum > 1) {\n want.date = sum;\n }\n } //support 25-hour day-changes on dst-changes\n else if (unit === 'date') {\n if (num < 0) {\n want = _model.daysBack(want, old, num);\n } else {\n //specify a naive date number, if it's easy to do...\n var _sum = old.date() + num; // ok, model this one too\n\n\n want = _model.days(want, old, _sum);\n } //manually punt it if we haven't moved at all..\n\n\n if (num !== 0 && old.isSame(s, 'day')) {\n want.date = old.date() + num;\n }\n } // ensure a quarter is 3 months over\n else if (unit === 'quarter') {\n want.month = old.month() + num * 3;\n want.year = old.year(); // handle rollover\n\n if (want.month < 0) {\n var years = Math.floor(want.month / 12);\n var remainder = want.month + Math.abs(years) * 12;\n want.month = remainder;\n want.year += years;\n } else if (want.month >= 12) {\n var _years = Math.floor(want.month / 12);\n\n want.month = want.month % 12;\n want.year += _years;\n }\n\n want.date = old.date();\n } //ensure year has changed (leap-years)\n else if (unit === 'year') {\n var wantYear = old.year() + num;\n var haveYear = s.year();\n\n if (haveYear < wantYear) {\n s.epoch += milliseconds.day;\n } else if (haveYear > wantYear) {\n s.epoch += milliseconds.day;\n }\n } //these are easier\n else if (unit === 'decade') {\n want.year = s.year() + 10;\n } else if (unit === 'century') {\n want.year = s.year() + 100;\n } //keep current date, unless the month doesn't have it.\n\n\n if (keepDate[unit]) {\n var max = monthLengths_1[want.month];\n want.date = old.date();\n\n if (want.date > max) {\n want.date = max;\n }\n }\n\n if (Object.keys(want).length > 1) {\n walk_1(s, want);\n }\n\n return s;\n }; //subtract is only add *-1\n\n\n SpaceTime.prototype.subtract = function (num, unit) {\n var s = this.clone();\n return s.add(num * -1, unit);\n }; //add aliases\n\n\n SpaceTime.prototype.minus = SpaceTime.prototype.subtract;\n SpaceTime.prototype.plus = SpaceTime.prototype.add;\n};\n\nvar add = addMethods$3;\n\n//make a string, for easy comparison between dates\nvar print = {\n millisecond: function millisecond(s) {\n return s.epoch;\n },\n second: function second(s) {\n return [s.year(), s.month(), s.date(), s.hour(), s.minute(), s.second()].join('-');\n },\n minute: function minute(s) {\n return [s.year(), s.month(), s.date(), s.hour(), s.minute()].join('-');\n },\n hour: function hour(s) {\n return [s.year(), s.month(), s.date(), s.hour()].join('-');\n },\n day: function day(s) {\n return [s.year(), s.month(), s.date()].join('-');\n },\n week: function week(s) {\n return [s.year(), s.week()].join('-');\n },\n month: function month(s) {\n return [s.year(), s.month()].join('-');\n },\n quarter: function quarter(s) {\n return [s.year(), s.quarter()].join('-');\n },\n year: function year(s) {\n return s.year();\n }\n};\nprint.date = print.day;\n\nvar addMethods$2 = function addMethods(SpaceTime) {\n SpaceTime.prototype.isSame = function (b, unit) {\n var tzAware = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var a = this;\n\n if (!unit) {\n return null;\n } // support swapped params\n\n\n if (typeof b === 'string' && _typeof(unit) === 'object') {\n var tmp = b;\n b = unit;\n unit = tmp;\n }\n\n if (typeof b === 'string' || typeof b === 'number') {\n b = new SpaceTime(b, this.timezone.name);\n } //support 'seconds' aswell as 'second'\n\n\n unit = unit.replace(/s$/, ''); // make them the same timezone for proper comparison\n\n if (tzAware === true && a.tz !== b.tz) {\n b = b.clone();\n b.tz = a.tz;\n }\n\n if (print[unit]) {\n return print[unit](a) === print[unit](b);\n }\n\n return null;\n };\n};\n\nvar same = addMethods$2;\n\nvar addMethods$1 = function addMethods(SpaceTime) {\n var methods = {\n isAfter: function isAfter(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch > epoch;\n },\n isBefore: function isBefore(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch < epoch;\n },\n isEqual: function isEqual(d) {\n d = fns.beADate(d, this);\n var epoch = fns.getEpoch(d);\n\n if (epoch === null) {\n return null;\n }\n\n return this.epoch === epoch;\n },\n isBetween: function isBetween(start, end) {\n var isInclusive = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n start = fns.beADate(start, this);\n end = fns.beADate(end, this);\n var startEpoch = fns.getEpoch(start);\n\n if (startEpoch === null) {\n return null;\n }\n\n var endEpoch = fns.getEpoch(end);\n\n if (endEpoch === null) {\n return null;\n }\n\n if (isInclusive) {\n return this.isBetween(start, end) || this.isEqual(start) || this.isEqual(end);\n }\n\n return startEpoch < this.epoch && this.epoch < endEpoch;\n }\n }; //hook them into proto\n\n Object.keys(methods).forEach(function (k) {\n SpaceTime.prototype[k] = methods[k];\n });\n};\n\nvar compare = addMethods$1;\n\nvar addMethods = function addMethods(SpaceTime) {\n var methods = {\n i18n: function i18n(data) {\n //change the day names\n if (fns.isObject(data.days)) {\n days.set(data.days);\n } //change the month names\n\n\n if (fns.isObject(data.months)) {\n months$1.set(data.months);\n } // change the the display style of the month / day names\n\n\n if (fns.isBoolean(data.useTitleCase)) {\n caseFormat.set(data.useTitleCase);\n }\n }\n }; //hook them into proto\n\n Object.keys(methods).forEach(function (k) {\n SpaceTime.prototype[k] = methods[k];\n });\n};\n\nvar i18n = addMethods;\n\nvar timezones = unpack; //fake timezone-support, for fakers (es5 class)\n\nvar SpaceTime = function SpaceTime(input$1, tz) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n //the holy moment\n this.epoch = null; //the shift for the given timezone\n\n this.tz = find(tz, timezones); //whether to output warnings to console\n\n this.silent = options.silent || true; // favour british interpretation of 02/02/2018, etc\n\n this.british = options.dmy || options.british; //does the week start on sunday, or monday:\n\n this._weekStart = 1; //default to monday\n\n if (options.weekStart !== undefined) {\n this._weekStart = options.weekStart;\n } // the reference today date object, (for testing)\n\n\n this._today = {};\n\n if (options.today !== undefined) {\n this._today = options.today;\n } //add getter/setters\n\n\n Object.defineProperty(this, 'd', {\n //return a js date object\n get: function get() {\n var offset = quick(this); //every computer is somewhere- get this computer's built-in offset\n\n var bias = new Date(this.epoch).getTimezoneOffset() || 0; //movement\n\n var shift = bias + offset * 60; //in minutes\n\n shift = shift * 60 * 1000; //in ms\n //remove this computer's offset\n\n var epoch = this.epoch + shift;\n var d = new Date(epoch);\n return d;\n }\n }); //add this data on the object, to allow adding new timezones\n\n Object.defineProperty(this, 'timezones', {\n get: function get() {\n return timezones;\n },\n set: function set(obj) {\n timezones = obj;\n return obj;\n }\n }); //parse the various formats\n\n var tmp = input(this, input$1, tz);\n this.epoch = tmp.epoch;\n}; //(add instance methods to prototype)\n\n\nObject.keys(methods_1).forEach(function (k) {\n SpaceTime.prototype[k] = methods_1[k];\n}); // ¯\\_(ツ)_/¯\n\nSpaceTime.prototype.clone = function () {\n return new SpaceTime(this.epoch, this.tz, {\n silent: this.silent,\n weekStart: this._weekStart,\n today: this._today\n });\n}; //return native date object at the same epoch\n\n\nSpaceTime.prototype.toLocalDate = function () {\n return new Date(this.epoch);\n}; //append more methods\n\n\nquery(SpaceTime);\nadd(SpaceTime);\nsame(SpaceTime);\ncompare(SpaceTime);\ni18n(SpaceTime);\nvar spacetime = SpaceTime;\n\nvar whereIts = function whereIts(a, b) {\n var start = new spacetime(null);\n var end = new spacetime(null);\n start = start.time(a); //if b is undefined, use as 'within one hour'\n\n if (b) {\n end = end.time(b);\n } else {\n end = start.add(59, 'minutes');\n }\n\n var startHour = start.hour();\n var endHour = end.hour();\n var tzs = Object.keys(start.timezones).filter(function (tz) {\n if (tz.indexOf('/') === -1) {\n return false;\n }\n\n var m = new spacetime(null, tz);\n var hour = m.hour(); //do 'calendar-compare' not real-time-compare\n\n if (hour >= startHour && hour <= endHour) {\n //test minutes too, if applicable\n if (hour === startHour && m.minute() < start.minute()) {\n return false;\n }\n\n if (hour === endHour && m.minute() > end.minute()) {\n return false;\n }\n\n return true;\n }\n\n return false;\n });\n return tzs;\n};\n\nvar whereIts_1 = whereIts;\n\nvar _version = '6.14.0';\n\nvar main = function main(input, tz, options) {\n return new spacetime(input, tz, options);\n}; // set all properties of a given 'today' object\n\n\nvar setToday = function setToday(s) {\n var today = s._today || {};\n Object.keys(today).forEach(function (k) {\n s = s[k](today[k]);\n });\n return s;\n}; //some helper functions on the main method\n\n\nmain.now = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s;\n};\n\nmain.today = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.startOf('day');\n};\n\nmain.tomorrow = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.add(1, 'day').startOf('day');\n};\n\nmain.yesterday = function (tz, options) {\n var s = new spacetime(new Date().getTime(), tz, options);\n s = setToday(s);\n return s.subtract(1, 'day').startOf('day');\n};\n\nmain.extend = function (obj) {\n Object.keys(obj).forEach(function (k) {\n spacetime.prototype[k] = obj[k];\n });\n return this;\n};\n\nmain.timezones = function () {\n var s = new spacetime();\n return s.timezones;\n};\n\nmain.max = function (tz, options) {\n var s = new spacetime(null, tz, options);\n s.epoch = 8640000000000000;\n return s;\n};\n\nmain.min = function (tz, options) {\n var s = new spacetime(null, tz, options);\n s.epoch = -8640000000000000;\n return s;\n}; //find tz by time\n\n\nmain.whereIts = whereIts_1;\nmain.version = _version; //aliases:\n\nmain.plugin = main.extend;\nvar src = main;\n\nexport default src;\n","const spacetime = require('spacetime')\n\nconst parseSentence = function (doc) {\n let s = doc.sentence()\n if (!s) {\n return null\n }\n let txt = s.text() || ''\n let paren = txt.match(/\\(.*\\)/)\n if (!paren || !paren[0]) {\n return null\n }\n txt = paren[0] || ''\n txt = txt.trim()\n txt = txt.replace(/^\\(/, '')\n txt = txt.replace(/\\)$/, '')\n let split = txt.split(/ – /)\n split = split.filter((str) => str)\n // got birth/death info\n if (split[0] && split[1] && split.length === 2) {\n return {\n birth: split[0],\n death: split[1],\n }\n }\n // try for just birth date in parentheses\n if (split[0]) {\n let str = split[0].replace(/^(born|ne) (c\\.)?/, '')\n let d = spacetime(str)\n if (d.isValid()) {\n return {\n birth: str,\n }\n }\n }\n return null\n}\nmodule.exports = parseSentence\n","const byCategory = function (doc) {\n let cats = doc.categories()\n for (let i = 0; i < cats.length; i += 1) {\n let m = cats[i].match(/([0-9]{4}) births/)\n if (m && m[1]) {\n let year = parseInt(m[1], 10)\n if (year && year > 1000) {\n return year\n }\n }\n }\n return null\n}\nmodule.exports = byCategory\n","const spacetime = require('spacetime')\n\nconst parseDate = function (str) {\n if (!str) {\n return null\n }\n // remove parentheses\n str = str.replace(/\\(.*\\)/, '')\n str = str.trim()\n // just the year\n if (str.match(/^[0-9]{4}$/)) {\n return {\n year: parseInt(str, 10),\n }\n }\n // parse the full date\n let s = spacetime(str)\n return {\n year: s.year(),\n month: s.month(),\n date: s.date(),\n }\n}\nmodule.exports = parseDate\n","const byInfobox = require('../getInfobox')\nconst bySentence = require('../getSentence')\nconst byCategory = require('./byCategory')\nconst parseDate = require('../parseDate')\n\nconst birthDate = function (doc) {\n let res = byInfobox(doc, 'birth_date')\n if (res) {\n return parseDate(res)\n }\n\n // try parentheses in first sentence\n res = bySentence(doc)\n if (res && res.birth) {\n return parseDate(res.birth)\n }\n\n // try to get year from 'Category:1955 births'\n let year = byCategory(doc)\n if (year) {\n return { year: year }\n }\n return null\n}\nmodule.exports = birthDate\n","const byInfobox = require('../getInfobox')\n\nconst birthPlace = function (doc) {\n let res = byInfobox(doc, 'birth_place')\n if (res) {\n return res\n }\n return null\n}\nmodule.exports = birthPlace\n","const aliveCats = {\n 'Living people': true,\n 'Year of birth missing (living people)': true,\n 'Date of birth missing (living people)': true,\n 'Place of birth missing (living people)': true,\n 'Active politicians': true,\n 'Biography articles of living people': true,\n}\n\nconst didDie = {\n 'Dead people': true,\n 'Date of death missing': true,\n 'Date of death unknown': true,\n 'Place of death missing': true,\n 'Place of death unknown': true,\n 'Year of death missing': true,\n 'Year of death unknown': true,\n 'Year of death uncertain': true,\n 'Recent deaths': true,\n 'People declared dead in absentia': true,\n 'Politicians elected posthumously': true,\n 'People who died in office': true,\n 'Assassinated heads of state‎ ': true,\n 'Assassinated heads of government': true,\n 'Assassinated mayors': true,\n 'People who died in Nazi concentration camps': true,\n 'People executed in Nazi concentration camps': true,\n 'Politicians who died in Nazi concentration camps': true,\n 'People who have received posthumous pardons': true,\n 'People lost at sea‎': true,\n 'Deaths due to shipwreck': true,\n 'People who died at sea': true,\n 'Unsolved deaths‎': true,\n 'Deaths by horse-riding accident‎': true,\n 'Deaths from falls‎': true,\n 'Deaths by poisoning‎‎': true,\n 'Deaths from cerebrovascular disease‎': true,\n 'Deaths from asphyxiation‎': true,\n 'Deaths from sepsis‎': true,\n 'Deaths from pneumonia‎': true,\n 'Deaths from dysentery‎‎': true,\n 'Deaths by drowning‎': true,\n}\n\nconst byCat = function (doc) {\n let cats = doc.categories()\n\n //confirmed alive categories\n if (cats.find((c) => aliveCats.hasOwnProperty(c))) {\n return true\n }\n //confirmed death categories\n if (cats.find((c) => didDie.hasOwnProperty(c))) {\n return false\n }\n return null\n}\nmodule.exports = byCat\n","// blp = biography of living persons\n\n// {{WikiProject Biography}} (with living=yes parameter)\n// {{WikiProject banner shell}} (with blp=y parameter)\n\nconst isAlive = {\n blp: true,\n 'blp unsourced': true,\n 'blp unsourced section': true,\n 'blp primary sources': true,\n 'blp self-published': true,\n 'blp sources': true,\n 'blp sources section': true,\n 'blp imdb-only refimprove': true,\n 'blp imdb refimprove': true,\n 'blp no footnotes': true,\n 'blp more footnotes': true,\n 'blp one source': true,\n 'active politician': true,\n activepol: true,\n 'current person': true,\n}\n\nconst isDead = {\n 'recent death': true,\n 'recent death presumed': true,\n 'recent death confirmed': true,\n obituary: true,\n elegy: true,\n eulogy: true,\n panegyric: true,\n memorial: true,\n}\nconst byTemplate = function (doc) {\n let templates = doc.templates().map((tmpl) => tmpl.json())\n for (let i = 0; i < templates.length; i++) {\n let title = templates[i].template || ''\n title = title.toLowerCase().trim()\n if (isAlive.hasOwnProperty(title)) {\n return true\n }\n if (isDead.hasOwnProperty(title)) {\n return false\n }\n }\n // `{{WikiProject Biography|living=yes|activepol=yes}}`\n let bio = doc.template('WikiProject Biography')\n if (bio) {\n bio = bio.json()\n //living blp BLP\n if (bio.living === 'yes' || bio.blp === 'yes' || bio.activepol === 'yes' || bio.BLP === 'yes') {\n return true\n }\n if (bio.living === 'no' || bio.blp === 'no' || bio.BLP === 'no') {\n return false\n }\n }\n return null\n}\nmodule.exports = byTemplate\n","const byCat = require('./byCategory')\nconst byTemplate = require('./byTemplate')\n\n// maximum age of a person\nlet d = new Date()\nconst minYear = d.getFullYear() - 105\n\nconst isAlive = function (doc) {\n // if we have a death date\n let death = doc.deathDate()\n if (death) {\n return false\n }\n // if we have a death place\n let deathPlace = doc.deathPlace()\n if (deathPlace) {\n return false\n }\n // does it have a good category?\n let fromCat = byCat(doc)\n if (fromCat === true || fromCat === false) {\n return fromCat\n }\n // does it have a good template?\n let fromTemplate = byTemplate(doc)\n if (fromTemplate === true || fromTemplate === false) {\n return fromTemplate\n }\n // were they born in 1900?\n let birth = doc.birthDate()\n if (birth && birth.year && birth.year < minYear) {\n return true\n }\n return null\n}\nmodule.exports = isAlive\n","const byCategory = function (doc) {\n let cats = doc.categories()\n for (let i = 0; i < cats.length; i += 1) {\n let m = cats[i].match(/([0-9]{4}) deaths/)\n if (m && m[1]) {\n let year = parseInt(m[1], 10)\n if (year && year > 1000) {\n return year\n }\n }\n }\n return null\n}\nmodule.exports = byCategory\n","const byInfobox = require('../getInfobox')\nconst bySentence = require('../getSentence')\nconst byCategory = require('./byCategory')\nconst parseDate = require('../parseDate')\n\nconst deathDate = function (doc) {\n let res = byInfobox(doc, 'death_date')\n if (res) {\n return parseDate(res)\n }\n // try parentheses in first sentence\n res = bySentence(doc)\n if (res && res.death) {\n return parseDate(res.death)\n }\n\n // try to get year from 'Category:1955 deaths'\n let year = byCategory(doc)\n if (year) {\n return { year: year }\n }\n return null\n}\nmodule.exports = deathDate\n","const byInfobox = require('../getInfobox')\n\nconst deathPlace = function (doc) {\n let res = byInfobox(doc, 'death_place')\n if (res) {\n return res\n }\n return null\n}\nmodule.exports = deathPlace\n","const byInfobox = require('../getInfobox')\n\nconst getNationality = function (doc) {\n let res = byInfobox(doc, 'nationality')\n if (res) {\n return res\n }\n return null\n}\nmodule.exports = getNationality\n","const birthDate = require('./birthDate')\nconst birthPlace = require('./birthPlace')\nconst isAlive = require('./isAlive')\nconst deathDate = require('./deathDate')\nconst deathPlace = require('./deathPlace')\nconst nationality = require('./nationality')\n\nconst addMethod = function (models) {\n models.Doc.prototype.birthDate = function () {\n return birthDate(this)\n }\n models.Doc.prototype.birthPlace = function () {\n return birthPlace(this)\n }\n models.Doc.prototype.isAlive = function () {\n return isAlive(this)\n }\n models.Doc.prototype.deathDate = function () {\n return deathDate(this)\n }\n models.Doc.prototype.deathPlace = function () {\n return deathPlace(this)\n }\n models.Doc.prototype.nationality = function () {\n return nationality(this)\n }\n}\nmodule.exports = addMethod\n"],"names":["actor","adult_biography","afl_biography","alpine_ski_racer","archbishop","architect","artist","athlete","baseball_biography","basketball_biography","boxer","canadianmp","cfl_player","chef","chess_player","christian_leader","college_coach","college_football_player","comedian","comics_creator","cricketer","criminal","cyclist","economist","engineer","fashion_designer","field_hockey_player","figure_skater","football_biography","gaa_player","golfer","governor","gridiron_football_person","gymnast","handball_biography","hindu_leader","horseracing_personality","ice_hockey_player","indian_politician","judge","lacrosse_player","martial_artist","mass_murderer","medical_person","military_person","minister","mlb_player","model","monarch","mp","nascar_driver","nba_biography","nfl_biography","nfl_player","officeholder","person","philosopher","police_officer","politician","presenter","president","professional_wrestler","racing_driver","religious_biography","roman_emperor","royalty","rugby_biography","rugby_league_biography","saint","scholar","scientist","skier","sportsperson","squash_player","state_representative","state_senator","swimmer","tennis_biography","volleyball_biography","volleyball_player","wrc_driver","writer","bishop","congressman","astronaut","senator","byInfobox","doc","prop","infoboxes","i","length","inf","type","toLowerCase","trim","mapping","hasOwnProperty","s","get","text","_typeof","obj","Symbol","iterator","constructor","prototype","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","Array","isArray","Object","_arr","_n","_d","_e","undefined","_i","_s","next","done","push","value","err","o","minLen","_arrayLikeToArray","n","toString","call","slice","name","from","test","len","arr2","TypeError","MSEC_IN_HOUR","toUtc","dstChange","offset","year","_dstChange$split","split","_dstChange$split2","month","rest","_rest$split","_rest$split2","day","hour","Date","UTC","inSummerTime","epoch","start","end","summerOffset","winterOffset","getUTCFullYear","startUtc","endUtc","summerTime","quickOffset","zones","timezones","tz","console","warn","dst","jul","dec","hem","inSummer","quick","_build","_build$1","freeze","__proto__","_prefixes","createCommonjsModule","fn","module","exports","getCjsExportFromNamespace","data","all","keys","forEach","k","Number","names","str","replace","before","num","unpack","fallbackTZ","safeIntl","Intl","DateTimeFormat","format","resolvedOptions","timezone","timeZone","guessTz","guessTz_1","isOffset","isNumber","utcOffset","gmtOffset","toIana","parseOffset$1","parseOffset","m","match","parseOffset_1$1","local","cities","reduce","h","city","normalize","lookupTz","error","id","Error","find","millisecond","second","minute","date","week","milliseconds","walk","unit","previous","current","d","startUnit","original","diff","Math","abs","halfStep","units$3","valid","walkTo","getMonth","getFullYear","seconds","wants","old","clone","parseInt","silent","walk_1","shortMonths","longMonths","buildMapping","sep","months$1","short","long","set","i18n","parseFloat","parseOffset_1","parseTime","arguments","startOf","concat","substring","ampm","_h","parseTime_1","monthLengths","monthLengths_1","fns","isLeapYear","isDate","isNaN","valueOf","input","isObject","isBoolean","zeroPad","pad","join","titleCase","toUpperCase","substr","ordinal","j","toCardinal","String","getEpoch","tmp","getTime","beADate","formatTimezone","delimiter","sign","absOffset","hours","minutes","isLeapYear$2","hasDate","max","hasDate_1","months","parseYear","today","strFmt","reg","parse","givenTz","options","british","_today","quarter","season","getDate","strParse","getNow","now","dates","tonight","tomorrow","add","yesterday","subtract","christmas","newYears","namedDates","minimumEpoch","defaults","handleArray","order","handleObject","assign","parseInput","res","isValid","_res","shortDays","longDays","days","aliases","mo","tu","we","th","fr","sa","su","tues","weds","wedn","thur","thurs","titleCaseEnabled","caseFormat","useTitleCase","isoOffset","_offset","applyCaseFormat","dayName","dayShort","dayNumber","dayOrdinal","dayPad","dateOrdinal","datePad","monthName","monthShort","monthNumber","monthOrdinal","monthPad","isoMonth","yearShort","isoYear","isNegative","time","time24","hour24","hour12","hourPad","hour24Pad","minutePad","secondPad","era","json","numeric","numericUs","numericUk","mmDd","iso","h24","ms","isoShort","isoUtc","toISOString","nice","nice24","niceYear","niceDay","niceFull","niceFull24","mdy","dmy","ymd","printFormat","out","indexOf","sections","_","fmt","_out","format_1","G","GG","GGG","GGGG","y","yy","yyy","yyyy","yyyyy","Q","QQ","QQQ","QQQQ","M","MM","MMM","MMMM","w","ww","dd","D","dayOfYear","DD","DDD","E","EE","EEE","EEEE","EEEEE","e","ee","eee","eeee","eeeee","a","aa","aaa","aaaa","h12","hh","H","HH","mm","ss","A","z","zz","zzz","zzzz","Z","ZZ","ZZZ","ZZZZ","addAlias","_char","to","toName","escapeChars","filter","ch","combineRepeated","c","map","unixFmt","txt","unixFmt_1","units$2","doUnit","endOf","duration","percent","toFixed","progress","progress_1","nearest","prog","nearest_1","climb","b","isBefore","isAfter","diffOne","one","fastYear","years","diff$1","msDiff","weeks","waterfall","reverseDiff","main$1","main","reversed","qualifiers","almost","over","getDiff","later","earlier","isSame","u","pluralize","since","isNow","every","rounded","qualified","precise","englishValues","units","englishValue","nextUnit","nextValue","splice","since_1","seasons","north","south","quarters","units$1","quarterhour","_weekStart","q","hemisphere","decade","century","startOf_1","isDay","result","every_1","parseDst","epochShift","found","hasDst","Boolean","default_offset","change","back","summer","winter","isDST","timezone_1","methods$4","input$1","hasDST","leapYear","last","goto","isAwake","isAsleep","log","logYear","_this","debug","fromNow","weekStart","inDST","round","each","methods_1","isLeapYear$1","validate","order$1","confirm","want","shift","sec","methods$3","getMilliseconds","getSeconds","getMinutes","getHours","hourFloat","_minute","_hour","which","dayTime","times","morning","breakfast","noon","lunch","afternoon","evening","dinner","night","midnight","_01Time","methods$2","getDay","_02Date","clearMinutes","methods$1","sum","setDate","setFullYear","setHours","setMinutes","setMonth","toAdd","minus","thisOne","skipWeeks","_month","floor","millenium","_03Year","methods","addMethods$4","addMethods","Space","query","getMonthLength","rollMonth","_years","rollDaysDown","rollDaysUp","_model","daysBack","keep","dstAwareUnits","keepDate","addMethods$3","SpaceTime","_sum","remainder","wantYear","haveYear","plus","print","addMethods$2","tzAware","same","addMethods$1","isEqual","isBetween","isInclusive","startEpoch","endEpoch","compare","defineProperty","bias","getTimezoneOffset","toLocalDate","spacetime","whereIts","startHour","endHour","tzs","whereIts_1","_version","setToday","extend","min","version","plugin","src","parseSentence","sentence","paren","birth","death","byCategory","cats","categories","parseDate","birthDate","bySentence","birthPlace","aliveCats","didDie","byCat","isAlive","blp","activepol","isDead","obituary","elegy","eulogy","panegyric","memorial","byTemplate","templates","tmpl","title","template","bio","living","BLP","minYear","deathDate","deathPlace","fromCat","fromTemplate","getNationality","addMethod","models","Doc","nationality"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-person.js","sources":["../src/_lib/_infoboxes.js","../src/getInfobox.js","../node_modules/spacetime/builds/spacetime.mjs","../src/getSentence.js","../src/birthDate/byCategory.js","../src/parseDate.js","../src/birthDate/index.js","../src/birthPlace/index.js","../src/isAlive/byCategory.js","../src/isAlive/byTemplate.js","../src/isAlive/index.js","../src/deathDate/byCategory.js","../src/deathDate/index.js","../src/deathPlace/index.js","../src/nationality/index.js","../src/index.js"],"sourcesContent":["// from ./plugins/classify/infobox, April 15 2020\n// https://en.wikipedia.org/wiki/Category:People_and_person_infobox_templates\nmodule.exports = {\n actor: true,\n adult_biography: true,\n afl_biography: true,\n alpine_ski_racer: true,\n archbishop: true,\n architect: true,\n artist: true,\n athlete: true,\n baseball_biography: true,\n basketball_biography: true,\n boxer: true,\n canadianmp: true,\n cfl_player: true,\n chef: true,\n chess_player: true,\n christian_leader: true,\n college_coach: true,\n college_football_player: true,\n comedian: true,\n comics_creator: true,\n cricketer: true,\n criminal: true,\n cyclist: true,\n economist: true,\n engineer: true,\n fashion_designer: true,\n field_hockey_player: true,\n figure_skater: true,\n football_biography: true,\n gaa_player: true,\n golfer: true,\n governor: true,\n gridiron_football_person: true,\n gymnast: true,\n handball_biography: true,\n hindu_leader: true,\n horseracing_personality: true,\n ice_hockey_player: true,\n indian_politician: true,\n judge: true,\n lacrosse_player: true,\n martial_artist: true,\n mass_murderer: true,\n medical_person: true,\n military_person: true,\n minister: true,\n mlb_player: true,\n model: true,\n monarch: true,\n mp: true,\n nascar_driver: true,\n nba_biography: true,\n nfl_biography: true,\n nfl_player: true,\n officeholder: true,\n person: true,\n philosopher: true,\n police_officer: true,\n politician: true,\n 'politician_(general)': true,\n presenter: true,\n president: true,\n professional_wrestler: true,\n racing_driver: true,\n religious_biography: true,\n roman_emperor: true,\n royalty: true,\n rugby_biography: true,\n rugby_league_biography: true,\n saint: true,\n scholar: true,\n scientist: true,\n skier: true,\n sportsperson: true,\n squash_player: true,\n state_representative: true,\n state_senator: true,\n swimmer: true,\n tennis_biography: true,\n volleyball_biography: true,\n volleyball_player: true,\n wrc_driver: true,\n writer: true,\n 'hockey team player': true,\n 'snooker player': true,\n bishop: true,\n 'football biography': true,\n 'military person': true,\n 'baseball biography': true,\n 'ice hockey player': true,\n 'nfl player': true,\n 'christian leader': true,\n congressman: true,\n 'basketball biography': true,\n 'comics creator': true,\n 'professional wrestler': true,\n 'college coach': true,\n 'tennis biography': true,\n 'afl biography': true,\n 'nfl biography': true,\n 'rugby biography': true,\n 'rugby league biography': true,\n 'prime minister': true,\n 'nba biography': true,\n 'figure skater': true,\n 'f1 driver': true,\n 'gridiron football person': true,\n 'indian politician': true,\n 'racing driver': true,\n 'martial artist': true,\n 'chinese-language singer and actor': true,\n astronaut: true,\n senator: true,\n 'nascar driver': true,\n 'adult biography': true,\n 'state representative': true,\n 'state senator': true,\n 'coa wide': true,\n 'religious biography': true,\n 'chess player': true,\n 'pageant titleholder': true,\n 'gaa player': true,\n 'us cabinet official': true,\n}\n","const mapping = require('./_lib/_infoboxes')\n\nconst byInfobox = function (doc, prop) {\n let infoboxes = doc.infoboxes()\n for (let i = 0; i < infoboxes.length; i++) {\n let inf = infoboxes[i]\n let type = inf.type()\n type = type.toLowerCase()\n type = type.trim()\n\n if (mapping.hasOwnProperty(type)) {\n let s = inf.get(prop)\n if (s) {\n return s.text()\n }\n }\n }\n return null\n}\nmodule.exports = byInfobox\n","const e=(e,t,a)=>{const[n,r]=e.split(\"/\"),[o,i]=r.split(\":\");return Date.UTC(a,n-1,o,i)-36e5*t};var t=(t,a,n,r,o)=>{const i=new Date(t).getUTCFullYear(),s=e(a,o,i),u=e(n,r,i);return t>=s&&t{let a=e.timezones[e.tz];if(void 0===a)return console.warn(\"Warning: couldn't find timezone \"+e.tz),0;if(void 0===a.dst)return a.offset;let n=a.offset,r=a.offset+1;\"n\"===a.hem&&(r=n-1);let o=a.dst.split(\"->\");return!0===t(e.epoch,o[0],o[1],n,r)?n:r};var n,r=(n=Object.freeze({__proto__:null,default:{\"9|s\":\"2/dili,2/jayapura\",\"9|n\":\"2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau\",\"9.5|s|04/04:03->10/03:02\":\"4/adelaide,4/broken_hill,4/south,4/yancowinna\",\"9.5|s\":\"4/darwin,4/north\",\"8|s|03/08:01->10/04:00\":\"12/casey\",\"8|s\":\"2/kuala_lumpur,2/makassar,2/singapore,4/perth,2/ujung_pandang,4/west\",\"8|n\":\"2/brunei,2/choibalsan,2/hong_kong,2/irkutsk,2/kuching,2/macau,2/manila,2/shanghai,2/taipei,2/ulaanbaatar,2/chongqing,2/chungking,2/harbin,2/macao,2/ulan_bator\",\"8.75|s\":\"4/eucla\",\"7|s\":\"12/davis,2/jakarta,9/christmas\",\"7|n\":\"2/bangkok,2/barnaul,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane,2/ho_chi_minh\",\"6|s\":\"12/vostok\",\"6|n\":\"2/almaty,2/bishkek,2/dhaka,2/omsk,2/qyzylorda,2/qostanay,2/thimphu,2/urumqi,9/chagos,2/dacca,2/kashgar,2/thimbu\",\"6.5|n\":\"2/rangoon,9/cocos,2/yangon\",\"5|s\":\"12/mawson,9/kerguelen\",\"5|n\":\"2/aqtau,2/aqtobe,2/ashgabat,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives,2/ashkhabad\",\"5.75|n\":\"2/katmandu,2/kathmandu\",\"5.5|n\":\"2/calcutta,2/colombo,2/kolkata\",\"4|s\":\"9/reunion\",\"4|n\":\"2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius\",\"4.5|n|03/22:00->09/21:24\":\"2/tehran\",\"4.5|n\":\"2/kabul\",\"3|s\":\"12/syowa,9/antananarivo\",\"3|n|03/28:03->10/31:04\":\"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye,8/nicosia\",\"3|n|03/28:02->10/31:03\":\"8/chisinau,8/tiraspol\",\"3|n|03/28:00->10/30:24\":\"2/beirut\",\"3|n|03/27:00->10/30:01\":\"2/gaza,2/hebron\",\"3|n|03/26:02->10/31:02\":\"2/jerusalem,2/tel_aviv\",\"3|n|03/26:00->10/29:01\":\"2/amman\",\"3|n|03/26:00->10/28:24\":\"2/damascus\",\"3|n\":\"0/addis_ababa,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte,0/asmara,2/istanbul\",\"2|s|03/28:02->10/31:02\":\"12/troll\",\"2|s\":\"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane\",\"2|n|03/28:02->10/31:03\":\"0/ceuta,arctic/longyearbyen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich,3/jan_mayen\",\"2|n\":\"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad\",\"1|s\":\"0/brazzaville,0/kinshasa,0/luanda,0/windhoek\",\"1|n|04/11:03->05/16:02\":\"0/casablanca,0/el_aaiun\",\"1|n|03/28:01->10/31:02\":\"3/canary,3/faeroe,3/madeira,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london,3/faroe,8/belfast\",\"1|n\":\"0/algiers,0/bangui,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis\",\"14|n\":\"11/kiritimati\",\"13|s|04/04:04->09/26:03\":\"11/apia\",\"13|s|01/15:02->11/05:03\":\"11/tongatapu\",\"13|n\":\"11/enderbury,11/fakaofo\",\"12|s|04/04:03->09/26:02\":\"12/mcmurdo,11/auckland,12/south_pole\",\"12|s|01/17:03->11/14:02\":\"11/fiji\",\"12|n\":\"2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis\",\"12.75|s|04/04:03->09/26:02\":\"11/chatham\",\"11|s|04/04:03->10/03:02\":\"12/macquarie\",\"11|s\":\"11/bougainville\",\"11|n\":\"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/ponape,11/pohnpei\",\"11.5|n|04/04:03->10/03:02\":\"11/norfolk\",\"10|s|04/04:03->10/03:02\":\"4/currie,4/hobart,4/melbourne,4/sydney,4/act,4/canberra,4/nsw,4/tasmania,4/victoria\",\"10|s\":\"12/dumontdurville,4/brisbane,4/lindeman,11/port_moresby,4/queensland\",\"10|n\":\"2/ust-nera,2/vladivostok,2/yakutsk,11/guam,11/saipan,11/truk,11/chuuk,11/yap\",\"10.5|s|04/04:01->10/03:02\":\"4/lord_howe,4/lhi\",\"0|n|03/28:00->10/31:01\":\"1/scoresbysund,3/azores\",\"0|n\":\"0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/utc,0/timbuktu,13/gmt-0,13/gmt+0,13/gmt0,13/greenwich,13/uct,13/universal,13/zulu\",\"-9|n|03/14:02->11/07:02\":\"1/adak,1/atka,us/aleutian\",\"-9|n\":\"11/gambier\",\"-9.5|n\":\"11/marquesas\",\"-8|n|03/14:02->11/07:02\":\"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat,us/alaska\",\"-8|n\":\"11/pitcairn\",\"-7|n|03/14:02->11/07:02\":\"1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/ensenada,6/pacific,10/bajanorte,us/pacific-new,us/pacific\",\"-7|n|03/08:02->11/01:01\":\"1/dawson,1/whitehorse,6/yukon\",\"-7|n\":\"1/creston,1/dawson_creek,1/fort_nelson,1/hermosillo,1/phoenix,us/arizona\",\"-6|s|04/03:22->09/04:22\":\"11/easter,7/easterisland\",\"-6|n|04/04:02->10/31:02\":\"1/chihuahua,1/mazatlan,10/bajasur\",\"-6|n|03/14:02->11/07:02\":\"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/yellowknife,1/shiprock,6/mountain,us/mountain\",\"-6|n\":\"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,11/galapagos,6/east-saskatchewan,6/saskatchewan\",\"-5|s\":\"1/lima,1/rio_branco,1/porto_acre,5/acre\",\"-5|n|04/04:02->10/31:02\":\"1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general\",\"-5|n|03/14:02->11/07:02\":\"1/chicago,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,1/indiana/knox,1/indiana/tell_city,1/north_dakota/beulah,1/north_dakota/center,1/north_dakota/new_salem,1/knox_in,6/central,us/central,us/indiana-starke\",\"-5|n|03/12:03->11/05:01\":\"1/north_dakota\",\"-5|n\":\"1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/atikokan\",\"-4|s|05/13:23->08/13:01\":\"12/palmer\",\"-4|s|04/03:24->09/05:00\":\"1/santiago,7/continental\",\"-4|s|03/27:24->10/03:00\":\"1/asuncion\",\"-4|s|02/16:24->11/03:00\":\"1/campo_grande,1/cuiaba\",\"-4|s\":\"1/la_paz,1/manaus,5/west\",\"-4|n|03/14:02->11/07:02\":\"1/detroit,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,1/indiana/marengo,1/indiana/petersburg,1/indiana/vevay,1/indiana/vincennes,1/indiana/winamac,1/kentucky/monticello,1/fort_wayne,1/indiana/indianapolis,1/kentucky/louisville,6/eastern,us/east-indiana,us/eastern,us/michigan\",\"-4|n|03/14:00->11/07:01\":\"1/havana\",\"-4|n|03/12:03->11/05:01\":\"1/indiana,1/kentucky\",\"-4|n\":\"1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin\",\"-3|s\":\"1/argentina,1/buenos_aires,1/catamarca,1/cordoba,1/fortaleza,1/jujuy,1/mendoza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,1/argentina/la_rioja,1/argentina/rio_gallegos,1/argentina/salta,1/argentina/san_juan,1/argentina/san_luis,1/argentina/tucuman,1/argentina/ushuaia,1/argentina/buenos_aires,1/argentina/catamarca,1/argentina/comodrivadavia,1/argentina/cordoba,1/argentina/jujuy,1/argentina/mendoza,1/rosario,5/east\",\"-3|n|03/14:02->11/07:02\":\"1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic\",\"-3|n\":\"1/araguaina,1/bahia,1/belem,1/cayenne,1/maceio,1/paramaribo,1/recife,1/santarem\",\"-2|n|03/27:22->10/30:23\":\"1/godthab,1/nuuk\",\"-2|n|03/14:02->11/07:02\":\"1/miquelon\",\"-2|n\":\"1/noronha,3/south_georgia,5/denoronha\",\"-2.5|n|03/14:02->11/07:02\":\"1/st_johns,6/newfoundland\",\"-1|n\":\"3/cape_verde\",\"-11|n\":\"11/midway,11/niue,11/pago_pago,11/samoa,us/samoa\",\"-10|n\":\"11/honolulu,11/johnston,11/rarotonga,11/tahiti,us/hawaii\"}}))&&n.default||n,o=[\"africa\",\"america\",\"asia\",\"atlantic\",\"australia\",\"brazil\",\"canada\",\"chile\",\"europe\",\"indian\",\"mexico\",\"pacific\",\"antarctica\",\"etc\"];let i={};Object.keys(r).forEach(e=>{let t=e.split(\"|\"),a={offset:Number(t[0]),hem:t[1]};t[2]&&(a.dst=t[2]),r[e].split(\",\").forEach(e=>{e=e.replace(/(^[0-9]+)\\//,(e,t)=>(t=Number(t),o[t]+\"/\")),i[e]=a})}),i.utc={offset:0,hem:\"n\"};for(let e=-14;e<=14;e+=.5){let t=e;t>0&&(t=\"+\"+t);let a=\"etc/gmt\"+t;i[a]={offset:-1*e,hem:\"n\"},a=\"utc/gmt\"+t,i[a]={offset:-1*e,hem:\"n\"}}const s=/(\\-?[0-9]+)h(rs)?/i,u=/(\\-?[0-9]+)/,l=/utc([\\-+]?[0-9]+)/i,h=/gmt([\\-+]?[0-9]+)/i,c=function(e){return(e=Number(e))>=-13&&e<=13?\"etc/gmt\"+(e=((e*=-1)>0?\"+\":\"\")+e):null};var d=i,m=function(e){let t=e.match(s);if(null!==t)return c(t[1]);if(t=e.match(l),null!==t)return c(t[1]);if(t=e.match(h),null!==t){let e=-1*Number(t[1]);return c(e)}return t=e.match(u),null!==t?c(t[1]):null};const p=(()=>{let e=(()=>{if(\"undefined\"==typeof Intl||void 0===Intl.DateTimeFormat)return null;let e=Intl.DateTimeFormat();if(void 0===e||void 0===e.resolvedOptions)return null;let t=e.resolvedOptions().timeZone;return t?t.toLowerCase():null})();return null===e?\"utc\":e})(),f=Object.keys(d).reduce((e,t)=>{let a=t.split(\"/\")[1]||\"\";return a=a.replace(/_/g,\" \"),e[a]=t,e},{});var y,g=(e,t)=>{if(!e)return p;\"string\"!=typeof e&&console.error(\"Timezone must be a string - recieved: '\",e,\"'\\n\");let a=e.trim();if(a=a.toLowerCase(),!0===t.hasOwnProperty(a))return a;if(a=(e=>(e=(e=(e=(e=(e=e.replace(/ time/g,\"\")).replace(/ (standard|daylight|summer)/g,\"\")).replace(/\\b(east|west|north|south)ern/g,\"$1\")).replace(/\\b(africa|america|australia)n/g,\"$1\")).replace(/\\beuropean/g,\"europe\")).replace(/\\islands/g,\"island\"))(a),!0===t.hasOwnProperty(a))return a;if(!0===f.hasOwnProperty(a))return f[a];if(!0===/[0-9]/.test(a)){let e=m(a);if(e)return e}throw new Error(\"Spacetime: Cannot find timezone named: '\"+e+\"'. Please enter an IANA timezone id.\")},b=(function(e,t){t.isLeapYear=e=>e%4==0&&e%100!=0||e%400==0,t.isDate=e=>\"[object Date]\"===Object.prototype.toString.call(e)&&!isNaN(e.valueOf()),t.isArray=e=>\"[object Array]\"===Object.prototype.toString.call(e),t.isObject=e=>\"[object Object]\"===Object.prototype.toString.call(e),t.isBoolean=e=>\"[object Boolean]\"===Object.prototype.toString.call(e),t.zeroPad=(e,t=2)=>(e+=\"\").length>=t?e:new Array(t-e.length+1).join(\"0\")+e,t.titleCase=e=>e?e[0].toUpperCase()+e.substr(1):\"\",t.ordinal=e=>{let t=e%10,a=e%100;return 1===t&&11!==a?e+\"st\":2===t&&12!==a?e+\"nd\":3===t&&13!==a?e+\"rd\":e+\"th\"},t.toCardinal=e=>(e=(e=String(e)).replace(/([0-9])(st|nd|rd|th)$/i,\"$1\"),parseInt(e,10)),t.normalize=(e=\"\")=>\"day\"===(e=(e=(e=(e=e.toLowerCase().trim()).replace(/ies$/,\"y\")).replace(/s$/,\"\")).replace(/-/g,\"\"))||\"days\"===e?\"date\":\"min\"===e||\"mins\"===e?\"minute\":e,t.getEpoch=e=>\"number\"==typeof e?e:t.isDate(e)?e.getTime():e.epoch?e.epoch:null,t.beADate=(e,a)=>!1===t.isObject(e)?a.clone().set(e):e,t.formatTimezone=(e,a=\"\")=>{const n=e>0?\"+\":\"-\",r=Math.abs(e);return`${n}${t.zeroPad(parseInt(\"\"+r,10))}${a}${t.zeroPad(r%1*60)}`}}(y={exports:{}},y.exports),y.exports);b.isLeapYear,b.isDate,b.isArray,b.isObject,b.isBoolean,b.zeroPad,b.titleCase,b.ordinal,b.toCardinal,b.normalize,b.getEpoch,b.beADate,b.formatTimezone;const k={year:(new Date).getFullYear(),month:0,date:1};var w={parseArray:(e,t,a)=>{if(0===t.length)return e;let n=[\"year\",\"month\",\"date\",\"hour\",\"minute\",\"second\",\"millisecond\"];for(let r=0;r{if(0===Object.keys(t).length)return e;t=Object.assign({},k,a,t);let n=Object.keys(t);for(let r=0;r0&&t<25e8&&!1===e.silent&&(console.warn(\" - Warning: You are setting the date to January 1970.\"),console.warn(\" - did input seconds instead of milliseconds?\")),e.epoch=t,e}};const v=function(e){return e.epoch=Date.now(),Object.keys(e._today||{}).forEach(t=>{\"function\"==typeof e[t]&&(e=e[t](e._today[t]))}),e},z={now:e=>v(e),today:e=>v(e),tonight:e=>e=(e=v(e)).hour(18),tomorrow:e=>e=(e=(e=v(e)).add(1,\"day\")).startOf(\"day\"),yesterday:e=>e=(e=(e=v(e)).subtract(1,\"day\")).startOf(\"day\"),christmas:e=>{let t=v(e).year();return e=e.set([t,11,25,18,0,0])},\"new years\":e=>{let t=v(e).year();return e=e.set([t,11,31,18,0,0])}};z[\"new years eve\"]=z[\"new years\"];var _=z;var j=function(e){return e=(e=(e=(e=e.replace(/\\b(mon|tues?|wed|wednes|thur?s?|fri|sat|satur|sun)(day)?\\b/i,\"\")).replace(/([0-9])(th|rd|st|nd)/,\"$1\")).replace(/,/g,\"\")).replace(/ +/g,\" \").trim()};let O={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5};O.date=O.day,O.month=25488e5,O.week=6048e5,O.year=3154e7,Object.keys(O).forEach(e=>{O[e+\"s\"]=O[e]});var $=O;const D=(e,t,a,n,r)=>{let o=e.d[a]();if(o===t)return;let i=null===r?null:e.d[r](),s=e.epoch,u=t-o;e.epoch+=$[n]*u,\"day\"===n&&Math.abs(u)>28&&t<28&&(e.epoch+=$.hour),null!==r&&i!==e.d[r]()&&(e.epoch=s);const l=$[n]/2;for(;e.d[a]()t;)e.epoch-=l;null!==r&&i!==e.d[r]()&&(e.epoch=s)},M={year:{valid:e=>e>-4e3&&e<4e3,walkTo:(e,t)=>D(e,t,\"getFullYear\",\"year\",null)},month:{valid:e=>e>=0&&e<=11,walkTo:(e,t)=>{let a=e.d,n=a.getMonth(),r=e.epoch,o=a.getFullYear();if(n===t)return;let i=t-n;for(e.epoch+=$.day*(28*i),o!==e.d.getFullYear()&&(e.epoch=r);e.d.getMonth()t;)e.epoch-=$.day}},date:{valid:e=>e>0&&e<=31,walkTo:(e,t)=>D(e,t,\"getDate\",\"day\",\"getMonth\")},hour:{valid:e=>e>=0&&e<24,walkTo:(e,t)=>D(e,t,\"getHours\",\"hour\",\"getDate\")},minute:{valid:e=>e>=0&&e<60,walkTo:(e,t)=>D(e,t,\"getMinutes\",\"minute\",\"getHours\")},second:{valid:e=>e>=0&&e<60,walkTo:(e,t)=>{e.epoch=e.seconds(t).epoch}},millisecond:{valid:e=>e>=0&&e<1e3,walkTo:(e,t)=>{e.epoch=e.milliseconds(t).epoch}}};var P=(e,t)=>{let a=Object.keys(M),n=e.clone();for(let r=0;rS,long:()=>q,mapping:()=>function(){const e={sep:8};for(let t=0;t{S=e.short||S,q=e.long||q}},C=(e,t)=>{if(!t)return e;\"Z\"!==t&&\"z\"!==t||(t=\"+0000\");let a=0;/^[\\+-]?[0-9]{2}:[0-9]{2}$/.test(t)&&(!0===/:00/.test(t)&&(t=t.replace(/:00/,\"\")),!0===/:30/.test(t)&&(t=t.replace(/:30/,\".5\"))),/^[\\+-]?[0-9]{4}$/.test(t)&&(t=t.replace(/30$/,\".5\")),a=parseFloat(t),Math.abs(a)>100&&(a/=100),a*=-1,a>=0&&(a=\"+\"+a);let n=\"etc/gmt\"+a;return e.timezones[n]&&(e.tz=n),e},I=(e,t=\"\")=>{let a=(t=t.replace(/^\\s+/,\"\").toLowerCase()).match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\\.]?([0-9]{1,4})?/);if(null!==a){let n=Number(a[1]);if(n<0||n>24)return e.startOf(\"day\");let r=Number(a[2]);if(a[2].length<2||r<0||r>59)return e.startOf(\"day\");a[4]>999&&(a[4]=parseInt((\"\"+a[4]).substring(0,3),10)),e=(e=(e=(e=e.hour(n)).minute(r)).seconds(a[3]||0)).millisecond(a[4]||0);let o=t.match(/[\\b0-9] ?(am|pm)\\b/);return null!==o&&o[1]&&(e=e.ampm(o[1])),e}if(a=t.match(/([0-9]+) ?(am|pm)/),null!==a&&a[1]){let t=Number(a[1]);return t>12||t<1?e.startOf(\"day\"):e=(e=(e=e.hour(a[1]||0)).ampm(a[2])).startOf(\"hour\")}return e=e.startOf(\"day\")};const Y=E.isLeapYear,A=N.mapping();var x=P,L={parseOffset:C,parseTime:I,parseYear:(e=\"\",t)=>{if(e=e.trim(),!0===/^'[0-9][0-9]$/.test(e)){let t=Number(e.replace(/'/,\"\"));return t>50?1900+t:2e3+t}let a=parseInt(e,10);return!a&&t&&(a=t.year),a=a||(new Date).getFullYear(),a},parseMonth:function(e){return e=e.toLowerCase().trim(),A[e]},validate:e=>{if(!0!==T.hasOwnProperty(e.month))return!1;if(1===e.month)return!!(Y(e.year)&&e.date<=29)||e.date<=28;let t=T[e.month]||0;return e.date<=t}};const{validate:F,parseTime:B,parseYear:Z,parseMonth:H,parseOffset:Q}=L;var G=[{reg:/^(\\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\\-\\+:]+)?$/i,parse:(e,t)=>{let a={year:t[1],month:parseInt(t[2],10)-1,date:t[3]};return!1===F(a)?(e.epoch=null,e):(Q(e,t[5]),x(e,a),e=B(e,t[4]))}},{reg:/^([0-9]{4})[\\-\\/\\. ]([0-9]{1,2})[\\-\\/\\. ]([0-9]{1,2})( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,parse:(e,t)=>{let a={year:t[1],month:parseInt(t[2],10)-1,date:parseInt(t[3],10)};return a.month>=12&&(a.date=parseInt(t[2],10),a.month=parseInt(t[3],10)-1),!1===F(a)?(e.epoch=null,e):(x(e,a),e=B(e,t[4]))}},{reg:/^([0-9]{4})[\\-\\/\\. ]([a-z]+)[\\-\\/\\. ]([0-9]{1,2})( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,parse:(e,t)=>{let a={year:Z(t[1],e._today),month:H(t[2]),date:E.toCardinal(t[3]||\"\")};return!1===F(a)?(e.epoch=null,e):(x(e,a),e=B(e,t[4]))}}];const{validate:U,parseTime:V,parseYear:W,parseMonth:J}=L;var K=[{reg:/^([0-9]{1,2})[\\-\\/.]([0-9]{1,2})[\\-\\/.]?([0-9]{4})?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:(e,t)=>{let a=parseInt(t[1],10)-1,n=parseInt(t[2],10);(e.british||a>=12)&&(n=parseInt(t[1],10),a=parseInt(t[2],10)-1);let r={date:n,month:a,year:W(t[3],e._today)||(new Date).getFullYear()};return!1===U(r)?(e.epoch=null,e):(x(e,r),e=V(e,t[4]))}},{reg:/^([a-z]+)[\\-\\/\\. ]([0-9]{1,2})[\\-\\/\\. ]?([0-9]{4}|'[0-9]{2})?( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,parse:(e,t)=>{let a={year:W(t[3],e._today),month:J(t[1]),date:E.toCardinal(t[2]||\"\")};return!1===U(a)?(e.epoch=null,e):(x(e,a),e=V(e,t[4]))}},{reg:/^([a-z]+) ([0-9]{1,2})( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i,parse:(e,t)=>{let a={year:W(t[3],e._today),month:J(t[1]),date:E.toCardinal(t[2]||\"\")};return!1===U(a)?(e.epoch=null,e):(x(e,a),e=V(e,t[4]))}},{reg:/^([a-z]+) ([0-9]{1,2})( [0-9:]+)?( \\+[0-9]{4})?( [0-9]{4})?$/i,parse:(e,t)=>{let a={year:W(t[5],e._today),month:J(t[1]),date:E.toCardinal(t[2]||\"\")};return!1===U(a)?(e.epoch=null,e):(x(e,a),e=V(e,t[3]))}}];const{validate:R,parseTime:X,parseYear:ee,parseMonth:te}=L;var ae=[{reg:/^([0-9]{1,2})[\\-\\/]([a-z]+)[\\-\\/]?([0-9]{4})?$/i,parse:(e,t)=>{let a={year:ee(t[3],e._today),month:te(t[2]),date:E.toCardinal(t[1]||\"\")};return!1===R(a)?(e.epoch=null,e):(x(e,a),e=X(e,t[4]))}},{reg:/^([0-9]{1,2})( [a-z]+)( [0-9]{4}| '[0-9]{2})? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:(e,t)=>{let a={year:ee(t[3],e._today),month:te(t[2]),date:E.toCardinal(t[1])};return a.month&&!1!==R(a)?(x(e,a),e=X(e,t[4])):(e.epoch=null,e)}},{reg:/^([0-9]{1,2})[\\. -/]([a-z]+)[\\. -/]([0-9]{4})?( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,parse:(e,t)=>{let a={date:Number(t[1]),month:te(t[2]),year:Number(t[3])};return!1===R(a)?(e.epoch=null,e):(x(e,a),e=e.startOf(\"day\"),e=X(e,t[4]))}}];const{validate:ne,parseTime:re,parseYear:oe,parseMonth:ie}=L;var se=[].concat(G,K,ae,[{reg:/^([0-9]{4})[\\-\\/]([0-9]{2})$/i,parse:(e,t)=>{let a={year:t[1],month:parseInt(t[2],10)-1,date:1};return!1===ne(a)?(e.epoch=null,e):(x(e,a),e=re(e,t[4]))}},{reg:/^([a-z]+) ([0-9]{4})$/i,parse:(e,t)=>{let a={year:oe(t[2],e._today),month:ie(t[1]),date:e._today.date||1};return!1===ne(a)?(e.epoch=null,e):(x(e,a),e=re(e,t[4]))}},{reg:/^(q[0-9])( of)?( [0-9]{4})?/i,parse:(e,t)=>{let a=t[1]||\"\";e=e.quarter(a);let n=t[3]||\"\";return n&&(n=n.trim(),e=e.year(n)),e}},{reg:/^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i,parse:(e,t)=>{let a=t[1]||\"\";e=e.season(a);let n=t[3]||\"\";return n&&(n=n.trim(),e=e.year(n)),e}},{reg:/^[0-9,]+ ?b\\.?c\\.?$/i,parse:(e,t)=>{let a=t[0]||\"\";a=a.replace(/^([0-9,]+) ?b\\.?c\\.?$/i,\"-$1\");let n=new Date,r={year:parseInt(a.trim(),10),month:n.getMonth(),date:n.getDate()};return!1===ne(r)?(e.epoch=null,e):(x(e,r),e=re(e))}},{reg:/^[0-9,]+ ?(a\\.?d\\.?|c\\.?e\\.?)$/i,parse:(e,t)=>{let a=t[0]||\"\";a=a.replace(/,/g,\"\");let n=new Date,r={year:parseInt(a.trim(),10),month:n.getMonth(),date:n.getDate()};return!1===ne(r)?(e.epoch=null,e):(x(e,r),e=re(e))}},{reg:/^[0-9]{4}( ?a\\.?d\\.?)?$/i,parse:(e,t)=>{let a=e._today;a.month&&!a.date&&(a.date=1);let n=new Date,r={year:oe(t[0],a),month:a.month||n.getMonth(),date:a.date||n.getDate()};return!1===ne(r)?(e.epoch=null,e):(x(e,r),e=re(e))}}]);var ue=w,le=_,he=j,ce=function(e,t,a){for(let n=0;n{let a=e._today||fe;if(\"number\"==typeof t)return pe(e,t);if(e.epoch=Date.now(),e._today&&E.isObject(e._today)&&Object.keys(e._today).length>0){let t=me(e,a,fe);t.isValid()&&(e.epoch=t.epoch)}return null==t||\"\"===t?e:!0===E.isDate(t)?(e.epoch=t.getTime(),e):!0===E.isArray(t)?e=de(e,t,a):!0===E.isObject(t)?t.epoch?(e.epoch=t.epoch,e.tz=t.tz,e):e=me(e,t,a):\"string\"!=typeof t?e:(t=he(t),!0===le.hasOwnProperty(t)?e=le[t](e):ce(e,t))};let ge=[\"sun\",\"mon\",\"tue\",\"wed\",\"thu\",\"fri\",\"sat\"],be=[\"sunday\",\"monday\",\"tuesday\",\"wednesday\",\"thursday\",\"friday\",\"saturday\"];let ke=!0;var we={short:()=>ge,long:()=>be,set:e=>{ge=e.short||ge,be=e.long||be},aliases:{mo:1,tu:2,we:3,th:4,fr:5,sa:6,su:7,tues:2,weds:3,wedn:3,thur:4,thurs:4}},ve={useTitleCase:()=>ke,set:e=>{ke=e}},ze=e=>{let t=e.timezone().current.offset;return t?E.formatTimezone(t,\":\"):\"Z\"};const _e=e=>ve.useTitleCase()?E.titleCase(e):e,je={day:e=>_e(e.dayName()),\"day-short\":e=>_e(we.short()[e.day()]),\"day-number\":e=>e.day(),\"day-ordinal\":e=>E.ordinal(e.day()),\"day-pad\":e=>E.zeroPad(e.day()),date:e=>e.date(),\"date-ordinal\":e=>E.ordinal(e.date()),\"date-pad\":e=>E.zeroPad(e.date()),month:e=>_e(e.monthName()),\"month-short\":e=>_e(N.short()[e.month()]),\"month-number\":e=>e.month(),\"month-ordinal\":e=>E.ordinal(e.month()),\"month-pad\":e=>E.zeroPad(e.month()),\"iso-month\":e=>E.zeroPad(e.month()+1),year:e=>{let t=e.year();return t>0?t:(t=Math.abs(t),t+\" BC\")},\"year-short\":e=>{let t=e.year();return t>0?\"'\"+String(e.year()).substr(2,4):(t=Math.abs(t),t+\" BC\")},\"iso-year\":e=>{let t=e.year(),a=t<0,n=E.zeroPad(Math.abs(t),4);return a&&(n=E.zeroPad(n,6),n=\"-\"+n),n},time:e=>e.time(),\"time-24\":e=>`${e.hour24()}:${E.zeroPad(e.minute())}`,hour:e=>e.hour12(),\"hour-pad\":e=>E.zeroPad(e.hour12()),\"hour-24\":e=>e.hour24(),\"hour-24-pad\":e=>E.zeroPad(e.hour24()),minute:e=>e.minute(),\"minute-pad\":e=>E.zeroPad(e.minute()),second:e=>e.second(),\"second-pad\":e=>E.zeroPad(e.second()),millisecond:e=>e.millisecond(),\"millisecond-pad\":e=>E.zeroPad(e.millisecond(),3),ampm:e=>e.ampm(),quarter:e=>\"Q\"+e.quarter(),season:e=>e.season(),era:e=>e.era(),json:e=>e.json(),timezone:e=>e.timezone().name,offset:e=>ze(e),numeric:e=>`${e.year()}/${E.zeroPad(e.month()+1)}/${E.zeroPad(e.date())}`,\"numeric-us\":e=>`${E.zeroPad(e.month()+1)}/${E.zeroPad(e.date())}/${e.year()}`,\"numeric-uk\":e=>`${E.zeroPad(e.date())}/${E.zeroPad(e.month()+1)}/${e.year()}`,\"mm/dd\":e=>`${E.zeroPad(e.month()+1)}/${E.zeroPad(e.date())}`,iso:e=>`${e.format(\"iso-year\")}-${E.zeroPad(e.month()+1)}-${E.zeroPad(e.date())}T${E.zeroPad(e.h24())}:${E.zeroPad(e.minute())}:${E.zeroPad(e.second())}.${E.zeroPad(e.millisecond(),3)}${ze(e)}`,\"iso-short\":e=>{let t=E.zeroPad(e.month()+1),a=E.zeroPad(e.date());var n;return`${(n=e.year())>=0?E.zeroPad(n,4):(n=Math.abs(n),\"-\"+E.zeroPad(n,4))}-${t}-${a}`},\"iso-utc\":e=>new Date(e.epoch).toISOString(),nice:e=>`${N.short()[e.month()]} ${E.ordinal(e.date())}, ${e.time()}`,\"nice-24\":e=>`${N.short()[e.month()]} ${E.ordinal(e.date())}, ${e.hour24()}:${E.zeroPad(e.minute())}`,\"nice-year\":e=>`${N.short()[e.month()]} ${E.ordinal(e.date())}, ${e.year()}`,\"nice-day\":e=>`${we.short()[e.day()]} ${_e(N.short()[e.month()])} ${E.ordinal(e.date())}`,\"nice-full\":e=>`${e.dayName()} ${_e(e.monthName())} ${E.ordinal(e.date())}, ${e.time()}`,\"nice-full-24\":e=>`${e.dayName()} ${_e(e.monthName())} ${E.ordinal(e.date())}, ${e.hour24()}:${E.zeroPad(e.minute())}`},Oe={\"day-name\":\"day\",\"month-name\":\"month\",\"iso 8601\":\"iso\",\"time-h24\":\"time-24\",\"time-12\":\"time\",\"time-h12\":\"time\",tz:\"timezone\",\"day-num\":\"day-number\",\"month-num\":\"month-number\",\"month-iso\":\"iso-month\",\"year-iso\":\"iso-year\",\"nice-short\":\"nice\",\"nice-short-24\":\"nice-24\",mdy:\"numeric-us\",dmy:\"numeric-uk\",ymd:\"numeric\",\"yyyy/mm/dd\":\"numeric\",\"mm/dd/yyyy\":\"numeric-us\",\"dd/mm/yyyy\":\"numeric-us\",\"little-endian\":\"numeric-uk\",\"big-endian\":\"numeric\",\"day-nice\":\"nice-day\"};Object.keys(Oe).forEach(e=>je[e]=je[Oe[e]]);var $e=(e,t=\"\")=>{if(!0!==e.isValid())return\"\";if(je.hasOwnProperty(t)){let a=je[t](e)||\"\";return\"json\"!==t&&(a=String(a),\"ampm\"!==t&&(a=_e(a))),a}if(-1!==t.indexOf(\"{\")){let a=/\\{(.+?)\\}/g;return t=t.replace(a,(t,a)=>{if(a=a.toLowerCase().trim(),je.hasOwnProperty(a)){let t=String(je[a](e));return\"ampm\"!==a?_e(t):t}return\"\"})}return e.format(\"iso-short\")};const De=E.zeroPad,Me=E.formatTimezone,Pe={G:e=>e.era(),GG:e=>e.era(),GGG:e=>e.era(),GGGG:e=>\"AD\"===e.era()?\"Anno Domini\":\"Before Christ\",y:e=>e.year(),yy:e=>parseInt(String(e.year()).substr(2,4),10),yyy:e=>e.year(),yyyy:e=>e.year(),yyyyy:e=>\"0\"+e.year(),Q:e=>e.quarter(),QQ:e=>e.quarter(),QQQ:e=>e.quarter(),QQQQ:e=>e.quarter(),M:e=>e.month()+1,MM:e=>De(e.month()+1),MMM:e=>e.format(\"month-short\"),MMMM:e=>e.format(\"month\"),w:e=>e.week(),ww:e=>De(e.week()),d:e=>e.date(),dd:e=>De(e.date()),D:e=>e.dayOfYear(),DD:e=>De(e.dayOfYear()),DDD:e=>De(e.dayOfYear(),3),E:e=>e.format(\"day-short\"),EE:e=>e.format(\"day-short\"),EEE:e=>e.format(\"day-short\"),EEEE:e=>e.format(\"day\"),EEEEE:e=>e.format(\"day\")[0],e:e=>e.day(),ee:e=>e.day(),eee:e=>e.format(\"day-short\"),eeee:e=>e.format(\"day\"),eeeee:e=>e.format(\"day\")[0],a:e=>e.ampm().toUpperCase(),aa:e=>e.ampm().toUpperCase(),aaa:e=>e.ampm().toUpperCase(),aaaa:e=>e.ampm().toUpperCase(),h:e=>e.h12(),hh:e=>De(e.h12()),H:e=>e.hour(),HH:e=>De(e.hour()),m:e=>e.minute(),mm:e=>De(e.minute()),s:e=>e.second(),ss:e=>De(e.second()),SSS:e=>De(e.millisecond(),3),A:e=>e.epoch-e.startOf(\"day\").epoch,z:e=>e.timezone().name,zz:e=>e.timezone().name,zzz:e=>e.timezone().name,zzzz:e=>e.timezone().name,Z:e=>Me(e.timezone().current.offset),ZZ:e=>Me(e.timezone().current.offset),ZZZ:e=>Me(e.timezone().current.offset),ZZZZ:e=>Me(e.timezone().current.offset,\":\")},Se=(e,t,a)=>{let n=e,r=t;for(let o=0;o{let a=t.split(\"\");return a=function(e){for(let t=0;te)}(a),a=function(e){for(let t=0;te)).map(e=>(\"''\"===e&&(e=\"'\"),e))}(a),a.reduce((t,a)=>(void 0!==Pe[a]?t+=Pe[a](e)||\"\":(/^'.{1,}'$/.test(a)&&(a=a.replace(/'/g,\"\")),t+=a),t),\"\")};const Te=[\"year\",\"season\",\"quarter\",\"month\",\"week\",\"day\",\"quarterHour\",\"hour\",\"minute\"],Ee=function(e,t){let a=e.clone().startOf(t),n=e.clone().endOf(t).epoch-a.epoch,r=(e.epoch-a.epoch)/n;return parseFloat(r.toFixed(2))};var Ne=(e,t)=>{if(t)return t=E.normalize(t),Ee(e,t);let a={};return Te.forEach(t=>{a[t]=Ee(e,t)}),a};var Ce=(e,t)=>{let a=e.progress();return\"quarterhour\"===(t=E.normalize(t))&&(t=\"quarterHour\"),void 0!==a[t]?(a[t]>.5&&(e=e.add(1,t)),e=e.startOf(t)):!1===e.silent&&console.warn(\"no known unit '\"+t+\"'\"),e};const Ie=(e,t,a)=>{let n=0;for(e=e.clone();e.isBefore(t);)e=e.add(1,a),n+=1;return e.isAfter(t,a)&&(n-=1),n};var Ye=(e,t,a)=>e.isBefore(t)?Ie(e,t,a):-1*Ie(t,e,a);var Ae=function(e,t){let a=t.epoch-e.epoch,n={milliseconds:a,seconds:parseInt(a/1e3,10)};n.minutes=parseInt(n.seconds/60,10),n.hours=parseInt(n.minutes/60,10);let r=e.clone();return n.years=((e,t)=>{let a=t.year()-e.year();return(e=e.year(t.year())).isAfter(t)&&(a-=1),a})(r,t),r=e.add(n.years,\"year\"),n.months=12*n.years,r=e.add(n.months,\"month\"),n.months+=Ye(r,t,\"month\"),n.weeks=52*n.years,r=e.add(n.weeks,\"week\"),n.weeks+=Ye(r,t,\"week\"),n.days=7*n.weeks,r=e.add(n.days,\"day\"),n.days+=Ye(r,t,\"day\"),n};var xe=function(e,t,a){t=E.beADate(t,e);let n=!1;if(e.isAfter(t)){let a=e;e=t,t=a,n=!0}let r=Ae(e,t);return n&&(r=function(e){return Object.keys(e).forEach(t=>{e[t]*=-1}),e}(r)),a?(a=E.normalize(a),!0!==/s$/.test(a)&&(a+=\"s\"),\"dates\"===a&&(a=\"days\"),r[a]):r};const Le={months:{almost:10,over:4},days:{almost:25,over:10},hours:{almost:20,over:8},minutes:{almost:50,over:20},seconds:{almost:50,over:20}};function Fe(e,t){return 1===e&&(t=t.slice(0,-1)),e+\" \"+t}var Be=(e,t)=>{const a=function(e,t){const a=e.isBefore(t),n=a?t:e;let r=a?e:t;r=r.clone();const o={years:0,months:0,days:0,hours:0,minutes:0,seconds:0};return Object.keys(o).forEach(e=>{if(r.isSame(n,e))return;let t=r.diff(n,e);r=r.add(t,e),o[e]=t}),a&&Object.keys(o).forEach(e=>{0!==o[e]&&(o[e]*=-1)}),o}(e,t=E.beADate(t,e));if(!0===Object.keys(a).every(e=>!a[e]))return{diff:a,rounded:\"now\",qualified:\"now\",precise:\"now\"};let n,r,o,i=[];return Object.keys(a).forEach((e,t,o)=>{const s=Math.abs(a[e]);if(0===s)return;const u=Fe(s,e);if(i.push(u),!n){if(n=r=u,t>4)return;const i=o[t+1],l=Math.abs(a[i]);l>Le[i].almost?(n=Fe(s+1,e),r=\"almost \"+n):l>Le[i].over&&(r=\"over \"+u)}}),o=i.splice(0,2).join(\", \"),!0===e.isAfter(t)?(n+=\" ago\",r+=\" ago\",o+=\" ago\"):(n=\"in \"+n,r=\"in \"+r,o=\"in \"+o),{diff:a,rounded:n,qualified:r,precise:o}},Ze={north:[[\"spring\",2,1],[\"summer\",5,1],[\"fall\",8,1],[\"autumn\",8,1],[\"winter\",11,1]],south:[[\"fall\",2,1],[\"autumn\",2,1],[\"winter\",5,1],[\"spring\",8,1],[\"summer\",11,1]]},He=[null,[0,1],[3,1],[6,1],[9,1]];const Qe={minute:e=>(x(e,{second:0,millisecond:0}),e),quarterhour:e=>{let t=e.minutes();return e=t>=45?e.minutes(45):t>=30?e.minutes(30):t>=15?e.minutes(15):e.minutes(0),x(e,{second:0,millisecond:0}),e},hour:e=>(x(e,{minute:0,second:0,millisecond:0}),e),day:e=>(x(e,{hour:0,minute:0,second:0,millisecond:0}),e),week:e=>{let t=e.clone();return(e=e.day(e._weekStart)).isAfter(t)&&(e=e.subtract(1,\"week\")),x(e,{hour:0,minute:0,second:0,millisecond:0}),e},month:e=>(x(e,{date:1,hour:0,minute:0,second:0,millisecond:0}),e),quarter:e=>{let t=e.quarter();return He[t]&&x(e,{month:He[t][0],date:He[t][1],hour:0,minute:0,second:0,millisecond:0}),e},season:e=>{let t=e.season(),a=\"north\";\"South\"===e.hemisphere()&&(a=\"south\");for(let n=0;n(x(e,{month:0,date:1,hour:0,minute:0,second:0,millisecond:0}),e),decade:e=>{let t=(e=e.startOf(\"year\")).year(),a=10*parseInt(t/10,10);return e=e.year(a)},century:e=>{let t=(e=e.startOf(\"year\")).year(),a=100*parseInt(t/100,10);return e=e.year(a)}};Qe.date=Qe.day;var Ge=g;var Ue=$e,Ve=qe,We=Ne,Je=Ce,Ke=xe,Re=Be,Xe={startOf:(e,t)=>{let a=e.clone();return t=E.normalize(t),Qe[t]?Qe[t](a):\"summer\"===t||\"winter\"===t?(a=a.season(t),Qe.season(a)):a},endOf:(e,t)=>{let a=e.clone();return t=E.normalize(t),Qe[t]?(a=Qe[t](a),a=a.add(1,t),a=a.subtract(1,\"millisecond\"),a):a}},et=function(e,t=\"\",a){if(!t||!a)return[];if(t=E.normalize(t),a=e.clone().set(a),e.isAfter(a)){let t=e;e=a,a=t}let n=e.clone();!function(e){return!!we.short().find(t=>t===e)||!!we.long().find(t=>t===e)}(t)?n=n.next(t):(n=n.next(t),t=\"week\");let r=[];for(;n.isBefore(a);)r.push(n),n=n.add(1,t);return r},tt=e=>{let a=e.timezones,n=e.tz;if(!1===a.hasOwnProperty(n)&&(n=Ge(e.tz,a)),null===n)return!1===e.silent&&console.warn(\"Warn: could not find given or local timezone - '\"+e.tz+\"'\"),{current:{epochShift:0}};let r=a[n],o={name:(i=n,i=(i=(i=i[0].toUpperCase()+i.substr(1)).replace(/\\/gmt/,\"/GMT\")).replace(/[\\/_]([a-z])/gi,e=>e.toUpperCase())),hasDst:Boolean(r.dst),default_offset:r.offset,hemisphere:\"s\"===r.hem?\"South\":\"North\",current:{}};var i,s;if(o.hasDst){let e=(s=r.dst)?s.split(\"->\"):[];o.change={start:e[0],back:e[1]}}let u=r.offset,l=u;return!0===o.hasDst&&(l=\"North\"===o.hemisphere?u-1:r.offset+1),!1===o.hasDst?(o.current.offset=u,o.current.isDST=!1):!0===t(e.epoch,o.change.start,o.change.back,u,l)?(o.current.offset=u,o.current.isDST=\"North\"===o.hemisphere):(o.current.offset=l,o.current.isDST=\"South\"===o.hemisphere),o},at=ye;const nt=[\"century\",\"decade\",\"year\",\"month\",\"date\",\"day\",\"hour\",\"minute\",\"second\",\"millisecond\"],rt={set:function(e,t){let a=this.clone();return a=at(a,e,null),t&&(this.tz=Ge(t)),a},timezone:function(){return tt(this)},isDST:function(){return tt(this).current.isDST},hasDST:function(){return tt(this).hasDst},offset:function(){return 60*tt(this).current.offset},hemisphere:function(){return tt(this).hemisphere},format:function(e){return Ue(this,e)},unixFmt:function(e){return Ve(this,e)},startOf:function(e){return Xe.startOf(this,e)},endOf:function(e){return Xe.endOf(this,e)},leapYear:function(){let e=this.year();return E.isLeapYear(e)},progress:function(e){return We(this,e)},nearest:function(e){return Je(this,e)},diff:function(e,t){return Ke(this,e,t)},since:function(e){return e||(e=this.clone().set()),Re(this,e)},next:function(e){return this.add(1,e).startOf(e)},last:function(e){return this.subtract(1,e).startOf(e)},isValid:function(){return!(!this.epoch&&0!==this.epoch)&&!isNaN(this.d.getTime())},goto:function(e){let t=this.clone();return t.tz=Ge(e,t.timezones),t},every:function(e,t){if(\"object\"==typeof e&&\"string\"==typeof t){let a=t;t=e,e=a}return et(this,e,t)},isAwake:function(){let e=this.hour();return!(e<8||e>22)},isAsleep:function(){return!this.isAwake()},daysInMonth:function(){switch(this.month()){case 0:return 31;case 1:return this.leapYear()?29:28;case 2:return 31;case 3:return 30;case 4:return 31;case 5:return 30;case 6:case 7:return 31;case 8:return 30;case 9:return 31;case 10:return 30;case 11:return 31;default:throw new Error(\"Invalid Month state.\")}},log:function(){return console.log(\"\"),console.log(Ue(this,\"nice-short\")),this},logYear:function(){return console.log(\"\"),console.log(Ue(this,\"full-short\")),this},json:function(){return nt.reduce((e,t)=>(e[t]=this[t](),e),{})},debug:function(){let e=this.timezone(),t=this.format(\"MM\")+\" \"+this.format(\"date-ordinal\")+\" \"+this.year();return t+=\"\\n - \"+this.format(\"time\"),console.log(\"\\n\\n\",t+\"\\n - \"+e.name+\" (\"+e.current.offset+\")\"),this},from:function(e){return(e=this.clone().set(e)).since(this)},fromNow:function(){return this.clone().set(Date.now()).since(this)},weekStart:function(e){if(\"number\"==typeof e)return this._weekStart=e,this;if(\"string\"==typeof e){e=e.toLowerCase().trim();let t=we.short().indexOf(e);-1===t&&(t=we.long().indexOf(e)),-1===t&&(t=1),this._weekStart=t}else console.warn(\"Spacetime Error: Cannot understand .weekStart() input:\",e);return this}};rt.inDST=rt.isDST,rt.round=rt.nearest,rt.each=rt.every;var ot=rt;const it=E.isLeapYear,st=e=>(\"string\"==typeof e&&(e=parseInt(e,10)),e),ut=[\"year\",\"month\",\"date\",\"hour\",\"minute\",\"second\",\"millisecond\"],lt=(e,t,a)=>{let n=ut.indexOf(a),r=ut.slice(n,ut.length);for(let a=0;a{t=st(t);let a=e.millisecond()-t;return e.epoch-a},seconds:(e,t,a)=>{t=st(t);let n=e.clone(),r=(e.second()-t)*$.second;return e.epoch=e.epoch-r,(e=ht(e,n,a,\"minute\")).epoch},minutes:(e,t,a)=>{t=st(t);let n=e.clone(),r=(e.minute()-t)*$.minute;return e.epoch-=r,lt(e,n,\"second\"),(e=ht(e,n,a,\"hour\")).epoch},hours:(e,t,a)=>{(t=st(t))>=24?t=24:t<0&&(t=0);let n=e.clone(),r=e.hour()-t,o=r*$.hour;return e.epoch-=o,e.date()!==n.date()&&(e=n.clone(),r>1&&(r-=1),r<1&&(r+=1),o=r*$.hour,e.epoch-=o),x(e,{hour:t}),lt(e,n,\"minute\"),(e=ht(e,n,a,\"day\")).epoch},time:(e,t,a)=>{let n=t.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/);if(!n){if(n=t.match(/([0-9]{1,2}) ?(am|pm)/),!n)return e.epoch;n.splice(2,0,\"0\"),n.splice(3,0,\"\")}let r=!1,o=parseInt(n[1],10),i=parseInt(n[2],10);i>=60&&(i=59),o>12&&(r=!0),!1===r&&(\"am\"===n[4]&&12===o&&(o=0),\"pm\"===n[4]&&o<12&&(o+=12)),n[3]=n[3]||\"\",n[3]=n[3].replace(/:/,\"\");let s=parseInt(n[3],10)||0,u=e.clone();return e=(e=(e=(e=e.hour(o)).minute(i)).second(s)).millisecond(0),(e=ht(e,u,a,\"day\")).epoch},date:(e,t,a)=>{if((t=st(t))>28){let a=e.month(),n=T[a];1===a&&29===t&&it(e.year())&&(n=29),t>n&&(t=n)}t<=0&&(t=1);let n=e.clone();return x(e,{date:t}),(e=ht(e,n,a,\"month\")).epoch},month:(e,t,a)=>{\"string\"==typeof t&&(t=N.mapping()[t.toLowerCase()]),(t=st(t))>=12&&(t=11),t<=0&&(t=0);let n=e.date();n>T[t]&&(n=T[t]);let r=e.clone();return x(e,{month:t,date:n}),(e=ht(e,r,a,\"year\")).epoch},year:(e,t)=>(\"string\"==typeof t&&/^'[0-9]{2}$/.test(t)&&(t=t.replace(/'/,\"\").trim(),t=(t=Number(t))>30?1900+t:2e3+t),t=st(t),x(e,{year:t}),e.epoch),week:(e,t,a)=>{let n=e.clone();return t=st(t),\"december\"===(e=(e=(e=e.month(0)).date(1)).day(\"monday\")).monthName()&&e.date()>=28&&(e=e.add(1,\"week\")),t-=1,e=e.add(t,\"weeks\"),(e=ht(e,n,a,\"year\")).epoch},dayOfYear:(e,t,a)=>{t=st(t);let n=e.clone();return(t-=1)<=0?t=0:t>=365&&(t=364),e=(e=e.startOf(\"year\")).add(t,\"day\"),lt(e,n,\"hour\"),(e=ht(e,n,a,\"year\")).epoch}};const dt=e=>e=(e=(e=e.minute(0)).second(0)).millisecond(1);var mt={millisecond:function(e){if(void 0!==e){let t=this.clone();return t.epoch=ct.milliseconds(t,e),t}return this.d.getMilliseconds()},second:function(e,t){if(void 0!==e){let a=this.clone();return a.epoch=ct.seconds(a,e,t),a}return this.d.getSeconds()},minute:function(e,t){if(void 0!==e){let a=this.clone();return a.epoch=ct.minutes(a,e,t),a}return this.d.getMinutes()},hour:function(e,t){let a=this.d;if(void 0!==e){let a=this.clone();return a.epoch=ct.hours(a,e,t),a}return a.getHours()},hourFloat:function(e,t){if(void 0!==e){let a=this.clone(),n=e%1;n*=60;let r=parseInt(e,10);return a.epoch=ct.hours(a,r,t),a.epoch=ct.minutes(a,n,t),a}let a=this.d,n=a.getHours(),r=a.getMinutes();return r/=60,n+r},hour12:function(e,t){let a=this.d;if(void 0!==e){let a=this.clone(),n=(e=\"\"+e).match(/^([0-9]+)(am|pm)$/);if(n){let e=parseInt(n[1],10);\"pm\"===n[2]&&(e+=12),a.epoch=ct.hours(a,e,t)}return a}let n=a.getHours();return n>12&&(n-=12),0===n&&(n=12),n},time:function(e,t){if(void 0!==e){let a=this.clone();return e=e.toLowerCase().trim(),a.epoch=ct.time(a,e,t),a}return`${this.h12()}:${E.zeroPad(this.minute())}${this.ampm()}`},ampm:function(e,t){let a=\"am\",n=this.hour();if(n>=12&&(a=\"pm\"),\"string\"!=typeof e)return a;let r=this.clone();return e=e.toLowerCase().trim(),n>=12&&\"am\"===e?(n-=12,r.hour(n,t)):n<12&&\"pm\"===e?(n+=12,r.hour(n,t)):r},dayTime:function(e,t){if(void 0!==e){const a={morning:\"7:00am\",breakfast:\"7:00am\",noon:\"12:00am\",lunch:\"12:00pm\",afternoon:\"2:00pm\",evening:\"6:00pm\",dinner:\"6:00pm\",night:\"11:00pm\",midnight:\"23:59pm\"};let n=this.clone();return e=(e=e||\"\").toLowerCase(),!0===a.hasOwnProperty(e)&&(n=n.time(a[e],t)),n}let a=this.hour();return a<6?\"night\":a<12?\"morning\":a<17?\"afternoon\":a<22?\"evening\":\"night\"},iso:function(e){return void 0!==e?this.set(e):this.format(\"iso\")}},pt={date:function(e,t){if(void 0!==e){let a=this.clone();return(e=parseInt(e,10))&&(a.epoch=ct.date(a,e,t)),a}return this.d.getDate()},day:function(e,t){if(void 0===e)return this.d.getDay();let a=this.clone(),n=e;\"string\"==typeof e&&(e=e.toLowerCase(),we.aliases.hasOwnProperty(e)?n=we.aliases[e]:(n=we.short().indexOf(e),-1===n&&(n=we.long().indexOf(e))));let r=this.d.getDay()-n;!0===t&&r>0&&(r-=7),!1===t&&r<0&&(r+=7);let o=this.subtract(r,\"days\");return x(o,{hour:a.hour(),minute:a.minute(),second:a.second()}),o},dayName:function(e,t){if(void 0===e)return we.long()[this.day()];let a=this.clone();return a=a.day(e,t),a}},ft={dayOfYear:function(e,t){if(void 0!==e){let a=this.clone();return a.epoch=ct.dayOfYear(a,e,t),a}let a,n=0,r=this.d.getMonth();for(let e=1;e<=r;e++)a=new Date,a.setDate(1),a.setFullYear(this.d.getFullYear()),a.setHours(1),a.setMinutes(1),a.setMonth(e),a.setHours(-2),n+=a.getDate();return n+this.d.getDate()},week:function(e,t){if(void 0!==e){let a=this.clone();return a.epoch=ct.week(this,e,t),a=dt(a),a}let a=this.clone();a=a.month(0),a=a.date(1),a=dt(a),a=a.day(\"monday\"),\"december\"===a.monthName()&&a.date()>=28&&(a=a.add(1,\"week\"));let n=1;1===a.date()&&(n=0),a=a.minus(1,\"second\");const r=this.epoch;if(a.epoch>r)return 1;let o=0,i=4*this.month();for(a.epoch+=$.week*i,o+=i;o<=52;o++){if(a.epoch>r)return o+n;a=a.add(1,\"week\")}return 52},month:function(e,t){if(void 0!==e){let a=this.clone();return a.epoch=ct.month(a,e,t),a}return this.d.getMonth()},monthName:function(e,t){if(void 0!==e){let a=this.clone();return a=a.month(e,t),a}return N.long()[this.month()]},quarter:function(e,t){if(void 0!==e&&(\"string\"==typeof e&&(e=e.replace(/^q/i,\"\"),e=parseInt(e,10)),He[e])){let a=this.clone(),n=He[e][0];return a=a.month(n,t),a=a.date(1,t),a=a.startOf(\"day\"),a}let a=this.d.getMonth();for(let e=1;e=Ze[a][e][1]&&n0&&(t.epoch=ct.year(t,-1*a)),\"ad\"===e&&a<0&&(t.epoch=ct.year(t,-1*a)),t}return this.d.getFullYear()<0?\"BC\":\"AD\"},decade:function(e){if(void 0!==e){if(!(e=(e=(e=String(e)).replace(/([0-9])'?s$/,\"$1\")).replace(/([0-9])(th|rd|st|nd)/,\"$1\")))return console.warn(\"Spacetime: Invalid decade input\"),this;2===e.length&&/[0-9][0-9]/.test(e)&&(e=\"19\"+e);let t=Number(e);return isNaN(t)?this:(t=10*Math.floor(t/10),this.year(t))}return this.startOf(\"decade\").year()},century:function(e){if(void 0!==e){\"string\"==typeof e&&(e=(e=(e=e.replace(/([0-9])(th|rd|st|nd)/,\"$1\")).replace(/([0-9]+) ?(b\\.?c\\.?|a\\.?d\\.?)/i,(e,t,a)=>(a.match(/b\\.?c\\.?/i)&&(t=\"-\"+t),t))).replace(/c$/,\"\"));let t=Number(e);return isNaN(e)?(console.warn(\"Spacetime: Invalid century input\"),this):(0===t&&(t=1),t=t>=0?100*(t-1):100*(t+1),this.year(t))}let t=this.startOf(\"century\").year();return t=Math.floor(t/100),t<0?t-1:t+1},millenium:function(e){if(void 0!==e){if(\"string\"==typeof e&&(e=e.replace(/([0-9])(th|rd|st|nd)/,\"$1\"),e=Number(e),isNaN(e)))return console.warn(\"Spacetime: Invalid millenium input\"),this;e>0&&(e-=1);let t=1e3*e;return 0===t&&(t=1),this.year(t)}let t=Math.floor(this.year()/1e3);return t>=0&&(t+=1),t}};const yt=Object.assign({},mt,pt,ft);yt.milliseconds=yt.millisecond,yt.seconds=yt.second,yt.minutes=yt.minute,yt.hours=yt.hour,yt.hour24=yt.hour,yt.h12=yt.hour12,yt.h24=yt.hour24,yt.days=yt.day;var gt=e=>{Object.keys(yt).forEach(t=>{e.prototype[t]=yt[t]})};const bt=E.isLeapYear,kt=function(e,t){return 1===e&&bt(t)?29:T[e]};var wt={months:(e,t)=>{if(e.month>0){let a=parseInt(e.month/12,10);e.year=t.year()+a,e.month=e.month%12}else if(e.month<0){let a=Math.floor(Math.abs(e.month)/13,10);a=Math.abs(a)+1,e.year=t.year()-a,e.month=e.month%12,e.month=e.month+12,12===e.month&&(e.month=0)}return e},days:(e,t,a)=>{let n=t.year(),r=t.month(),o=kt(r,n);for(;a>o;)a-=o,r+=1,r>=12&&(r-=12,n+=1),o=kt(r,n);return e.month=r,e.date=a,e},daysBack:(e,t,a)=>{e.year=t.year(),e.month=t.month();let n=t.date();for(e.date=n-Math.abs(a);e.date<1;){e.month-=1,e.month<0&&(e.month=11,e.year-=1);let t=kt(e.month,e.year);e.date+=t}return e}};const vt=[\"millisecond\",\"second\",\"minute\",\"hour\",\"date\",\"month\"];let zt={second:vt.slice(0,1),minute:vt.slice(0,2),quarterhour:vt.slice(0,2),hour:vt.slice(0,3),date:vt.slice(0,4),month:vt.slice(0,4),quarter:vt.slice(0,4),season:vt.slice(0,4),year:vt,decade:vt,century:vt};zt.week=zt.hour,zt.season=zt.date,zt.quarter=zt.date;const _t={year:!0,quarter:!0,season:!0,month:!0,week:!0,date:!0},jt={month:!0,quarter:!0,season:!0,year:!0};var Ot=e=>{e.prototype.add=function(e,t){let a=this.clone();if(!t||0===e)return a;let n=this.clone();if(\"millisecond\"===(t=E.normalize(t)))return a.epoch+=e,a;\"fortnight\"===t&&(e*=2,t=\"week\"),$[t]?a.epoch+=$[t]*e:\"week\"===t||\"weekend\"===t?a.epoch+=$.day*(7*e):\"quarter\"===t||\"season\"===t?a.epoch+=$.month*(3*e):\"quarterhour\"===t&&(a.epoch+=15*$.minute*e);let r={};if(zt[t]&&zt[t].forEach(e=>{r[e]=n[e]()}),_t[t]){const e=n.timezone().current.offset-a.timezone().current.offset;a.epoch+=3600*e*1e3}if(\"month\"===t&&(r.month=n.month()+e,r=wt.months(r,n)),\"week\"===t){let t=n.date()+7*e;t<=28&&t>1&&(r.date=t)}if(\"weekend\"===t&&\"saturday\"!==a.dayName())a=a.day(\"saturday\",!0);else if(\"date\"===t){if(e<0)r=wt.daysBack(r,n,e);else{let t=n.date()+e;r=wt.days(r,n,t)}0!==e&&n.isSame(a,\"day\")&&(r.date=n.date()+e)}else if(\"quarter\"===t){if(r.month=n.month()+3*e,r.year=n.year(),r.month<0){let e=Math.floor(r.month/12),t=r.month+12*Math.abs(e);r.month=t,r.year+=e}else if(r.month>=12){let e=Math.floor(r.month/12);r.month=r.month%12,r.year+=e}r.date=n.date()}else if(\"year\"===t){let t=n.year()+e,r=a.year();if(rt){let t=Math.floor(e/4)||1;a.epoch+=$.day*t}}else\"decade\"===t?r.year=a.year()+10:\"century\"===t&&(r.year=a.year()+100);if(jt[t]){let e=T[r.month];r.date=n.date(),r.date>e&&(r.date=e)}return Object.keys(r).length>1&&x(a,r),a},e.prototype.subtract=function(e,t){return this.clone().add(-1*e,t)},e.prototype.minus=e.prototype.subtract,e.prototype.plus=e.prototype.add};const $t={millisecond:e=>e.epoch,second:e=>[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second()].join(\"-\"),minute:e=>[e.year(),e.month(),e.date(),e.hour(),e.minute()].join(\"-\"),hour:e=>[e.year(),e.month(),e.date(),e.hour()].join(\"-\"),day:e=>[e.year(),e.month(),e.date()].join(\"-\"),week:e=>[e.year(),e.week()].join(\"-\"),month:e=>[e.year(),e.month()].join(\"-\"),quarter:e=>[e.year(),e.quarter()].join(\"-\"),year:e=>e.year()};$t.date=$t.day;var Dt=e=>{const t={isAfter:function(e){e=E.beADate(e,this);let t=E.getEpoch(e);return null===t?null:this.epoch>t},isBefore:function(e){e=E.beADate(e,this);let t=E.getEpoch(e);return null===t?null:this.epoch{e.prototype[a]=t[a]})};var Mt=e=>{const t={i18n:e=>{E.isObject(e.days)&&we.set(e.days),E.isObject(e.months)&&N.set(e.months),E.isBoolean(e.useTitleCase)&&ve.set(e.useTitleCase)}};Object.keys(t).forEach(a=>{e.prototype[a]=t[a]})},Pt=a,St=ot,qt=gt,Tt=Ot,Et=e=>{e.prototype.isSame=function(t,a,n=!0){let r=this;if(!a)return null;if(\"string\"==typeof t&&\"object\"==typeof a){let e=t;t=a,a=e}return\"string\"!=typeof t&&\"number\"!=typeof t||(t=new e(t,this.timezone.name)),a=a.replace(/s$/,\"\"),!0===n&&r.tz!==t.tz&&((t=t.clone()).tz=r.tz),$t[a]?$t[a](r)===$t[a](t):null}},Nt=Dt,Ct=Mt;let It=d;const Yt=function(e,t,a={}){this.epoch=null,this.tz=Ge(t,It),this.silent=a.silent||!0,this.british=a.dmy||a.british,this._weekStart=1,void 0!==a.weekStart&&(this._weekStart=a.weekStart),this._today={},void 0!==a.today&&(this._today=a.today),Object.defineProperty(this,\"d\",{get:function(){let e=Pt(this),t=(new Date(this.epoch).getTimezoneOffset()||0)+60*e;t=60*t*1e3;let a=this.epoch+t;return new Date(a)}}),Object.defineProperty(this,\"timezones\",{get:()=>It,set:e=>(It=e,e)});let n=at(this,e);this.epoch=n.epoch};Object.keys(St).forEach(e=>{Yt.prototype[e]=St[e]}),Yt.prototype.clone=function(){return new Yt(this.epoch,this.tz,{silent:this.silent,weekStart:this._weekStart,today:this._today,parsers:this.parsers})},Yt.prototype.toLocalDate=function(){return this.toNativeDate()},Yt.prototype.toNativeDate=function(){return new Date(this.epoch)},qt(Yt),Tt(Yt),Et(Yt),Nt(Yt),Ct(Yt);var At=Yt;var xt=(e,t)=>{let a=new At(null),n=new At(null);a=a.time(e),n=t?n.time(t):a.add(59,\"minutes\");let r=a.hour(),o=n.hour();return Object.keys(a.timezones).filter(e=>{if(-1===e.indexOf(\"/\"))return!1;let t=new At(null,e),i=t.hour();return i>=r&&i<=o&&(!(i===r&&t.minute()n.minute()))})};const Lt=(e,t,a)=>new At(e,t,a),Ft=function(e){let t=e._today||{};return Object.keys(t).forEach(a=>{e=e[a](t[a])}),e};Lt.now=(e,t)=>{let a=new At((new Date).getTime(),e,t);return a=Ft(a),a},Lt.today=(e,t)=>{let a=new At((new Date).getTime(),e,t);return a=Ft(a),a.startOf(\"day\")},Lt.tomorrow=(e,t)=>{let a=new At((new Date).getTime(),e,t);return a=Ft(a),a.add(1,\"day\").startOf(\"day\")},Lt.yesterday=(e,t)=>{let a=new At((new Date).getTime(),e,t);return a=Ft(a),a.subtract(1,\"day\").startOf(\"day\")},Lt.extend=function(e={}){return Object.keys(e).forEach(t=>{At.prototype[t]=e[t]}),this},Lt.timezones=function(){return(new At).timezones},Lt.max=function(e,t){let a=new At(null,e,t);return a.epoch=864e13,a},Lt.min=function(e,t){let a=new At(null,e,t);return a.epoch=-864e13,a},Lt.whereIts=xt,Lt.version=\"6.16.3\",Lt.plugin=Lt.extend;var Bt=Lt;export{Bt as default};\n","const spacetime = require('spacetime')\n\nconst parseSentence = function (doc) {\n let s = doc.sentence()\n if (!s) {\n return null\n }\n let txt = s.text() || ''\n let paren = txt.match(/\\(.*\\)/)\n if (!paren || !paren[0]) {\n return null\n }\n txt = paren[0] || ''\n txt = txt.trim()\n txt = txt.replace(/^\\(/, '')\n txt = txt.replace(/\\)$/, '')\n let split = txt.split(/ – /)\n split = split.filter((str) => str)\n // got birth/death info\n if (split[0] && split[1] && split.length === 2) {\n return {\n birth: split[0],\n death: split[1],\n }\n }\n // try for just birth date in parentheses\n if (split[0]) {\n let str = split[0].replace(/^(born|ne) (c\\.)?/, '')\n let d = spacetime(str)\n if (d.isValid()) {\n return {\n birth: str,\n }\n }\n }\n return null\n}\nmodule.exports = parseSentence\n","const byCategory = function (doc) {\n let cats = doc.categories()\n for (let i = 0; i < cats.length; i += 1) {\n let m = cats[i].match(/([0-9]{4}) births/)\n if (m && m[1]) {\n let year = parseInt(m[1], 10)\n if (year && year > 1000) {\n return year\n }\n }\n }\n return null\n}\nmodule.exports = byCategory\n","const spacetime = require('spacetime')\n\nconst parseDate = function (str) {\n if (!str) {\n return null\n }\n // remove parentheses\n str = str.replace(/\\(.*\\)/, '')\n str = str.trim()\n // just the year\n if (str.match(/^[0-9]{4}$/)) {\n return {\n year: parseInt(str, 10),\n }\n }\n // parse the full date\n let s = spacetime(str)\n return {\n year: s.year(),\n month: s.month(),\n date: s.date(),\n }\n}\nmodule.exports = parseDate\n","const byInfobox = require('../getInfobox')\nconst bySentence = require('../getSentence')\nconst byCategory = require('./byCategory')\nconst parseDate = require('../parseDate')\n\nconst birthDate = function (doc) {\n let res = byInfobox(doc, 'birth_date')\n if (res) {\n return parseDate(res)\n }\n\n // try parentheses in first sentence\n res = bySentence(doc)\n if (res && res.birth) {\n return parseDate(res.birth)\n }\n\n // try to get year from 'Category:1955 births'\n let year = byCategory(doc)\n if (year) {\n return { year: year }\n }\n return null\n}\nmodule.exports = birthDate\n","const byInfobox = require('../getInfobox')\n\nconst birthPlace = function (doc) {\n let res = byInfobox(doc, 'birth_place')\n if (res) {\n return res\n }\n return null\n}\nmodule.exports = birthPlace\n","const aliveCats = {\n 'Living people': true,\n 'Year of birth missing (living people)': true,\n 'Date of birth missing (living people)': true,\n 'Place of birth missing (living people)': true,\n 'Active politicians': true,\n 'Biography articles of living people': true,\n}\n\nconst didDie = {\n 'Dead people': true,\n 'Date of death missing': true,\n 'Date of death unknown': true,\n 'Place of death missing': true,\n 'Place of death unknown': true,\n 'Year of death missing': true,\n 'Year of death unknown': true,\n 'Year of death uncertain': true,\n 'Recent deaths': true,\n 'People declared dead in absentia': true,\n 'Politicians elected posthumously': true,\n 'People who died in office': true,\n 'Assassinated heads of state‎ ': true,\n 'Assassinated heads of government': true,\n 'Assassinated mayors': true,\n 'People who died in Nazi concentration camps': true,\n 'People executed in Nazi concentration camps': true,\n 'Politicians who died in Nazi concentration camps': true,\n 'People who have received posthumous pardons': true,\n 'People lost at sea‎': true,\n 'Deaths due to shipwreck': true,\n 'People who died at sea': true,\n 'Unsolved deaths‎': true,\n 'Deaths by horse-riding accident‎': true,\n 'Deaths from falls‎': true,\n 'Deaths by poisoning‎‎': true,\n 'Deaths from cerebrovascular disease‎': true,\n 'Deaths from asphyxiation‎': true,\n 'Deaths from sepsis‎': true,\n 'Deaths from pneumonia‎': true,\n 'Deaths from dysentery‎‎': true,\n 'Deaths by drowning‎': true,\n}\n\nconst byCat = function (doc) {\n let cats = doc.categories()\n\n //confirmed alive categories\n if (cats.find((c) => aliveCats.hasOwnProperty(c))) {\n return true\n }\n //confirmed death categories\n if (cats.find((c) => didDie.hasOwnProperty(c))) {\n return false\n }\n return null\n}\nmodule.exports = byCat\n","// blp = biography of living persons\n\n// {{WikiProject Biography}} (with living=yes parameter)\n// {{WikiProject banner shell}} (with blp=y parameter)\n\nconst isAlive = {\n blp: true,\n 'blp unsourced': true,\n 'blp unsourced section': true,\n 'blp primary sources': true,\n 'blp self-published': true,\n 'blp sources': true,\n 'blp sources section': true,\n 'blp imdb-only refimprove': true,\n 'blp imdb refimprove': true,\n 'blp no footnotes': true,\n 'blp more footnotes': true,\n 'blp one source': true,\n 'active politician': true,\n activepol: true,\n 'current person': true,\n}\n\nconst isDead = {\n 'recent death': true,\n 'recent death presumed': true,\n 'recent death confirmed': true,\n obituary: true,\n elegy: true,\n eulogy: true,\n panegyric: true,\n memorial: true,\n}\nconst byTemplate = function (doc) {\n let templates = doc.templates().map((tmpl) => tmpl.json())\n for (let i = 0; i < templates.length; i++) {\n let title = templates[i].template || ''\n title = title.toLowerCase().trim()\n if (isAlive.hasOwnProperty(title)) {\n return true\n }\n if (isDead.hasOwnProperty(title)) {\n return false\n }\n }\n // `{{WikiProject Biography|living=yes|activepol=yes}}`\n let bio = doc.template('WikiProject Biography')\n if (bio) {\n bio = bio.json()\n //living blp BLP\n if (bio.living === 'yes' || bio.blp === 'yes' || bio.activepol === 'yes' || bio.BLP === 'yes') {\n return true\n }\n if (bio.living === 'no' || bio.blp === 'no' || bio.BLP === 'no') {\n return false\n }\n }\n return null\n}\nmodule.exports = byTemplate\n","const byCat = require('./byCategory')\nconst byTemplate = require('./byTemplate')\n\n// maximum age of a person\nlet d = new Date()\nconst minYear = d.getFullYear() - 105\n\nconst isAlive = function (doc) {\n // if we have a death date\n let death = doc.deathDate()\n if (death) {\n return false\n }\n // if we have a death place\n let deathPlace = doc.deathPlace()\n if (deathPlace) {\n return false\n }\n // does it have a good category?\n let fromCat = byCat(doc)\n if (fromCat === true || fromCat === false) {\n return fromCat\n }\n // does it have a good template?\n let fromTemplate = byTemplate(doc)\n if (fromTemplate === true || fromTemplate === false) {\n return fromTemplate\n }\n // were they born in 1900?\n let birth = doc.birthDate()\n if (birth && birth.year && birth.year < minYear) {\n return true\n }\n return null\n}\nmodule.exports = isAlive\n","const byCategory = function (doc) {\n let cats = doc.categories()\n for (let i = 0; i < cats.length; i += 1) {\n let m = cats[i].match(/([0-9]{4}) deaths/)\n if (m && m[1]) {\n let year = parseInt(m[1], 10)\n if (year && year > 1000) {\n return year\n }\n }\n }\n return null\n}\nmodule.exports = byCategory\n","const byInfobox = require('../getInfobox')\nconst bySentence = require('../getSentence')\nconst byCategory = require('./byCategory')\nconst parseDate = require('../parseDate')\n\nconst deathDate = function (doc) {\n let res = byInfobox(doc, 'death_date')\n if (res) {\n return parseDate(res)\n }\n // try parentheses in first sentence\n res = bySentence(doc)\n if (res && res.death) {\n return parseDate(res.death)\n }\n\n // try to get year from 'Category:1955 deaths'\n let year = byCategory(doc)\n if (year) {\n return { year: year }\n }\n return null\n}\nmodule.exports = deathDate\n","const byInfobox = require('../getInfobox')\n\nconst deathPlace = function (doc) {\n let res = byInfobox(doc, 'death_place')\n if (res) {\n return res\n }\n return null\n}\nmodule.exports = deathPlace\n","const byInfobox = require('../getInfobox')\n\nconst getNationality = function (doc) {\n let res = byInfobox(doc, 'nationality')\n if (res) {\n return res\n }\n return null\n}\nmodule.exports = getNationality\n","const birthDate = require('./birthDate')\nconst birthPlace = require('./birthPlace')\nconst isAlive = require('./isAlive')\nconst deathDate = require('./deathDate')\nconst deathPlace = require('./deathPlace')\nconst nationality = require('./nationality')\n\nconst addMethod = function (models) {\n models.Doc.prototype.birthDate = function () {\n return birthDate(this)\n }\n models.Doc.prototype.birthPlace = function () {\n return birthPlace(this)\n }\n models.Doc.prototype.isAlive = function () {\n return isAlive(this)\n }\n models.Doc.prototype.deathDate = function () {\n return deathDate(this)\n }\n models.Doc.prototype.deathPlace = function () {\n return deathPlace(this)\n }\n models.Doc.prototype.nationality = function () {\n return nationality(this)\n }\n}\nmodule.exports = addMethod\n"],"names":["_infoboxes","actor","adult_biography","afl_biography","alpine_ski_racer","archbishop","architect","artist","athlete","baseball_biography","basketball_biography","boxer","canadianmp","cfl_player","chef","chess_player","christian_leader","college_coach","college_football_player","comedian","comics_creator","cricketer","criminal","cyclist","economist","engineer","fashion_designer","field_hockey_player","figure_skater","football_biography","gaa_player","golfer","governor","gridiron_football_person","gymnast","handball_biography","hindu_leader","horseracing_personality","ice_hockey_player","indian_politician","judge","lacrosse_player","martial_artist","mass_murderer","medical_person","military_person","minister","mlb_player","model","monarch","mp","nascar_driver","nba_biography","nfl_biography","nfl_player","officeholder","person","philosopher","police_officer","politician","presenter","president","professional_wrestler","racing_driver","religious_biography","roman_emperor","royalty","rugby_biography","rugby_league_biography","saint","scholar","scientist","skier","sportsperson","squash_player","state_representative","state_senator","swimmer","tennis_biography","volleyball_biography","volleyball_player","wrc_driver","writer","bishop","congressman","astronaut","senator","mapping","require$$0","byInfobox","doc","prop","infoboxes","i","length","inf","type","toLowerCase","trim","hasOwnProperty","s","get","text","getInfobox","e","t","a","n","r","split","o","Date","UTC","getUTCFullYear","u","timezones","tz","console","warn","dst","offset","hem","epoch","Object","freeze","__proto__","default","keys","forEach","Number","replace","utc","l","h","c","d","m","match","p","Intl","DateTimeFormat","resolvedOptions","timeZone","f","reduce","y","g","error","test","Error","b","isLeapYear","isDate","prototype","toString","call","isNaN","valueOf","isArray","isObject","isBoolean","zeroPad","Array","join","titleCase","toUpperCase","substr","ordinal","toCardinal","String","parseInt","normalize","getEpoch","getTime","beADate","clone","set","formatTimezone","Math","abs","exports","k","year","getFullYear","month","date","w","parseArray","parseObject","assign","parseNumber","silent","v","now","_today","z","today","tonight","hour","tomorrow","add","startOf","yesterday","subtract","christmas","_","j","O","millisecond","second","minute","day","week","$","D","M","valid","walkTo","getMonth","seconds","milliseconds","P","S","q","T","E","N","short","long","sep","C","parseFloat","I","substring","ampm","Y","A","x","L","parseOffset","parseTime","parseYear","parseMonth","validate","F","B","Z","H","Q","G","reg","parse","U","V","W","J","K","british","R","X","ee","te","ae","ne","re","oe","ie","se","concat","quarter","season","getDate","ue","le","he","ce","isValid","de","me","pe","fe","ye","ge","be","ke","we","aliases","mo","tu","th","fr","sa","su","tues","weds","wedn","thur","thurs","ve","useTitleCase","ze","timezone","current","_e","je","dayName","monthName","time","hour24","hour12","era","json","name","numeric","iso","format","h24","toISOString","nice","Oe","mdy","dmy","ymd","$e","indexOf","De","Me","Pe","GG","GGG","GGGG","yy","yyy","yyyy","yyyyy","QQ","QQQ","QQQQ","MM","MMM","MMMM","ww","dd","dayOfYear","DD","DDD","EE","EEE","EEEE","EEEEE","eee","eeee","eeeee","aa","aaa","aaaa","h12","hh","HH","mm","ss","SSS","zz","zzz","zzzz","ZZ","ZZZ","ZZZZ","Se","qe","filter","map","Te","Ee","endOf","toFixed","Ne","Ce","progress","Ie","isBefore","isAfter","Ye","Ae","minutes","hours","years","months","weeks","days","xe","Le","almost","over","Fe","slice","Be","isSame","diff","every","rounded","qualified","precise","push","splice","Ze","north","south","He","Qe","quarterhour","_weekStart","hemisphere","decade","century","Ge","Ue","Ve","We","Je","Ke","Re","Xe","et","find","next","tt","epochShift","hasDst","Boolean","default_offset","change","start","back","isDST","at","nt","rt","hasDST","unixFmt","leapYear","nearest","since","last","goto","isAwake","isAsleep","daysInMonth","log","logYear","debug","from","fromNow","weekStart","inDST","round","each","ot","it","st","ut","lt","ht","minus","ct","dt","mt","getMilliseconds","getSeconds","getMinutes","getHours","hourFloat","dayTime","morning","breakfast","noon","lunch","afternoon","evening","dinner","night","midnight","pt","getDay","ft","setDate","setFullYear","setHours","setMinutes","setMonth","floor","millenium","yt","gt","bt","kt","wt","daysBack","vt","zt","_t","jt","Ot","plus","$t","Dt","isEqual","isBetween","Mt","i18n","Pt","St","qt","Tt","Et","Nt","Ct","It","Yt","defineProperty","getTimezoneOffset","parsers","toLocalDate","toNativeDate","At","xt","Lt","Ft","extend","max","min","whereIts","version","plugin","Bt","spacetime","parseSentence","sentence","txt","paren","str","birth","death","getSentence","byCategory","cats","categories","byCategory_1","parseDate","parseDate_1","bySentence","require$$1","require$$2","require$$3","birthDate","res","birthDate_1","birthPlace","birthPlace_1","aliveCats","didDie","byCat","isAlive","blp","activepol","isDead","obituary","elegy","eulogy","panegyric","memorial","byTemplate","templates","tmpl","title","template","bio","living","BLP","byTemplate_1","minYear","deathDate","deathPlace","fromCat","fromTemplate","isAlive_1","deathDate_1","deathPlace_1","getNationality","nationality","require$$4","require$$5","addMethod","models","Doc","src"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/person/builds/wtf-plugin-person.min.js b/plugins/person/builds/wtf-plugin-person.min.js index d80033e4..79f91c48 100644 --- a/plugins/person/builds/wtf-plugin-person.min.js +++ b/plugins/person/builds/wtf-plugin-person.min.js @@ -1 +1 @@ -!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).wtfPerson=n()}(this,(function(){"use strict";var e={actor:!0,adult_biography:!0,afl_biography:!0,alpine_ski_racer:!0,archbishop:!0,architect:!0,artist:!0,athlete:!0,baseball_biography:!0,basketball_biography:!0,boxer:!0,canadianmp:!0,cfl_player:!0,chef:!0,chess_player:!0,christian_leader:!0,college_coach:!0,college_football_player:!0,comedian:!0,comics_creator:!0,cricketer:!0,criminal:!0,cyclist:!0,economist:!0,engineer:!0,fashion_designer:!0,field_hockey_player:!0,figure_skater:!0,football_biography:!0,gaa_player:!0,golfer:!0,governor:!0,gridiron_football_person:!0,gymnast:!0,handball_biography:!0,hindu_leader:!0,horseracing_personality:!0,ice_hockey_player:!0,indian_politician:!0,judge:!0,lacrosse_player:!0,martial_artist:!0,mass_murderer:!0,medical_person:!0,military_person:!0,minister:!0,mlb_player:!0,model:!0,monarch:!0,mp:!0,nascar_driver:!0,nba_biography:!0,nfl_biography:!0,nfl_player:!0,officeholder:!0,person:!0,philosopher:!0,police_officer:!0,politician:!0,"politician_(general)":!0,presenter:!0,president:!0,professional_wrestler:!0,racing_driver:!0,religious_biography:!0,roman_emperor:!0,royalty:!0,rugby_biography:!0,rugby_league_biography:!0,saint:!0,scholar:!0,scientist:!0,skier:!0,sportsperson:!0,squash_player:!0,state_representative:!0,state_senator:!0,swimmer:!0,tennis_biography:!0,volleyball_biography:!0,volleyball_player:!0,wrc_driver:!0,writer:!0,"hockey team player":!0,"snooker player":!0,bishop:!0,"football biography":!0,"military person":!0,"baseball biography":!0,"ice hockey player":!0,"nfl player":!0,"christian leader":!0,congressman:!0,"basketball biography":!0,"comics creator":!0,"professional wrestler":!0,"college coach":!0,"tennis biography":!0,"afl biography":!0,"nfl biography":!0,"rugby biography":!0,"rugby league biography":!0,"prime minister":!0,"nba biography":!0,"figure skater":!0,"f1 driver":!0,"gridiron football person":!0,"indian politician":!0,"racing driver":!0,"martial artist":!0,"chinese-language singer and actor":!0,astronaut:!0,senator:!0,"nascar driver":!0,"adult biography":!0,"state representative":!0,"state senator":!0,"coa wide":!0,"religious biography":!0,"chess player":!0,"pageant titleholder":!0,"gaa player":!0,"us cabinet official":!0};var n=function(n,t){let r=n.infoboxes();for(let n=0;ne.length)&&(n=e.length);for(var t=0,r=new Array(n);t=u&&e");return!0===i(e.epoch,a[0],a[1],t,r)?t:r},s=["africa","america","asia","atlantic","australia","brazil","canada","chile","europe","indian","mexico","pacific","antarctica","etc"];var c,l=(c=Object.freeze({__proto__:null,default:{"9|s":"2/dili,2/jayapura","9|n":"2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau","9.5|s|04/04:03->10/03:02":"4/adelaide,4/broken_hill,4/south,4/yancowinna","9.5|s":"4/darwin,4/north","8|s|03/08:01->10/04:00":"12/casey","8|s":"2/kuala_lumpur,2/makassar,2/singapore,4/perth,2/ujung_pandang,4/west","8|n":"2/brunei,2/choibalsan,2/hong_kong,2/irkutsk,2/kuching,2/macau,2/manila,2/shanghai,2/taipei,2/ulaanbaatar,2/chongqing,2/chungking,2/harbin,2/macao,2/ulan_bator","8.75|s":"4/eucla","7|s":"12/davis,2/jakarta,9/christmas","7|n":"2/bangkok,2/barnaul,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane,2/ho_chi_minh","6|s":"12/vostok","6|n":"2/almaty,2/bishkek,2/dhaka,2/omsk,2/qyzylorda,2/qostanay,2/thimphu,2/urumqi,9/chagos,2/dacca,2/kashgar,2/thimbu","6.5|n":"2/rangoon,9/cocos,2/yangon","5|s":"12/mawson,9/kerguelen","5|n":"2/aqtau,2/aqtobe,2/ashgabat,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives,2/ashkhabad","5.75|n":"2/katmandu,2/kathmandu","5.5|n":"2/calcutta,2/colombo,2/kolkata","4|s":"9/reunion","4|n":"2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius","4.5|n|03/22:00->09/21:24":"2/tehran","4.5|n":"2/kabul","3|s":"12/syowa,9/antananarivo","3|n|03/28:03->10/31:04":"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye,8/nicosia","3|n|03/28:02->10/31:03":"8/chisinau,8/tiraspol","3|n|03/28:00->10/30:24":"2/beirut","3|n|03/27:00->10/30:01":"2/gaza,2/hebron","3|n|03/26:02->10/31:02":"2/jerusalem,2/tel_aviv","3|n|03/26:00->10/29:01":"2/amman","3|n|03/26:00->10/28:24":"2/damascus","3|n":"0/addis_ababa,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte,0/asmara,2/istanbul","2|s|03/28:02->10/31:02":"12/troll","2|s":"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane","2|n|03/28:02->10/31:03":"0/ceuta,arctic/longyearbyen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich,3/jan_mayen","2|n":"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad","1|s":"0/brazzaville,0/kinshasa,0/luanda,0/windhoek","1|n|04/11:03->05/16:02":"0/casablanca,0/el_aaiun","1|n|03/28:01->10/31:02":"3/canary,3/faeroe,3/madeira,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london,3/faroe,8/belfast","1|n":"0/algiers,0/bangui,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis","14|n":"11/kiritimati","13|s|04/04:04->09/26:03":"11/apia","13|s|01/15:02->11/05:03":"11/tongatapu","13|n":"11/enderbury,11/fakaofo","12|s|04/04:03->09/26:02":"12/mcmurdo,11/auckland,12/south_pole","12|s|01/17:03->11/14:02":"11/fiji","12|n":"2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis","12.75|s|04/04:03->04/04:02":"11/chatham","11|s|04/04:03->10/03:02":"12/macquarie","11|s":"11/bougainville","11|n":"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/ponape,11/pohnpei","11.5|n|04/04:03->10/03:02":"11/norfolk","10|s|04/04:03->10/03:02":"4/currie,4/hobart,4/melbourne,4/sydney,4/act,4/canberra,4/nsw,4/tasmania,4/victoria","10|s":"12/dumontdurville,4/brisbane,4/lindeman,11/port_moresby,4/queensland","10|n":"2/ust-nera,2/vladivostok,2/yakutsk,11/guam,11/saipan,11/truk,11/chuuk,11/yap","10.5|s|04/04:01->10/03:02":"4/lord_howe,4/lhi","0|n|03/28:00->10/31:01":"1/scoresbysund,3/azores","0|n":"0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/utc,0/timbuktu,13/gmt-0,13/gmt+0,13/gmt0,13/greenwich,13/uct,13/universal,13/zulu","-9|n|03/14:02->11/07:02":"1/adak,1/atka,us/aleutian","-9|n":"11/gambier","-9.5|n":"11/marquesas","-8|n|03/14:02->11/07:02":"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat,us/alaska","-8|n":"11/pitcairn","-7|n|03/14:02->11/07:02":"1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/ensenada,6/pacific,10/bajanorte,us/pacific-new,us/pacific","-7|n|03/08:02->11/01:01":"1/dawson,1/whitehorse,6/yukon","-7|n":"1/creston,1/dawson_creek,1/fort_nelson,1/hermosillo,1/phoenix,us/arizona","-6|s|04/03:22->09/04:22":"11/easter,7/easterisland","-6|n|04/04:02->10/31:02":"1/chihuahua,1/mazatlan,10/bajasur","-6|n|03/14:02->11/07:02":"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/yellowknife,1/shiprock,6/mountain,us/mountain","-6|n":"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,11/galapagos,6/east-saskatchewan,6/saskatchewan","-5|s":"1/lima,1/rio_branco,1/porto_acre,5/acre","-5|n|04/04:02->10/31:02":"1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general","-5|n|03/14:02->11/07:02":"1/chicago,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,1/indiana/knox,1/indiana/tell_city,1/north_dakota/beulah,1/north_dakota/center,1/north_dakota/new_salem,1/knox_in,6/central,us/central,us/indiana-starke","-5|n|03/12:03->11/05:01":"1/north_dakota","-5|n":"1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/atikokan","-4|s|05/13:23->08/13:01":"12/palmer","-4|s|04/03:24->09/05:00":"1/santiago,7/continental","-4|s|03/27:24->10/03:00":"1/asuncion","-4|s|02/16:24->11/03:00":"1/campo_grande,1/cuiaba","-4|s":"1/la_paz,1/manaus,5/west","-4|n|03/14:02->11/07:02":"1/detroit,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,1/indiana/marengo,1/indiana/petersburg,1/indiana/vevay,1/indiana/vincennes,1/indiana/winamac,1/kentucky/monticello,1/fort_wayne,1/indiana/indianapolis,1/kentucky/louisville,6/eastern,us/east-indiana,us/eastern,us/michigan","-4|n|03/14:00->11/07:01":"1/havana","-4|n|03/12:03->11/05:01":"1/indiana,1/kentucky","-4|n":"1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin","-3|s":"1/argentina,1/buenos_aires,1/catamarca,1/cordoba,1/fortaleza,1/jujuy,1/mendoza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,1/argentina/la_rioja,1/argentina/rio_gallegos,1/argentina/salta,1/argentina/san_juan,1/argentina/san_luis,1/argentina/tucuman,1/argentina/ushuaia,1/argentina/buenos_aires,1/argentina/catamarca,1/argentina/comodrivadavia,1/argentina/cordoba,1/argentina/jujuy,1/argentina/mendoza,1/rosario,5/east","-3|n|03/14:02->11/07:02":"1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic","-3|n":"1/araguaina,1/bahia,1/belem,1/cayenne,1/maceio,1/paramaribo,1/recife,1/santarem","-2|n|03/27:22->10/30:23":"1/godthab,1/nuuk","-2|n|03/14:02->11/07:02":"1/miquelon","-2|n":"1/noronha,3/south_georgia,5/denoronha","-2.5|n|03/14:02->11/07:02":"1/st_johns,6/newfoundland","-1|n":"3/cape_verde","-11|n":"11/midway,11/niue,11/pago_pago,11/samoa,us/samoa","-10|n":"11/honolulu,11/johnston,11/rarotonga,11/tahiti,us/hawaii"}}))&&c.default||c,h={};Object.keys(l).forEach((function(e){var n=e.split("|"),t={offset:Number(n[0]),hem:n[1]};n[2]&&(t.dst=n[2]),l[e].split(",").forEach((function(e){e=e.replace(/(^[0-9]+)\//,(function(e,n){return n=Number(n),s[n]+"/"})),h[e]=t}))})),h.utc={offset:0,hem:"n"};for(var f=-14;f<=14;f+=.5){var d=f;d>0&&(d="+"+d);var m="etc/gmt"+d;h[m]={offset:-1*f,hem:"n"},h[m="utc/gmt"+d]={offset:-1*f,hem:"n"}}var p=h,y=/(\-?[0-9]+)h(rs)?/i,v=/(\-?[0-9]+)/,g=/utc([\-+]?[0-9]+)/i,b=/gmt([\-+]?[0-9]+)/i,w=function(e){return(e=Number(e))>=-13&&e<=13?"etc/gmt"+(e=((e*=-1)>0?"+":"")+e):null},k=function(e){var n=e.match(y);if(null!==n)return w(n[1]);if(null!==(n=e.match(g)))return w(n[1]);if(null!==(n=e.match(b))){var t=-1*Number(n[1]);return w(t)}return null!==(n=e.match(v))?w(n[1]):null},_=function(){var e=function(){if("undefined"==typeof Intl||void 0===Intl.DateTimeFormat)return null;var e=Intl.DateTimeFormat();if(void 0===e||void 0===e.resolvedOptions)return null;var n=e.resolvedOptions().timeZone;return n?n.toLowerCase():null}();return null===e?"utc":e}(),z=Object.keys(p).reduce((function(e,n){var t=n.split("/")[1]||"";return e[t=t.replace(/_/g," ")]=n,e}),{}),j=function(e,n){if(!e)return _;"string"!=typeof e&&console.error("Timezone must be a string - recieved: '",e,"'\n");var t=e.trim();if(t=t.toLowerCase(),!0===n.hasOwnProperty(t))return t;if(t=function(e){return(e=(e=(e=(e=(e=e.replace(/ time/g,"")).replace(/ (standard|daylight|summer)/g,"")).replace(/\b(east|west|north|south)ern/g,"$1")).replace(/\b(africa|america|australia)n/g,"$1")).replace(/\beuropean/g,"europe")).replace(/\islands/g,"island")}(t),!0===n.hasOwnProperty(t))return t;if(!0===z.hasOwnProperty(t))return z[t];if(!0===/[0-9]/.test(t)){var r=k(t);if(r)return r}throw new Error("Spacetime: Cannot find timezone named: '"+e+"'. Please enter an IANA timezone id.")},O={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5};O.date=O.day,O.month=25488e5,O.week=6048e5,O.year=3154e7,Object.keys(O).forEach((function(e){O[e+"s"]=O[e]}));var D=O,P=function(e,n,t,r,a){var o=e.d[t]();if(o!==n){var i=null===a?null:e.d[a](),u=e.epoch,s=n-o;e.epoch+=D[r]*s,"day"===r&&Math.abs(s)>28&&n<28&&(e.epoch+=D.hour),null!==a&&i!==e.d[a]()&&(e.epoch=u);for(var c=D[r]/2;e.d[t]()n;)e.epoch-=c;null!==a&&i!==e.d[a]()&&(e.epoch=u)}},S={year:{valid:function(e){return e>-4e3&&e<4e3},walkTo:function(e,n){return P(e,n,"getFullYear","year",null)}},month:{valid:function(e){return e>=0&&e<=11},walkTo:function(e,n){var t=e.d,r=t.getMonth(),a=e.epoch,o=t.getFullYear();if(r!==n){var i=n-r;for(e.epoch+=D.day*(28*i),o!==e.d.getFullYear()&&(e.epoch=a);e.d.getMonth()n;)e.epoch-=D.day}}},date:{valid:function(e){return e>0&&e<=31},walkTo:function(e,n){return P(e,n,"getDate","day","getMonth")}},hour:{valid:function(e){return e>=0&&e<24},walkTo:function(e,n){return P(e,n,"getHours","hour","getDate")}},minute:{valid:function(e){return e>=0&&e<60},walkTo:function(e,n){return P(e,n,"getMinutes","minute","getHours")}},second:{valid:function(e){return e>=0&&e<60},walkTo:function(e,n){e.epoch=e.seconds(n).epoch}},millisecond:{valid:function(e){return e>=0&&e<1e3},walkTo:function(e,n){e.epoch=e.milliseconds(n).epoch}}},M=function(e,n){for(var t=Object.keys(S),r=e.clone(),a=0;a100&&(t/=100),(t*=-1)>=0&&(t="+"+t);var r="etc/gmt"+t;return e.timezones[r]&&(e.tz=r),e},$=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=(n=n.replace(/^\s+/,"").toLowerCase()).match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\.]?([0-9]{1,4})?/);if(null!==t){var r=Number(t[1]);if(r<0||r>24)return e.startOf("day");var a=Number(t[2]);if(t[2].length<2||a<0||a>59)return e.startOf("day");t[4]>999&&(t[4]=parseInt("".concat(t[4]).substring(0,3),10)),e=(e=(e=(e=e.hour(r)).minute(a)).seconds(t[3]||0)).millisecond(t[4]||0);var o=n.match(/[\b0-9](am|pm)\b/);return null!==o&&o[1]&&(e=e.ampm(o[1])),e}if(null!==(t=n.match(/([0-9]+) ?(am|pm)/))&&t[1]){var i=Number(t[1]);return i>12||i<1?e.startOf("day"):e=(e=(e=e.hour(t[1]||0)).ampm(t[2])).startOf("hour")}return e=e.startOf("day")},x=[31,28,31,30,31,30,31,31,30,31,30,31],Y=function(e,n){return e(n={exports:{}},n.exports),n.exports}((function(e,n){n.isLeapYear=function(e){return e%4==0&&e%100!=0||e%400==0},n.isDate=function(e){return"[object Date]"===Object.prototype.toString.call(e)&&!isNaN(e.valueOf())},n.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},n.isObject=function(e){return"[object Object]"===Object.prototype.toString.call(e)},n.isBoolean=function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},n.zeroPad=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,t="0";return(e+="").length>=n?e:new Array(n-e.length+1).join(t)+e},n.titleCase=function(e){return e?e[0].toUpperCase()+e.substr(1):""},n.ordinal=function(e){var n=e%10,t=e%100;return 1===n&&11!==t?e+"st":2===n&&12!==t?e+"nd":3===n&&13!==t?e+"rd":e+"th"},n.toCardinal=function(e){return e=(e=String(e)).replace(/([0-9])(st|nd|rd|th)$/i,"$1"),parseInt(e,10)},n.normalize=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return"day"===(e=(e=(e=(e=e.toLowerCase().trim()).replace(/ies$/,"y")).replace(/s$/,"")).replace(/-/g,""))||"days"===e?"date":"min"===e||"mins"===e?"minute":e},n.getEpoch=function(e){return"number"==typeof e?e:n.isDate(e)?e.getTime():e.epoch?e.epoch:null},n.beADate=function(e,t){return!1===n.isObject(e)?t.clone().set(e):e},n.formatTimezone=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=e>0?"+":"-",a=Math.abs(e),o=n.zeroPad(parseInt(""+a,10)),i=n.zeroPad(a%1*60);return"".concat(r).concat(o).concat(t).concat(i)}}));Y.isLeapYear,Y.isDate,Y.isArray,Y.isObject,Y.isBoolean,Y.zeroPad,Y.titleCase,Y.ordinal,Y.toCardinal,Y.normalize,Y.getEpoch,Y.beADate,Y.formatTimezone;var L=Y.isLeapYear,B=function(e){if(!0!==x.hasOwnProperty(e.month))return!1;if(1===e.month)return!!(L(e.year)&&e.date<=29)||e.date<=28;var n=x[e.month]||0;return e.date<=n},F=T(),Z=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0,t=parseInt(e.trim(),10);return!t&&n&&(t=n.year),t=t||(new Date).getFullYear()},H=[{reg:/^(\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\-\+:]+)?$/i,parse:function(e,n,t,r){var a=parseInt(n[2],10)-1,o={year:n[1],month:a,date:n[3]};return!1===B(o)?(e.epoch=null,e):(N(e,n[5]),M(e,o),e=$(e,n[4]))}},{reg:/^([0-9]{4})[\-\/.]([0-9]{1,2})[\-\/.]([0-9]{1,2}),?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:function(e,n){var t={year:n[1],month:parseInt(n[2],10)-1,date:parseInt(n[3],10)};return t.month>=12&&(t.date=parseInt(n[2],10),t.month=parseInt(n[3],10)-1),!1===B(t)?(e.epoch=null,e):(M(e,t),e=$(e,n[4]))}},{reg:/^([0-9]{1,2})[\-\/.]([0-9]{1,2})[\-\/.]?([0-9]{4})?,?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:function(e,n){var t=parseInt(n[1],10)-1,r=parseInt(n[2],10);(e.british||t>=12)&&(r=parseInt(n[1],10),t=parseInt(n[2],10)-1);var a={year:Z(n[3],e._today)||(new Date).getFullYear(),month:t,date:r};return!1===B(a)?(e.epoch=null,e):(M(e,a),e=$(e,n[4]))}},{reg:/^([0-9]{4})[\-\/]([0-9]{2})$/i,parse:function(e,n,t,r){var a=parseInt(n[2],10)-1,o={year:n[1],month:a,date:1};return!1===B(o)?(e.epoch=null,e):(N(e,n[5]),M(e,o),e=$(e,n[4]))}},{reg:/^([0-9]{1,2})[\-\/]([a-z]+)[\-\/]?([0-9]{4})?$/i,parse:function(e,n){var t=F[n[2].toLowerCase()],r={year:Z(n[3],e._today),month:t,date:Y.toCardinal(n[1]||"")};return!1===B(r)?(e.epoch=null,e):(M(e,r),e=$(e,n[4]))}},{reg:/^([a-z]+)[\-\/]([0-9]{1,2})[\-\/]?([0-9]{4})?$/i,parse:function(e,n){var t=F[n[1].toLowerCase()],r={year:Z(n[3],e._today),month:t,date:Y.toCardinal(n[2]||"")};return!1===B(r)?(e.epoch=null,e):(M(e,r),e=$(e,n[4]))}},{reg:/^([a-z]+) ([0-9]{1,2}(?:st|nd|rd|th)?),?( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i,parse:function(e,n){var t=F[n[1].toLowerCase()],r={year:Z(n[3],e._today),month:t,date:Y.toCardinal(n[2]||"")};return!1===B(r)?(e.epoch=null,e):(M(e,r),e=$(e,n[4]))}},{reg:/^([a-z]+) ([0-9]{4})$/i,parse:function(e,n){var t=F[n[1].toLowerCase()],r={year:Z(n[2],e._today),month:t,date:e._today.date||1};return!1===B(r)?(e.epoch=null,e):(M(e,r),e=$(e,n[4]))}},{reg:/^([0-9]{1,2}(?:st|nd|rd|th)?) ([a-z]+),?( [0-9]{4})?,? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:function(e,n){var t=F[n[2].toLowerCase()];if(!t)return null;var r={year:Z(n[3],e._today),month:t,date:Y.toCardinal(n[1])};return!1===B(r)?(e.epoch=null,e):(M(e,r),e=$(e,n[4]))}},{reg:/^(q[0-9])( of)?( [0-9]{4})?/i,parse:function(e,n){var t=n[1]||"";e=e.quarter(t);var r=n[3]||"";return r&&(r=r.trim(),e=e.year(r)),e}},{reg:/^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i,parse:function(e,n){var t=n[1]||"";e=e.season(t);var r=n[3]||"";return r&&(r=r.trim(),e=e.year(r)),e}},{reg:/^[0-9,]+ ?b\.?c\.?$/i,parse:function(e,n){var t=n[0]||"";t=(t=t.replace(/^([0-9,]+) ?b\.?c\.?$/i,"-$1")).replace(/,/g,"");var r=parseInt(t.trim(),10),a=new Date,o={year:r,month:a.getMonth(),date:a.getDate()};return!1===B(o)?(e.epoch=null,e):(M(e,o),e=$(e))}},{reg:/^[0-9,]+ ?(a\.?d\.?|c\.?e\.?)$/i,parse:function(e,n){var t=n[0]||"";t=t.replace(/,/g,"");var r=parseInt(t.trim(),10),a=new Date,o={year:r,month:a.getMonth(),date:a.getDate()};return!1===B(o)?(e.epoch=null,e):(M(e,o),e=$(e))}},{reg:/^[0-9]{4}( ?a\.?d\.?)?$/i,parse:function(e,n){var t=e._today,r=Z(n[0],t),a=new Date;t.month&&!t.date&&(t.date=1);var o={year:r,month:t.month||a.getMonth(),date:t.date||a.getDate()};return!1===B(o)?(e.epoch=null,e):(M(e,o),e=$(e))}}],Q=function(e){return e.epoch=Date.now(),Object.keys(e._today||{}).forEach((function(n){"function"==typeof e[n]&&(e=e[n](e._today[n]))})),e},G={now:function(e){return Q(e)},today:function(e){return Q(e)},tonight:function(e){return e=(e=Q(e)).hour(18)},tomorrow:function(e){return e=(e=(e=Q(e)).add(1,"day")).startOf("day")},yesterday:function(e){return e=(e=(e=Q(e)).subtract(1,"day")).startOf("day")},christmas:function(e){var n=Q(e).year();return e=e.set([n,11,25,18,0,0])},"new years":function(e){var n=Q(e).year();return e=e.set([n,11,31,18,0,0])}};G["new years eve"]=G["new years"];var U=G,V={year:(new Date).getFullYear(),month:0,date:1},W=function(e,n,t){if(0===Object.keys(n).length)return e;n=Object.assign({},V,t,n);for(var r=Object.keys(n),a=0;a0&&n<25e8&&!1===e.silent&&(console.warn(" - Warning: You are setting the date to January 1970."),console.warn(" - did input seconds instead of milliseconds?")),e.epoch=n,e;if(e.epoch=Date.now(),e._today&&Y.isObject(e._today)&&Object.keys(e._today).length>0){var a=W(e,r,V);a.isValid()&&(e.epoch=a.epoch)}if(null==n||""===n)return e;if(!0===Y.isDate(n))return e.epoch=n.getTime(),e;if(!0===Y.isArray(n))return e=function(e,n,t){if(0===n.length)return e;for(var r=["year","month","date","hour","minute","second","millisecond"],a=0;a0?n:(n=Math.abs(n),n+" BC")},"year-short":function(e){var n=e.year();return n>0?"'".concat(String(e.year()).substr(2,4)):(n=Math.abs(n))+" BC"},"iso-year":function(e){var n=e.year(),t=n<0,r=Y.zeroPad(Math.abs(n),4);return t&&(r="-"+(r=Y.zeroPad(r,6))),r},time:function(e){return e.time()},"time-24":function(e){return"".concat(e.hour24(),":").concat(Y.zeroPad(e.minute()))},hour:function(e){return e.hour12()},"hour-pad":function(e){return Y.zeroPad(e.hour12())},"hour-24":function(e){return e.hour24()},"hour-24-pad":function(e){return Y.zeroPad(e.hour24())},minute:function(e){return e.minute()},"minute-pad":function(e){return Y.zeroPad(e.minute())},second:function(e){return e.second()},"second-pad":function(e){return Y.zeroPad(e.second())},ampm:function(e){return e.ampm()},quarter:function(e){return"Q"+e.quarter()},season:function(e){return e.season()},era:function(e){return e.era()},json:function(e){return e.json()},timezone:function(e){return e.timezone().name},offset:function(e){return re(e)},numeric:function(e){return"".concat(e.year(),"/").concat(Y.zeroPad(e.month()+1),"/").concat(Y.zeroPad(e.date()))},"numeric-us":function(e){return"".concat(Y.zeroPad(e.month()+1),"/").concat(Y.zeroPad(e.date()),"/").concat(e.year())},"numeric-uk":function(e){return"".concat(Y.zeroPad(e.date()),"/").concat(Y.zeroPad(e.month()+1),"/").concat(e.year())},"mm/dd":function(e){return"".concat(Y.zeroPad(e.month()+1),"/").concat(Y.zeroPad(e.date()))},iso:function(e){var n=e.format("iso-year"),t=Y.zeroPad(e.month()+1),r=Y.zeroPad(e.date()),a=Y.zeroPad(e.h24()),o=Y.zeroPad(e.minute()),i=Y.zeroPad(e.second()),u=Y.zeroPad(e.millisecond(),3),s=re(e);return"".concat(n,"-").concat(t,"-").concat(r,"T").concat(a,":").concat(o,":").concat(i,".").concat(u).concat(s)},"iso-short":function(e){var n=Y.zeroPad(e.month()+1),t=Y.zeroPad(e.date());return"".concat(e.year(),"-").concat(n,"-").concat(t)},"iso-utc":function(e){return new Date(e.epoch).toISOString()},nice:function(e){return"".concat(C()[e.month()]," ").concat(Y.ordinal(e.date()),", ").concat(e.time())},"nice-24":function(e){return"".concat(C()[e.month()]," ").concat(Y.ordinal(e.date()),", ").concat(e.hour24(),":").concat(Y.zeroPad(e.minute()))},"nice-year":function(e){return"".concat(C()[e.month()]," ").concat(Y.ordinal(e.date()),", ").concat(e.year())},"nice-day":function(e){return"".concat(X.short()[e.day()]," ").concat(ae(C()[e.month()])," ").concat(Y.ordinal(e.date()))},"nice-full":function(e){return"".concat(e.dayName()," ").concat(ae(e.monthName())," ").concat(Y.ordinal(e.date()),", ").concat(e.time())},"nice-full-24":function(e){return"".concat(e.dayName()," ").concat(ae(e.monthName())," ").concat(Y.ordinal(e.date()),", ").concat(e.hour24(),":").concat(Y.zeroPad(e.minute()))}},ie={"day-name":"day","month-name":"month","iso 8601":"iso","time-h24":"time-24","time-12":"time","time-h12":"time",tz:"timezone","day-num":"day-number","month-num":"month-number","month-iso":"iso-month","year-iso":"iso-year","nice-short":"nice","nice-short-24":"nice-24",mdy:"numeric-us",dmy:"numeric-uk",ymd:"numeric","yyyy/mm/dd":"numeric","mm/dd/yyyy":"numeric-us","dd/mm/yyyy":"numeric-us","little-endian":"numeric-uk","big-endian":"numeric","day-nice":"nice-day"};Object.keys(ie).forEach((function(e){return oe[e]=oe[ie[e]]}));var ue=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!0!==e.isValid())return"";if(oe.hasOwnProperty(n)){var t=oe[n](e)||"";return"json"!==n&&(t=String(t),"ampm"!==n&&(t=ae(t))),t}if(-1!==n.indexOf("{")){var r=/\{(.+?)\}/g;return n=n.replace(r,(function(n,t){if(t=t.toLowerCase().trim(),oe.hasOwnProperty(t)){var r=String(oe[t](e));return"ampm"!==t?ae(r):r}return""}))}return e.format("iso-short")},se=Y.zeroPad,ce=Y.formatTimezone,le={G:function(e){return e.era()},GG:function(e){return e.era()},GGG:function(e){return e.era()},GGGG:function(e){return"AD"===e.era()?"Anno Domini":"Before Christ"},y:function(e){return e.year()},yy:function(e){return parseInt(String(e.year()).substr(2,4),10)},yyy:function(e){return e.year()},yyyy:function(e){return e.year()},yyyyy:function(e){return"0"+e.year()},Q:function(e){return e.quarter()},QQ:function(e){return e.quarter()},QQQ:function(e){return e.quarter()},QQQQ:function(e){return e.quarter()},M:function(e){return e.month()+1},MM:function(e){return se(e.month()+1)},MMM:function(e){return e.format("month-short")},MMMM:function(e){return e.format("month")},w:function(e){return e.week()},ww:function(e){return se(e.week())},d:function(e){return e.date()},dd:function(e){return se(e.date())},D:function(e){return e.dayOfYear()},DD:function(e){return se(e.dayOfYear())},DDD:function(e){return se(e.dayOfYear(),3)},E:function(e){return e.format("day-short")},EE:function(e){return e.format("day-short")},EEE:function(e){return e.format("day-short")},EEEE:function(e){return e.format("day")},EEEEE:function(e){return e.format("day")[0]},e:function(e){return e.day()},ee:function(e){return e.day()},eee:function(e){return e.format("day-short")},eeee:function(e){return e.format("day")},eeeee:function(e){return e.format("day")[0]},a:function(e){return e.ampm().toUpperCase()},aa:function(e){return e.ampm().toUpperCase()},aaa:function(e){return e.ampm().toUpperCase()},aaaa:function(e){return e.ampm().toUpperCase()},h:function(e){return e.h12()},hh:function(e){return se(e.h12())},H:function(e){return e.hour()},HH:function(e){return se(e.hour())},m:function(e){return e.minute()},mm:function(e){return se(e.minute())},s:function(e){return e.second()},ss:function(e){return se(e.second())},A:function(e){return e.epoch-e.startOf("day").epoch},z:function(e){return e.timezone().name},zz:function(e){return e.timezone().name},zzz:function(e){return e.timezone().name},zzzz:function(e){return e.timezone().name},Z:function(e){return ce(e.timezone().current.offset)},ZZ:function(e){return ce(e.timezone().current.offset)},ZZZ:function(e){return ce(e.timezone().current.offset)},ZZZZ:function(e){return ce(e.timezone().current.offset,":")}},he=function(e,n,t){for(var r=e,a=n,o=0;o.5&&(e=e.add(1,n)),e=e.startOf(n)):!1===e.silent&&console.warn("no known unit '"+n+"'"),e},ve=function(e,n,t){var r=0;for(e=e.clone();e.isBefore(n);)e=e.add(1,t),r+=1;return e.isAfter(n,t)&&(r-=1),r},ge=function(e,n,t){return e.isBefore(n)?ve(e,n,t):-1*ve(n,e,t)},be=function(e,n){var t=n.epoch-e.epoch,r={milliseconds:t,seconds:parseInt(t/1e3,10)};r.minutes=parseInt(r.seconds/60,10),r.hours=parseInt(r.minutes/60,10);var a=e.clone();return r.years=function(e,n){var t=n.year()-e.year();return(e=e.year(n.year())).isAfter(n)&&(t-=1),t}(a,n),a=e.add(r.years,"year"),r.months=12*r.years,a=e.add(r.months,"month"),r.months+=ge(a,n,"month"),r.weeks=52*r.years,a=e.add(r.weeks,"week"),r.weeks+=ge(a,n,"week"),r.days=7*r.weeks,a=e.add(r.days,"day"),r.days+=ge(a,n,"day"),r},we=function(e,n,t){n=Y.beADate(n,e);var r=!1;if(e.isAfter(n)){var a=e;e=n,n=a,r=!0}var o=be(e,n);return r&&(o=function(e){return Object.keys(e).forEach((function(n){e[n]*=-1})),e}(o)),t?(t=Y.normalize(t),!0!==/s$/.test(t)&&(t+="s"),"dates"===t&&(t="days"),o[t]):o},ke={months:{almost:10,over:4},days:{almost:25,over:10},hours:{almost:20,over:8},minutes:{almost:50,over:20},seconds:{almost:50,over:20}};function _e(e,n){return 1===e&&(n=n.slice(0,-1)),e+" "+n}var ze=function(e,n){var t,r,a,o=function(e,n){var t=e.isBefore(n),r=t?n:e,a=t?e:n;a=a.clone();var o={years:0,months:0,days:0,hours:0,minutes:0,seconds:0};return Object.keys(o).forEach((function(e){if(!a.isSame(r,e)){var n=a.diff(r,e);a=a.add(n,e),o[e]=n}})),t&&Object.keys(o).forEach((function(e){0!==o[e]&&(o[e]*=-1)})),o}(e,n=Y.beADate(n,e));if(!0===Object.keys(o).every((function(e){return!o[e]})))return{diff:o,rounded:"now",qualified:"now",precise:"now"};var i=[];return Object.keys(o).forEach((function(e,n,a){var u=Math.abs(o[e]);if(0!==u){var s=_e(u,e);if(i.push(s),!t){if(t=r=s,n>4)return;var c=a[n+1],l=Math.abs(o[c]);l>ke[c].almost?(t=_e(u+1,e),r="almost "+t):l>ke[c].over&&(r="over "+s)}}})),a=i.splice(0,2).join(", "),!0===e.isAfter(n)?(t+=" ago",r+=" ago",a+=" ago"):(t="in "+t,r="in "+r,a="in "+a),{diff:o,rounded:t,qualified:r,precise:a}},je={north:[["spring",2,1],["summer",5,1],["fall",8,1],["autumn",8,1],["winter",11,1]],south:[["fall",2,1],["autumn",2,1],["winter",5,1],["spring",8,1],["summer",11,1]]},Oe=[null,[0,1],[3,1],[6,1],[9,1]],De={minute:function(e){return M(e,{second:0,millisecond:0}),e},quarterhour:function(e){var n=e.minutes();return e=n>=45?e.minutes(45):n>=30?e.minutes(30):n>=15?e.minutes(15):e.minutes(0),M(e,{second:0,millisecond:0}),e},hour:function(e){return M(e,{minute:0,second:0,millisecond:0}),e},day:function(e){return M(e,{hour:0,minute:0,second:0,millisecond:0}),e},week:function(e){var n=e.clone();return(e=e.day(e._weekStart)).isAfter(n)&&(e=e.subtract(1,"week")),M(e,{hour:0,minute:0,second:0,millisecond:0}),e},month:function(e){return M(e,{date:1,hour:0,minute:0,second:0,millisecond:0}),e},quarter:function(e){var n=e.quarter();return Oe[n]&&M(e,{month:Oe[n][0],date:Oe[n][1],hour:0,minute:0,second:0,millisecond:0}),e},season:function(e){var n=e.season(),t="north";"South"===e.hemisphere()&&(t="south");for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:"",t=arguments.length>2?arguments[2]:void 0;if(!n||!t)return[];if(n=Y.normalize(n),t=e.clone().set(t),e.isAfter(t)){var r=e;e=t,t=r}var a=e.clone();Me(n)?(a=a.next(n),n="week"):a=a.next(n);for(var o=[];a.isBefore(t);)o.push(a),a=a.add(1,n);return o},Ie=function(e){var n=e.timezones,t=e.tz;if(!1===n.hasOwnProperty(t)&&(t=j(e.tz,n)),null===t)return!1===e.silent&&console.warn("Warn: could not find given or local timezone - '"+e.tz+"'"),{current:{epochShift:0}};var r,a,o=n[t],u={name:(r=t,r=(r=(r=r[0].toUpperCase()+r.substr(1)).replace(/\/gmt/,"/GMT")).replace(/[\/_]([a-z])/gi,(function(e){return e.toUpperCase()}))),hasDst:Boolean(o.dst),default_offset:o.offset,hemisphere:"s"===o.hem?"South":"North",current:{}};if(u.hasDst){var s=(a=o.dst)?a.split("->"):[];u.change={start:s[0],back:s[1]}}var c=o.offset,l=c;return!0===u.hasDst&&(l="North"===u.hemisphere?c-1:o.offset+1),!1===u.hasDst?(u.current.offset=c,u.current.isDST=!1):!0===i(e.epoch,u.change.start,u.change.back,c,l)?(u.current.offset=c,u.current.isDST="North"===u.hemisphere):(u.current.offset=l,u.current.isDST="South"===u.hemisphere),u},Ce=["century","decade","year","month","date","day","hour","minute","second","millisecond"],Ee={set:function(e,n){var t=this.clone();return t=J(t,e,null),n&&(this.tz=j(n)),t},timezone:function(){return Ie(this)},isDST:function(){return Ie(this).current.isDST},hasDST:function(){return Ie(this).hasDst},offset:function(){return 60*Ie(this).current.offset},hemisphere:function(){return Ie(this).hemisphere},format:function(e){return ue(this,e)},unixFmt:function(e){return fe(this,e)},startOf:function(e){return Pe(this,e)},endOf:function(e){return Se(this,e)},leapYear:function(){var e=this.year();return Y.isLeapYear(e)},progress:function(e){return pe(this,e)},nearest:function(e){return ye(this,e)},diff:function(e,n){return we(this,e,n)},since:function(e){return e||(e=this.clone().set()),ze(this,e)},next:function(e){return this.add(1,e).startOf(e)},last:function(e){return this.subtract(1,e).startOf(e)},isValid:function(){return!(!this.epoch&&0!==this.epoch)&&!isNaN(this.d.getTime())},goto:function(e){var n=this.clone();return n.tz=j(e,n.timezones),n},every:function(e,n){if("object"===t(e)&&"string"==typeof n){var r=n;n=e,e=r}return qe(this,e,n)},isAwake:function(){var e=this.hour();return!(e<8||e>22)},isAsleep:function(){return!this.isAwake()},log:function(){return console.log(""),console.log(ue(this,"nice-short")),this},logYear:function(){return console.log(""),console.log(ue(this,"full-short")),this},json:function(){var e=this;return Ce.reduce((function(n,t){return n[t]=e[t](),n}),{})},debug:function(){var e=this.timezone(),n=this.format("MM")+" "+this.format("date-ordinal")+" "+this.year();return n+="\n - "+this.format("time"),console.log("\n\n",n+"\n - "+e.name+" ("+e.current.offset+")"),this},from:function(e){return(e=this.clone().set(e)).since(this)},fromNow:function(){return this.clone().set(Date.now()).since(this)},weekStart:function(e){if("number"==typeof e)return this._weekStart=e,this;if("string"==typeof e){e=e.toLowerCase().trim();var n=X.short().indexOf(e);-1===n&&(n=X.long().indexOf(e)),-1===n&&(n=1),this._weekStart=n}else console.warn("Spacetime Error: Cannot understand .weekStart() input:",e);return this}};Ee.inDST=Ee.isDST,Ee.round=Ee.nearest,Ee.each=Ee.every;var Te=Ee,Ae=Y.isLeapYear,Ne=function(e){return"string"==typeof e&&(e=parseInt(e,10)),e},$e=["year","month","date","hour","minute","second","millisecond"],xe=function(e,n,t){for(var r=$e.indexOf(t),a=$e.slice(r,$e.length),o=0;o=24?n=24:n<0&&(n=0);var t=e.clone(),r=e.hour()-n,a=r*D.hour;return e.epoch-=a,e.date()!==t.date()&&(e=t.clone(),r>1&&(r-=1),r<1&&(r+=1),a=r*D.hour,e.epoch-=a),M(e,{hour:n}),xe(e,t,"minute"),e.epoch},Ze=function(e,n){var t=n.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/);if(!t){if(!(t=n.match(/([0-9]{1,2}) ?(am|pm)/)))return e.epoch;t.splice(2,0,"0"),t.splice(3,0,"")}var r=!1,a=parseInt(t[1],10),o=parseInt(t[2],10);a>12&&(r=!0),!1===r&&("am"===t[4]&&12===a&&(a=0),"pm"===t[4]&&a<12&&(a+=12)),t[3]=t[3]||"",t[3]=t[3].replace(/:/,"");var i=parseInt(t[3],10)||0;return(e=(e=(e=(e=e.hour(a)).minute(o)).second(i)).millisecond(0)).epoch},He=function(e,n){if((n=Ne(n))>28){var t=e.month(),r=x[t];1===t&&29===n&&Ae(e.year())&&(r=29),n>r&&(n=r)}return n<=0&&(n=1),M(e,{date:n}),e.epoch},Qe=function(e,n){"string"==typeof n&&(n=T()[n.toLowerCase()]),(n=Ne(n))>=12&&(n=11),n<=0&&(n=0);var t=e.date();return t>x[n]&&(t=x[n]),M(e,{month:n,date:t}),e.epoch},Ge=function(e,n){return"string"==typeof n&&/^'[0-9]{2}$/.test(n)&&(n=n.replace(/'/,"").trim(),n=(n=Number(n))>30?1900+n:2e3+n),n=Ne(n),M(e,{year:n}),e.epoch},Ue=function(e,n){n=Ne(n);var t=e.clone();return(n-=1)<=0?n=0:n>=365&&(n=364),e=(e=e.startOf("year")).add(n,"day"),xe(e,t,"hour"),e.epoch},Ve={millisecond:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Ye(n,e),n}return this.d.getMilliseconds()},second:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Le(n,e),n}return this.d.getSeconds()},minute:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Be(n,e),n}return this.d.getMinutes()},hour:function(e){var n=this.d;if(void 0!==e){var t=this.clone();return t.epoch=Fe(t,e),t}return n.getHours()},hourFloat:function(e){if(void 0!==e){var n=this.clone(),t=e%1;t*=60;var r=parseInt(e,10);return n.epoch=Fe(n,r),n.epoch=Be(n,t),n}var a=this.d,o=a.getHours(),i=a.getMinutes();return o+(i/=60)},hour12:function(e){var n=this.d;if(void 0!==e){var t=this.clone(),r=(e=""+e).match(/^([0-9]+)(am|pm)$/);if(r){var a=parseInt(r[1],10);"pm"===r[2]&&(a+=12),t.epoch=Fe(t,a)}return t}var o=n.getHours();return o>12&&(o-=12),0===o&&(o=12),o},time:function(e){if(void 0!==e){var n=this.clone();return e=e.toLowerCase().trim(),n.epoch=Ze(n,e),n}return"".concat(this.h12(),":").concat(Y.zeroPad(this.minute())).concat(this.ampm())},ampm:function(e){var n="am",t=this.hour();if(t>=12&&(n="pm"),"string"!=typeof e)return n;var r=this.clone();return e=e.toLowerCase().trim(),t>=12&&"am"===e?(t-=12,r.hour(t)):t<12&&"pm"===e?(t+=12,r.hour(t)):r},dayTime:function(e){if(void 0!==e){var n={morning:"7:00am",breakfast:"7:00am",noon:"12:00am",lunch:"12:00pm",afternoon:"2:00pm",evening:"6:00pm",dinner:"6:00pm",night:"11:00pm",midnight:"23:59pm"},t=this.clone();return e=(e=e||"").toLowerCase(),!0===n.hasOwnProperty(e)&&(t=t.time(n[e])),t}var r=this.hour();return r<6?"night":r<12?"morning":r<17?"afternoon":r<22?"evening":"night"},iso:function(e){return void 0!==e?this.set(e):this.format("iso")}},We={date:function(e){if(void 0!==e){var n=this.clone();return(e=parseInt(e,10))&&(n.epoch=He(n,e)),n}return this.d.getDate()},day:function(e){if(void 0===e)return this.d.getDay();var n=this.clone(),t=e;"string"==typeof e&&(e=e.toLowerCase(),X.aliases.hasOwnProperty(e)?t=X.aliases[e]:-1===(t=X.short().indexOf(e))&&(t=X.long().indexOf(e)));var r=this.d.getDay(),a=r-t,o=this.subtract(a,"days");return M(o,{hour:n.hour(),minute:n.minute(),second:n.second()}),o},dayName:function(e){if(void 0===e)return X.long()[this.day()];var n=this.clone();return n=n.day(e)},month:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Qe(n,e),n}return this.d.getMonth()}},Je=function(e){return e=(e=(e=e.minute(0)).second(0)).millisecond(1)},Ke={dayOfYear:function(e){if(void 0!==e){var n=this.clone();return n.epoch=Ue(n,e),n}for(var t,r=0,a=this.d.getMonth(),o=1;o<=a;o++)(t=new Date).setDate(1),t.setFullYear(this.d.getFullYear()),t.setHours(1),t.setMinutes(1),t.setMonth(o),t.setHours(-2),r+=t.getDate();return r+this.d.getDate()},week:function(e){if(void 0!==e){var n=this.clone();return n=(n=(n=n.month(0)).date(1)).day("monday"),"december"===(n=Je(n)).monthName()&&n.date()>=28&&(n=n.add(1,"week")),e-=1,n=n.add(e,"weeks")}var t=this.clone();t=(t=t.month(0)).date(1),"december"===(t=(t=Je(t)).day("monday")).monthName()&&t.date()>=28&&(t=t.add(1,"week"));var r=1;1===t.date()&&(r=0),t=t.minus(1,"second");var a=this.epoch;if(t.epoch>a)return 1;var o=0,i=4*this.month();for(t.epoch+=D.week*i,o+=i;o<=52;o++){if(t.epoch>a)return o+r;t=t.add(1,"week")}return 52},monthName:function(e){if(void 0===e)return E()[this.month()];var n=this.clone();return n=n.month(e)},quarter:function(e){if(void 0!==e&&("string"==typeof e&&(e=e.replace(/^q/i,""),e=parseInt(e,10)),Oe[e])){var n=this.clone(),t=Oe[e][0];return n=(n=(n=n.month(t)).date(1)).startOf("day")}for(var r=this.d.getMonth(),a=1;a=je[n][o][1]&&a0&&(n.epoch=Ge(n,-1*t)),"ad"===e&&t<0&&(n.epoch=Ge(n,-1*t)),n}return this.d.getFullYear()<0?"BC":"AD"},decade:function(e){if(void 0!==e){if(!(e=(e=(e=String(e)).replace(/([0-9])'?s$/,"$1")).replace(/([0-9])(th|rd|st|nd)/,"$1")))return console.warn("Spacetime: Invalid decade input"),this;2===e.length&&/[0-9][0-9]/.test(e)&&(e="19"+e);var n=Number(e);return isNaN(n)?this:(n=10*Math.floor(n/10),this.year(n))}return this.startOf("decade").year()},century:function(e){if(void 0!==e){"string"==typeof e&&(e=(e=(e=e.replace(/([0-9])(th|rd|st|nd)/,"$1")).replace(/([0-9]+) ?(b\.?c\.?|a\.?d\.?)/i,(function(e,n,t){return t.match(/b\.?c\.?/i)&&(n="-"+n),n}))).replace(/c$/,""));var n=Number(e);return isNaN(e)?(console.warn("Spacetime: Invalid century input"),this):(0===n&&(n=1),n=n>=0?100*(n-1):100*(n+1),this.year(n))}var t=this.startOf("century").year();return(t=Math.floor(t/100))<0?t-1:t+1},millenium:function(e){if(void 0!==e){if("string"==typeof e&&(e=e.replace(/([0-9])(th|rd|st|nd)/,"$1"),e=Number(e),isNaN(e)))return console.warn("Spacetime: Invalid millenium input"),this;e>0&&(e-=1);var n=1e3*e;return 0===n&&(n=1),this.year(n)}var t=Math.floor(this.year()/1e3);return t>=0&&(t+=1),t}},Re=Object.assign({},Ve,We,Ke);Re.milliseconds=Re.millisecond,Re.seconds=Re.second,Re.minutes=Re.minute,Re.hours=Re.hour,Re.hour24=Re.hour,Re.h12=Re.hour12,Re.h24=Re.hour24,Re.days=Re.day;var Xe=function(e){Object.keys(Re).forEach((function(n){e.prototype[n]=Re[n]}))},en=Y.isLeapYear,nn=function(e,n){return 1===e&&en(n)?29:x[e]},tn=function(e,n){if(e.month>0){var t=parseInt(e.month/12,10);e.year=n.year()+t,e.month=e.month%12}else if(e.month<0){var r=Math.floor(Math.abs(e.month)/13,10);r=Math.abs(r)+1,e.year=n.year()-r,e.month=e.month%12,e.month=e.month+12,12===e.month&&(e.month=0)}return e},rn=function(e,n,t){for(var r=n.year(),a=n.month(),o=nn(a,r);t>o;)t-=o,(a+=1)>=12&&(a-=12,r+=1),o=nn(a,r);return e.month=a,e.date=t,e},an=function(e,n,t){e.year=n.year(),e.month=n.month();var r=n.date();for(e.date=r-Math.abs(t);e.date<1;){e.month-=1,e.month<0&&(e.month=11,e.year-=1);var a=nn(e.month,e.year);e.date+=a}return e},on=["millisecond","second","minute","hour","date","month"],un={second:on.slice(0,1),minute:on.slice(0,2),quarterhour:on.slice(0,2),hour:on.slice(0,3),date:on.slice(0,4),month:on.slice(0,4),quarter:on.slice(0,4),season:on.slice(0,4),year:on,decade:on,century:on};un.week=un.hour,un.season=un.date,un.quarter=un.date;var sn={year:!0,quarter:!0,season:!0,month:!0,week:!0,day:!0},cn={month:!0,quarter:!0,season:!0,year:!0},ln=function(e){e.prototype.add=function(e,n){var t=this.clone();if(!n||0===e)return t;var r=this.clone();if("millisecond"===(n=Y.normalize(n)))return t.epoch+=e,t;"fortnight"===n&&(e*=2,n="week"),D[n]?t.epoch+=D[n]*e:"week"===n?t.epoch+=D.day*(7*e):"quarter"===n||"season"===n?t.epoch+=D.month*(3*e):"quarterhour"===n&&(t.epoch+=15*D.minute*e);var a={};if(un[n]&&un[n].forEach((function(e){a[e]=r[e]()})),sn[n]){var o=r.timezone().current.offset-t.timezone().current.offset;t.epoch+=3600*o*1e3}if("month"===n&&(a.month=r.month()+e,a=tn(a,r)),"week"===n){var i=r.date()+7*e;i<=28&&i>1&&(a.date=i)}else if("date"===n){if(e<0)a=an(a,r,e);else{var u=r.date()+e;a=rn(a,r,u)}0!==e&&r.isSame(t,"day")&&(a.date=r.date()+e)}else if("quarter"===n){if(a.month=r.month()+3*e,a.year=r.year(),a.month<0){var s=Math.floor(a.month/12),c=a.month+12*Math.abs(s);a.month=c,a.year+=s}else if(a.month>=12){var l=Math.floor(a.month/12);a.month=a.month%12,a.year+=l}a.date=r.date()}else if("year"===n){var h=r.year()+e,f=t.year();(fh)&&(t.epoch+=D.day)}else"decade"===n?a.year=t.year()+10:"century"===n&&(a.year=t.year()+100);if(cn[n]){var d=x[a.month];a.date=r.date(),a.date>d&&(a.date=d)}return Object.keys(a).length>1&&M(t,a),t},e.prototype.subtract=function(e,n){return this.clone().add(-1*e,n)},e.prototype.minus=e.prototype.subtract,e.prototype.plus=e.prototype.add},hn={millisecond:function(e){return e.epoch},second:function(e){return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second()].join("-")},minute:function(e){return[e.year(),e.month(),e.date(),e.hour(),e.minute()].join("-")},hour:function(e){return[e.year(),e.month(),e.date(),e.hour()].join("-")},day:function(e){return[e.year(),e.month(),e.date()].join("-")},week:function(e){return[e.year(),e.week()].join("-")},month:function(e){return[e.year(),e.month()].join("-")},quarter:function(e){return[e.year(),e.quarter()].join("-")},year:function(e){return e.year()}};hn.date=hn.day;var fn=function(e){e.prototype.isSame=function(n,r){var a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],o=this;if(!r)return null;if("string"==typeof n&&"object"===t(r)){var i=n;n=r,r=i}return"string"!=typeof n&&"number"!=typeof n||(n=new e(n,this.timezone.name)),r=r.replace(/s$/,""),!0===a&&o.tz!==n.tz&&((n=n.clone()).tz=o.tz),hn[r]?hn[r](o)===hn[r](n):null}},dn=function(e){var n={isAfter:function(e){e=Y.beADate(e,this);var n=Y.getEpoch(e);return null===n?null:this.epoch>n},isBefore:function(e){e=Y.beADate(e,this);var n=Y.getEpoch(e);return null===n?null:this.epoch2&&void 0!==arguments[2]&&arguments[2];e=Y.beADate(e,this),n=Y.beADate(n,this);var r=Y.getEpoch(e);if(null===r)return null;var a=Y.getEpoch(n);return null===a?null:t?this.isBetween(e,n)||this.isEqual(e)||this.isEqual(n):r2&&void 0!==arguments[2]?arguments[2]:{};this.epoch=null,this.tz=j(n,pn),this.silent=t.silent||!0,this.british=t.dmy||t.british,this._weekStart=1,void 0!==t.weekStart&&(this._weekStart=t.weekStart),this._today={},void 0!==t.today&&(this._today=t.today),Object.defineProperty(this,"d",{get:function(){var e=u(this),n=(new Date(this.epoch).getTimezoneOffset()||0)+60*e;n=60*n*1e3;var t=this.epoch+n;return new Date(t)}}),Object.defineProperty(this,"timezones",{get:function(){return pn},set:function(e){return pn=e,e}});var r=J(this,e,n);this.epoch=r.epoch};Object.keys(Te).forEach((function(e){yn.prototype[e]=Te[e]})),yn.prototype.clone=function(){return new yn(this.epoch,this.tz,{silent:this.silent,weekStart:this._weekStart,today:this._today})},yn.prototype.toLocalDate=function(){return new Date(this.epoch)},Xe(yn),ln(yn),fn(yn),dn(yn),mn(yn);var vn=yn,gn=function(e,n){var t=new vn(null),r=new vn(null);t=t.time(e),r=n?r.time(n):t.add(59,"minutes");var a=t.hour(),o=r.hour();return Object.keys(t.timezones).filter((function(e){if(-1===e.indexOf("/"))return!1;var n=new vn(null,e),i=n.hour();return i>=a&&i<=o&&(!(i===a&&n.minute()r.minute()))}))},bn=function(e,n,t){return new vn(e,n,t)},wn=function(e){var n=e._today||{};return Object.keys(n).forEach((function(t){e=e[t](n[t])})),e};bn.now=function(e,n){var t=new vn((new Date).getTime(),e,n);return t=wn(t)},bn.today=function(e,n){var t=new vn((new Date).getTime(),e,n);return(t=wn(t)).startOf("day")},bn.tomorrow=function(e,n){var t=new vn((new Date).getTime(),e,n);return(t=wn(t)).add(1,"day").startOf("day")},bn.yesterday=function(e,n){var t=new vn((new Date).getTime(),e,n);return(t=wn(t)).subtract(1,"day").startOf("day")},bn.extend=function(e){return Object.keys(e).forEach((function(n){vn.prototype[n]=e[n]})),this},bn.timezones=function(){return(new vn).timezones},bn.max=function(e,n){var t=new vn(null,e,n);return t.epoch=864e13,t},bn.min=function(e,n){var t=new vn(null,e,n);return t.epoch=-864e13,t},bn.whereIts=gn,bn.version="6.14.0",bn.plugin=bn.extend;var kn=bn;var _n=function(e){return e&&e.default||e}(Object.freeze({__proto__:null,default:kn}));var zn=function(e){let n=e.sentence();if(!n)return null;let t=n.text()||"",r=t.match(/\(.*\)/);if(!r||!r[0])return null;t=r[0]||"",t=t.trim(),t=t.replace(/^\(/,""),t=t.replace(/\)$/,"");let a=t.split(/ – /);if(a=a.filter((e=>e)),a[0]&&a[1]&&2===a.length)return{birth:a[0],death:a[1]};if(a[0]){let e=a[0].replace(/^(born|ne) (c\.)?/,"");if(_n(e).isValid())return{birth:e}}return null};var jn=function(e){let n=e.categories();for(let e=0;e1e3)return e}}return null};var On=function(e){if(!e)return null;if((e=(e=e.replace(/\(.*\)/,"")).trim()).match(/^[0-9]{4}$/))return{year:parseInt(e,10)};let n=_n(e);return{year:n.year(),month:n.month(),date:n.date()}};var Dn=function(e){let t=n(e,"birth_date");if(t)return On(t);if(t=zn(e),t&&t.birth)return On(t.birth);let r=jn(e);return r?{year:r}:null};var Pn=function(e){let t=n(e,"birth_place");return t||null};const Sn={"Living people":!0,"Year of birth missing (living people)":!0,"Date of birth missing (living people)":!0,"Place of birth missing (living people)":!0,"Active politicians":!0,"Biography articles of living people":!0},Mn={"Dead people":!0,"Date of death missing":!0,"Date of death unknown":!0,"Place of death missing":!0,"Place of death unknown":!0,"Year of death missing":!0,"Year of death unknown":!0,"Year of death uncertain":!0,"Recent deaths":!0,"People declared dead in absentia":!0,"Politicians elected posthumously":!0,"People who died in office":!0,"Assassinated heads of state‎ ":!0,"Assassinated heads of government":!0,"Assassinated mayors":!0,"People who died in Nazi concentration camps":!0,"People executed in Nazi concentration camps":!0,"Politicians who died in Nazi concentration camps":!0,"People who have received posthumous pardons":!0,"People lost at sea‎":!0,"Deaths due to shipwreck":!0,"People who died at sea":!0,"Unsolved deaths‎":!0,"Deaths by horse-riding accident‎":!0,"Deaths from falls‎":!0,"Deaths by poisoning‎‎":!0,"Deaths from cerebrovascular disease‎":!0,"Deaths from asphyxiation‎":!0,"Deaths from sepsis‎":!0,"Deaths from pneumonia‎":!0,"Deaths from dysentery‎‎":!0,"Deaths by drowning‎":!0};var qn=function(e){let n=e.categories();return!!n.find((e=>Sn.hasOwnProperty(e)))||!n.find((e=>Mn.hasOwnProperty(e)))&&null};const In={blp:!0,"blp unsourced":!0,"blp unsourced section":!0,"blp primary sources":!0,"blp self-published":!0,"blp sources":!0,"blp sources section":!0,"blp imdb-only refimprove":!0,"blp imdb refimprove":!0,"blp no footnotes":!0,"blp more footnotes":!0,"blp one source":!0,"active politician":!0,activepol:!0,"current person":!0},Cn={"recent death":!0,"recent death presumed":!0,"recent death confirmed":!0,obituary:!0,elegy:!0,eulogy:!0,panegyric:!0,memorial:!0};var En=function(e){let n=e.templates().map((e=>e.json()));for(let e=0;e1e3)return e}}return null};var $n=function(e){let t=n(e,"death_date");if(t)return On(t);if(t=zn(e),t&&t.death)return On(t.death);let r=Nn(e);return r?{year:r}:null};var xn=function(e){let t=n(e,"death_place");return t||null};var Yn=function(e){let t=n(e,"nationality");return t||null};return function(e){e.Doc.prototype.birthDate=function(){return Dn(this)},e.Doc.prototype.birthPlace=function(){return Pn(this)},e.Doc.prototype.isAlive=function(){return An(this)},e.Doc.prototype.deathDate=function(){return $n(this)},e.Doc.prototype.deathPlace=function(){return xn(this)},e.Doc.prototype.nationality=function(){return Yn(this)}}})); +!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).wtfPerson=t()}(this,(function(){"use strict";function e(e){return e&&Object.prototype.hasOwnProperty.call(e,"default")&&1===Object.keys(e).length?e.default:e}const t={actor:!0,adult_biography:!0,afl_biography:!0,alpine_ski_racer:!0,archbishop:!0,architect:!0,artist:!0,athlete:!0,baseball_biography:!0,basketball_biography:!0,boxer:!0,canadianmp:!0,cfl_player:!0,chef:!0,chess_player:!0,christian_leader:!0,college_coach:!0,college_football_player:!0,comedian:!0,comics_creator:!0,cricketer:!0,criminal:!0,cyclist:!0,economist:!0,engineer:!0,fashion_designer:!0,field_hockey_player:!0,figure_skater:!0,football_biography:!0,gaa_player:!0,golfer:!0,governor:!0,gridiron_football_person:!0,gymnast:!0,handball_biography:!0,hindu_leader:!0,horseracing_personality:!0,ice_hockey_player:!0,indian_politician:!0,judge:!0,lacrosse_player:!0,martial_artist:!0,mass_murderer:!0,medical_person:!0,military_person:!0,minister:!0,mlb_player:!0,model:!0,monarch:!0,mp:!0,nascar_driver:!0,nba_biography:!0,nfl_biography:!0,nfl_player:!0,officeholder:!0,person:!0,philosopher:!0,police_officer:!0,politician:!0,"politician_(general)":!0,presenter:!0,president:!0,professional_wrestler:!0,racing_driver:!0,religious_biography:!0,roman_emperor:!0,royalty:!0,rugby_biography:!0,rugby_league_biography:!0,saint:!0,scholar:!0,scientist:!0,skier:!0,sportsperson:!0,squash_player:!0,state_representative:!0,state_senator:!0,swimmer:!0,tennis_biography:!0,volleyball_biography:!0,volleyball_player:!0,wrc_driver:!0,writer:!0,"hockey team player":!0,"snooker player":!0,bishop:!0,"football biography":!0,"military person":!0,"baseball biography":!0,"ice hockey player":!0,"nfl player":!0,"christian leader":!0,congressman:!0,"basketball biography":!0,"comics creator":!0,"professional wrestler":!0,"college coach":!0,"tennis biography":!0,"afl biography":!0,"nfl biography":!0,"rugby biography":!0,"rugby league biography":!0,"prime minister":!0,"nba biography":!0,"figure skater":!0,"f1 driver":!0,"gridiron football person":!0,"indian politician":!0,"racing driver":!0,"martial artist":!0,"chinese-language singer and actor":!0,astronaut:!0,senator:!0,"nascar driver":!0,"adult biography":!0,"state representative":!0,"state senator":!0,"coa wide":!0,"religious biography":!0,"chess player":!0,"pageant titleholder":!0,"gaa player":!0,"us cabinet official":!0};var n=function(e,n){let a=e.infoboxes();for(let e=0;e{const[a,r]=e.split("/"),[o,i]=r.split(":");return Date.UTC(n,a-1,o,i)-36e5*t};var r,o=(e,t,n,r,o)=>{const i=new Date(e).getUTCFullYear(),s=a(t,o,i),l=a(n,r,i);return e>=s&&e10/03:02":"4/adelaide,4/broken_hill,4/south,4/yancowinna","9.5|s":"4/darwin,4/north","8|s|03/08:01->10/04:00":"12/casey","8|s":"2/kuala_lumpur,2/makassar,2/singapore,4/perth,2/ujung_pandang,4/west","8|n":"2/brunei,2/choibalsan,2/hong_kong,2/irkutsk,2/kuching,2/macau,2/manila,2/shanghai,2/taipei,2/ulaanbaatar,2/chongqing,2/chungking,2/harbin,2/macao,2/ulan_bator","8.75|s":"4/eucla","7|s":"12/davis,2/jakarta,9/christmas","7|n":"2/bangkok,2/barnaul,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane,2/ho_chi_minh","6|s":"12/vostok","6|n":"2/almaty,2/bishkek,2/dhaka,2/omsk,2/qyzylorda,2/qostanay,2/thimphu,2/urumqi,9/chagos,2/dacca,2/kashgar,2/thimbu","6.5|n":"2/rangoon,9/cocos,2/yangon","5|s":"12/mawson,9/kerguelen","5|n":"2/aqtau,2/aqtobe,2/ashgabat,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives,2/ashkhabad","5.75|n":"2/katmandu,2/kathmandu","5.5|n":"2/calcutta,2/colombo,2/kolkata","4|s":"9/reunion","4|n":"2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius","4.5|n|03/22:00->09/21:24":"2/tehran","4.5|n":"2/kabul","3|s":"12/syowa,9/antananarivo","3|n|03/28:03->10/31:04":"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye,8/nicosia","3|n|03/28:02->10/31:03":"8/chisinau,8/tiraspol","3|n|03/28:00->10/30:24":"2/beirut","3|n|03/27:00->10/30:01":"2/gaza,2/hebron","3|n|03/26:02->10/31:02":"2/jerusalem,2/tel_aviv","3|n|03/26:00->10/29:01":"2/amman","3|n|03/26:00->10/28:24":"2/damascus","3|n":"0/addis_ababa,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte,0/asmara,2/istanbul","2|s|03/28:02->10/31:02":"12/troll","2|s":"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane","2|n|03/28:02->10/31:03":"0/ceuta,arctic/longyearbyen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich,3/jan_mayen","2|n":"0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad","1|s":"0/brazzaville,0/kinshasa,0/luanda,0/windhoek","1|n|04/11:03->05/16:02":"0/casablanca,0/el_aaiun","1|n|03/28:01->10/31:02":"3/canary,3/faeroe,3/madeira,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london,3/faroe,8/belfast","1|n":"0/algiers,0/bangui,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis","14|n":"11/kiritimati","13|s|04/04:04->09/26:03":"11/apia","13|s|01/15:02->11/05:03":"11/tongatapu","13|n":"11/enderbury,11/fakaofo","12|s|04/04:03->09/26:02":"12/mcmurdo,11/auckland,12/south_pole","12|s|01/17:03->11/14:02":"11/fiji","12|n":"2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis","12.75|s|04/04:03->09/26:02":"11/chatham","11|s|04/04:03->10/03:02":"12/macquarie","11|s":"11/bougainville","11|n":"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/ponape,11/pohnpei","11.5|n|04/04:03->10/03:02":"11/norfolk","10|s|04/04:03->10/03:02":"4/currie,4/hobart,4/melbourne,4/sydney,4/act,4/canberra,4/nsw,4/tasmania,4/victoria","10|s":"12/dumontdurville,4/brisbane,4/lindeman,11/port_moresby,4/queensland","10|n":"2/ust-nera,2/vladivostok,2/yakutsk,11/guam,11/saipan,11/truk,11/chuuk,11/yap","10.5|s|04/04:01->10/03:02":"4/lord_howe,4/lhi","0|n|03/28:00->10/31:01":"1/scoresbysund,3/azores","0|n":"0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/utc,0/timbuktu,13/gmt-0,13/gmt+0,13/gmt0,13/greenwich,13/uct,13/universal,13/zulu","-9|n|03/14:02->11/07:02":"1/adak,1/atka,us/aleutian","-9|n":"11/gambier","-9.5|n":"11/marquesas","-8|n|03/14:02->11/07:02":"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat,us/alaska","-8|n":"11/pitcairn","-7|n|03/14:02->11/07:02":"1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/ensenada,6/pacific,10/bajanorte,us/pacific-new,us/pacific","-7|n|03/08:02->11/01:01":"1/dawson,1/whitehorse,6/yukon","-7|n":"1/creston,1/dawson_creek,1/fort_nelson,1/hermosillo,1/phoenix,us/arizona","-6|s|04/03:22->09/04:22":"11/easter,7/easterisland","-6|n|04/04:02->10/31:02":"1/chihuahua,1/mazatlan,10/bajasur","-6|n|03/14:02->11/07:02":"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/yellowknife,1/shiprock,6/mountain,us/mountain","-6|n":"1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,11/galapagos,6/east-saskatchewan,6/saskatchewan","-5|s":"1/lima,1/rio_branco,1/porto_acre,5/acre","-5|n|04/04:02->10/31:02":"1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general","-5|n|03/14:02->11/07:02":"1/chicago,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,1/indiana/knox,1/indiana/tell_city,1/north_dakota/beulah,1/north_dakota/center,1/north_dakota/new_salem,1/knox_in,6/central,us/central,us/indiana-starke","-5|n|03/12:03->11/05:01":"1/north_dakota","-5|n":"1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/atikokan","-4|s|05/13:23->08/13:01":"12/palmer","-4|s|04/03:24->09/05:00":"1/santiago,7/continental","-4|s|03/27:24->10/03:00":"1/asuncion","-4|s|02/16:24->11/03:00":"1/campo_grande,1/cuiaba","-4|s":"1/la_paz,1/manaus,5/west","-4|n|03/14:02->11/07:02":"1/detroit,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,1/indiana/marengo,1/indiana/petersburg,1/indiana/vevay,1/indiana/vincennes,1/indiana/winamac,1/kentucky/monticello,1/fort_wayne,1/indiana/indianapolis,1/kentucky/louisville,6/eastern,us/east-indiana,us/eastern,us/michigan","-4|n|03/14:00->11/07:01":"1/havana","-4|n|03/12:03->11/05:01":"1/indiana,1/kentucky","-4|n":"1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin","-3|s":"1/argentina,1/buenos_aires,1/catamarca,1/cordoba,1/fortaleza,1/jujuy,1/mendoza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,1/argentina/la_rioja,1/argentina/rio_gallegos,1/argentina/salta,1/argentina/san_juan,1/argentina/san_luis,1/argentina/tucuman,1/argentina/ushuaia,1/argentina/buenos_aires,1/argentina/catamarca,1/argentina/comodrivadavia,1/argentina/cordoba,1/argentina/jujuy,1/argentina/mendoza,1/rosario,5/east","-3|n|03/14:02->11/07:02":"1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic","-3|n":"1/araguaina,1/bahia,1/belem,1/cayenne,1/maceio,1/paramaribo,1/recife,1/santarem","-2|n|03/27:22->10/30:23":"1/godthab,1/nuuk","-2|n|03/14:02->11/07:02":"1/miquelon","-2|n":"1/noronha,3/south_georgia,5/denoronha","-2.5|n|03/14:02->11/07:02":"1/st_johns,6/newfoundland","-1|n":"3/cape_verde","-11|n":"11/midway,11/niue,11/pago_pago,11/samoa,us/samoa","-10|n":"11/honolulu,11/johnston,11/rarotonga,11/tahiti,us/hawaii"}}))&&r.default||r,s=["africa","america","asia","atlantic","australia","brazil","canada","chile","europe","indian","mexico","pacific","antarctica","etc"];let l={};Object.keys(i).forEach((e=>{let t=e.split("|"),n={offset:Number(t[0]),hem:t[1]};t[2]&&(n.dst=t[2]),i[e].split(",").forEach((e=>{e=e.replace(/(^[0-9]+)\//,((e,t)=>(t=Number(t),s[t]+"/"))),l[e]=n}))})),l.utc={offset:0,hem:"n"};for(let e=-14;e<=14;e+=.5){let t=e;t>0&&(t="+"+t);let n="etc/gmt"+t;l[n]={offset:-1*e,hem:"n"},n="utc/gmt"+t,l[n]={offset:-1*e,hem:"n"}}const u=/(\-?[0-9]+)h(rs)?/i,c=/(\-?[0-9]+)/,h=/utc([\-+]?[0-9]+)/i,d=/gmt([\-+]?[0-9]+)/i,m=function(e){return(e=Number(e))>=-13&&e<=13?"etc/gmt"+(e=((e*=-1)>0?"+":"")+e):null};var p=l;const f=(()=>{let e=(()=>{if("undefined"==typeof Intl||void 0===Intl.DateTimeFormat)return null;let e=Intl.DateTimeFormat();if(void 0===e||void 0===e.resolvedOptions)return null;let t=e.resolvedOptions().timeZone;return t?t.toLowerCase():null})();return null===e?"utc":e})(),y=Object.keys(p).reduce(((e,t)=>{let n=t.split("/")[1]||"";return n=n.replace(/_/g," "),e[n]=t,e}),{});var g,b=(function(e,t){t.isLeapYear=e=>e%4==0&&e%100!=0||e%400==0,t.isDate=e=>"[object Date]"===Object.prototype.toString.call(e)&&!isNaN(e.valueOf()),t.isArray=e=>"[object Array]"===Object.prototype.toString.call(e),t.isObject=e=>"[object Object]"===Object.prototype.toString.call(e),t.isBoolean=e=>"[object Boolean]"===Object.prototype.toString.call(e),t.zeroPad=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return(e+="").length>=t?e:new Array(t-e.length+1).join("0")+e},t.titleCase=e=>e?e[0].toUpperCase()+e.substr(1):"",t.ordinal=e=>{let t=e%10,n=e%100;return 1===t&&11!==n?e+"st":2===t&&12!==n?e+"nd":3===t&&13!==n?e+"rd":e+"th"},t.toCardinal=e=>(e=(e=String(e)).replace(/([0-9])(st|nd|rd|th)$/i,"$1"),parseInt(e,10)),t.normalize=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return"day"===(e=(e=(e=(e=e.toLowerCase().trim()).replace(/ies$/,"y")).replace(/s$/,"")).replace(/-/g,""))||"days"===e?"date":"min"===e||"mins"===e?"minute":e},t.getEpoch=e=>"number"==typeof e?e:t.isDate(e)?e.getTime():e.epoch?e.epoch:null,t.beADate=(e,n)=>!1===t.isObject(e)?n.clone().set(e):e,t.formatTimezone=function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const a=e>0?"+":"-",r=Math.abs(e);return"".concat(a).concat(t.zeroPad(parseInt(""+r,10))).concat(n).concat(t.zeroPad(r%1*60))}}(g={exports:{}},g.exports),g.exports);b.isLeapYear,b.isDate,b.isArray,b.isObject,b.isBoolean,b.zeroPad,b.titleCase,b.ordinal,b.toCardinal,b.normalize,b.getEpoch,b.beADate,b.formatTimezone;const w={year:(new Date).getFullYear(),month:0,date:1};var k={parseArray:(e,t,n)=>{if(0===t.length)return e;let a=["year","month","date","hour","minute","second","millisecond"];for(let r=0;r{if(0===Object.keys(t).length)return e;t=Object.assign({},w,n,t);let a=Object.keys(t);for(let r=0;r0&&t<25e8&&!1===e.silent&&(console.warn(" - Warning: You are setting the date to January 1970."),console.warn(" - did input seconds instead of milliseconds?")),e.epoch=t,e}};const v=function(e){return e.epoch=Date.now(),Object.keys(e._today||{}).forEach((t=>{"function"==typeof e[t]&&(e=e[t](e._today[t]))})),e},_={now:e=>v(e),today:e=>v(e),tonight:e=>(e=v(e)).hour(18),tomorrow:e=>(e=(e=v(e)).add(1,"day")).startOf("day"),yesterday:e=>(e=(e=v(e)).subtract(1,"day")).startOf("day"),christmas:e=>{let t=v(e).year();return e.set([t,11,25,18,0,0])},"new years":e=>{let t=v(e).year();return e.set([t,11,31,18,0,0])}};_["new years eve"]=_["new years"];var z=_;let j={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5};j.date=j.day,j.month=25488e5,j.week=6048e5,j.year=3154e7,Object.keys(j).forEach((e=>{j[e+"s"]=j[e]}));var O=j;const D=(e,t,n,a,r)=>{let o=e.d[n]();if(o===t)return;let i=null===r?null:e.d[r](),s=e.epoch,l=t-o;e.epoch+=O[a]*l,"day"===a&&Math.abs(l)>28&&t<28&&(e.epoch+=O.hour),null!==r&&i!==e.d[r]()&&(e.epoch=s);const u=O[a]/2;for(;e.d[n]()t;)e.epoch-=u;null!==r&&i!==e.d[r]()&&(e.epoch=s)},P={year:{valid:e=>e>-4e3&&e<4e3,walkTo:(e,t)=>D(e,t,"getFullYear","year",null)},month:{valid:e=>e>=0&&e<=11,walkTo:(e,t)=>{let n=e.d,a=n.getMonth(),r=e.epoch,o=n.getFullYear();if(a===t)return;let i=t-a;for(e.epoch+=O.day*(28*i),o!==e.d.getFullYear()&&(e.epoch=r);e.d.getMonth()t;)e.epoch-=O.day}},date:{valid:e=>e>0&&e<=31,walkTo:(e,t)=>D(e,t,"getDate","day","getMonth")},hour:{valid:e=>e>=0&&e<24,walkTo:(e,t)=>D(e,t,"getHours","hour","getDate")},minute:{valid:e=>e>=0&&e<60,walkTo:(e,t)=>D(e,t,"getMinutes","minute","getHours")},second:{valid:e=>e>=0&&e<60,walkTo:(e,t)=>{e.epoch=e.seconds(t).epoch}},millisecond:{valid:e=>e>=0&&e<1e3,walkTo:(e,t)=>{e.epoch=e.milliseconds(t).epoch}}};let M=["jan","feb","mar","apr","may","jun","jul","aug","sept","oct","nov","dec"],S=["january","february","march","april","may","june","july","august","september","october","november","december"];var q=[31,28,31,30,31,30,31,31,30,31,30,31],N=b,I=()=>M,T=()=>S,E=()=>function(){const e={sep:8};for(let t=0;t{M=e.short||M,S=e.long||S};const $=N.isLeapYear,A=E();var Y=(e,t)=>{let n=Object.keys(P),a=e.clone();for(let r=0;r{if(!t)return e;"Z"!==t&&"z"!==t||(t="+0000");let n=0;/^[\+-]?[0-9]{2}:[0-9]{2}$/.test(t)&&(!0===/:00/.test(t)&&(t=t.replace(/:00/,"")),!0===/:30/.test(t)&&(t=t.replace(/:30/,".5"))),/^[\+-]?[0-9]{4}$/.test(t)&&(t=t.replace(/30$/,".5")),n=parseFloat(t),Math.abs(n)>100&&(n/=100),n*=-1,n>=0&&(n="+"+n);let a="etc/gmt"+n;return e.timezones[a]&&(e.tz=a),e},parseTime:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=(t=t.replace(/^\s+/,"").toLowerCase()).match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\.]?([0-9]{1,4})?/);if(null!==n){let a=Number(n[1]);if(a<0||a>24)return e.startOf("day");let r=Number(n[2]);if(n[2].length<2||r<0||r>59)return e.startOf("day");n[4]>999&&(n[4]=parseInt((""+n[4]).substring(0,3),10)),e=(e=(e=(e=e.hour(a)).minute(r)).seconds(n[3]||0)).millisecond(n[4]||0);let o=t.match(/[\b0-9] ?(am|pm)\b/);return null!==o&&o[1]&&(e=e.ampm(o[1])),e}if(n=t.match(/([0-9]+) ?(am|pm)/),null!==n&&n[1]){let t=Number(n[1]);return t>12||t<1?e.startOf("day"):e=(e=(e=e.hour(n[1]||0)).ampm(n[2])).startOf("hour")}return e.startOf("day")},parseYear:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;if(e=e.trim(),!0===/^'[0-9][0-9]$/.test(e)){let t=Number(e.replace(/'/,""));return t>50?1900+t:2e3+t}let n=parseInt(e,10);return!n&&t&&(n=t.year),n=n||(new Date).getFullYear(),n},parseMonth:function(e){return e=e.toLowerCase().trim(),A[e]},validate:e=>{if(!0!==q.hasOwnProperty(e.month))return!1;if(1===e.month)return!!($(e.year)&&e.date<=29)||e.date<=28;let t=q[e.month]||0;return e.date<=t}};const{validate:L,parseTime:B,parseYear:F,parseMonth:Z,parseOffset:H}=x;var Q=[{reg:/^(\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\-\+:]+)?$/i,parse:(e,t)=>{let n={year:t[1],month:parseInt(t[2],10)-1,date:t[3]};return!1===L(n)?(e.epoch=null,e):(H(e,t[5]),Y(e,n),e=B(e,t[4]))}},{reg:/^([0-9]{4})[\-\/\. ]([0-9]{1,2})[\-\/\. ]([0-9]{1,2})( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,parse:(e,t)=>{let n={year:t[1],month:parseInt(t[2],10)-1,date:parseInt(t[3],10)};return n.month>=12&&(n.date=parseInt(t[2],10),n.month=parseInt(t[3],10)-1),!1===L(n)?(e.epoch=null,e):(Y(e,n),e=B(e,t[4]))}},{reg:/^([0-9]{4})[\-\/\. ]([a-z]+)[\-\/\. ]([0-9]{1,2})( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,parse:(e,t)=>{let n={year:F(t[1],e._today),month:Z(t[2]),date:N.toCardinal(t[3]||"")};return!1===L(n)?(e.epoch=null,e):(Y(e,n),e=B(e,t[4]))}}];const{validate:G,parseTime:U,parseYear:V,parseMonth:W}=x;var J=[{reg:/^([0-9]{1,2})[\-\/.]([0-9]{1,2})[\-\/.]?([0-9]{4})?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:(e,t)=>{let n=parseInt(t[1],10)-1,a=parseInt(t[2],10);(e.british||n>=12)&&(a=parseInt(t[1],10),n=parseInt(t[2],10)-1);let r={date:a,month:n,year:V(t[3],e._today)||(new Date).getFullYear()};return!1===G(r)?(e.epoch=null,e):(Y(e,r),e=U(e,t[4]))}},{reg:/^([a-z]+)[\-\/\. ]([0-9]{1,2})[\-\/\. ]?([0-9]{4}|'[0-9]{2})?( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,parse:(e,t)=>{let n={year:V(t[3],e._today),month:W(t[1]),date:N.toCardinal(t[2]||"")};return!1===G(n)?(e.epoch=null,e):(Y(e,n),e=U(e,t[4]))}},{reg:/^([a-z]+) ([0-9]{1,2})( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i,parse:(e,t)=>{let n={year:V(t[3],e._today),month:W(t[1]),date:N.toCardinal(t[2]||"")};return!1===G(n)?(e.epoch=null,e):(Y(e,n),e=U(e,t[4]))}},{reg:/^([a-z]+) ([0-9]{1,2})( [0-9:]+)?( \+[0-9]{4})?( [0-9]{4})?$/i,parse:(e,t)=>{let n={year:V(t[5],e._today),month:W(t[1]),date:N.toCardinal(t[2]||"")};return!1===G(n)?(e.epoch=null,e):(Y(e,n),e=U(e,t[3]))}}];const{validate:K,parseTime:R,parseYear:X,parseMonth:ee}=x;var te=[{reg:/^([0-9]{1,2})[\-\/]([a-z]+)[\-\/]?([0-9]{4})?$/i,parse:(e,t)=>{let n={year:X(t[3],e._today),month:ee(t[2]),date:N.toCardinal(t[1]||"")};return!1===K(n)?(e.epoch=null,e):(Y(e,n),e=R(e,t[4]))}},{reg:/^([0-9]{1,2})( [a-z]+)( [0-9]{4}| '[0-9]{2})? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i,parse:(e,t)=>{let n={year:X(t[3],e._today),month:ee(t[2]),date:N.toCardinal(t[1])};return n.month&&!1!==K(n)?(Y(e,n),e=R(e,t[4])):(e.epoch=null,e)}},{reg:/^([0-9]{1,2})[\. -/]([a-z]+)[\. -/]([0-9]{4})?( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,parse:(e,t)=>{let n={date:Number(t[1]),month:ee(t[2]),year:Number(t[3])};return!1===K(n)?(e.epoch=null,e):(Y(e,n),e=e.startOf("day"),e=R(e,t[4]))}}];const{validate:ne,parseTime:ae,parseYear:re,parseMonth:oe}=x;var ie=[].concat(Q,J,te,[{reg:/^([0-9]{4})[\-\/]([0-9]{2})$/i,parse:(e,t)=>{let n={year:t[1],month:parseInt(t[2],10)-1,date:1};return!1===ne(n)?(e.epoch=null,e):(Y(e,n),e=ae(e,t[4]))}},{reg:/^([a-z]+) ([0-9]{4})$/i,parse:(e,t)=>{let n={year:re(t[2],e._today),month:oe(t[1]),date:e._today.date||1};return!1===ne(n)?(e.epoch=null,e):(Y(e,n),e=ae(e,t[4]))}},{reg:/^(q[0-9])( of)?( [0-9]{4})?/i,parse:(e,t)=>{let n=t[1]||"";e=e.quarter(n);let a=t[3]||"";return a&&(a=a.trim(),e=e.year(a)),e}},{reg:/^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i,parse:(e,t)=>{let n=t[1]||"";e=e.season(n);let a=t[3]||"";return a&&(a=a.trim(),e=e.year(a)),e}},{reg:/^[0-9,]+ ?b\.?c\.?$/i,parse:(e,t)=>{let n=t[0]||"";n=n.replace(/^([0-9,]+) ?b\.?c\.?$/i,"-$1");let a=new Date,r={year:parseInt(n.trim(),10),month:a.getMonth(),date:a.getDate()};return!1===ne(r)?(e.epoch=null,e):(Y(e,r),e=ae(e))}},{reg:/^[0-9,]+ ?(a\.?d\.?|c\.?e\.?)$/i,parse:(e,t)=>{let n=t[0]||"";n=n.replace(/,/g,"");let a=new Date,r={year:parseInt(n.trim(),10),month:a.getMonth(),date:a.getDate()};return!1===ne(r)?(e.epoch=null,e):(Y(e,r),e=ae(e))}},{reg:/^[0-9]{4}( ?a\.?d\.?)?$/i,parse:(e,t)=>{let n=e._today;n.month&&!n.date&&(n.date=1);let a=new Date,r={year:re(t[0],n),month:n.month||a.getMonth(),date:n.date||a.getDate()};return!1===ne(r)?(e.epoch=null,e):(Y(e,r),e=ae(e))}}]),se=k,le=z,ue=function(e){return(e=(e=(e=e.replace(/\b(mon|tues?|wed|wednes|thur?s?|fri|sat|satur|sun)(day)?\b/i,"")).replace(/([0-9])(th|rd|st|nd)/,"$1")).replace(/,/g,"")).replace(/ +/g," ").trim()};const{parseArray:ce,parseObject:he,parseNumber:de}=se,me={year:(new Date).getFullYear(),month:0,date:1};let pe=["sun","mon","tue","wed","thu","fri","sat"],fe=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],ye=!0;var ge={short:()=>pe,long:()=>fe,set:e=>{pe=e.short||pe,fe=e.long||fe},aliases:{mo:1,tu:2,we:3,th:4,fr:5,sa:6,su:7,tues:2,weds:3,wedn:3,thur:4,thurs:4}},be=()=>ye,we=e=>{ye=e},ke=e=>{let t=e.timezone().current.offset;return t?N.formatTimezone(t,":"):"Z"};const ve=e=>be()?N.titleCase(e):e,_e={day:e=>ve(e.dayName()),"day-short":e=>ve(ge.short()[e.day()]),"day-number":e=>e.day(),"day-ordinal":e=>N.ordinal(e.day()),"day-pad":e=>N.zeroPad(e.day()),date:e=>e.date(),"date-ordinal":e=>N.ordinal(e.date()),"date-pad":e=>N.zeroPad(e.date()),month:e=>ve(e.monthName()),"month-short":e=>ve(I()[e.month()]),"month-number":e=>e.month(),"month-ordinal":e=>N.ordinal(e.month()),"month-pad":e=>N.zeroPad(e.month()),"iso-month":e=>N.zeroPad(e.month()+1),year:e=>{let t=e.year();return t>0?t:(t=Math.abs(t),t+" BC")},"year-short":e=>{let t=e.year();return t>0?"'"+String(e.year()).substr(2,4):(t=Math.abs(t),t+" BC")},"iso-year":e=>{let t=e.year(),n=t<0,a=N.zeroPad(Math.abs(t),4);return n&&(a=N.zeroPad(a,6),a="-"+a),a},time:e=>e.time(),"time-24":e=>"".concat(e.hour24(),":").concat(N.zeroPad(e.minute())),hour:e=>e.hour12(),"hour-pad":e=>N.zeroPad(e.hour12()),"hour-24":e=>e.hour24(),"hour-24-pad":e=>N.zeroPad(e.hour24()),minute:e=>e.minute(),"minute-pad":e=>N.zeroPad(e.minute()),second:e=>e.second(),"second-pad":e=>N.zeroPad(e.second()),millisecond:e=>e.millisecond(),"millisecond-pad":e=>N.zeroPad(e.millisecond(),3),ampm:e=>e.ampm(),quarter:e=>"Q"+e.quarter(),season:e=>e.season(),era:e=>e.era(),json:e=>e.json(),timezone:e=>e.timezone().name,offset:e=>ke(e),numeric:e=>"".concat(e.year(),"/").concat(N.zeroPad(e.month()+1),"/").concat(N.zeroPad(e.date())),"numeric-us":e=>"".concat(N.zeroPad(e.month()+1),"/").concat(N.zeroPad(e.date()),"/").concat(e.year()),"numeric-uk":e=>"".concat(N.zeroPad(e.date()),"/").concat(N.zeroPad(e.month()+1),"/").concat(e.year()),"mm/dd":e=>"".concat(N.zeroPad(e.month()+1),"/").concat(N.zeroPad(e.date())),iso:e=>"".concat(e.format("iso-year"),"-").concat(N.zeroPad(e.month()+1),"-").concat(N.zeroPad(e.date()),"T").concat(N.zeroPad(e.h24()),":").concat(N.zeroPad(e.minute()),":").concat(N.zeroPad(e.second()),".").concat(N.zeroPad(e.millisecond(),3)).concat(ke(e)),"iso-short":e=>{let t=N.zeroPad(e.month()+1),n=N.zeroPad(e.date());var a;return"".concat((a=e.year())>=0?N.zeroPad(a,4):(a=Math.abs(a),"-"+N.zeroPad(a,4)),"-").concat(t,"-").concat(n)},"iso-utc":e=>new Date(e.epoch).toISOString(),nice:e=>"".concat(I()[e.month()]," ").concat(N.ordinal(e.date()),", ").concat(e.time()),"nice-24":e=>"".concat(I()[e.month()]," ").concat(N.ordinal(e.date()),", ").concat(e.hour24(),":").concat(N.zeroPad(e.minute())),"nice-year":e=>"".concat(I()[e.month()]," ").concat(N.ordinal(e.date()),", ").concat(e.year()),"nice-day":e=>"".concat(ge.short()[e.day()]," ").concat(ve(I()[e.month()])," ").concat(N.ordinal(e.date())),"nice-full":e=>"".concat(e.dayName()," ").concat(ve(e.monthName())," ").concat(N.ordinal(e.date()),", ").concat(e.time()),"nice-full-24":e=>"".concat(e.dayName()," ").concat(ve(e.monthName())," ").concat(N.ordinal(e.date()),", ").concat(e.hour24(),":").concat(N.zeroPad(e.minute()))},ze={"day-name":"day","month-name":"month","iso 8601":"iso","time-h24":"time-24","time-12":"time","time-h12":"time",tz:"timezone","day-num":"day-number","month-num":"month-number","month-iso":"iso-month","year-iso":"iso-year","nice-short":"nice","nice-short-24":"nice-24",mdy:"numeric-us",dmy:"numeric-uk",ymd:"numeric","yyyy/mm/dd":"numeric","mm/dd/yyyy":"numeric-us","dd/mm/yyyy":"numeric-us","little-endian":"numeric-uk","big-endian":"numeric","day-nice":"nice-day"};Object.keys(ze).forEach((e=>_e[e]=_e[ze[e]]));const je=N.zeroPad,Oe=N.formatTimezone,De={G:e=>e.era(),GG:e=>e.era(),GGG:e=>e.era(),GGGG:e=>"AD"===e.era()?"Anno Domini":"Before Christ",y:e=>e.year(),yy:e=>parseInt(String(e.year()).substr(2,4),10),yyy:e=>e.year(),yyyy:e=>e.year(),yyyyy:e=>"0"+e.year(),Q:e=>e.quarter(),QQ:e=>e.quarter(),QQQ:e=>e.quarter(),QQQQ:e=>e.quarter(),M:e=>e.month()+1,MM:e=>je(e.month()+1),MMM:e=>e.format("month-short"),MMMM:e=>e.format("month"),w:e=>e.week(),ww:e=>je(e.week()),d:e=>e.date(),dd:e=>je(e.date()),D:e=>e.dayOfYear(),DD:e=>je(e.dayOfYear()),DDD:e=>je(e.dayOfYear(),3),E:e=>e.format("day-short"),EE:e=>e.format("day-short"),EEE:e=>e.format("day-short"),EEEE:e=>e.format("day"),EEEEE:e=>e.format("day")[0],e:e=>e.day(),ee:e=>e.day(),eee:e=>e.format("day-short"),eeee:e=>e.format("day"),eeeee:e=>e.format("day")[0],a:e=>e.ampm().toUpperCase(),aa:e=>e.ampm().toUpperCase(),aaa:e=>e.ampm().toUpperCase(),aaaa:e=>e.ampm().toUpperCase(),h:e=>e.h12(),hh:e=>je(e.h12()),H:e=>e.hour(),HH:e=>je(e.hour()),m:e=>e.minute(),mm:e=>je(e.minute()),s:e=>e.second(),ss:e=>je(e.second()),SSS:e=>je(e.millisecond(),3),A:e=>e.epoch-e.startOf("day").epoch,z:e=>e.timezone().name,zz:e=>e.timezone().name,zzz:e=>e.timezone().name,zzzz:e=>e.timezone().name,Z:e=>Oe(e.timezone().current.offset),ZZ:e=>Oe(e.timezone().current.offset),ZZZ:e=>Oe(e.timezone().current.offset),ZZZZ:e=>Oe(e.timezone().current.offset,":")},Pe=(e,t,n)=>{let a=e,r=t;for(let o=0;o{let a=0;for(e=e.clone();e.isBefore(t);)e=e.add(1,n),a+=1;return e.isAfter(t,n)&&(a-=1),a};var Ne=(e,t,n)=>e.isBefore(t)?qe(e,t,n):-1*qe(t,e,n);const Ie={months:{almost:10,over:4},days:{almost:25,over:10},hours:{almost:20,over:8},minutes:{almost:50,over:20},seconds:{almost:50,over:20}};function Te(e,t){return 1===e&&(t=t.slice(0,-1)),e+" "+t}var Ee={north:[["spring",2,1],["summer",5,1],["fall",8,1],["autumn",8,1],["winter",11,1]],south:[["fall",2,1],["autumn",2,1],["winter",5,1],["spring",8,1],["summer",11,1]]},Ce=[null,[0,1],[3,1],[6,1],[9,1]];const $e={minute:e=>(Y(e,{second:0,millisecond:0}),e),quarterhour:e=>{let t=e.minutes();return e=t>=45?e.minutes(45):t>=30?e.minutes(30):t>=15?e.minutes(15):e.minutes(0),Y(e,{second:0,millisecond:0}),e},hour:e=>(Y(e,{minute:0,second:0,millisecond:0}),e),day:e=>(Y(e,{hour:0,minute:0,second:0,millisecond:0}),e),week:e=>{let t=e.clone();return(e=e.day(e._weekStart)).isAfter(t)&&(e=e.subtract(1,"week")),Y(e,{hour:0,minute:0,second:0,millisecond:0}),e},month:e=>(Y(e,{date:1,hour:0,minute:0,second:0,millisecond:0}),e),quarter:e=>{let t=e.quarter();return Ce[t]&&Y(e,{month:Ce[t][0],date:Ce[t][1],hour:0,minute:0,second:0,millisecond:0}),e},season:e=>{let t=e.season(),n="north";"South"===e.hemisphere()&&(n="south");for(let a=0;a(Y(e,{month:0,date:1,hour:0,minute:0,second:0,millisecond:0}),e),decade:e=>{let t=(e=e.startOf("year")).year(),n=10*parseInt(t/10,10);return e.year(n)},century:e=>{let t=(e=e.startOf("year")).year(),n=100*parseInt(t/100,10);return e.year(n)}};$e.date=$e.day;var Ae=(e,t)=>{if(!e)return f;"string"!=typeof e&&console.error("Timezone must be a string - recieved: '",e,"'\n");let n=e.trim();if(n=n.toLowerCase(),!0===t.hasOwnProperty(n))return n;if(n=(e=>(e=(e=(e=(e=(e=e.replace(/ time/g,"")).replace(/ (standard|daylight|summer)/g,"")).replace(/\b(east|west|north|south)ern/g,"$1")).replace(/\b(africa|america|australia)n/g,"$1")).replace(/\beuropean/g,"europe")).replace(/\islands/g,"island"))(n),!0===t.hasOwnProperty(n))return n;if(!0===y.hasOwnProperty(n))return y[n];if(!0===/[0-9]/.test(n)){let e=function(e){let t=e.match(u);if(null!==t)return m(t[1]);if(t=e.match(h),null!==t)return m(t[1]);if(t=e.match(d),null!==t){let e=-1*Number(t[1]);return m(e)}return t=e.match(c),null!==t?m(t[1]):null}(n);if(e)return e}throw new Error("Spacetime: Cannot find timezone named: '"+e+"'. Please enter an IANA timezone id.")},Ye=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!0!==e.isValid())return"";if(_e.hasOwnProperty(t)){let n=_e[t](e)||"";return"json"!==t&&(n=String(n),"ampm"!==t&&(n=ve(n))),n}if(-1!==t.indexOf("{")){let n=/\{(.+?)\}/g;return t.replace(n,((t,n)=>{if(n=n.toLowerCase().trim(),_e.hasOwnProperty(n)){let t=String(_e[n](e));return"ampm"!==n?ve(t):t}return""}))}return e.format("iso-short")},xe=(e,t)=>{let n=t.split("");return n=function(e){for(let t=0;te))}(n),n=function(e){for(let t=0;te))).map((e=>("''"===e&&(e="'"),e)))}(n),n.reduce(((t,n)=>(void 0!==De[n]?t+=De[n](e)||"":(/^'.{1,}'$/.test(n)&&(n=n.replace(/'/g,"")),t+=n),t)),"")},Le=(e,t)=>{if(t)return t=N.normalize(t),Se(e,t);let n={};return Me.forEach((t=>{n[t]=Se(e,t)})),n},Be=(e,t)=>{let n=e.progress();return"quarterhour"===(t=N.normalize(t))&&(t="quarterHour"),void 0!==n[t]?(n[t]>.5&&(e=e.add(1,t)),e=e.startOf(t)):!1===e.silent&&console.warn("no known unit '"+t+"'"),e},Fe=function(e,t,n){t=N.beADate(t,e);let a=!1;if(e.isAfter(t)){let n=e;e=t,t=n,a=!0}let r=function(e,t){let n=t.epoch-e.epoch,a={milliseconds:n,seconds:parseInt(n/1e3,10)};a.minutes=parseInt(a.seconds/60,10),a.hours=parseInt(a.minutes/60,10);let r=e.clone();return a.years=((e,t)=>{let n=t.year()-e.year();return(e=e.year(t.year())).isAfter(t)&&(n-=1),n})(r,t),r=e.add(a.years,"year"),a.months=12*a.years,r=e.add(a.months,"month"),a.months+=Ne(r,t,"month"),a.weeks=52*a.years,r=e.add(a.weeks,"week"),a.weeks+=Ne(r,t,"week"),a.days=7*a.weeks,r=e.add(a.days,"day"),a.days+=Ne(r,t,"day"),a}(e,t);return a&&(r=function(e){return Object.keys(e).forEach((t=>{e[t]*=-1})),e}(r)),n?(n=N.normalize(n),!0!==/s$/.test(n)&&(n+="s"),"dates"===n&&(n="days"),r[n]):r},Ze=(e,t)=>{const n=function(e,t){const n=e.isBefore(t),a=n?t:e;let r=n?e:t;r=r.clone();const o={years:0,months:0,days:0,hours:0,minutes:0,seconds:0};return Object.keys(o).forEach((e=>{if(r.isSame(a,e))return;let t=r.diff(a,e);r=r.add(t,e),o[e]=t})),n&&Object.keys(o).forEach((e=>{0!==o[e]&&(o[e]*=-1)})),o}(e,t=N.beADate(t,e));if(!0===Object.keys(n).every((e=>!n[e])))return{diff:n,rounded:"now",qualified:"now",precise:"now"};let a,r,o,i=[];return Object.keys(n).forEach(((e,t,o)=>{const s=Math.abs(n[e]);if(0===s)return;const l=Te(s,e);if(i.push(l),!a){if(a=r=l,t>4)return;const i=o[t+1],u=Math.abs(n[i]);u>Ie[i].almost?(a=Te(s+1,e),r="almost "+a):u>Ie[i].over&&(r="over "+l)}})),o=i.splice(0,2).join(", "),!0===e.isAfter(t)?(a+=" ago",r+=" ago",o+=" ago"):(a="in "+a,r="in "+r,o="in "+o),{diff:n,rounded:a,qualified:r,precise:o}},He=(e,t)=>{let n=e.clone();return t=N.normalize(t),$e[t]?$e[t](n):"summer"===t||"winter"===t?(n=n.season(t),$e.season(n)):n},Qe=(e,t)=>{let n=e.clone();return t=N.normalize(t),$e[t]?(n=$e[t](n),n=n.add(1,t),n=n.subtract(1,"millisecond"),n):n},Ge=e=>{let t=e.timezones,n=e.tz;if(!1===t.hasOwnProperty(n)&&(n=Ae(e.tz,t)),null===n)return!1===e.silent&&console.warn("Warn: could not find given or local timezone - '"+e.tz+"'"),{current:{epochShift:0}};let a=t[n],r={name:(i=n,i=(i=(i=i[0].toUpperCase()+i.substr(1)).replace(/\/gmt/,"/GMT")).replace(/[\/_]([a-z])/gi,(e=>e.toUpperCase()))),hasDst:Boolean(a.dst),default_offset:a.offset,hemisphere:"s"===a.hem?"South":"North",current:{}};var i,s;if(r.hasDst){let e=(s=a.dst)?s.split("->"):[];r.change={start:e[0],back:e[1]}}let l=a.offset,u=l;return!0===r.hasDst&&(u="North"===r.hemisphere?l-1:a.offset+1),!1===r.hasDst?(r.current.offset=l,r.current.isDST=!1):!0===o(e.epoch,r.change.start,r.change.back,l,u)?(r.current.offset=l,r.current.isDST="North"===r.hemisphere):(r.current.offset=u,r.current.isDST="South"===r.hemisphere),r},Ue=(e,t)=>{let n=e._today||me;if("number"==typeof t)return de(e,t);if(e.epoch=Date.now(),e._today&&N.isObject(e._today)&&Object.keys(e._today).length>0){let t=he(e,n,me);t.isValid()&&(e.epoch=t.epoch)}return null==t||""===t?e:!0===N.isDate(t)?(e.epoch=t.getTime(),e):!0===N.isArray(t)?e=ce(e,t,n):!0===N.isObject(t)?t.epoch?(e.epoch=t.epoch,e.tz=t.tz,e):e=he(e,t,n):"string"!=typeof t?e:(t=ue(t),!0===le.hasOwnProperty(t)?e=le[t](e):function(e,t,n){for(let a=0;a1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0;if(!t||!n)return[];if(t=N.normalize(t),n=e.clone().set(n),e.isAfter(n)){let t=e;e=n,n=t}let a=e.clone();!function(e){return!!ge.short().find((t=>t===e))||!!ge.long().find((t=>t===e))}(t)?a=a.next(t):(a=a.next(t),t="week");let r=[];for(;a.isBefore(n);)r.push(a),a=a.add(1,t);return r}(this,e,t)},isAwake:function(){let e=this.hour();return!(e<8||e>22)},isAsleep:function(){return!this.isAwake()},daysInMonth:function(){switch(this.month()){case 0:return 31;case 1:return this.leapYear()?29:28;case 2:return 31;case 3:return 30;case 4:return 31;case 5:return 30;case 6:case 7:return 31;case 8:return 30;case 9:return 31;case 10:return 30;case 11:return 31;default:throw new Error("Invalid Month state.")}},log:function(){return console.log(""),console.log(Ye(this,"nice-short")),this},logYear:function(){return console.log(""),console.log(Ye(this,"full-short")),this},json:function(){return Ve.reduce(((e,t)=>(e[t]=this[t](),e)),{})},debug:function(){let e=this.timezone(),t=this.format("MM")+" "+this.format("date-ordinal")+" "+this.year();return t+="\n - "+this.format("time"),console.log("\n\n",t+"\n - "+e.name+" ("+e.current.offset+")"),this},from:function(e){return(e=this.clone().set(e)).since(this)},fromNow:function(){return this.clone().set(Date.now()).since(this)},weekStart:function(e){if("number"==typeof e)return this._weekStart=e,this;if("string"==typeof e){e=e.toLowerCase().trim();let t=ge.short().indexOf(e);-1===t&&(t=ge.long().indexOf(e)),-1===t&&(t=1),this._weekStart=t}else console.warn("Spacetime Error: Cannot understand .weekStart() input:",e);return this}};We.inDST=We.isDST,We.round=We.nearest,We.each=We.every;var Je=We;const Ke=N.isLeapYear,Re=e=>("string"==typeof e&&(e=parseInt(e,10)),e),Xe=["year","month","date","hour","minute","second","millisecond"],et=(e,t,n)=>{let a=Xe.indexOf(n),r=Xe.slice(a,Xe.length);for(let n=0;n{t=Re(t);let n=e.millisecond()-t;return e.epoch-n},at=(e,t,n)=>{t=Re(t);let a=e.clone(),r=(e.second()-t)*O.second;return e.epoch=e.epoch-r,(e=tt(e,a,n,"minute")).epoch},rt=(e,t,n)=>{t=Re(t);let a=e.clone(),r=(e.minute()-t)*O.minute;return e.epoch-=r,et(e,a,"second"),(e=tt(e,a,n,"hour")).epoch},ot=(e,t,n)=>{(t=Re(t))>=24?t=24:t<0&&(t=0);let a=e.clone(),r=e.hour()-t,o=r*O.hour;return e.epoch-=o,e.date()!==a.date()&&(e=a.clone(),r>1&&(r-=1),r<1&&(r+=1),o=r*O.hour,e.epoch-=o),Y(e,{hour:t}),et(e,a,"minute"),(e=tt(e,a,n,"day")).epoch},it=(e,t,n)=>{let a=t.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/);if(!a){if(a=t.match(/([0-9]{1,2}) ?(am|pm)/),!a)return e.epoch;a.splice(2,0,"0"),a.splice(3,0,"")}let r=!1,o=parseInt(a[1],10),i=parseInt(a[2],10);i>=60&&(i=59),o>12&&(r=!0),!1===r&&("am"===a[4]&&12===o&&(o=0),"pm"===a[4]&&o<12&&(o+=12)),a[3]=a[3]||"",a[3]=a[3].replace(/:/,"");let s=parseInt(a[3],10)||0,l=e.clone();return e=(e=(e=(e=e.hour(o)).minute(i)).second(s)).millisecond(0),(e=tt(e,l,n,"day")).epoch},st=(e,t,n)=>{if((t=Re(t))>28){let n=e.month(),a=q[n];1===n&&29===t&&Ke(e.year())&&(a=29),t>a&&(t=a)}t<=0&&(t=1);let a=e.clone();return Y(e,{date:t}),(e=tt(e,a,n,"month")).epoch},lt=(e,t,n)=>{"string"==typeof t&&(t=E()[t.toLowerCase()]),(t=Re(t))>=12&&(t=11),t<=0&&(t=0);let a=e.date();a>q[t]&&(a=q[t]);let r=e.clone();return Y(e,{month:t,date:a}),(e=tt(e,r,n,"year")).epoch},ut=(e,t)=>("string"==typeof t&&/^'[0-9]{2}$/.test(t)&&(t=t.replace(/'/,"").trim(),t=(t=Number(t))>30?1900+t:2e3+t),t=Re(t),Y(e,{year:t}),e.epoch),ct=(e,t,n)=>{let a=e.clone();return t=Re(t),"december"===(e=(e=(e=e.month(0)).date(1)).day("monday")).monthName()&&e.date()>=28&&(e=e.add(1,"week")),t-=1,e=e.add(t,"weeks"),(e=tt(e,a,n,"year")).epoch},ht=(e,t,n)=>{t=Re(t);let a=e.clone();return(t-=1)<=0?t=0:t>=365&&(t=364),e=(e=e.startOf("year")).add(t,"day"),et(e,a,"hour"),(e=tt(e,a,n,"year")).epoch};const dt=e=>(e=(e=e.minute(0)).second(0)).millisecond(1);var mt={millisecond:function(e){if(void 0!==e){let t=this.clone();return t.epoch=nt(t,e),t}return this.d.getMilliseconds()},second:function(e,t){if(void 0!==e){let n=this.clone();return n.epoch=at(n,e,t),n}return this.d.getSeconds()},minute:function(e,t){if(void 0!==e){let n=this.clone();return n.epoch=rt(n,e,t),n}return this.d.getMinutes()},hour:function(e,t){let n=this.d;if(void 0!==e){let n=this.clone();return n.epoch=ot(n,e,t),n}return n.getHours()},hourFloat:function(e,t){if(void 0!==e){let n=this.clone(),a=e%1;a*=60;let r=parseInt(e,10);return n.epoch=ot(n,r,t),n.epoch=rt(n,a,t),n}let n=this.d,a=n.getHours(),r=n.getMinutes();return r/=60,a+r},hour12:function(e,t){let n=this.d;if(void 0!==e){let n=this.clone(),a=(e=""+e).match(/^([0-9]+)(am|pm)$/);if(a){let e=parseInt(a[1],10);"pm"===a[2]&&(e+=12),n.epoch=ot(n,e,t)}return n}let a=n.getHours();return a>12&&(a-=12),0===a&&(a=12),a},time:function(e,t){if(void 0!==e){let n=this.clone();return e=e.toLowerCase().trim(),n.epoch=it(n,e,t),n}return"".concat(this.h12(),":").concat(N.zeroPad(this.minute())).concat(this.ampm())},ampm:function(e,t){let n="am",a=this.hour();if(a>=12&&(n="pm"),"string"!=typeof e)return n;let r=this.clone();return e=e.toLowerCase().trim(),a>=12&&"am"===e?(a-=12,r.hour(a,t)):a<12&&"pm"===e?(a+=12,r.hour(a,t)):r},dayTime:function(e,t){if(void 0!==e){const n={morning:"7:00am",breakfast:"7:00am",noon:"12:00am",lunch:"12:00pm",afternoon:"2:00pm",evening:"6:00pm",dinner:"6:00pm",night:"11:00pm",midnight:"23:59pm"};let a=this.clone();return e=(e=e||"").toLowerCase(),!0===n.hasOwnProperty(e)&&(a=a.time(n[e],t)),a}let n=this.hour();return n<6?"night":n<12?"morning":n<17?"afternoon":n<22?"evening":"night"},iso:function(e){return void 0!==e?this.set(e):this.format("iso")}},pt={date:function(e,t){if(void 0!==e){let n=this.clone();return(e=parseInt(e,10))&&(n.epoch=st(n,e,t)),n}return this.d.getDate()},day:function(e,t){if(void 0===e)return this.d.getDay();let n=this.clone(),a=e;"string"==typeof e&&(e=e.toLowerCase(),ge.aliases.hasOwnProperty(e)?a=ge.aliases[e]:(a=ge.short().indexOf(e),-1===a&&(a=ge.long().indexOf(e))));let r=this.d.getDay()-a;!0===t&&r>0&&(r-=7),!1===t&&r<0&&(r+=7);let o=this.subtract(r,"days");return Y(o,{hour:n.hour(),minute:n.minute(),second:n.second()}),o},dayName:function(e,t){if(void 0===e)return ge.long()[this.day()];let n=this.clone();return n=n.day(e,t),n}},ft={dayOfYear:function(e,t){if(void 0!==e){let n=this.clone();return n.epoch=ht(n,e,t),n}let n,a=0,r=this.d.getMonth();for(let e=1;e<=r;e++)n=new Date,n.setDate(1),n.setFullYear(this.d.getFullYear()),n.setHours(1),n.setMinutes(1),n.setMonth(e),n.setHours(-2),a+=n.getDate();return a+this.d.getDate()},week:function(e,t){if(void 0!==e){let n=this.clone();return n.epoch=ct(this,e,t),n=dt(n),n}let n=this.clone();n=n.month(0),n=n.date(1),n=dt(n),n=n.day("monday"),"december"===n.monthName()&&n.date()>=28&&(n=n.add(1,"week"));let a=1;1===n.date()&&(a=0),n=n.minus(1,"second");const r=this.epoch;if(n.epoch>r)return 1;let o=0,i=4*this.month();for(n.epoch+=O.week*i,o+=i;o<=52;o++){if(n.epoch>r)return o+a;n=n.add(1,"week")}return 52},month:function(e,t){if(void 0!==e){let n=this.clone();return n.epoch=lt(n,e,t),n}return this.d.getMonth()},monthName:function(e,t){if(void 0!==e){let n=this.clone();return n=n.month(e,t),n}return T()[this.month()]},quarter:function(e,t){if(void 0!==e&&("string"==typeof e&&(e=e.replace(/^q/i,""),e=parseInt(e,10)),Ce[e])){let n=this.clone(),a=Ce[e][0];return n=n.month(a,t),n=n.date(1,t),n=n.startOf("day"),n}let n=this.d.getMonth();for(let e=1;e=Ee[n][e][1]&&a0&&(t.epoch=ut(t,-1*n)),"ad"===e&&n<0&&(t.epoch=ut(t,-1*n)),t}return this.d.getFullYear()<0?"BC":"AD"},decade:function(e){if(void 0!==e){if(!(e=(e=(e=String(e)).replace(/([0-9])'?s$/,"$1")).replace(/([0-9])(th|rd|st|nd)/,"$1")))return console.warn("Spacetime: Invalid decade input"),this;2===e.length&&/[0-9][0-9]/.test(e)&&(e="19"+e);let t=Number(e);return isNaN(t)?this:(t=10*Math.floor(t/10),this.year(t))}return this.startOf("decade").year()},century:function(e){if(void 0!==e){"string"==typeof e&&(e=(e=(e=e.replace(/([0-9])(th|rd|st|nd)/,"$1")).replace(/([0-9]+) ?(b\.?c\.?|a\.?d\.?)/i,((e,t,n)=>(n.match(/b\.?c\.?/i)&&(t="-"+t),t)))).replace(/c$/,""));let t=Number(e);return isNaN(e)?(console.warn("Spacetime: Invalid century input"),this):(0===t&&(t=1),t=t>=0?100*(t-1):100*(t+1),this.year(t))}let t=this.startOf("century").year();return t=Math.floor(t/100),t<0?t-1:t+1},millenium:function(e){if(void 0!==e){if("string"==typeof e&&(e=e.replace(/([0-9])(th|rd|st|nd)/,"$1"),e=Number(e),isNaN(e)))return console.warn("Spacetime: Invalid millenium input"),this;e>0&&(e-=1);let t=1e3*e;return 0===t&&(t=1),this.year(t)}let t=Math.floor(this.year()/1e3);return t>=0&&(t+=1),t}};const yt=Object.assign({},mt,pt,ft);yt.milliseconds=yt.millisecond,yt.seconds=yt.second,yt.minutes=yt.minute,yt.hours=yt.hour,yt.hour24=yt.hour,yt.h12=yt.hour12,yt.h24=yt.hour24,yt.days=yt.day;const gt=N.isLeapYear,bt=function(e,t){return 1===e&>(t)?29:q[e]};var wt=(e,t)=>{if(e.month>0){let n=parseInt(e.month/12,10);e.year=t.year()+n,e.month=e.month%12}else if(e.month<0){let n=Math.floor(Math.abs(e.month)/13,10);n=Math.abs(n)+1,e.year=t.year()-n,e.month=e.month%12,e.month=e.month+12,12===e.month&&(e.month=0)}return e},kt=(e,t,n)=>{let a=t.year(),r=t.month(),o=bt(r,a);for(;n>o;)n-=o,r+=1,r>=12&&(r-=12,a+=1),o=bt(r,a);return e.month=r,e.date=n,e},vt=(e,t,n)=>{e.year=t.year(),e.month=t.month();let a=t.date();for(e.date=a-Math.abs(n);e.date<1;){e.month-=1,e.month<0&&(e.month=11,e.year-=1);let t=bt(e.month,e.year);e.date+=t}return e};const _t=["millisecond","second","minute","hour","date","month"];let zt={second:_t.slice(0,1),minute:_t.slice(0,2),quarterhour:_t.slice(0,2),hour:_t.slice(0,3),date:_t.slice(0,4),month:_t.slice(0,4),quarter:_t.slice(0,4),season:_t.slice(0,4),year:_t,decade:_t,century:_t};zt.week=zt.hour,zt.season=zt.date,zt.quarter=zt.date;const jt={year:!0,quarter:!0,season:!0,month:!0,week:!0,date:!0},Ot={month:!0,quarter:!0,season:!0,year:!0};const Dt={millisecond:e=>e.epoch,second:e=>[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second()].join("-"),minute:e=>[e.year(),e.month(),e.date(),e.hour(),e.minute()].join("-"),hour:e=>[e.year(),e.month(),e.date(),e.hour()].join("-"),day:e=>[e.year(),e.month(),e.date()].join("-"),week:e=>[e.year(),e.week()].join("-"),month:e=>[e.year(),e.month()].join("-"),quarter:e=>[e.year(),e.quarter()].join("-"),year:e=>e.year()};Dt.date=Dt.day;var Pt=e=>{let t=e.timezones[e.tz];if(void 0===t)return console.warn("Warning: couldn't find timezone "+e.tz),0;if(void 0===t.dst)return t.offset;let n=t.offset,a=t.offset+1;"n"===t.hem&&(a=n-1);let r=t.dst.split("->");return!0===o(e.epoch,r[0],r[1],n,a)?n:a},Mt=Je,St=e=>{Object.keys(yt).forEach((t=>{e.prototype[t]=yt[t]}))},qt=e=>{e.prototype.add=function(e,t){let n=this.clone();if(!t||0===e)return n;let a=this.clone();if("millisecond"===(t=N.normalize(t)))return n.epoch+=e,n;"fortnight"===t&&(e*=2,t="week"),O[t]?n.epoch+=O[t]*e:"week"===t||"weekend"===t?n.epoch+=O.day*(7*e):"quarter"===t||"season"===t?n.epoch+=O.month*(3*e):"quarterhour"===t&&(n.epoch+=15*O.minute*e);let r={};if(zt[t]&&zt[t].forEach((e=>{r[e]=a[e]()})),jt[t]){const e=a.timezone().current.offset-n.timezone().current.offset;n.epoch+=3600*e*1e3}if("month"===t&&(r.month=a.month()+e,r=wt(r,a)),"week"===t){let t=a.date()+7*e;t<=28&&t>1&&(r.date=t)}if("weekend"===t&&"saturday"!==n.dayName())n=n.day("saturday",!0);else if("date"===t){if(e<0)r=vt(r,a,e);else{let t=a.date()+e;r=kt(r,a,t)}0!==e&&a.isSame(n,"day")&&(r.date=a.date()+e)}else if("quarter"===t){if(r.month=a.month()+3*e,r.year=a.year(),r.month<0){let e=Math.floor(r.month/12),t=r.month+12*Math.abs(e);r.month=t,r.year+=e}else if(r.month>=12){let e=Math.floor(r.month/12);r.month=r.month%12,r.year+=e}r.date=a.date()}else if("year"===t){let t=a.year()+e,r=n.year();if(rt){let t=Math.floor(e/4)||1;n.epoch+=O.day*t}}else"decade"===t?r.year=n.year()+10:"century"===t&&(r.year=n.year()+100);if(Ot[t]){let e=q[r.month];r.date=a.date(),r.date>e&&(r.date=e)}return Object.keys(r).length>1&&Y(n,r),n},e.prototype.subtract=function(e,t){return this.clone().add(-1*e,t)},e.prototype.minus=e.prototype.subtract,e.prototype.plus=e.prototype.add},Nt=e=>{const t={isAfter:function(e){e=N.beADate(e,this);let t=N.getEpoch(e);return null===t?null:this.epoch>t},isBefore:function(e){e=N.beADate(e,this);let t=N.getEpoch(e);return null===t?null:this.epoch2&&void 0!==arguments[2]&&arguments[2];e=N.beADate(e,this),t=N.beADate(t,this);let a=N.getEpoch(e);if(null===a)return null;let r=N.getEpoch(t);return null===r?null:n?this.isBetween(e,t)||this.isEqual(e)||this.isEqual(t):a{e.prototype[n]=t[n]}))},It=e=>{const t={i18n:e=>{N.isObject(e.days)&&ge.set(e.days),N.isObject(e.months)&&C(e.months),N.isBoolean(e.useTitleCase)&&we(e.useTitleCase)}};Object.keys(t).forEach((n=>{e.prototype[n]=t[n]}))};let Tt=p;const Et=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.epoch=null,this.tz=Ae(t,Tt),this.silent=n.silent||!0,this.british=n.dmy||n.british,this._weekStart=1,void 0!==n.weekStart&&(this._weekStart=n.weekStart),this._today={},void 0!==n.today&&(this._today=n.today),Object.defineProperty(this,"d",{get:function(){let e=Pt(this),t=(new Date(this.epoch).getTimezoneOffset()||0)+60*e;t=60*t*1e3;let n=this.epoch+t;return new Date(n)}}),Object.defineProperty(this,"timezones",{get:()=>Tt,set:e=>(Tt=e,e)});let a=Ue(this,e);this.epoch=a.epoch};Object.keys(Mt).forEach((e=>{Et.prototype[e]=Mt[e]})),Et.prototype.clone=function(){return new Et(this.epoch,this.tz,{silent:this.silent,weekStart:this._weekStart,today:this._today,parsers:this.parsers})},Et.prototype.toLocalDate=function(){return this.toNativeDate()},Et.prototype.toNativeDate=function(){return new Date(this.epoch)},St(Et),qt(Et),(e=>{e.prototype.isSame=function(t,n){let a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=this;if(!n)return null;if("string"==typeof t&&"object"==typeof n){let e=t;t=n,n=e}return"string"!=typeof t&&"number"!=typeof t||(t=new e(t,this.timezone.name)),n=n.replace(/s$/,""),!0===a&&r.tz!==t.tz&&((t=t.clone()).tz=r.tz),Dt[n]?Dt[n](r)===Dt[n](t):null}})(Et),Nt(Et),It(Et);var Ct=Et;const $t=(e,t,n)=>new Ct(e,t,n),At=function(e){let t=e._today||{};return Object.keys(t).forEach((n=>{e=e[n](t[n])})),e};$t.now=(e,t)=>{let n=new Ct((new Date).getTime(),e,t);return n=At(n),n},$t.today=(e,t)=>{let n=new Ct((new Date).getTime(),e,t);return n=At(n),n.startOf("day")},$t.tomorrow=(e,t)=>{let n=new Ct((new Date).getTime(),e,t);return n=At(n),n.add(1,"day").startOf("day")},$t.yesterday=(e,t)=>{let n=new Ct((new Date).getTime(),e,t);return n=At(n),n.subtract(1,"day").startOf("day")},$t.extend=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(e).forEach((t=>{Ct.prototype[t]=e[t]})),this},$t.timezones=function(){return(new Ct).timezones},$t.max=function(e,t){let n=new Ct(null,e,t);return n.epoch=864e13,n},$t.min=function(e,t){let n=new Ct(null,e,t);return n.epoch=-864e13,n},$t.whereIts=(e,t)=>{let n=new Ct(null),a=new Ct(null);n=n.time(e),a=t?a.time(t):n.add(59,"minutes");let r=n.hour(),o=a.hour();return Object.keys(n.timezones).filter((e=>{if(-1===e.indexOf("/"))return!1;let t=new Ct(null,e),i=t.hour();return i>=r&&i<=o&&!(i===r&&t.minute()a.minute())}))},$t.version="6.16.3",$t.plugin=$t.extend;var Yt=$t,xt=e(Object.freeze({__proto__:null,default:Yt}));const Lt=xt;var Bt=function(e){let t=e.sentence();if(!t)return null;let n=t.text()||"",a=n.match(/\(.*\)/);if(!a||!a[0])return null;n=a[0]||"",n=n.trim(),n=n.replace(/^\(/,""),n=n.replace(/\)$/,"");let r=n.split(/ – /);if(r=r.filter((e=>e)),r[0]&&r[1]&&2===r.length)return{birth:r[0],death:r[1]};if(r[0]){let e=r[0].replace(/^(born|ne) (c\.)?/,"");if(Lt(e).isValid())return{birth:e}}return null};const Ft=xt;var Zt=function(e){if(!e)return null;if((e=(e=e.replace(/\(.*\)/,"")).trim()).match(/^[0-9]{4}$/))return{year:parseInt(e,10)};let t=Ft(e);return{year:t.year(),month:t.month(),date:t.date()}};const Ht=n,Qt=Bt,Gt=function(e){let t=e.categories();for(let e=0;e1e3)return e}}return null},Ut=Zt;var Vt=function(e){let t=Ht(e,"birth_date");if(t)return Ut(t);if(t=Qt(e),t&&t.birth)return Ut(t.birth);let n=Gt(e);return n?{year:n}:null};const Wt=n;var Jt=function(e){let t=Wt(e,"birth_place");return t||null};const Kt={"Living people":!0,"Year of birth missing (living people)":!0,"Date of birth missing (living people)":!0,"Place of birth missing (living people)":!0,"Active politicians":!0,"Biography articles of living people":!0},Rt={"Dead people":!0,"Date of death missing":!0,"Date of death unknown":!0,"Place of death missing":!0,"Place of death unknown":!0,"Year of death missing":!0,"Year of death unknown":!0,"Year of death uncertain":!0,"Recent deaths":!0,"People declared dead in absentia":!0,"Politicians elected posthumously":!0,"People who died in office":!0,"Assassinated heads of state‎ ":!0,"Assassinated heads of government":!0,"Assassinated mayors":!0,"People who died in Nazi concentration camps":!0,"People executed in Nazi concentration camps":!0,"Politicians who died in Nazi concentration camps":!0,"People who have received posthumous pardons":!0,"People lost at sea‎":!0,"Deaths due to shipwreck":!0,"People who died at sea":!0,"Unsolved deaths‎":!0,"Deaths by horse-riding accident‎":!0,"Deaths from falls‎":!0,"Deaths by poisoning‎‎":!0,"Deaths from cerebrovascular disease‎":!0,"Deaths from asphyxiation‎":!0,"Deaths from sepsis‎":!0,"Deaths from pneumonia‎":!0,"Deaths from dysentery‎‎":!0,"Deaths by drowning‎":!0};const Xt={blp:!0,"blp unsourced":!0,"blp unsourced section":!0,"blp primary sources":!0,"blp self-published":!0,"blp sources":!0,"blp sources section":!0,"blp imdb-only refimprove":!0,"blp imdb refimprove":!0,"blp no footnotes":!0,"blp more footnotes":!0,"blp one source":!0,"active politician":!0,activepol:!0,"current person":!0},en={"recent death":!0,"recent death presumed":!0,"recent death confirmed":!0,obituary:!0,elegy:!0,eulogy:!0,panegyric:!0,memorial:!0};const tn=function(e){let t=e.categories();return!!t.find((e=>Kt.hasOwnProperty(e)))||!t.find((e=>Rt.hasOwnProperty(e)))&&null},nn=function(e){let t=e.templates().map((e=>e.json()));for(let e=0;e1e3)return e}}return null},ln=Zt;const un=n;const cn=n;const hn=Vt,dn=Jt,mn=function(e){if(e.deathDate())return!1;if(e.deathPlace())return!1;let t=tn(e);if(!0===t||!1===t)return t;let n=nn(e);if(!0===n||!1===n)return n;let a=e.birthDate();return!!(a&&a.year&&a.year arr.length) len = arr.length; - - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - - return arr2; -} - -function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); -} - -var MSEC_IN_HOUR = 60 * 60 * 1000; //convert our local date syntax a javascript UTC date +var getInfobox = byInfobox$5; -var toUtc = function toUtc(dstChange, offset, year) { - var _dstChange$split = dstChange.split('/'), - _dstChange$split2 = _slicedToArray(_dstChange$split, 2), - month = _dstChange$split2[0], - rest = _dstChange$split2[1]; - - var _rest$split = rest.split(':'), - _rest$split2 = _slicedToArray(_rest$split, 2), - day = _rest$split2[0], - hour = _rest$split2[1]; - - return Date.UTC(year, month - 1, day, hour) - offset * MSEC_IN_HOUR; -}; // compare epoch with dst change events (in utc) - - -var inSummerTime = function inSummerTime(epoch, start, end, summerOffset, winterOffset) { - var year = new Date(epoch).getUTCFullYear(); - var startUtc = toUtc(start, winterOffset, year); - var endUtc = toUtc(end, summerOffset, year); // simple number comparison now - - return epoch >= startUtc && epoch < endUtc; +const e = (e, t, a) => { + const [n, r] = e.split("/"), + [o, i] = r.split(":"); + return Date.UTC(a, n - 1, o, i) - 36e5 * t; }; -var summerTime = inSummerTime; // it reproduces some things in ./index.js, but speeds up spacetime considerably - -var quickOffset = function quickOffset(s) { - var zones = s.timezones; - var obj = zones[s.tz]; - - if (obj === undefined) { - console.warn("Warning: couldn't find timezone " + s.tz); - return 0; - } - - if (obj.dst === undefined) { - return obj.offset; - } //get our two possible offsets - - - var jul = obj.offset; - var dec = obj.offset + 1; // assume it's the same for now - - if (obj.hem === 'n') { - dec = jul - 1; - } - - var split = obj.dst.split('->'); - var inSummer = summerTime(s.epoch, split[0], split[1], jul, dec); - - if (inSummer === true) { - return jul; - } - - return dec; +var t = (t, a, n, r, o) => { + const i = new Date(t).getUTCFullYear(), + s = e(a, o, i), + u = e(n, r, i); + return t >= s && t < u; }; -var quick = quickOffset; -var _build = { - "9|s": "2/dili,2/jayapura", - "9|n": "2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau", - "9.5|s|04/04:03->10/03:02": "4/adelaide,4/broken_hill,4/south,4/yancowinna", - "9.5|s": "4/darwin,4/north", - "8|s|03/08:01->10/04:00": "12/casey", - "8|s": "2/kuala_lumpur,2/makassar,2/singapore,4/perth,2/ujung_pandang,4/west", - "8|n": "2/brunei,2/choibalsan,2/hong_kong,2/irkutsk,2/kuching,2/macau,2/manila,2/shanghai,2/taipei,2/ulaanbaatar,2/chongqing,2/chungking,2/harbin,2/macao,2/ulan_bator", - "8.75|s": "4/eucla", - "7|s": "12/davis,2/jakarta,9/christmas", - "7|n": "2/bangkok,2/barnaul,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane,2/ho_chi_minh", - "6|s": "12/vostok", - "6|n": "2/almaty,2/bishkek,2/dhaka,2/omsk,2/qyzylorda,2/qostanay,2/thimphu,2/urumqi,9/chagos,2/dacca,2/kashgar,2/thimbu", - "6.5|n": "2/rangoon,9/cocos,2/yangon", - "5|s": "12/mawson,9/kerguelen", - "5|n": "2/aqtau,2/aqtobe,2/ashgabat,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives,2/ashkhabad", - "5.75|n": "2/katmandu,2/kathmandu", - "5.5|n": "2/calcutta,2/colombo,2/kolkata", - "4|s": "9/reunion", - "4|n": "2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius", - "4.5|n|03/22:00->09/21:24": "2/tehran", - "4.5|n": "2/kabul", - "3|s": "12/syowa,9/antananarivo", - "3|n|03/28:03->10/31:04": "2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye,8/nicosia", - "3|n|03/28:02->10/31:03": "8/chisinau,8/tiraspol", - "3|n|03/28:00->10/30:24": "2/beirut", - "3|n|03/27:00->10/30:01": "2/gaza,2/hebron", - "3|n|03/26:02->10/31:02": "2/jerusalem,2/tel_aviv", - "3|n|03/26:00->10/29:01": "2/amman", - "3|n|03/26:00->10/28:24": "2/damascus", - "3|n": "0/addis_ababa,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte,0/asmara,2/istanbul", - "2|s|03/28:02->10/31:02": "12/troll", - "2|s": "0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane", - "2|n|03/28:02->10/31:03": "0/ceuta,arctic/longyearbyen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich,3/jan_mayen", - "2|n": "0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad", - "1|s": "0/brazzaville,0/kinshasa,0/luanda,0/windhoek", - "1|n|04/11:03->05/16:02": "0/casablanca,0/el_aaiun", - "1|n|03/28:01->10/31:02": "3/canary,3/faeroe,3/madeira,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london,3/faroe,8/belfast", - "1|n": "0/algiers,0/bangui,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis", - "14|n": "11/kiritimati", - "13|s|04/04:04->09/26:03": "11/apia", - "13|s|01/15:02->11/05:03": "11/tongatapu", - "13|n": "11/enderbury,11/fakaofo", - "12|s|04/04:03->09/26:02": "12/mcmurdo,11/auckland,12/south_pole", - "12|s|01/17:03->11/14:02": "11/fiji", - "12|n": "2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis", - "12.75|s|04/04:03->04/04:02": "11/chatham", - "11|s|04/04:03->10/03:02": "12/macquarie", - "11|s": "11/bougainville", - "11|n": "2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/ponape,11/pohnpei", - "11.5|n|04/04:03->10/03:02": "11/norfolk", - "10|s|04/04:03->10/03:02": "4/currie,4/hobart,4/melbourne,4/sydney,4/act,4/canberra,4/nsw,4/tasmania,4/victoria", - "10|s": "12/dumontdurville,4/brisbane,4/lindeman,11/port_moresby,4/queensland", - "10|n": "2/ust-nera,2/vladivostok,2/yakutsk,11/guam,11/saipan,11/truk,11/chuuk,11/yap", - "10.5|s|04/04:01->10/03:02": "4/lord_howe,4/lhi", - "0|n|03/28:00->10/31:01": "1/scoresbysund,3/azores", - "0|n": "0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/utc,0/timbuktu,13/gmt-0,13/gmt+0,13/gmt0,13/greenwich,13/uct,13/universal,13/zulu", - "-9|n|03/14:02->11/07:02": "1/adak,1/atka,us/aleutian", - "-9|n": "11/gambier", - "-9.5|n": "11/marquesas", - "-8|n|03/14:02->11/07:02": "1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat,us/alaska", - "-8|n": "11/pitcairn", - "-7|n|03/14:02->11/07:02": "1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/ensenada,6/pacific,10/bajanorte,us/pacific-new,us/pacific", - "-7|n|03/08:02->11/01:01": "1/dawson,1/whitehorse,6/yukon", - "-7|n": "1/creston,1/dawson_creek,1/fort_nelson,1/hermosillo,1/phoenix,us/arizona", - "-6|s|04/03:22->09/04:22": "11/easter,7/easterisland", - "-6|n|04/04:02->10/31:02": "1/chihuahua,1/mazatlan,10/bajasur", - "-6|n|03/14:02->11/07:02": "1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/yellowknife,1/shiprock,6/mountain,us/mountain", - "-6|n": "1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,11/galapagos,6/east-saskatchewan,6/saskatchewan", - "-5|s": "1/lima,1/rio_branco,1/porto_acre,5/acre", - "-5|n|04/04:02->10/31:02": "1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general", - "-5|n|03/14:02->11/07:02": "1/chicago,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,1/indiana/knox,1/indiana/tell_city,1/north_dakota/beulah,1/north_dakota/center,1/north_dakota/new_salem,1/knox_in,6/central,us/central,us/indiana-starke", - "-5|n|03/12:03->11/05:01": "1/north_dakota", - "-5|n": "1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/atikokan", - "-4|s|05/13:23->08/13:01": "12/palmer", - "-4|s|04/03:24->09/05:00": "1/santiago,7/continental", - "-4|s|03/27:24->10/03:00": "1/asuncion", - "-4|s|02/16:24->11/03:00": "1/campo_grande,1/cuiaba", - "-4|s": "1/la_paz,1/manaus,5/west", - "-4|n|03/14:02->11/07:02": "1/detroit,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,1/indiana/marengo,1/indiana/petersburg,1/indiana/vevay,1/indiana/vincennes,1/indiana/winamac,1/kentucky/monticello,1/fort_wayne,1/indiana/indianapolis,1/kentucky/louisville,6/eastern,us/east-indiana,us/eastern,us/michigan", - "-4|n|03/14:00->11/07:01": "1/havana", - "-4|n|03/12:03->11/05:01": "1/indiana,1/kentucky", - "-4|n": "1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin", - "-3|s": "1/argentina,1/buenos_aires,1/catamarca,1/cordoba,1/fortaleza,1/jujuy,1/mendoza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,1/argentina/la_rioja,1/argentina/rio_gallegos,1/argentina/salta,1/argentina/san_juan,1/argentina/san_luis,1/argentina/tucuman,1/argentina/ushuaia,1/argentina/buenos_aires,1/argentina/catamarca,1/argentina/comodrivadavia,1/argentina/cordoba,1/argentina/jujuy,1/argentina/mendoza,1/rosario,5/east", - "-3|n|03/14:02->11/07:02": "1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic", - "-3|n": "1/araguaina,1/bahia,1/belem,1/cayenne,1/maceio,1/paramaribo,1/recife,1/santarem", - "-2|n|03/27:22->10/30:23": "1/godthab,1/nuuk", - "-2|n|03/14:02->11/07:02": "1/miquelon", - "-2|n": "1/noronha,3/south_georgia,5/denoronha", - "-2.5|n|03/14:02->11/07:02": "1/st_johns,6/newfoundland", - "-1|n": "3/cape_verde", - "-11|n": "11/midway,11/niue,11/pago_pago,11/samoa,us/samoa", - "-10|n": "11/honolulu,11/johnston,11/rarotonga,11/tahiti,us/hawaii" +var a = e => { + let a = e.timezones[e.tz]; + if (void 0 === a) return console.warn("Warning: couldn't find timezone " + e.tz), 0; + if (void 0 === a.dst) return a.offset; + let n = a.offset, + r = a.offset + 1; + "n" === a.hem && (r = n - 1); + let o = a.dst.split("->"); + return !0 === t(e.epoch, o[0], o[1], n, r) ? n : r; }; -var _build$1 = /*#__PURE__*/Object.freeze({ +var n, + r = (n = Object.freeze({ __proto__: null, - 'default': _build -}); //prefixes for iana names.. - - -var _prefixes = ['africa', 'america', 'asia', 'atlantic', 'australia', 'brazil', 'canada', 'chile', 'europe', 'indian', 'mexico', 'pacific', 'antarctica', 'etc']; - -function createCommonjsModule(fn, module) { - return module = { - exports: {} - }, fn(module, module.exports), module.exports; -} - -function getCjsExportFromNamespace$1(n) { - return n && n['default'] || n; -} - -var data = getCjsExportFromNamespace$1(_build$1); -var all = {}; -Object.keys(data).forEach(function (k) { - var split = k.split('|'); - var obj = { - offset: Number(split[0]), - hem: split[1] + default: { + "9|s": "2/dili,2/jayapura", + "9|n": "2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,11/palau", + "9.5|s|04/04:03->10/03:02": "4/adelaide,4/broken_hill,4/south,4/yancowinna", + "9.5|s": "4/darwin,4/north", + "8|s|03/08:01->10/04:00": "12/casey", + "8|s": "2/kuala_lumpur,2/makassar,2/singapore,4/perth,2/ujung_pandang,4/west", + "8|n": "2/brunei,2/choibalsan,2/hong_kong,2/irkutsk,2/kuching,2/macau,2/manila,2/shanghai,2/taipei,2/ulaanbaatar,2/chongqing,2/chungking,2/harbin,2/macao,2/ulan_bator", + "8.75|s": "4/eucla", + "7|s": "12/davis,2/jakarta,9/christmas", + "7|n": "2/bangkok,2/barnaul,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/saigon,2/tomsk,2/vientiane,2/ho_chi_minh", + "6|s": "12/vostok", + "6|n": "2/almaty,2/bishkek,2/dhaka,2/omsk,2/qyzylorda,2/qostanay,2/thimphu,2/urumqi,9/chagos,2/dacca,2/kashgar,2/thimbu", + "6.5|n": "2/rangoon,9/cocos,2/yangon", + "5|s": "12/mawson,9/kerguelen", + "5|n": "2/aqtau,2/aqtobe,2/ashgabat,2/atyrau,2/baku,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives,2/ashkhabad", + "5.75|n": "2/katmandu,2/kathmandu", + "5.5|n": "2/calcutta,2/colombo,2/kolkata", + "4|s": "9/reunion", + "4|n": "2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,2/volgograd,9/mahe,9/mauritius", + "4.5|n|03/22:00->09/21:24": "2/tehran", + "4.5|n": "2/kabul", + "3|s": "12/syowa,9/antananarivo", + "3|n|03/28:03->10/31:04": "2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kiev,8/mariehamn,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye,8/nicosia", + "3|n|03/28:02->10/31:03": "8/chisinau,8/tiraspol", + "3|n|03/28:00->10/30:24": "2/beirut", + "3|n|03/27:00->10/30:01": "2/gaza,2/hebron", + "3|n|03/26:02->10/31:02": "2/jerusalem,2/tel_aviv", + "3|n|03/26:00->10/29:01": "2/amman", + "3|n|03/26:00->10/28:24": "2/damascus", + "3|n": "0/addis_ababa,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/baghdad,2/bahrain,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte,0/asmara,2/istanbul", + "2|s|03/28:02->10/31:02": "12/troll", + "2|s": "0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane", + "2|n|03/28:02->10/31:03": "0/ceuta,arctic/longyearbyen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich,3/jan_mayen", + "2|n": "0/blantyre,0/bujumbura,0/cairo,0/khartoum,0/kigali,0/tripoli,8/kaliningrad", + "1|s": "0/brazzaville,0/kinshasa,0/luanda,0/windhoek", + "1|n|04/11:03->05/16:02": "0/casablanca,0/el_aaiun", + "1|n|03/28:01->10/31:02": "3/canary,3/faeroe,3/madeira,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london,3/faroe,8/belfast", + "1|n": "0/algiers,0/bangui,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis", + "14|n": "11/kiritimati", + "13|s|04/04:04->09/26:03": "11/apia", + "13|s|01/15:02->11/05:03": "11/tongatapu", + "13|n": "11/enderbury,11/fakaofo", + "12|s|04/04:03->09/26:02": "12/mcmurdo,11/auckland,12/south_pole", + "12|s|01/17:03->11/14:02": "11/fiji", + "12|n": "2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis", + "12.75|s|04/04:03->09/26:02": "11/chatham", + "11|s|04/04:03->10/03:02": "12/macquarie", + "11|s": "11/bougainville", + "11|n": "2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/ponape,11/pohnpei", + "11.5|n|04/04:03->10/03:02": "11/norfolk", + "10|s|04/04:03->10/03:02": "4/currie,4/hobart,4/melbourne,4/sydney,4/act,4/canberra,4/nsw,4/tasmania,4/victoria", + "10|s": "12/dumontdurville,4/brisbane,4/lindeman,11/port_moresby,4/queensland", + "10|n": "2/ust-nera,2/vladivostok,2/yakutsk,11/guam,11/saipan,11/truk,11/chuuk,11/yap", + "10.5|s|04/04:01->10/03:02": "4/lord_howe,4/lhi", + "0|n|03/28:00->10/31:01": "1/scoresbysund,3/azores", + "0|n": "0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/utc,0/timbuktu,13/gmt-0,13/gmt+0,13/gmt0,13/greenwich,13/uct,13/universal,13/zulu", + "-9|n|03/14:02->11/07:02": "1/adak,1/atka,us/aleutian", + "-9|n": "11/gambier", + "-9.5|n": "11/marquesas", + "-8|n|03/14:02->11/07:02": "1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat,us/alaska", + "-8|n": "11/pitcairn", + "-7|n|03/14:02->11/07:02": "1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/ensenada,6/pacific,10/bajanorte,us/pacific-new,us/pacific", + "-7|n|03/08:02->11/01:01": "1/dawson,1/whitehorse,6/yukon", + "-7|n": "1/creston,1/dawson_creek,1/fort_nelson,1/hermosillo,1/phoenix,us/arizona", + "-6|s|04/03:22->09/04:22": "11/easter,7/easterisland", + "-6|n|04/04:02->10/31:02": "1/chihuahua,1/mazatlan,10/bajasur", + "-6|n|03/14:02->11/07:02": "1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/ojinaga,1/yellowknife,1/shiprock,6/mountain,us/mountain", + "-6|n": "1/belize,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/regina,1/swift_current,1/tegucigalpa,11/galapagos,6/east-saskatchewan,6/saskatchewan", + "-5|s": "1/lima,1/rio_branco,1/porto_acre,5/acre", + "-5|n|04/04:02->10/31:02": "1/bahia_banderas,1/merida,1/mexico_city,1/monterrey,10/general", + "-5|n|03/14:02->11/07:02": "1/chicago,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,1/indiana/knox,1/indiana/tell_city,1/north_dakota/beulah,1/north_dakota/center,1/north_dakota/new_salem,1/knox_in,6/central,us/central,us/indiana-starke", + "-5|n|03/12:03->11/05:01": "1/north_dakota", + "-5|n": "1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/atikokan", + "-4|s|05/13:23->08/13:01": "12/palmer", + "-4|s|04/03:24->09/05:00": "1/santiago,7/continental", + "-4|s|03/27:24->10/03:00": "1/asuncion", + "-4|s|02/16:24->11/03:00": "1/campo_grande,1/cuiaba", + "-4|s": "1/la_paz,1/manaus,5/west", + "-4|n|03/14:02->11/07:02": "1/detroit,1/grand_turk,1/indianapolis,1/iqaluit,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,1/indiana/marengo,1/indiana/petersburg,1/indiana/vevay,1/indiana/vincennes,1/indiana/winamac,1/kentucky/monticello,1/fort_wayne,1/indiana/indianapolis,1/kentucky/louisville,6/eastern,us/east-indiana,us/eastern,us/michigan", + "-4|n|03/14:00->11/07:01": "1/havana", + "-4|n|03/12:03->11/05:01": "1/indiana,1/kentucky", + "-4|n": "1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin", + "-3|s": "1/argentina,1/buenos_aires,1/catamarca,1/cordoba,1/fortaleza,1/jujuy,1/mendoza,1/montevideo,1/punta_arenas,1/sao_paulo,12/rothera,3/stanley,1/argentina/la_rioja,1/argentina/rio_gallegos,1/argentina/salta,1/argentina/san_juan,1/argentina/san_luis,1/argentina/tucuman,1/argentina/ushuaia,1/argentina/buenos_aires,1/argentina/catamarca,1/argentina/comodrivadavia,1/argentina/cordoba,1/argentina/jujuy,1/argentina/mendoza,1/rosario,5/east", + "-3|n|03/14:02->11/07:02": "1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic", + "-3|n": "1/araguaina,1/bahia,1/belem,1/cayenne,1/maceio,1/paramaribo,1/recife,1/santarem", + "-2|n|03/27:22->10/30:23": "1/godthab,1/nuuk", + "-2|n|03/14:02->11/07:02": "1/miquelon", + "-2|n": "1/noronha,3/south_georgia,5/denoronha", + "-2.5|n|03/14:02->11/07:02": "1/st_johns,6/newfoundland", + "-1|n": "3/cape_verde", + "-11|n": "11/midway,11/niue,11/pago_pago,11/samoa,us/samoa", + "-10|n": "11/honolulu,11/johnston,11/rarotonga,11/tahiti,us/hawaii" + } +})) && n.default || n, + o = ["africa", "america", "asia", "atlantic", "australia", "brazil", "canada", "chile", "europe", "indian", "mexico", "pacific", "antarctica", "etc"]; +let i = {}; +Object.keys(r).forEach(e => { + let t = e.split("|"), + a = { + offset: Number(t[0]), + hem: t[1] }; - - if (split[2]) { - obj.dst = split[2]; - } - - var names = data[k].split(','); - names.forEach(function (str) { - str = str.replace(/(^[0-9]+)\//, function (before, num) { - num = Number(num); - return _prefixes[num] + '/'; - }); - all[str] = obj; + t[2] && (a.dst = t[2]), r[e].split(",").forEach(e => { + e = e.replace(/(^[0-9]+)\//, (e, t) => (t = Number(t), o[t] + "/")), i[e] = a; }); -}); -all['utc'] = { +}), i.utc = { offset: 0, - hem: 'n' //default to northern hemisphere - (sorry!) - -}; //add etc/gmt+n - -for (var i = -14; i <= 14; i += 0.5) { - var num = i; - - if (num > 0) { - num = '+' + num; - } - - var name = 'etc/gmt' + num; - all[name] = { - offset: i * -1, - //they're negative! - hem: 'n' //(sorry) - - }; - name = 'utc/gmt' + num; //this one too, why not. - - all[name] = { - offset: i * -1, - hem: 'n' + hem: "n" +}; + +for (let e = -14; e <= 14; e += .5) { + let t = e; + t > 0 && (t = "+" + t); + let a = "etc/gmt" + t; + i[a] = { + offset: -1 * e, + hem: "n" + }, a = "utc/gmt" + t, i[a] = { + offset: -1 * e, + hem: "n" }; } -var unpack = all; //find the implicit iana code for this machine. -//safely query the Intl object -//based on - https://bitbucket.org/pellepim/jstimezonedetect/src - -var fallbackTZ = 'utc'; // -//this Intl object is not supported often, yet - -var safeIntl = function safeIntl() { - if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') { - return null; - } - - var format = Intl.DateTimeFormat(); - - if (typeof format === 'undefined' || typeof format.resolvedOptions === 'undefined') { - return null; - } - - var timezone = format.resolvedOptions().timeZone; - - if (!timezone) { - return null; - } +const s = /(\-?[0-9]+)h(rs)?/i, + u = /(\-?[0-9]+)/, + l = /utc([\-+]?[0-9]+)/i, + h = /gmt([\-+]?[0-9]+)/i, + c = function (e) { + return (e = Number(e)) >= -13 && e <= 13 ? "etc/gmt" + (e = ((e *= -1) > 0 ? "+" : "") + e) : null; +}; + +var d$1 = i, + m = function (e) { + let t = e.match(s); + if (null !== t) return c(t[1]); + if (t = e.match(l), null !== t) return c(t[1]); + + if (t = e.match(h), null !== t) { + let e = -1 * Number(t[1]); + return c(e); + } + + return t = e.match(u), null !== t ? c(t[1]) : null; +}; + +const p = (() => { + let e = (() => { + if ("undefined" == typeof Intl || void 0 === Intl.DateTimeFormat) return null; + let e = Intl.DateTimeFormat(); + if (void 0 === e || void 0 === e.resolvedOptions) return null; + let t = e.resolvedOptions().timeZone; + return t ? t.toLowerCase() : null; + })(); + + return null === e ? "utc" : e; +})(), + f = Object.keys(d$1).reduce((e, t) => { + let a = t.split("/")[1] || ""; + return a = a.replace(/_/g, " "), e[a] = t, e; +}, {}); + +var y, + g = (e, t) => { + if (!e) return p; + "string" != typeof e && console.error("Timezone must be a string - recieved: '", e, "'\n"); + let a = e.trim(); + if (a = a.toLowerCase(), !0 === t.hasOwnProperty(a)) return a; + if (a = (e => (e = (e = (e = (e = (e = e.replace(/ time/g, "")).replace(/ (standard|daylight|summer)/g, "")).replace(/\b(east|west|north|south)ern/g, "$1")).replace(/\b(africa|america|australia)n/g, "$1")).replace(/\beuropean/g, "europe")).replace(/\islands/g, "island"))(a), !0 === t.hasOwnProperty(a)) return a; + if (!0 === f.hasOwnProperty(a)) return f[a]; + + if (!0 === /[0-9]/.test(a)) { + let e = m(a); + if (e) return e; + } + + throw new Error("Spacetime: Cannot find timezone named: '" + e + "'. Please enter an IANA timezone id."); +}, + b = (function (e, t) { + t.isLeapYear = e => e % 4 == 0 && e % 100 != 0 || e % 400 == 0, t.isDate = e => "[object Date]" === Object.prototype.toString.call(e) && !isNaN(e.valueOf()), t.isArray = e => "[object Array]" === Object.prototype.toString.call(e), t.isObject = e => "[object Object]" === Object.prototype.toString.call(e), t.isBoolean = e => "[object Boolean]" === Object.prototype.toString.call(e), t.zeroPad = function (e) { + let t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2; + return (e += "").length >= t ? e : new Array(t - e.length + 1).join("0") + e; + }, t.titleCase = e => e ? e[0].toUpperCase() + e.substr(1) : "", t.ordinal = e => { + let t = e % 10, + a = e % 100; + return 1 === t && 11 !== a ? e + "st" : 2 === t && 12 !== a ? e + "nd" : 3 === t && 13 !== a ? e + "rd" : e + "th"; + }, t.toCardinal = e => (e = (e = String(e)).replace(/([0-9])(st|nd|rd|th)$/i, "$1"), parseInt(e, 10)), t.normalize = function () { + let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + return "day" === (e = (e = (e = (e = e.toLowerCase().trim()).replace(/ies$/, "y")).replace(/s$/, "")).replace(/-/g, "")) || "days" === e ? "date" : "min" === e || "mins" === e ? "minute" : e; + }, t.getEpoch = e => "number" == typeof e ? e : t.isDate(e) ? e.getTime() : e.epoch ? e.epoch : null, t.beADate = (e, a) => !1 === t.isObject(e) ? a.clone().set(e) : e, t.formatTimezone = function (e) { + let a = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; + const n = e > 0 ? "+" : "-", + r = Math.abs(e); + return "".concat(n).concat(t.zeroPad(parseInt("" + r, 10))).concat(a).concat(t.zeroPad(r % 1 * 60)); + }; +}(y = { + exports: {} +}, y.exports), y.exports); - return timezone.toLowerCase(); +b.isLeapYear, b.isDate, b.isArray, b.isObject, b.isBoolean, b.zeroPad, b.titleCase, b.ordinal, b.toCardinal, b.normalize, b.getEpoch, b.beADate, b.formatTimezone; +const k = { + year: new Date().getFullYear(), + month: 0, + date: 1 }; +var w = { + parseArray: (e, t, a) => { + if (0 === t.length) return e; + let n = ["year", "month", "date", "hour", "minute", "second", "millisecond"]; -var guessTz = function guessTz() { - var timezone = safeIntl(); - - if (timezone === null) { - return fallbackTZ; - } - - return timezone; -}; //do it once per computer - - -var guessTz_1 = guessTz; -var isOffset = /(\-?[0-9]+)h(rs)?/i; -var isNumber = /(\-?[0-9]+)/; -var utcOffset = /utc([\-+]?[0-9]+)/i; -var gmtOffset = /gmt([\-+]?[0-9]+)/i; - -var toIana = function toIana(num) { - num = Number(num); + for (let r = 0; r < n.length; r++) { + let o = t[r] || a[n[r]] || k[n[r]] || 0; + e = e[n[r]](o); + } - if (num >= -13 && num <= 13) { - num = num * -1; //it's opposite! + return e; + }, + parseObject: (e, t, a) => { + if (0 === Object.keys(t).length) return e; + t = Object.assign({}, k, a, t); + let n = Object.keys(t); - num = (num > 0 ? '+' : '') + num; //add plus sign + for (let r = 0; r < n.length; r++) { + let o = n[r]; + if (void 0 === e[o] || "function" != typeof e[o]) continue; + if (null === t[o] || void 0 === t[o] || "" === t[o]) continue; + let i = t[o] || a[o] || k[o] || 0; + e = e[o](i); + } - return 'etc/gmt' + num; + return e; + }, + parseNumber: function (e, t) { + return t > 0 && t < 25e8 && !1 === e.silent && (console.warn(" - Warning: You are setting the date to January 1970."), console.warn(" - did input seconds instead of milliseconds?")), e.epoch = t, e; } - - return null; }; -var parseOffset$1 = function parseOffset(tz) { - // '+5hrs' - var m = tz.match(isOffset); - - if (m !== null) { - return toIana(m[1]); - } // 'utc+5' - - - m = tz.match(utcOffset); - - if (m !== null) { - return toIana(m[1]); - } // 'GMT-5' (not opposite) - - - m = tz.match(gmtOffset); - - if (m !== null) { - var num = Number(m[1]) * -1; - return toIana(num); - } // '+5' - - - m = tz.match(isNumber); - - if (m !== null) { - return toIana(m[1]); +const v = function (e) { + return e.epoch = Date.now(), Object.keys(e._today || {}).forEach(t => { + "function" == typeof e[t] && (e = e[t](e._today[t])); + }), e; +}, + z = { + now: e => v(e), + today: e => v(e), + tonight: e => e = (e = v(e)).hour(18), + tomorrow: e => e = (e = (e = v(e)).add(1, "day")).startOf("day"), + yesterday: e => e = (e = (e = v(e)).subtract(1, "day")).startOf("day"), + christmas: e => { + let t = v(e).year(); + return e = e.set([t, 11, 25, 18, 0, 0]); + }, + "new years": e => { + let t = v(e).year(); + return e = e.set([t, 11, 31, 18, 0, 0]); } - - return null; }; -var parseOffset_1$1 = parseOffset$1; -var local = guessTz_1(); //add all the city names by themselves - -var cities = Object.keys(unpack).reduce(function (h, k) { - var city = k.split('/')[1] || ''; - city = city.replace(/_/g, ' '); - h[city] = k; - return h; -}, {}); //try to match these against iana form - -var normalize = function normalize(tz) { - tz = tz.replace(/ time/g, ''); - tz = tz.replace(/ (standard|daylight|summer)/g, ''); - tz = tz.replace(/\b(east|west|north|south)ern/g, '$1'); - tz = tz.replace(/\b(africa|america|australia)n/g, '$1'); - tz = tz.replace(/\beuropean/g, 'europe'); - tz = tz.replace(/\islands/g, 'island'); - return tz; -}; // try our best to reconcile the timzone to this given string - - -var lookupTz = function lookupTz(str, zones) { - if (!str) { - return local; - } - - if (typeof str !== 'string') { - console.error("Timezone must be a string - recieved: '", str, "'\n"); - } - - var tz = str.trim(); // let split = str.split('/') - //support long timezones like 'America/Argentina/Rio_Gallegos' - // if (split.length > 2 && zones.hasOwnProperty(tz) === false) { - // tz = split[0] + '/' + split[1] - // } - - tz = tz.toLowerCase(); - - if (zones.hasOwnProperty(tz) === true) { - return tz; - } //lookup more loosely.. - - - tz = normalize(tz); - - if (zones.hasOwnProperty(tz) === true) { - return tz; - } //try city-names - - - if (cities.hasOwnProperty(tz) === true) { - return cities[tz]; - } // //try to parse '-5h' - - - if (/[0-9]/.test(tz) === true) { - var id = parseOffset_1$1(tz); +z["new years eve"] = z["new years"]; +var _ = z; - if (id) { - return id; - } - } - - throw new Error("Spacetime: Cannot find timezone named: '" + str + "'. Please enter an IANA timezone id."); +var j = function (e) { + return e = (e = (e = (e = e.replace(/\b(mon|tues?|wed|wednes|thur?s?|fri|sat|satur|sun)(day)?\b/i, "")).replace(/([0-9])(th|rd|st|nd)/, "$1")).replace(/,/g, "")).replace(/ +/g, " ").trim(); }; -var find = lookupTz; -var o = { - millisecond: 1 +let O = { + millisecond: 1, + second: 1e3, + minute: 6e4, + hour: 36e5, + day: 864e5 }; -o.second = 1000; -o.minute = 60000; -o.hour = 3.6e6; // dst is supported post-hoc - -o.day = 8.64e7; // - -o.date = o.day; -o.month = 8.64e7 * 29.5; //(average) - -o.week = 6.048e8; -o.year = 3.154e10; // leap-years are supported post-hoc -//add plurals - -Object.keys(o).forEach(function (k) { - o[k + 's'] = o[k]; +O.date = O.day, O.month = 25488e5, O.week = 6048e5, O.year = 3154e7, Object.keys(O).forEach(e => { + O[e + "s"] = O[e]; }); -var milliseconds = o; - -var walk = function walk(s, n, fn, unit, previous) { - var current = s.d[fn](); - - if (current === n) { - return; //already there - } - - var startUnit = previous === null ? null : s.d[previous](); - var original = s.epoch; //try to get it as close as we can - - var diff = n - current; - s.epoch += milliseconds[unit] * diff; //DST edge-case: if we are going many days, be a little conservative - // console.log(unit, diff) - - if (unit === 'day') { - // s.epoch -= ms.minute - //but don't push it over a month - if (Math.abs(diff) > 28 && n < 28) { - s.epoch += milliseconds.hour; - } - } // 1st time: oops, did we change previous unit? revert it. - - - if (previous !== null && startUnit !== s.d[previous]()) { - // console.warn('spacetime warning: missed setting ' + unit) - s.epoch = original; // s.epoch += ms[unit] * diff * 0.89 // maybe try and make it close...? - } //repair it if we've gone too far or something - //(go by half-steps, just in case) +var $ = O; +const D = (e, t, a, n, r) => { + let o = e.d[a](); + if (o === t) return; + let i = null === r ? null : e.d[r](), + s = e.epoch, + u = t - o; + e.epoch += $[n] * u, "day" === n && Math.abs(u) > 28 && t < 28 && (e.epoch += $.hour), null !== r && i !== e.d[r]() && (e.epoch = s); + const l = $[n] / 2; - var halfStep = milliseconds[unit] / 2; - - while (s.d[fn]() < n) { - s.epoch += halfStep; - } - - while (s.d[fn]() > n) { - s.epoch -= halfStep; - } // 2nd time: did we change previous unit? revert it. - - - if (previous !== null && startUnit !== s.d[previous]()) { - // console.warn('spacetime warning: missed setting ' + unit) - s.epoch = original; - } -}; //find the desired date by a increment/check while loop + for (; e.d[a]() < t;) e.epoch += l; + for (; e.d[a]() > t;) e.epoch -= l; -var units$3 = { + null !== r && i !== e.d[r]() && (e.epoch = s); +}, + M = { year: { - valid: function valid(n) { - return n > -4000 && n < 4000; - }, - walkTo: function walkTo(s, n) { - return walk(s, n, 'getFullYear', 'year', null); - } + valid: e => e > -4e3 && e < 4e3, + walkTo: (e, t) => D(e, t, "getFullYear", "year", null) }, month: { - valid: function valid(n) { - return n >= 0 && n <= 11; - }, - walkTo: function walkTo(s, n) { - var d = s.d; - var current = d.getMonth(); - var original = s.epoch; - var startUnit = d.getFullYear(); - - if (current === n) { - return; - } //try to get it as close as we can.. - - - var diff = n - current; - s.epoch += milliseconds.day * (diff * 28); //special case - //oops, did we change the year? revert it. + valid: e => e >= 0 && e <= 11, + walkTo: (e, t) => { + let a = e.d, + n = a.getMonth(), + r = e.epoch, + o = a.getFullYear(); + if (n === t) return; + let i = t - n; - if (startUnit !== s.d.getFullYear()) { - s.epoch = original; - } //increment by day + for (e.epoch += $.day * (28 * i), o !== e.d.getFullYear() && (e.epoch = r); e.d.getMonth() < t;) e.epoch += $.day; - - while (s.d.getMonth() < n) { - s.epoch += milliseconds.day; - } - - while (s.d.getMonth() > n) { - s.epoch -= milliseconds.day; - } + for (; e.d.getMonth() > t;) e.epoch -= $.day; } }, date: { - valid: function valid(n) { - return n > 0 && n <= 31; - }, - walkTo: function walkTo(s, n) { - return walk(s, n, 'getDate', 'day', 'getMonth'); - } + valid: e => e > 0 && e <= 31, + walkTo: (e, t) => D(e, t, "getDate", "day", "getMonth") }, hour: { - valid: function valid(n) { - return n >= 0 && n < 24; - }, - walkTo: function walkTo(s, n) { - return walk(s, n, 'getHours', 'hour', 'getDate'); - } + valid: e => e >= 0 && e < 24, + walkTo: (e, t) => D(e, t, "getHours", "hour", "getDate") }, minute: { - valid: function valid(n) { - return n >= 0 && n < 60; - }, - walkTo: function walkTo(s, n) { - return walk(s, n, 'getMinutes', 'minute', 'getHours'); - } + valid: e => e >= 0 && e < 60, + walkTo: (e, t) => D(e, t, "getMinutes", "minute", "getHours") }, second: { - valid: function valid(n) { - return n >= 0 && n < 60; - }, - walkTo: function walkTo(s, n) { - //do this one directly - s.epoch = s.seconds(n).epoch; + valid: e => e >= 0 && e < 60, + walkTo: (e, t) => { + e.epoch = e.seconds(t).epoch; } }, millisecond: { - valid: function valid(n) { - return n >= 0 && n < 1000; - }, - walkTo: function walkTo(s, n) { - //do this one directly - s.epoch = s.milliseconds(n).epoch; + valid: e => e >= 0 && e < 1e3, + walkTo: (e, t) => { + e.epoch = e.milliseconds(t).epoch; } } }; -var walkTo = function walkTo(s, wants) { - var keys = Object.keys(units$3); - var old = s.clone(); - - for (var i = 0; i < keys.length; i++) { - var k = keys[i]; - var n = wants[k]; - - if (n === undefined) { - n = old[k](); - } - - if (typeof n === 'string') { - n = parseInt(n, 10); - } //make-sure it's valid - - - if (!units$3[k].valid(n)) { - s.epoch = null; - - if (s.silent === false) { - console.warn('invalid ' + k + ': ' + n); - } - - return; - } +var P = (e, t) => { + let a = Object.keys(M), + n = e.clone(); - units$3[k].walkTo(s, n); + for (let r = 0; r < a.length; r++) { + let o = a[r], + i = t[o]; + if (void 0 === i && (i = n[o]()), "string" == typeof i && (i = parseInt(i, 10)), !M[o].valid(i)) return e.epoch = null, void (!1 === e.silent && console.warn("invalid " + o + ": " + i)); + M[o].walkTo(e, i); } - - return; }; -var walk_1 = walkTo; -var shortMonths = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sept', 'oct', 'nov', 'dec']; -var longMonths = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december']; - -function buildMapping() { - var obj = { - sep: 8 //support this format +let S = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sept", "oct", "nov", "dec"], + q = ["january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"]; - }; +var T = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + E = b, + N = { + short: () => S, + long: () => q, + mapping: () => function () { + const e = { + sep: 8 + }; - for (var i = 0; i < shortMonths.length; i++) { - obj[shortMonths[i]] = i; + for (let t = 0; t < S.length; t++) e[S[t]] = t; + + for (let t = 0; t < q.length; t++) e[q[t]] = t; + + return e; + }(), + set: e => { + S = e.short || S, q = e.long || q; + } +}, + C = (e, t) => { + if (!t) return e; + "Z" !== t && "z" !== t || (t = "+0000"); + let a = 0; + /^[\+-]?[0-9]{2}:[0-9]{2}$/.test(t) && (!0 === /:00/.test(t) && (t = t.replace(/:00/, "")), !0 === /:30/.test(t) && (t = t.replace(/:30/, ".5"))), /^[\+-]?[0-9]{4}$/.test(t) && (t = t.replace(/30$/, ".5")), a = parseFloat(t), Math.abs(a) > 100 && (a /= 100), a *= -1, a >= 0 && (a = "+" + a); + let n = "etc/gmt" + a; + return e.timezones[n] && (e.tz = n), e; +}, + I = function (e) { + let t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; + let a = (t = t.replace(/^\s+/, "").toLowerCase()).match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\.]?([0-9]{1,4})?/); + + if (null !== a) { + let n = Number(a[1]); + if (n < 0 || n > 24) return e.startOf("day"); + let r = Number(a[2]); + if (a[2].length < 2 || r < 0 || r > 59) return e.startOf("day"); + a[4] > 999 && (a[4] = parseInt(("" + a[4]).substring(0, 3), 10)), e = (e = (e = (e = e.hour(n)).minute(r)).seconds(a[3] || 0)).millisecond(a[4] || 0); + let o = t.match(/[\b0-9] ?(am|pm)\b/); + return null !== o && o[1] && (e = e.ampm(o[1])), e; + } + + if (a = t.match(/([0-9]+) ?(am|pm)/), null !== a && a[1]) { + let t = Number(a[1]); + return t > 12 || t < 1 ? e.startOf("day") : e = (e = (e = e.hour(a[1] || 0)).ampm(a[2])).startOf("hour"); + } + + return e = e.startOf("day"); +}; + +const Y = E.isLeapYear, + A = N.mapping(); +var x = P, + L = { + parseOffset: C, + parseTime: I, + parseYear: function () { + let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + let t = arguments.length > 1 ? arguments[1] : undefined; + + if (e = e.trim(), !0 === /^'[0-9][0-9]$/.test(e)) { + let t = Number(e.replace(/'/, "")); + return t > 50 ? 1900 + t : 2e3 + t; + } + + let a = parseInt(e, 10); + return !a && t && (a = t.year), a = a || new Date().getFullYear(), a; + }, + parseMonth: function (e) { + return e = e.toLowerCase().trim(), A[e]; + }, + validate: e => { + if (!0 !== T.hasOwnProperty(e.month)) return !1; + if (1 === e.month) return !!(Y(e.year) && e.date <= 29) || e.date <= 28; + let t = T[e.month] || 0; + return e.date <= t; + } +}; +const { + validate: F, + parseTime: B, + parseYear: Z, + parseMonth: H, + parseOffset: Q +} = L; +var G = [{ + reg: /^(\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\-\+:]+)?$/i, + parse: (e, t) => { + let a = { + year: t[1], + month: parseInt(t[2], 10) - 1, + date: t[3] + }; + return !1 === F(a) ? (e.epoch = null, e) : (Q(e, t[5]), x(e, a), e = B(e, t[4])); } - - for (var _i = 0; _i < longMonths.length; _i++) { - obj[longMonths[_i]] = _i; +}, { + reg: /^([0-9]{4})[\-\/\. ]([0-9]{1,2})[\-\/\. ]([0-9]{1,2})( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i, + parse: (e, t) => { + let a = { + year: t[1], + month: parseInt(t[2], 10) - 1, + date: parseInt(t[3], 10) + }; + return a.month >= 12 && (a.date = parseInt(t[2], 10), a.month = parseInt(t[3], 10) - 1), !1 === F(a) ? (e.epoch = null, e) : (x(e, a), e = B(e, t[4])); } - - return obj; -} - -var months$1 = { - "short": function short() { - return shortMonths; - }, - "long": function long() { - return longMonths; - }, - mapping: function mapping() { - return buildMapping(); - }, - set: function set(i18n) { - shortMonths = i18n["short"] || shortMonths; - longMonths = i18n["long"] || longMonths; +}, { + reg: /^([0-9]{4})[\-\/\. ]([a-z]+)[\-\/\. ]([0-9]{1,2})( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i, + parse: (e, t) => { + let a = { + year: Z(t[1], e._today), + month: H(t[2]), + date: E.toCardinal(t[3] || "") + }; + return !1 === F(a) ? (e.epoch = null, e) : (x(e, a), e = B(e, t[4])); } -}; //pull-apart ISO offsets, like "+0100" - -var parseOffset = function parseOffset(s, offset) { - if (!offset) { - return s; - } //this is a fancy-move - - - if (offset === 'Z' || offset === 'z') { - offset = '+0000'; - } // according to ISO8601, tz could be hh:mm, hhmm or hh - // so need few more steps before the calculation. - - - var num = 0; // for (+-)hh:mm - - if (/^[\+-]?[0-9]{2}:[0-9]{2}$/.test(offset)) { - //support "+01:00" - if (/:00/.test(offset) === true) { - offset = offset.replace(/:00/, ''); - } //support "+01:30" - - - if (/:30/.test(offset) === true) { - offset = offset.replace(/:30/, '.5'); - } - } // for (+-)hhmm - - - if (/^[\+-]?[0-9]{4}$/.test(offset)) { - offset = offset.replace(/30$/, '.5'); +}]; +const { + validate: U, + parseTime: V, + parseYear: W, + parseMonth: J +} = L; +var K = [{ + reg: /^([0-9]{1,2})[\-\/.]([0-9]{1,2})[\-\/.]?([0-9]{4})?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i, + parse: (e, t) => { + let a = parseInt(t[1], 10) - 1, + n = parseInt(t[2], 10); + (e.british || a >= 12) && (n = parseInt(t[1], 10), a = parseInt(t[2], 10) - 1); + let r = { + date: n, + month: a, + year: W(t[3], e._today) || new Date().getFullYear() + }; + return !1 === U(r) ? (e.epoch = null, e) : (x(e, r), e = V(e, t[4])); } - - num = parseFloat(offset); //divide by 100 or 10 - , "+0100", "+01" - - if (Math.abs(num) > 100) { - num = num / 100; - } //okay, try to match it to a utc timezone - //remember - this is opposite! a -5 offset maps to Etc/GMT+5 ¯\_(:/)_/¯ - //https://askubuntu.com/questions/519550/why-is-the-8-timezone-called-gmt-8-in-the-filesystem - - - num *= -1; - - if (num >= 0) { - num = '+' + num; +}, { + reg: /^([a-z]+)[\-\/\. ]([0-9]{1,2})[\-\/\. ]?([0-9]{4}|'[0-9]{2})?( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i, + parse: (e, t) => { + let a = { + year: W(t[3], e._today), + month: J(t[1]), + date: E.toCardinal(t[2] || "") + }; + return !1 === U(a) ? (e.epoch = null, e) : (x(e, a), e = V(e, t[4])); } - - var tz = 'etc/gmt' + num; - var zones = s.timezones; - - if (zones[tz]) { - // log a warning if we're over-writing a given timezone? - // console.log('changing timezone to: ' + tz) - s.tz = tz; +}, { + reg: /^([a-z]+) ([0-9]{1,2})( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i, + parse: (e, t) => { + let a = { + year: W(t[3], e._today), + month: J(t[1]), + date: E.toCardinal(t[2] || "") + }; + return !1 === U(a) ? (e.epoch = null, e) : (x(e, a), e = V(e, t[4])); } - - return s; -}; - -var parseOffset_1 = parseOffset; - -var parseTime = function parseTime(s) { - var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - str = str.replace(/^\s+/, '').toLowerCase(); //trim - //formal time formats - 04:30.23 - - var arr = str.match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:\.]?([0-9]{1,4})?/); - - if (arr !== null) { - //validate it a little - var h = Number(arr[1]); - - if (h < 0 || h > 24) { - return s.startOf('day'); - } - - var m = Number(arr[2]); //don't accept '5:3pm' - - if (arr[2].length < 2 || m < 0 || m > 59) { - return s.startOf('day'); - } - - if (arr[4] > 999) { - // fix overflow issue with milliseconds, if input is longer than standard (e.g. 2017-08-06T09:00:00.123456Z) - arr[4] = parseInt("".concat(arr[4]).substring(0, 3), 10); - } - - s = s.hour(h); - s = s.minute(m); - s = s.seconds(arr[3] || 0); - s = s.millisecond(arr[4] || 0); //parse-out am/pm - - var ampm = str.match(/[\b0-9](am|pm)\b/); - - if (ampm !== null && ampm[1]) { - s = s.ampm(ampm[1]); - } - - return s; - } //try an informal form - 5pm (no minutes) - - - arr = str.match(/([0-9]+) ?(am|pm)/); - - if (arr !== null && arr[1]) { - var _h = Number(arr[1]); //validate it a little.. - - - if (_h > 12 || _h < 1) { - return s.startOf('day'); - } - - s = s.hour(arr[1] || 0); - s = s.ampm(arr[2]); - s = s.startOf('hour'); - return s; - } //no time info found, use start-of-day - - - s = s.startOf('day'); - return s; -}; - -var parseTime_1 = parseTime; -var monthLengths = [31, // January - 31 days -28, // February - 28 days in a common year and 29 days in leap years -31, // March - 31 days -30, // April - 30 days -31, // May - 31 days -30, // June - 30 days -31, // July - 31 days -31, // August - 31 days -30, // September - 30 days -31, // October - 31 days -30, // November - 30 days -31 // December - 31 days -]; -var monthLengths_1 = monthLengths; // 28 - feb - -var fns = createCommonjsModule(function (module, exports) { - //git:blame @JuliasCaesar https://www.timeanddate.com/date/leapyear.html - exports.isLeapYear = function (year) { - return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; - }; // unsurprisingly-nasty `typeof date` call - - - exports.isDate = function (d) { - return Object.prototype.toString.call(d) === '[object Date]' && !isNaN(d.valueOf()); - }; - - exports.isArray = function (input) { - return Object.prototype.toString.call(input) === '[object Array]'; - }; - - exports.isObject = function (input) { - return Object.prototype.toString.call(input) === '[object Object]'; - }; - - exports.isBoolean = function (input) { - return Object.prototype.toString.call(input) === '[object Boolean]'; - }; - - exports.zeroPad = function (str) { - var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2; - var pad = '0'; - str = str + ''; - return str.length >= len ? str : new Array(len - str.length + 1).join(pad) + str; - }; - - exports.titleCase = function (str) { - if (!str) { - return ''; - } - - return str[0].toUpperCase() + str.substr(1); - }; - - exports.ordinal = function (i) { - var j = i % 10; - var k = i % 100; - - if (j === 1 && k !== 11) { - return i + 'st'; - } - - if (j === 2 && k !== 12) { - return i + 'nd'; - } - - if (j === 3 && k !== 13) { - return i + 'rd'; - } - - return i + 'th'; - }; //strip 'st' off '1st'.. - - - exports.toCardinal = function (str) { - str = String(str); - str = str.replace(/([0-9])(st|nd|rd|th)$/i, '$1'); - return parseInt(str, 10); - }; //used mostly for cleanup of unit names, like 'months' - - - exports.normalize = function () { - var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - str = str.toLowerCase().trim(); - str = str.replace(/ies$/, 'y'); //'centuries' - - str = str.replace(/s$/, ''); - str = str.replace(/-/g, ''); - - if (str === 'day' || str === 'days') { - return 'date'; - } - - if (str === 'min' || str === 'mins') { - return 'minute'; - } - - return str; - }; - - exports.getEpoch = function (tmp) { - //support epoch - if (typeof tmp === 'number') { - return tmp; - } //suport date objects - - - if (exports.isDate(tmp)) { - return tmp.getTime(); - } - - if (tmp.epoch) { - return tmp.epoch; - } - - return null; - }; //make sure this input is a spacetime obj - - - exports.beADate = function (d, s) { - if (exports.isObject(d) === false) { - return s.clone().set(d); - } - - return d; - }; - - exports.formatTimezone = function (offset) { - var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - var sign = offset > 0 ? '+' : '-'; - var absOffset = Math.abs(offset); - var hours = exports.zeroPad(parseInt('' + absOffset, 10)); - var minutes = exports.zeroPad(absOffset % 1 * 60); - return "".concat(sign).concat(hours).concat(delimiter).concat(minutes); - }; -}); -fns.isLeapYear; -fns.isDate; -fns.isArray; -fns.isObject; -fns.isBoolean; -fns.zeroPad; -fns.titleCase; -fns.ordinal; -fns.toCardinal; -fns.normalize; -fns.getEpoch; -fns.beADate; -fns.formatTimezone; -var isLeapYear$2 = fns.isLeapYear; //given a month, return whether day number exists in it - -var hasDate = function hasDate(obj) { - //invalid values - if (monthLengths_1.hasOwnProperty(obj.month) !== true) { - return false; - } //support leap-year in february - - - if (obj.month === 1) { - if (isLeapYear$2(obj.year) && obj.date <= 29) { - return true; - } else { - return obj.date <= 28; - } - } //is this date too-big for this month? - - - var max = monthLengths_1[obj.month] || 0; - - if (obj.date <= max) { - return true; +}, { + reg: /^([a-z]+) ([0-9]{1,2})( [0-9:]+)?( \+[0-9]{4})?( [0-9]{4})?$/i, + parse: (e, t) => { + let a = { + year: W(t[5], e._today), + month: J(t[1]), + date: E.toCardinal(t[2] || "") + }; + return !1 === U(a) ? (e.epoch = null, e) : (x(e, a), e = V(e, t[3])); } - - return false; -}; - -var hasDate_1 = hasDate; -var months = months$1.mapping(); - -var parseYear = function parseYear() { - var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var today = arguments.length > 1 ? arguments[1] : undefined; - var year = parseInt(str.trim(), 10); // use a given year from options.today - - if (!year && today) { - year = today.year; - } // fallback to this year - - - year = year || new Date().getFullYear(); - return year; -}; - -var strFmt = [//iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00-0700 -{ - reg: /^(\-?0?0?[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9\-\+:]+)?$/i, - parse: function parse(s, arr, givenTz, options) { - var month = parseInt(arr[2], 10) - 1; - var obj = { - year: arr[1], - month: month, - date: arr[3] +}]; +const { + validate: R, + parseTime: X, + parseYear: ee, + parseMonth: te +} = L; +var ae = [{ + reg: /^([0-9]{1,2})[\-\/]([a-z]+)[\-\/]?([0-9]{4})?$/i, + parse: (e, t) => { + let a = { + year: ee(t[3], e._today), + month: te(t[2]), + date: E.toCardinal(t[1] || "") }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - parseOffset_1(s, arr[5]); - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; + return !1 === R(a) ? (e.epoch = null, e) : (x(e, a), e = X(e, t[4])); } -}, //iso "2015-03-25" or "2015/03/25" or "2015/03/25 12:26:14 PM" -{ - reg: /^([0-9]{4})[\-\/.]([0-9]{1,2})[\-\/.]([0-9]{1,2}),?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i, - parse: function parse(s, arr) { - var obj = { - year: arr[1], - month: parseInt(arr[2], 10) - 1, - date: parseInt(arr[3], 10) +}, { + reg: /^([0-9]{1,2})( [a-z]+)( [0-9]{4}| '[0-9]{2})? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i, + parse: (e, t) => { + let a = { + year: ee(t[3], e._today), + month: te(t[2]), + date: E.toCardinal(t[1]) }; - - if (obj.month >= 12) { - //support yyyy/dd/mm (weird, but ok) - obj.date = parseInt(arr[2], 10); - obj.month = parseInt(arr[3], 10) - 1; - } - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; + return a.month && !1 !== R(a) ? (x(e, a), e = X(e, t[4])) : (e.epoch = null, e); } -}, //mm/dd/yyyy - uk/canada "6/28/2019, 12:26:14 PM" -{ - reg: /^([0-9]{1,2})[\-\/.]([0-9]{1,2})[\-\/.]?([0-9]{4})?,?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i, - parse: function parse(s, arr) { - var month = parseInt(arr[1], 10) - 1; - var date = parseInt(arr[2], 10); //support dd/mm/yyy - - if (s.british || month >= 12) { - date = parseInt(arr[1], 10); - month = parseInt(arr[2], 10) - 1; - } - - var year = parseYear(arr[3], s._today) || new Date().getFullYear(); - var obj = { - year: year, - month: month, - date: date +}, { + reg: /^([0-9]{1,2})[\. -/]([a-z]+)[\. -/]([0-9]{4})?( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i, + parse: (e, t) => { + let a = { + date: Number(t[1]), + month: te(t[2]), + year: Number(t[3]) }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; + return !1 === R(a) ? (e.epoch = null, e) : (x(e, a), e = e.startOf("day"), e = X(e, t[4])); } -}, // '2012-06' last attempt at iso-like format -{ +}]; +const { + validate: ne, + parseTime: re, + parseYear: oe, + parseMonth: ie +} = L; +var se = [].concat(G, K, ae, [{ reg: /^([0-9]{4})[\-\/]([0-9]{2})$/i, - parse: function parse(s, arr, givenTz, options) { - var month = parseInt(arr[2], 10) - 1; - var obj = { - year: arr[1], - month: month, + parse: (e, t) => { + let a = { + year: t[1], + month: parseInt(t[2], 10) - 1, date: 1 }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - parseOffset_1(s, arr[5]); - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; - } -}, //common british format - "25-feb-2015" -{ - reg: /^([0-9]{1,2})[\-\/]([a-z]+)[\-\/]?([0-9]{4})?$/i, - parse: function parse(s, arr) { - var month = months[arr[2].toLowerCase()]; - var year = parseYear(arr[3], s._today); - var obj = { - year: year, - month: month, - date: fns.toCardinal(arr[1] || '') - }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; - } -}, //alt short format - "feb-25-2015" -{ - reg: /^([a-z]+)[\-\/]([0-9]{1,2})[\-\/]?([0-9]{4})?$/i, - parse: function parse(s, arr) { - var month = months[arr[1].toLowerCase()]; - var year = parseYear(arr[3], s._today); - var obj = { - year: year, - month: month, - date: fns.toCardinal(arr[2] || '') - }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; - } -}, //Long "Mar 25 2015" -//February 22, 2017 15:30:00 -{ - reg: /^([a-z]+) ([0-9]{1,2}(?:st|nd|rd|th)?),?( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i, - parse: function parse(s, arr) { - var month = months[arr[1].toLowerCase()]; - var year = parseYear(arr[3], s._today); - var obj = { - year: year, - month: month, - date: fns.toCardinal(arr[2] || '') - }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; + return !1 === ne(a) ? (e.epoch = null, e) : (x(e, a), e = re(e, t[4])); } -}, //February 2017 (implied date) -{ +}, { reg: /^([a-z]+) ([0-9]{4})$/i, - parse: function parse(s, arr) { - var month = months[arr[1].toLowerCase()]; - var year = parseYear(arr[2], s._today); - var obj = { - year: year, - month: month, - date: s._today.date || 1 - }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; - } -}, //Long "25 Mar 2015" -{ - reg: /^([0-9]{1,2}(?:st|nd|rd|th)?) ([a-z]+),?( [0-9]{4})?,? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2}? ?(am|pm|gmt))?$/i, - parse: function parse(s, arr) { - var month = months[arr[2].toLowerCase()]; - - if (!month) { - return null; - } - - var year = parseYear(arr[3], s._today); - var obj = { - year: year, - month: month, - date: fns.toCardinal(arr[1]) + parse: (e, t) => { + let a = { + year: oe(t[2], e._today), + month: ie(t[1]), + date: e._today.date || 1 }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s, arr[4]); - return s; + return !1 === ne(a) ? (e.epoch = null, e) : (x(e, a), e = re(e, t[4])); } }, { - // 'q2 2002' reg: /^(q[0-9])( of)?( [0-9]{4})?/i, - parse: function parse(s, arr) { - var quarter = arr[1] || ''; - s = s.quarter(quarter); - var year = arr[3] || ''; - - if (year) { - year = year.trim(); - s = s.year(year); - } - - return s; + parse: (e, t) => { + let a = t[1] || ""; + e = e.quarter(a); + let n = t[3] || ""; + return n && (n = n.trim(), e = e.year(n)), e; } }, { - // 'summer 2002' reg: /^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i, - parse: function parse(s, arr) { - var season = arr[1] || ''; - s = s.season(season); - var year = arr[3] || ''; - - if (year) { - year = year.trim(); - s = s.year(year); - } - - return s; + parse: (e, t) => { + let a = t[1] || ""; + e = e.season(a); + let n = t[3] || ""; + return n && (n = n.trim(), e = e.year(n)), e; } }, { - // '200bc' reg: /^[0-9,]+ ?b\.?c\.?$/i, - parse: function parse(s, arr) { - var str = arr[0] || ''; //make negative-year - - str = str.replace(/^([0-9,]+) ?b\.?c\.?$/i, '-$1'); //remove commas - - str = str.replace(/,/g, ''); - var year = parseInt(str.trim(), 10); - var d = new Date(); - var obj = { - year: year, - month: d.getMonth(), - date: d.getDate() + parse: (e, t) => { + let a = t[0] || ""; + a = a.replace(/^([0-9,]+) ?b\.?c\.?$/i, "-$1"); + let n = new Date(), + r = { + year: parseInt(a.trim(), 10), + month: n.getMonth(), + date: n.getDate() }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s); - return s; + return !1 === ne(r) ? (e.epoch = null, e) : (x(e, r), e = re(e)); } }, { - // '200ad' reg: /^[0-9,]+ ?(a\.?d\.?|c\.?e\.?)$/i, - parse: function parse(s, arr) { - var str = arr[0] || ''; //remove commas - - str = str.replace(/,/g, ''); - var year = parseInt(str.trim(), 10); - var d = new Date(); - var obj = { - year: year, - month: d.getMonth(), - date: d.getDate() + parse: (e, t) => { + let a = t[0] || ""; + a = a.replace(/,/g, ""); + let n = new Date(), + r = { + year: parseInt(a.trim(), 10), + month: n.getMonth(), + date: n.getDate() }; - - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s); - return s; + return !1 === ne(r) ? (e.epoch = null, e) : (x(e, r), e = re(e)); } }, { - // '1992' reg: /^[0-9]{4}( ?a\.?d\.?)?$/i, - parse: function parse(s, arr) { - var today = s._today; - var year = parseYear(arr[0], today); - var d = new Date(); // using today's date, but a new month is awkward. - - if (today.month && !today.date) { - today.date = 1; - } - - var obj = { - year: year, - month: today.month || d.getMonth(), - date: today.date || d.getDate() + parse: (e, t) => { + let a = e._today; + a.month && !a.date && (a.date = 1); + let n = new Date(), + r = { + year: oe(t[0], a), + month: a.month || n.getMonth(), + date: a.date || n.getDate() }; + return !1 === ne(r) ? (e.epoch = null, e) : (x(e, r), e = re(e)); + } +}]); - if (hasDate_1(obj) === false) { - s.epoch = null; - return s; - } - - walk_1(s, obj); - s = parseTime_1(s); - return s; - } -}]; -var strParse = strFmt; // pull in 'today' data for the baseline moment - -var getNow = function getNow(s) { - s.epoch = Date.now(); - Object.keys(s._today || {}).forEach(function (k) { - if (typeof s[k] === 'function') { - s = s[k](s._today[k]); - } - }); - return s; -}; - -var dates = { - now: function now(s) { - return getNow(s); - }, - today: function today(s) { - return getNow(s); - }, - tonight: function tonight(s) { - s = getNow(s); - s = s.hour(18); //6pm - - return s; - }, - tomorrow: function tomorrow(s) { - s = getNow(s); - s = s.add(1, 'day'); - s = s.startOf('day'); - return s; - }, - yesterday: function yesterday(s) { - s = getNow(s); - s = s.subtract(1, 'day'); - s = s.startOf('day'); - return s; - }, - christmas: function christmas(s) { - var year = getNow(s).year(); - s = s.set([year, 11, 25, 18, 0, 0]); // Dec 25 - - return s; - }, - 'new years': function newYears(s) { - var year = getNow(s).year(); - s = s.set([year, 11, 31, 18, 0, 0]); // Dec 31 - - return s; - } -}; -dates['new years eve'] = dates['new years']; -var namedDates = dates; // - can't use built-in js parser ;( -//========================================= -// ISO Date "2015-03-25" -// Short Date "03/25/2015" or "2015/03/25" -// Long Date "Mar 25 2015" or "25 Mar 2015" -// Full Date "Wednesday March 25 2015" -//========================================= -//-- also - -// if the given epoch is really small, they've probably given seconds and not milliseconds -// anything below this number is likely (but not necessarily) a mistaken input. -// this may seem like an arbitrary number, but it's 'within jan 1970' -// this is only really ambiguous until 2054 or so - -var minimumEpoch = 2500000000; -var defaults = { - year: new Date().getFullYear(), - month: 0, - date: 1 -}; //support [2016, 03, 01] format - -var handleArray = function handleArray(s, arr, today) { - if (arr.length === 0) { - return s; - } - - var order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; - - for (var i = 0; i < order.length; i++) { - var num = arr[i] || today[order[i]] || defaults[order[i]] || 0; - s = s[order[i]](num); - } - - return s; -}; //support {year:2016, month:3} format - - -var handleObject = function handleObject(s, obj, today) { - // if obj is empty, do nothing - if (Object.keys(obj).length === 0) { - return s; - } - - obj = Object.assign({}, defaults, today, obj); - var keys = Object.keys(obj); - - for (var i = 0; i < keys.length; i++) { - var unit = keys[i]; //make sure we have this method - - if (s[unit] === undefined || typeof s[unit] !== 'function') { - continue; - } //make sure the value is a number - - - if (obj[unit] === null || obj[unit] === undefined || obj[unit] === '') { - continue; - } - - var num = obj[unit] || today[unit] || defaults[unit] || 0; - s = s[unit](num); - } - - return s; -}; //find the epoch from different input styles - - -var parseInput = function parseInput(s, input, givenTz) { - var today = s._today || defaults; //if we've been given a epoch number, it's easy - - if (typeof input === 'number') { - if (input > 0 && input < minimumEpoch && s.silent === false) { - console.warn(' - Warning: You are setting the date to January 1970.'); - console.warn(' - did input seconds instead of milliseconds?'); - } - - s.epoch = input; - return s; - } //set tmp time - - - s.epoch = Date.now(); // overwrite tmp time with 'today' value, if exists - - if (s._today && fns.isObject(s._today) && Object.keys(s._today).length > 0) { - var res = handleObject(s, today, defaults); - - if (res.isValid()) { - s.epoch = res.epoch; - } - } // null input means 'now' - - - if (input === null || input === undefined || input === '') { - return s; //k, we're good. - } //support input of Date() object - - - if (fns.isDate(input) === true) { - s.epoch = input.getTime(); - return s; - } //support [2016, 03, 01] format - - - if (fns.isArray(input) === true) { - s = handleArray(s, input, today); - return s; - } //support {year:2016, month:3} format - - - if (fns.isObject(input) === true) { - //support spacetime object as input - if (input.epoch) { - s.epoch = input.epoch; - s.tz = input.tz; - return s; - } - - s = handleObject(s, input, today); - return s; - } //input as a string.. - - - if (typeof input !== 'string') { - return s; - } //little cleanup.. - - - input = input.replace(/\b(mon|tues|wed|wednes|thu|thurs|fri|sat|satur|sun)(day)?\b/i, ''); - input = input.replace(/,/g, ''); - input = input.replace(/ +/g, ' ').trim(); //try some known-words, like 'now' - - if (namedDates.hasOwnProperty(input) === true) { - s = namedDates[input](s); - return s; - } //try each text-parse template, use the first good result - - - for (var i = 0; i < strParse.length; i++) { - var m = input.match(strParse[i].reg); - - if (m) { - // console.log(strFmt[i].reg) - var _res = strParse[i].parse(s, m, givenTz); - - if (_res !== null && _res.isValid()) { - return _res; - } - } - } - - if (s.silent === false) { - console.warn("Warning: couldn't parse date-string: '" + input + "'"); - } - - s.epoch = null; - return s; -}; - -var input = parseInput; -var shortDays = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; -var longDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']; -var days = { - "short": function short() { - return shortDays; - }, - "long": function long() { - return longDays; - }, - set: function set(i18n) { - shortDays = i18n["short"] || shortDays; - longDays = i18n["long"] || longDays; - }, - aliases: { - mo: 1, - tu: 2, - we: 3, - th: 4, - fr: 5, - sa: 6, - su: 7, - tues: 2, - weds: 3, - wedn: 3, - thur: 4, - thurs: 4 - } -}; -var titleCaseEnabled = true; -var caseFormat = { - useTitleCase: function useTitleCase() { - return titleCaseEnabled; - }, - set: function set(useTitleCase) { - titleCaseEnabled = useTitleCase; - } -}; // it's kind of nuts how involved this is -// "+01:00", "+0100", or simply "+01" - -var isoOffset = function isoOffset(s) { - var offset = s.timezone().current.offset; - return !offset ? 'Z' : fns.formatTimezone(offset, ':'); -}; - -var _offset = isoOffset; - -var applyCaseFormat = function applyCaseFormat(str) { - if (caseFormat.useTitleCase()) { - return fns.titleCase(str); - } - - return str; -}; - -var format = { - day: function day(s) { - return applyCaseFormat(s.dayName()); - }, - 'day-short': function dayShort(s) { - return applyCaseFormat(days["short"]()[s.day()]); - }, - 'day-number': function dayNumber(s) { - return s.day(); - }, - 'day-ordinal': function dayOrdinal(s) { - return fns.ordinal(s.day()); - }, - 'day-pad': function dayPad(s) { - return fns.zeroPad(s.day()); - }, - date: function date(s) { - return s.date(); - }, - 'date-ordinal': function dateOrdinal(s) { - return fns.ordinal(s.date()); - }, - 'date-pad': function datePad(s) { - return fns.zeroPad(s.date()); - }, - month: function month(s) { - return applyCaseFormat(s.monthName()); - }, - 'month-short': function monthShort(s) { - return applyCaseFormat(months$1["short"]()[s.month()]); - }, - 'month-number': function monthNumber(s) { - return s.month(); - }, - 'month-ordinal': function monthOrdinal(s) { - return fns.ordinal(s.month()); - }, - 'month-pad': function monthPad(s) { - return fns.zeroPad(s.month()); - }, - 'iso-month': function isoMonth(s) { - return fns.zeroPad(s.month() + 1); - }, - //1-based months - year: function year(s) { - var year = s.year(); - - if (year > 0) { - return year; - } - - year = Math.abs(year); - return year + ' BC'; - }, - 'year-short': function yearShort(s) { - var year = s.year(); - - if (year > 0) { - return "'".concat(String(s.year()).substr(2, 4)); - } - - year = Math.abs(year); - return year + ' BC'; - }, - 'iso-year': function isoYear(s) { - var year = s.year(); - var isNegative = year < 0; - var str = fns.zeroPad(Math.abs(year), 4); //0-padded - - if (isNegative) { - //negative years are for some reason 6-digits ('-00008') - str = fns.zeroPad(str, 6); - str = '-' + str; - } - - return str; - }, - time: function time(s) { - return s.time(); - }, - 'time-24': function time24(s) { - return "".concat(s.hour24(), ":").concat(fns.zeroPad(s.minute())); - }, - hour: function hour(s) { - return s.hour12(); - }, - 'hour-pad': function hourPad(s) { - return fns.zeroPad(s.hour12()); - }, - 'hour-24': function hour24(s) { - return s.hour24(); - }, - 'hour-24-pad': function hour24Pad(s) { - return fns.zeroPad(s.hour24()); - }, - minute: function minute(s) { - return s.minute(); - }, - 'minute-pad': function minutePad(s) { - return fns.zeroPad(s.minute()); - }, - second: function second(s) { - return s.second(); - }, - 'second-pad': function secondPad(s) { - return fns.zeroPad(s.second()); - }, - ampm: function ampm(s) { - return s.ampm(); - }, - quarter: function quarter(s) { - return 'Q' + s.quarter(); - }, - season: function season(s) { - return s.season(); - }, - era: function era(s) { - return s.era(); - }, - json: function json(s) { - return s.json(); - }, - timezone: function timezone(s) { - return s.timezone().name; - }, - offset: function offset(s) { - return _offset(s); - }, - numeric: function numeric(s) { - return "".concat(s.year(), "/").concat(fns.zeroPad(s.month() + 1), "/").concat(fns.zeroPad(s.date())); - }, - // yyyy/mm/dd - 'numeric-us': function numericUs(s) { - return "".concat(fns.zeroPad(s.month() + 1), "/").concat(fns.zeroPad(s.date()), "/").concat(s.year()); - }, - // mm/dd/yyyy - 'numeric-uk': function numericUk(s) { - return "".concat(fns.zeroPad(s.date()), "/").concat(fns.zeroPad(s.month() + 1), "/").concat(s.year()); - }, - //dd/mm/yyyy - 'mm/dd': function mmDd(s) { - return "".concat(fns.zeroPad(s.month() + 1), "/").concat(fns.zeroPad(s.date())); - }, - //mm/dd - // ... https://en.wikipedia.org/wiki/ISO_8601 ;((( - iso: function iso(s) { - var year = s.format('iso-year'); - var month = fns.zeroPad(s.month() + 1); //1-based months - - var date = fns.zeroPad(s.date()); - var hour = fns.zeroPad(s.h24()); - var minute = fns.zeroPad(s.minute()); - var second = fns.zeroPad(s.second()); - var ms = fns.zeroPad(s.millisecond(), 3); - - var offset = _offset(s); - - return "".concat(year, "-").concat(month, "-").concat(date, "T").concat(hour, ":").concat(minute, ":").concat(second, ".").concat(ms).concat(offset); //2018-03-09T08:50:00.000-05:00 - }, - 'iso-short': function isoShort(s) { - var month = fns.zeroPad(s.month() + 1); //1-based months - - var date = fns.zeroPad(s.date()); - return "".concat(s.year(), "-").concat(month, "-").concat(date); //2017-02-15 - }, - 'iso-utc': function isoUtc(s) { - return new Date(s.epoch).toISOString(); //2017-03-08T19:45:28.367Z - }, - //i made these up - nice: function nice(s) { - return "".concat(months$1["short"]()[s.month()], " ").concat(fns.ordinal(s.date()), ", ").concat(s.time()); - }, - 'nice-24': function nice24(s) { - return "".concat(months$1["short"]()[s.month()], " ").concat(fns.ordinal(s.date()), ", ").concat(s.hour24(), ":").concat(fns.zeroPad(s.minute())); - }, - 'nice-year': function niceYear(s) { - return "".concat(months$1["short"]()[s.month()], " ").concat(fns.ordinal(s.date()), ", ").concat(s.year()); - }, - 'nice-day': function niceDay(s) { - return "".concat(days["short"]()[s.day()], " ").concat(applyCaseFormat(months$1["short"]()[s.month()]), " ").concat(fns.ordinal(s.date())); - }, - 'nice-full': function niceFull(s) { - return "".concat(s.dayName(), " ").concat(applyCaseFormat(s.monthName()), " ").concat(fns.ordinal(s.date()), ", ").concat(s.time()); - }, - 'nice-full-24': function niceFull24(s) { - return "".concat(s.dayName(), " ").concat(applyCaseFormat(s.monthName()), " ").concat(fns.ordinal(s.date()), ", ").concat(s.hour24(), ":").concat(fns.zeroPad(s.minute())); - } -}; //aliases - -var aliases = { - 'day-name': 'day', - 'month-name': 'month', - 'iso 8601': 'iso', - 'time-h24': 'time-24', - 'time-12': 'time', - 'time-h12': 'time', - tz: 'timezone', - 'day-num': 'day-number', - 'month-num': 'month-number', - 'month-iso': 'iso-month', - 'year-iso': 'iso-year', - 'nice-short': 'nice', - 'nice-short-24': 'nice-24', - mdy: 'numeric-us', - dmy: 'numeric-uk', - ymd: 'numeric', - 'yyyy/mm/dd': 'numeric', - 'mm/dd/yyyy': 'numeric-us', - 'dd/mm/yyyy': 'numeric-us', - 'little-endian': 'numeric-uk', - 'big-endian': 'numeric', - 'day-nice': 'nice-day' -}; -Object.keys(aliases).forEach(function (k) { - return format[k] = format[aliases[k]]; -}); - -var printFormat = function printFormat(s) { - var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; //don't print anything if it's an invalid date - - if (s.isValid() !== true) { - return ''; - } //support .format('month') - - - if (format.hasOwnProperty(str)) { - var out = format[str](s) || ''; - - if (str !== 'json') { - out = String(out); - - if (str !== 'ampm') { - out = applyCaseFormat(out); - } - } - - return out; - } //support '{hour}:{minute}' notation - - - if (str.indexOf('{') !== -1) { - var sections = /\{(.+?)\}/g; - str = str.replace(sections, function (_, fmt) { - fmt = fmt.toLowerCase().trim(); - - if (format.hasOwnProperty(fmt)) { - var _out = String(format[fmt](s)); - - if (fmt !== 'ampm') { - return applyCaseFormat(_out); - } - - return _out; - } - - return ''; - }); - return str; - } - - return s.format('iso-short'); -}; - -var format_1 = printFormat; -var pad = fns.zeroPad; -var formatTimezone = fns.formatTimezone; //parse this insane unix-time-templating thing, from the 19th century -//http://unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns -//time-symbols we support - -var mapping = { - G: function G(s) { - return s.era(); - }, - GG: function GG(s) { - return s.era(); - }, - GGG: function GGG(s) { - return s.era(); - }, - GGGG: function GGGG(s) { - return s.era() === 'AD' ? 'Anno Domini' : 'Before Christ'; - }, - //year - y: function y(s) { - return s.year(); - }, - yy: function yy(s) { - //last two chars - return parseInt(String(s.year()).substr(2, 4), 10); - }, - yyy: function yyy(s) { - return s.year(); - }, - yyyy: function yyyy(s) { - return s.year(); - }, - yyyyy: function yyyyy(s) { - return '0' + s.year(); - }, - // u: (s) => {},//extended non-gregorian years - //quarter - Q: function Q(s) { - return s.quarter(); - }, - QQ: function QQ(s) { - return s.quarter(); - }, - QQQ: function QQQ(s) { - return s.quarter(); - }, - QQQQ: function QQQQ(s) { - return s.quarter(); - }, - //month - M: function M(s) { - return s.month() + 1; - }, - MM: function MM(s) { - return pad(s.month() + 1); - }, - MMM: function MMM(s) { - return s.format('month-short'); - }, - MMMM: function MMMM(s) { - return s.format('month'); - }, - //week - w: function w(s) { - return s.week(); - }, - ww: function ww(s) { - return pad(s.week()); - }, - //week of month - // W: (s) => s.week(), - //date of month - d: function d(s) { - return s.date(); - }, - dd: function dd(s) { - return pad(s.date()); - }, - //date of year - D: function D(s) { - return s.dayOfYear(); - }, - DD: function DD(s) { - return pad(s.dayOfYear()); - }, - DDD: function DDD(s) { - return pad(s.dayOfYear(), 3); - }, - // F: (s) => {},//date of week in month - // g: (s) => {},//modified julian day - //day - E: function E(s) { - return s.format('day-short'); - }, - EE: function EE(s) { - return s.format('day-short'); - }, - EEE: function EEE(s) { - return s.format('day-short'); - }, - EEEE: function EEEE(s) { - return s.format('day'); - }, - EEEEE: function EEEEE(s) { - return s.format('day')[0]; - }, - e: function e(s) { - return s.day(); - }, - ee: function ee(s) { - return s.day(); - }, - eee: function eee(s) { - return s.format('day-short'); - }, - eeee: function eeee(s) { - return s.format('day'); - }, - eeeee: function eeeee(s) { - return s.format('day')[0]; - }, - //am/pm - a: function a(s) { - return s.ampm().toUpperCase(); - }, - aa: function aa(s) { - return s.ampm().toUpperCase(); - }, - aaa: function aaa(s) { - return s.ampm().toUpperCase(); - }, - aaaa: function aaaa(s) { - return s.ampm().toUpperCase(); - }, - //hour - h: function h(s) { - return s.h12(); - }, - hh: function hh(s) { - return pad(s.h12()); - }, - H: function H(s) { - return s.hour(); - }, - HH: function HH(s) { - return pad(s.hour()); - }, - // j: (s) => {},//weird hour format - m: function m(s) { - return s.minute(); - }, - mm: function mm(s) { - return pad(s.minute()); - }, - s: function s(_s) { - return _s.second(); - }, - ss: function ss(s) { - return pad(s.second()); - }, - //milliseconds in the day - A: function A(s) { - return s.epoch - s.startOf('day').epoch; - }, - //timezone - z: function z(s) { - return s.timezone().name; - }, - zz: function zz(s) { - return s.timezone().name; - }, - zzz: function zzz(s) { - return s.timezone().name; - }, - zzzz: function zzzz(s) { - return s.timezone().name; - }, - Z: function Z(s) { - return formatTimezone(s.timezone().current.offset); - }, - ZZ: function ZZ(s) { - return formatTimezone(s.timezone().current.offset); - }, - ZZZ: function ZZZ(s) { - return formatTimezone(s.timezone().current.offset); - }, - ZZZZ: function ZZZZ(s) { - return formatTimezone(s.timezone().current.offset, ':'); - } -}; - -var addAlias = function addAlias(_char, to, n) { - var name = _char; - var toName = to; - - for (var i = 0; i < n; i += 1) { - mapping[name] = mapping[toName]; - name += _char; - toName += to; - } -}; - -addAlias('q', 'Q', 4); -addAlias('L', 'M', 4); -addAlias('Y', 'y', 4); -addAlias('c', 'e', 4); -addAlias('k', 'H', 2); -addAlias('K', 'h', 2); -addAlias('S', 's', 2); -addAlias('v', 'z', 4); -addAlias('V', 'Z', 4); // support unix-style escaping with ' character - -var escapeChars = function escapeChars(arr) { - for (var i = 0; i < arr.length; i += 1) { - if (arr[i] === "'") { - // greedy-search for next apostrophe - for (var o = i + 1; o < arr.length; o += 1) { - if (arr[o]) { - arr[i] += arr[o]; - } - - if (arr[o] === "'") { - arr[o] = null; - break; - } - - arr[o] = null; - } - } - } - - return arr.filter(function (ch) { - return ch; - }); -}; //combine consecutive chars, like 'yyyy' as one. - - -var combineRepeated = function combineRepeated(arr) { - for (var i = 0; i < arr.length; i += 1) { - var c = arr[i]; // greedy-forward - - for (var o = i + 1; o < arr.length; o += 1) { - if (arr[o] === c) { - arr[i] += arr[o]; - arr[o] = null; - } else { - break; - } - } - } // '' means one apostrophe - - - arr = arr.filter(function (ch) { - return ch; - }); - arr = arr.map(function (str) { - if (str === "''") { - str = "'"; - } - - return str; - }); - return arr; -}; - -var unixFmt = function unixFmt(s, str) { - var arr = str.split(''); // support character escaping - - arr = escapeChars(arr); //combine 'yyyy' as string. - - arr = combineRepeated(arr); - return arr.reduce(function (txt, c) { - if (mapping[c] !== undefined) { - txt += mapping[c](s) || ''; - } else { - // 'unescape' - if (/^'.{1,}'$/.test(c)) { - c = c.replace(/'/g, ''); - } - - txt += c; - } - - return txt; - }, ''); -}; - -var unixFmt_1 = unixFmt; -var units$2 = ['year', 'season', 'quarter', 'month', 'week', 'day', 'quarterHour', 'hour', 'minute']; - -var doUnit = function doUnit(s, k) { - var start = s.clone().startOf(k); - var end = s.clone().endOf(k); - var duration = end.epoch - start.epoch; - var percent = (s.epoch - start.epoch) / duration; - return parseFloat(percent.toFixed(2)); -}; //how far it is along, from 0-1 - - -var progress = function progress(s, unit) { - if (unit) { - unit = fns.normalize(unit); - return doUnit(s, unit); - } - - var obj = {}; - units$2.forEach(function (k) { - obj[k] = doUnit(s, k); - }); - return obj; -}; - -var progress_1 = progress; - -var nearest = function nearest(s, unit) { - //how far have we gone? - var prog = s.progress(); - unit = fns.normalize(unit); //fix camel-case for this one - - if (unit === 'quarterhour') { - unit = 'quarterHour'; - } - - if (prog[unit] !== undefined) { - // go forward one? - if (prog[unit] > 0.5) { - s = s.add(1, unit); - } // go to start - - - s = s.startOf(unit); - } else if (s.silent === false) { - console.warn("no known unit '" + unit + "'"); - } - - return s; -}; - -var nearest_1 = nearest; //increment until dates are the same - -var climb = function climb(a, b, unit) { - var i = 0; - a = a.clone(); - - while (a.isBefore(b)) { - //do proper, expensive increment to catch all-the-tricks - a = a.add(1, unit); - i += 1; - } //oops, we went too-far.. - - - if (a.isAfter(b, unit)) { - i -= 1; - } - - return i; -}; // do a thurough +=1 on the unit, until they match -// for speed-reasons, only used on day, month, week. - - -var diffOne = function diffOne(a, b, unit) { - if (a.isBefore(b)) { - return climb(a, b, unit); - } else { - return climb(b, a, unit) * -1; //reverse it - } -}; - -var one = diffOne; // 2020 - 2019 may be 1 year, or 0 years -// - '1 year difference' means 366 days during a leap year - -var fastYear = function fastYear(a, b) { - var years = b.year() - a.year(); // should we decrement it by 1? - - a = a.year(b.year()); - - if (a.isAfter(b)) { - years -= 1; - } - - return years; -}; // use a waterfall-method for computing a diff of any 'pre-knowable' units -// compute years, then compute months, etc.. -// ... then ms-math for any very-small units - - -var diff$1 = function diff(a, b) { - // an hour is always the same # of milliseconds - // so these units can be 'pre-calculated' - var msDiff = b.epoch - a.epoch; - var obj = { - milliseconds: msDiff, - seconds: parseInt(msDiff / 1000, 10) - }; - obj.minutes = parseInt(obj.seconds / 60, 10); - obj.hours = parseInt(obj.minutes / 60, 10); //do the year - - var tmp = a.clone(); - obj.years = fastYear(tmp, b); - tmp = a.add(obj.years, 'year'); //there's always 12 months in a year... - - obj.months = obj.years * 12; - tmp = a.add(obj.months, 'month'); - obj.months += one(tmp, b, 'month'); // there's always atleast 52 weeks in a year.. - // (month * 4) isn't as close - - obj.weeks = obj.years * 52; - tmp = a.add(obj.weeks, 'week'); - obj.weeks += one(tmp, b, 'week'); // there's always atleast 7 days in a week - - obj.days = obj.weeks * 7; - tmp = a.add(obj.days, 'day'); - obj.days += one(tmp, b, 'day'); - return obj; -}; - -var waterfall = diff$1; - -var reverseDiff = function reverseDiff(obj) { - Object.keys(obj).forEach(function (k) { - obj[k] *= -1; - }); - return obj; -}; // this method counts a total # of each unit, between a, b. -// '1 month' means 28 days in february -// '1 year' means 366 days in a leap year - - -var main$1 = function main(a, b, unit) { - b = fns.beADate(b, a); //reverse values, if necessary - - var reversed = false; - - if (a.isAfter(b)) { - var tmp = a; - a = b; - b = tmp; - reversed = true; - } //compute them all (i know!) - - - var obj = waterfall(a, b); - - if (reversed) { - obj = reverseDiff(obj); - } //return just the requested unit - - - if (unit) { - //make sure it's plural-form - unit = fns.normalize(unit); - - if (/s$/.test(unit) !== true) { - unit += 's'; - } - - if (unit === 'dates') { - unit = 'days'; - } - - return obj[unit]; - } - - return obj; -}; - -var diff = main$1; //our conceptual 'break-points' for each unit - -var qualifiers = { - months: { - almost: 10, - over: 4 - }, - days: { - almost: 25, - over: 10 - }, - hours: { - almost: 20, - over: 8 - }, - minutes: { - almost: 50, - over: 20 - }, - seconds: { - almost: 50, - over: 20 - } -}; //get number of hours/minutes... between the two dates - -function getDiff(a, b) { - var isBefore = a.isBefore(b); - var later = isBefore ? b : a; - var earlier = isBefore ? a : b; - earlier = earlier.clone(); - var diff = { - years: 0, - months: 0, - days: 0, - hours: 0, - minutes: 0, - seconds: 0 - }; - Object.keys(diff).forEach(function (unit) { - if (earlier.isSame(later, unit)) { - return; - } - - var max = earlier.diff(later, unit); - earlier = earlier.add(max, unit); - diff[unit] = max; - }); //reverse it, if necessary - - if (isBefore) { - Object.keys(diff).forEach(function (u) { - if (diff[u] !== 0) { - diff[u] *= -1; - } - }); - } - - return diff; -} // Expects a plural unit arg - - -function pluralize(value, unit) { - if (value === 1) { - unit = unit.slice(0, -1); - } - - return value + ' ' + unit; -} //create the human-readable diff between the two dates - - -var since = function since(start, end) { - end = fns.beADate(end, start); - var diff = getDiff(start, end); - var isNow = Object.keys(diff).every(function (u) { - return !diff[u]; - }); - - if (isNow === true) { - return { - diff: diff, - rounded: 'now', - qualified: 'now', - precise: 'now' - }; - } - - var rounded; - var qualified; - var precise; - var englishValues = []; //go through each value and create its text-representation - - Object.keys(diff).forEach(function (unit, i, units) { - var value = Math.abs(diff[unit]); - - if (value === 0) { - return; - } - - var englishValue = pluralize(value, unit); - englishValues.push(englishValue); - - if (!rounded) { - rounded = qualified = englishValue; - - if (i > 4) { - return; - } //is it a 'almost' something, etc? - - - var nextUnit = units[i + 1]; - var nextValue = Math.abs(diff[nextUnit]); - - if (nextValue > qualifiers[nextUnit].almost) { - rounded = pluralize(value + 1, unit); - qualified = 'almost ' + rounded; - } else if (nextValue > qualifiers[nextUnit].over) qualified = 'over ' + englishValue; - } - }); //make them into a string - - precise = englishValues.splice(0, 2).join(', '); //handle before/after logic - - if (start.isAfter(end) === true) { - rounded += ' ago'; - qualified += ' ago'; - precise += ' ago'; - } else { - rounded = 'in ' + rounded; - qualified = 'in ' + qualified; - precise = 'in ' + precise; - } - - return { - diff: diff, - rounded: rounded, - qualified: qualified, - precise: precise - }; -}; - -var since_1 = since; //https://www.timeanddate.com/calendar/aboutseasons.html -// Spring - from March 1 to May 31; -// Summer - from June 1 to August 31; -// Fall (autumn) - from September 1 to November 30; and, -// Winter - from December 1 to February 28 (February 29 in a leap year). - -var seasons = { - north: [['spring', 2, 1], //spring march 1 - ['summer', 5, 1], //june 1 - ['fall', 8, 1], //sept 1 - ['autumn', 8, 1], //sept 1 - ['winter', 11, 1] //dec 1 - ], - south: [['fall', 2, 1], //march 1 - ['autumn', 2, 1], //march 1 - ['winter', 5, 1], //june 1 - ['spring', 8, 1], //sept 1 - ['summer', 11, 1] //dec 1 - ] -}; -var quarters = [null, [0, 1], //jan 1 -[3, 1], //apr 1 -[6, 1], //july 1 -[9, 1] //oct 1 -]; -var units$1 = { - minute: function minute(s) { - walk_1(s, { - second: 0, - millisecond: 0 - }); - return s; - }, - quarterhour: function quarterhour(s) { - var minute = s.minutes(); - - if (minute >= 45) { - s = s.minutes(45); - } else if (minute >= 30) { - s = s.minutes(30); - } else if (minute >= 15) { - s = s.minutes(15); - } else { - s = s.minutes(0); - } - - walk_1(s, { - second: 0, - millisecond: 0 - }); - return s; - }, - hour: function hour(s) { - walk_1(s, { - minute: 0, - second: 0, - millisecond: 0 - }); - return s; - }, - day: function day(s) { - walk_1(s, { - hour: 0, - minute: 0, - second: 0, - millisecond: 0 - }); - return s; - }, - week: function week(s) { - var original = s.clone(); - s = s.day(s._weekStart); //monday - - if (s.isAfter(original)) { - s = s.subtract(1, 'week'); - } - - walk_1(s, { - hour: 0, - minute: 0, - second: 0, - millisecond: 0 - }); - return s; - }, - month: function month(s) { - walk_1(s, { - date: 1, - hour: 0, - minute: 0, - second: 0, - millisecond: 0 - }); - return s; - }, - quarter: function quarter(s) { - var q = s.quarter(); - - if (quarters[q]) { - walk_1(s, { - month: quarters[q][0], - date: quarters[q][1], - hour: 0, - minute: 0, - second: 0, - millisecond: 0 - }); - } - - return s; - }, - season: function season(s) { - var current = s.season(); - var hem = 'north'; - - if (s.hemisphere() === 'South') { - hem = 'south'; - } - - for (var i = 0; i < seasons[hem].length; i++) { - if (seasons[hem][i][0] === current) { - //winter goes between years - var year = s.year(); - - if (current === 'winter' && s.month() < 3) { - year -= 1; - } - - walk_1(s, { - year: year, - month: seasons[hem][i][1], - date: seasons[hem][i][2], - hour: 0, - minute: 0, - second: 0, - millisecond: 0 - }); - return s; - } - } - - return s; - }, - year: function year(s) { - walk_1(s, { - month: 0, - date: 1, - hour: 0, - minute: 0, - second: 0, - millisecond: 0 - }); - return s; - }, - decade: function decade(s) { - s = s.startOf('year'); - var year = s.year(); - var decade = parseInt(year / 10, 10) * 10; - s = s.year(decade); - return s; - }, - century: function century(s) { - s = s.startOf('year'); - var year = s.year(); // near 0AD goes '-1 | +1' - - var decade = parseInt(year / 100, 10) * 100; - s = s.year(decade); - return s; - } -}; -units$1.date = units$1.day; - -var startOf = function startOf(a, unit) { - var s = a.clone(); - unit = fns.normalize(unit); - - if (units$1[unit]) { - return units$1[unit](s); - } - - if (unit === 'summer' || unit === 'winter') { - s = s.season(unit); - return units$1.season(s); - } - - return s; -}; //piggy-backs off startOf - - -var endOf = function endOf(a, unit) { - var s = a.clone(); - unit = fns.normalize(unit); - - if (units$1[unit]) { - // go to beginning, go to next one, step back 1ms - s = units$1[unit](s); // startof - - s = s.add(1, unit); - s = s.subtract(1, 'millisecond'); - return s; - } - - return s; -}; - -var startOf_1 = { - startOf: startOf, - endOf: endOf -}; - -var isDay = function isDay(unit) { - if (days["short"]().find(function (s) { - return s === unit; - })) { - return true; - } - - if (days["long"]().find(function (s) { - return s === unit; - })) { - return true; - } - - return false; -}; // return a list of the weeks/months/days between a -> b -// returns spacetime objects in the timezone of the input - - -var every = function every(start) { - var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - var end = arguments.length > 2 ? arguments[2] : undefined; - - if (!unit || !end) { - return []; - } //cleanup unit param - - - unit = fns.normalize(unit); //cleanup to param - - end = start.clone().set(end); //swap them, if they're backwards - - if (start.isAfter(end)) { - var tmp = start; - start = end; - end = tmp; - } //support 'every wednesday' - - - var d = start.clone(); - - if (isDay(unit)) { - d = d.next(unit); - unit = 'week'; - } else { - d = d.next(unit); - } //okay, actually start doing it - - - var result = []; - - while (d.isBefore(end)) { - result.push(d); - d = d.add(1, unit); - } - - return result; -}; - -var every_1 = every; - -var parseDst = function parseDst(dst) { - if (!dst) { - return []; - } - - return dst.split('->'); -}; - -var titleCase = function titleCase(str) { - str = str[0].toUpperCase() + str.substr(1); - str = str.replace(/\/gmt/, '/GMT'); - str = str.replace(/[\/_]([a-z])/gi, function (s) { - return s.toUpperCase(); - }); - return str; -}; //get metadata about this timezone - - -var timezone = function timezone(s) { - var zones = s.timezones; - var tz = s.tz; - - if (zones.hasOwnProperty(tz) === false) { - tz = find(s.tz, zones); - } - - if (tz === null) { - if (s.silent === false) { - console.warn("Warn: could not find given or local timezone - '" + s.tz + "'"); - } - - return { - current: { - epochShift: 0 - } - }; - } - - var found = zones[tz]; - var result = { - name: titleCase(tz), - hasDst: Boolean(found.dst), - default_offset: found.offset, - //do north-hemisphere version as default (sorry!) - hemisphere: found.hem === 's' ? 'South' : 'North', - current: {} - }; - - if (result.hasDst) { - var arr = parseDst(found.dst); - result.change = { - start: arr[0], - back: arr[1] - }; - } //find the offsets for summer/winter times - //(these variable names are north-centric) - - - var summer = found.offset; // (july) - - var winter = summer; // (january) assume it's the same for now - - if (result.hasDst === true) { - if (result.hemisphere === 'North') { - winter = summer - 1; - } else { - //southern hemisphere - winter = found.offset + 1; - } - } //find out which offset to use right now - //use 'summer' time july-time - - - if (result.hasDst === false) { - result.current.offset = summer; - result.current.isDST = false; - } else if (summerTime(s.epoch, result.change.start, result.change.back, summer, winter) === true) { - result.current.offset = summer; - result.current.isDST = result.hemisphere === 'North'; //dst 'on' in winter in north - } else { - //use 'winter' january-time - result.current.offset = winter; - result.current.isDST = result.hemisphere === 'South'; //dst 'on' in summer in south - } - - return result; -}; - -var timezone_1 = timezone; -var units = ['century', 'decade', 'year', 'month', 'date', 'day', 'hour', 'minute', 'second', 'millisecond']; //the spacetime instance methods (also, the API) - -var methods$4 = { - set: function set(input$1, tz) { - var s = this.clone(); - s = input(s, input$1, null); - - if (tz) { - this.tz = find(tz); - } - - return s; - }, - timezone: function timezone() { - return timezone_1(this); - }, - isDST: function isDST() { - return timezone_1(this).current.isDST; - }, - hasDST: function hasDST() { - return timezone_1(this).hasDst; - }, - offset: function offset() { - return timezone_1(this).current.offset * 60; - }, - hemisphere: function hemisphere() { - return timezone_1(this).hemisphere; - }, - format: function format(fmt) { - return format_1(this, fmt); - }, - unixFmt: function unixFmt(fmt) { - return unixFmt_1(this, fmt); - }, - startOf: function startOf(unit) { - return startOf_1.startOf(this, unit); - }, - endOf: function endOf(unit) { - return startOf_1.endOf(this, unit); - }, - leapYear: function leapYear() { - var year = this.year(); - return fns.isLeapYear(year); - }, - progress: function progress(unit) { - return progress_1(this, unit); - }, - nearest: function nearest(unit) { - return nearest_1(this, unit); - }, - diff: function diff$1(d, unit) { - return diff(this, d, unit); - }, - since: function since(d) { - if (!d) { - d = this.clone().set(); - } - - return since_1(this, d); - }, - next: function next(unit) { - var s = this.add(1, unit); - return s.startOf(unit); - }, - //the start of the previous year/week/century - last: function last(unit) { - var s = this.subtract(1, unit); - return s.startOf(unit); - }, - isValid: function isValid() { - //null/undefined epochs - if (!this.epoch && this.epoch !== 0) { - return false; - } - - return !isNaN(this.d.getTime()); - }, - //travel to this timezone - "goto": function goto(tz) { - var s = this.clone(); - s.tz = find(tz, s.timezones); //science! - - return s; - }, - //get each week/month/day between a -> b - every: function every(unit, to) { - // allow swapping these params: - if (_typeof(unit) === 'object' && typeof to === 'string') { - var tmp = to; - to = unit; - unit = tmp; - } - - return every_1(this, unit, to); - }, - isAwake: function isAwake() { - var hour = this.hour(); //10pm -> 8am - - if (hour < 8 || hour > 22) { - return false; - } - - return true; - }, - isAsleep: function isAsleep() { - return !this.isAwake(); - }, - //pretty-printing - log: function log() { - console.log(''); - console.log(format_1(this, 'nice-short')); - return this; - }, - logYear: function logYear() { - console.log(''); - console.log(format_1(this, 'full-short')); - return this; - }, - json: function json() { - var _this = this; - - return units.reduce(function (h, unit) { - h[unit] = _this[unit](); - return h; - }, {}); - }, - debug: function debug() { - var tz = this.timezone(); - var date = this.format('MM') + ' ' + this.format('date-ordinal') + ' ' + this.year(); - date += '\n - ' + this.format('time'); - console.log('\n\n', date + '\n - ' + tz.name + ' (' + tz.current.offset + ')'); - return this; - }, - //alias of 'since' but opposite - like moment.js - from: function from(d) { - d = this.clone().set(d); - return d.since(this); - }, - fromNow: function fromNow() { - var d = this.clone().set(Date.now()); - return d.since(this); - }, - weekStart: function weekStart(input) { - //accept a number directly - if (typeof input === 'number') { - this._weekStart = input; - return this; - } - - if (typeof input === 'string') { - // accept 'wednesday' - input = input.toLowerCase().trim(); - var num = days["short"]().indexOf(input); - - if (num === -1) { - num = days["long"]().indexOf(input); - } - - if (num === -1) { - num = 1; //go back to default - } - - this._weekStart = num; - } else { - console.warn('Spacetime Error: Cannot understand .weekStart() input:', input); - } - - return this; - } -}; // aliases - -methods$4.inDST = methods$4.isDST; -methods$4.round = methods$4.nearest; -methods$4.each = methods$4.every; -var methods_1 = methods$4; //these methods wrap around them. - -var isLeapYear$1 = fns.isLeapYear; - -var validate = function validate(n) { - //handle number as a string - if (typeof n === 'string') { - n = parseInt(n, 10); - } - - return n; -}; - -var order$1 = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond']; //reduce hostile micro-changes when moving dates by millisecond - -var confirm = function confirm(s, tmp, unit) { - var n = order$1.indexOf(unit); - var arr = order$1.slice(n, order$1.length); - - for (var i = 0; i < arr.length; i++) { - var want = tmp[arr[i]](); - s[arr[i]](want); - } - - return s; -}; - -var set = { - milliseconds: function milliseconds(s, n) { - n = validate(n); - var current = s.millisecond(); - var diff = current - n; //milliseconds to shift by - - return s.epoch - diff; - }, - seconds: function seconds(s, n) { - n = validate(n); - var diff = s.second() - n; - var shift = diff * milliseconds.second; - return s.epoch - shift; - }, - minutes: function minutes(s, n) { - n = validate(n); - var old = s.clone(); - var diff = s.minute() - n; - var shift = diff * milliseconds.minute; - s.epoch -= shift; // check against a screw-up - // if (old.hour() != s.hour()) { - // walkTo(old, { - // minute: n - // }) - // return old.epoch - // } - - confirm(s, old, 'second'); - return s.epoch; - }, - hours: function hours(s, n) { - n = validate(n); - - if (n >= 24) { - n = 24; - } else if (n < 0) { - n = 0; - } - - var old = s.clone(); - var diff = s.hour() - n; - var shift = diff * milliseconds.hour; - s.epoch -= shift; // oops, did we change the day? - - if (s.date() !== old.date()) { - s = old.clone(); - - if (diff > 1) { - diff -= 1; - } - - if (diff < 1) { - diff += 1; - } - - shift = diff * milliseconds.hour; - s.epoch -= shift; - } - - walk_1(s, { - hour: n - }); - confirm(s, old, 'minute'); - return s.epoch; - }, - //support setting time by '4:25pm' - this isn't very-well developed.. - time: function time(s, str) { - var m = str.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/); - - if (!m) { - //fallback to support just '2am' - m = str.match(/([0-9]{1,2}) ?(am|pm)/); - - if (!m) { - return s.epoch; - } - - m.splice(2, 0, '0'); //add implicit 0 minutes - - m.splice(3, 0, ''); //add implicit seconds - } - - var h24 = false; - var hour = parseInt(m[1], 10); - var minute = parseInt(m[2], 10); - - if (hour > 12) { - h24 = true; - } //make the hour into proper 24h time - - - if (h24 === false) { - if (m[4] === 'am' && hour === 12) { - //12am is midnight - hour = 0; - } - - if (m[4] === 'pm' && hour < 12) { - //12pm is noon - hour += 12; - } - } // handle seconds - - - m[3] = m[3] || ''; - m[3] = m[3].replace(/:/, ''); - var sec = parseInt(m[3], 10) || 0; - s = s.hour(hour); - s = s.minute(minute); - s = s.second(sec); - s = s.millisecond(0); - return s.epoch; - }, - date: function date(s, n) { - n = validate(n); //avoid setting february 31st - - if (n > 28) { - var month = s.month(); - var max = monthLengths_1[month]; // support leap day in february - - if (month === 1 && n === 29 && isLeapYear$1(s.year())) { - max = 29; - } - - if (n > max) { - n = max; - } - } //avoid setting < 0 - - - if (n <= 0) { - n = 1; - } - - walk_1(s, { - date: n - }); - return s.epoch; - }, - //this one's tricky - month: function month(s, n) { - if (typeof n === 'string') { - n = months$1.mapping()[n.toLowerCase()]; - } - - n = validate(n); //don't go past december - - if (n >= 12) { - n = 11; - } - - if (n <= 0) { - n = 0; - } - - var date = s.date(); //there's no 30th of february, etc. - - if (date > monthLengths_1[n]) { - //make it as close as we can.. - date = monthLengths_1[n]; - } - - walk_1(s, { - month: n, - date: date - }); - return s.epoch; - }, - year: function year(s, n) { - // support '97 - if (typeof n === 'string' && /^'[0-9]{2}$/.test(n)) { - n = n.replace(/'/, '').trim(); - n = Number(n); // '89 is 1989 - - if (n > 30) { - //change this in 10y - n = 1900 + n; - } else { - // '12 is 2012 - n = 2000 + n; - } - } - - n = validate(n); - walk_1(s, { - year: n - }); - return s.epoch; - }, - dayOfYear: function dayOfYear(s, n) { - n = validate(n); - var old = s.clone(); - n -= 1; //days are 1-based - - if (n <= 0) { - n = 0; - } else if (n >= 365) { - n = 364; - } - - s = s.startOf('year'); - s = s.add(n, 'day'); - confirm(s, old, 'hour'); - return s.epoch; - } -}; -var methods$3 = { - millisecond: function millisecond(num) { - if (num !== undefined) { - var s = this.clone(); - s.epoch = set.milliseconds(s, num); - return s; - } - - return this.d.getMilliseconds(); - }, - second: function second(num) { - if (num !== undefined) { - var s = this.clone(); - s.epoch = set.seconds(s, num); - return s; - } - - return this.d.getSeconds(); - }, - minute: function minute(num) { - if (num !== undefined) { - var s = this.clone(); - s.epoch = set.minutes(s, num); - return s; - } - - return this.d.getMinutes(); - }, - hour: function hour(num) { - var d = this.d; - - if (num !== undefined) { - var s = this.clone(); - s.epoch = set.hours(s, num); - return s; - } - - return d.getHours(); - }, - //'3:30' is 3.5 - hourFloat: function hourFloat(num) { - if (num !== undefined) { - var s = this.clone(); - - var _minute = num % 1; - - _minute = _minute * 60; - - var _hour = parseInt(num, 10); - - s.epoch = set.hours(s, _hour); - s.epoch = set.minutes(s, _minute); - return s; - } - - var d = this.d; - var hour = d.getHours(); - var minute = d.getMinutes(); - minute = minute / 60; - return hour + minute; - }, - // hour in 12h format - hour12: function hour12(str) { - var d = this.d; - - if (str !== undefined) { - var s = this.clone(); - str = '' + str; - var m = str.match(/^([0-9]+)(am|pm)$/); - - if (m) { - var hour = parseInt(m[1], 10); - - if (m[2] === 'pm') { - hour += 12; - } - - s.epoch = set.hours(s, hour); - } - - return s; - } //get the hour - - - var hour12 = d.getHours(); - - if (hour12 > 12) { - hour12 = hour12 - 12; - } - - if (hour12 === 0) { - hour12 = 12; - } - - return hour12; - }, - //some ambiguity here with 12/24h - time: function time(str) { - if (str !== undefined) { - var s = this.clone(); - str = str.toLowerCase().trim(); - s.epoch = set.time(s, str); - return s; - } - - return "".concat(this.h12(), ":").concat(fns.zeroPad(this.minute())).concat(this.ampm()); - }, - // either 'am' or 'pm' - ampm: function ampm(input) { - var which = 'am'; - var hour = this.hour(); - - if (hour >= 12) { - which = 'pm'; - } - - if (typeof input !== 'string') { - return which; - } //okay, we're doing a setter - - - var s = this.clone(); - input = input.toLowerCase().trim(); //ampm should never change the day - // - so use `.hour(n)` instead of `.minus(12,'hour')` - - if (hour >= 12 && input === 'am') { - //noon is 12pm - hour -= 12; - return s.hour(hour); - } - - if (hour < 12 && input === 'pm') { - hour += 12; - return s.hour(hour); - } - - return s; - }, - //some hard-coded times of day, like 'noon' - dayTime: function dayTime(str) { - if (str !== undefined) { - var times = { - morning: '7:00am', - breakfast: '7:00am', - noon: '12:00am', - lunch: '12:00pm', - afternoon: '2:00pm', - evening: '6:00pm', - dinner: '6:00pm', - night: '11:00pm', - midnight: '23:59pm' - }; - var s = this.clone(); - str = str || ''; - str = str.toLowerCase(); - - if (times.hasOwnProperty(str) === true) { - s = s.time(times[str]); - } - - return s; - } - - var h = this.hour(); - - if (h < 6) { - return 'night'; - } - - if (h < 12) { - //until noon - return 'morning'; - } - - if (h < 17) { - //until 5pm - return 'afternoon'; - } - - if (h < 22) { - //until 10pm - return 'evening'; - } - - return 'night'; - }, - //parse a proper iso string - iso: function iso(num) { - if (num !== undefined) { - return this.set(num); - } - - return this.format('iso'); - } -}; -var _01Time = methods$3; -var methods$2 = { - // # day in the month - date: function date(num) { - if (num !== undefined) { - var s = this.clone(); - num = parseInt(num, 10); - - if (num) { - s.epoch = set.date(s, num); - } - - return s; - } - - return this.d.getDate(); - }, - //like 'wednesday' (hard!) - day: function day(input) { - if (input === undefined) { - return this.d.getDay(); - } - - var original = this.clone(); - var want = input; // accept 'wednesday' - - if (typeof input === 'string') { - input = input.toLowerCase(); - - if (days.aliases.hasOwnProperty(input)) { - want = days.aliases[input]; - } else { - want = days["short"]().indexOf(input); - - if (want === -1) { - want = days["long"]().indexOf(input); - } - } - } //move approx - - - var day = this.d.getDay(); - var diff = day - want; - var s = this.subtract(diff, 'days'); //tighten it back up - - walk_1(s, { - hour: original.hour(), - minute: original.minute(), - second: original.second() - }); - return s; - }, - //these are helpful name-wrappers - dayName: function dayName(input) { - if (input === undefined) { - return days["long"]()[this.day()]; - } - - var s = this.clone(); - s = s.day(input); - return s; - }, - //either name or number - month: function month(input) { - if (input !== undefined) { - var s = this.clone(); - s.epoch = set.month(s, input); - return s; - } - - return this.d.getMonth(); - } -}; -var _02Date = methods$2; - -var clearMinutes = function clearMinutes(s) { - s = s.minute(0); - s = s.second(0); - s = s.millisecond(1); - return s; -}; - -var methods$1 = { - // day 0-366 - dayOfYear: function dayOfYear(num) { - if (num !== undefined) { - var s = this.clone(); - s.epoch = set.dayOfYear(s, num); - return s; - } //days since newyears - jan 1st is 1, jan 2nd is 2... - - - var sum = 0; - var month = this.d.getMonth(); - var tmp; //count the num days in each month - - for (var i = 1; i <= month; i++) { - tmp = new Date(); - tmp.setDate(1); - tmp.setFullYear(this.d.getFullYear()); //the year matters, because leap-years - - tmp.setHours(1); - tmp.setMinutes(1); - tmp.setMonth(i); - tmp.setHours(-2); //the last day of the month - - sum += tmp.getDate(); - } - - return sum + this.d.getDate(); - }, - //since the start of the year - week: function week(num) { - // week-setter - if (num !== undefined) { - var s = this.clone(); - s = s.month(0); - s = s.date(1); - s = s.day('monday'); - s = clearMinutes(s); //first week starts first Thurs in Jan - // so mon dec 28th is 1st week - // so mon dec 29th is not the week - - if (s.monthName() === 'december' && s.date() >= 28) { - s = s.add(1, 'week'); - } - - num -= 1; //1-based - - s = s.add(num, 'weeks'); - return s; - } //find-out which week it is - - - var tmp = this.clone(); - tmp = tmp.month(0); - tmp = tmp.date(1); - tmp = clearMinutes(tmp); - tmp = tmp.day('monday'); //don't go into last-year - - if (tmp.monthName() === 'december' && tmp.date() >= 28) { - tmp = tmp.add(1, 'week'); - } // is first monday the 1st? - - - var toAdd = 1; - - if (tmp.date() === 1) { - toAdd = 0; - } - - tmp = tmp.minus(1, 'second'); - var thisOne = this.epoch; //if the week technically hasn't started yet - - if (tmp.epoch > thisOne) { - return 1; - } //speed it up, if we can - - - var i = 0; - var skipWeeks = this.month() * 4; - tmp.epoch += milliseconds.week * skipWeeks; - i += skipWeeks; - - for (; i <= 52; i++) { - if (tmp.epoch > thisOne) { - return i + toAdd; - } - - tmp = tmp.add(1, 'week'); - } - - return 52; - }, - //'january' - monthName: function monthName(input) { - if (input === undefined) { - return months$1["long"]()[this.month()]; - } - - var s = this.clone(); - s = s.month(input); - return s; - }, - //q1, q2, q3, q4 - quarter: function quarter(num) { - if (num !== undefined) { - if (typeof num === 'string') { - num = num.replace(/^q/i, ''); - num = parseInt(num, 10); - } - - if (quarters[num]) { - var s = this.clone(); - var _month = quarters[num][0]; - s = s.month(_month); - s = s.date(1); - s = s.startOf('day'); - return s; - } - } - - var month = this.d.getMonth(); - - for (var i = 1; i < quarters.length; i++) { - if (month < quarters[i][0]) { - return i - 1; - } - } - - return 4; - }, - //spring, summer, winter, fall - season: function season(input) { - var hem = 'north'; - - if (this.hemisphere() === 'South') { - hem = 'south'; - } - - if (input !== undefined) { - var s = this.clone(); - - for (var i = 0; i < seasons[hem].length; i++) { - if (input === seasons[hem][i][0]) { - s = s.month(seasons[hem][i][1]); - s = s.date(1); - s = s.startOf('day'); - } - } - - return s; - } - - var month = this.d.getMonth(); - - for (var _i = 0; _i < seasons[hem].length - 1; _i++) { - if (month >= seasons[hem][_i][1] && month < seasons[hem][_i + 1][1]) { - return seasons[hem][_i][0]; - } - } - - return 'winter'; - }, - //the year number - year: function year(num) { - if (num !== undefined) { - var s = this.clone(); - s.epoch = set.year(s, num); - return s; - } - - return this.d.getFullYear(); - }, - //bc/ad years - era: function era(str) { - if (str !== undefined) { - var s = this.clone(); - str = str.toLowerCase(); //TODO: there is no year-0AD i think. may have off-by-1 error here - - var year = s.d.getFullYear(); //make '1992' into 1992bc.. - - if (str === 'bc' && year > 0) { - s.epoch = set.year(s, year * -1); - } //make '1992bc' into '1992' - - - if (str === 'ad' && year < 0) { - s.epoch = set.year(s, year * -1); - } - - return s; - } - - if (this.d.getFullYear() < 0) { - return 'BC'; - } - - return 'AD'; - }, - // 2019 -> 2010 - decade: function decade(input) { - if (input !== undefined) { - input = String(input); - input = input.replace(/([0-9])'?s$/, '$1'); //1950's - - input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals - - if (!input) { - console.warn('Spacetime: Invalid decade input'); - return this; - } // assume 20th century?? for '70s'. - - - if (input.length === 2 && /[0-9][0-9]/.test(input)) { - input = '19' + input; - } - - var year = Number(input); - - if (isNaN(year)) { - return this; - } // round it down to the decade - - - year = Math.floor(year / 10) * 10; - return this.year(year); //.startOf('decade') - } - - return this.startOf('decade').year(); - }, - // 1950 -> 19+1 - century: function century(input) { - if (input !== undefined) { - if (typeof input === 'string') { - input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals - - input = input.replace(/([0-9]+) ?(b\.?c\.?|a\.?d\.?)/i, function (a, b, c) { - if (c.match(/b\.?c\.?/i)) { - b = '-' + b; - } - - return b; - }); - input = input.replace(/c$/, ''); //20thC - } - - var year = Number(input); - - if (isNaN(input)) { - console.warn('Spacetime: Invalid century input'); - return this; - } // there is no century 0 - - - if (year === 0) { - year = 1; - } - - if (year >= 0) { - year = (year - 1) * 100; - } else { - year = (year + 1) * 100; - } - - return this.year(year); - } // century getter - - - var num = this.startOf('century').year(); - num = Math.floor(num / 100); - - if (num < 0) { - return num - 1; - } - - return num + 1; - }, - // 2019 -> 2+1 - millenium: function millenium(input) { - if (input !== undefined) { - if (typeof input === 'string') { - input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals - - input = Number(input); - - if (isNaN(input)) { - console.warn('Spacetime: Invalid millenium input'); - return this; - } - } - - if (input > 0) { - input -= 1; - } - - var year = input * 1000; // there is no year 0 - - if (year === 0) { - year = 1; - } - - return this.year(year); - } // get the current millenium - - - var num = Math.floor(this.year() / 1000); - - if (num >= 0) { - num += 1; - } - - return num; - } -}; -var _03Year = methods$1; -var methods = Object.assign({}, _01Time, _02Date, _03Year); //aliases - -methods.milliseconds = methods.millisecond; -methods.seconds = methods.second; -methods.minutes = methods.minute; -methods.hours = methods.hour; -methods.hour24 = methods.hour; -methods.h12 = methods.hour12; -methods.h24 = methods.hour24; -methods.days = methods.day; - -var addMethods$4 = function addMethods(Space) { - //hook the methods into prototype - Object.keys(methods).forEach(function (k) { - Space.prototype[k] = methods[k]; - }); -}; - -var query = addMethods$4; -var isLeapYear = fns.isLeapYear; - -var getMonthLength = function getMonthLength(month, year) { - if (month === 1 && isLeapYear(year)) { - return 29; - } - - return monthLengths_1[month]; -}; //month is the one thing we 'model/compute' -//- because ms-shifting can be off by enough - - -var rollMonth = function rollMonth(want, old) { - //increment year - if (want.month > 0) { - var years = parseInt(want.month / 12, 10); - want.year = old.year() + years; - want.month = want.month % 12; - } else if (want.month < 0) { - //decrement year - var _years = Math.floor(Math.abs(want.month) / 13, 10); - - _years = Math.abs(_years) + 1; - want.year = old.year() - _years; //ignore extras - - want.month = want.month % 12; - want.month = want.month + 12; - - if (want.month === 12) { - want.month = 0; - } - } - - return want; -}; // briefly support day=-2 (this does not need to be perfect.) - - -var rollDaysDown = function rollDaysDown(want, old, sum) { - want.year = old.year(); - want.month = old.month(); - var date = old.date(); - want.date = date - Math.abs(sum); - - while (want.date < 1) { - want.month -= 1; - - if (want.month < 0) { - want.month = 11; - want.year -= 1; - } - - var max = getMonthLength(want.month, want.year); - want.date += max; - } - - return want; -}; // briefly support day=33 (this does not need to be perfect.) - - -var rollDaysUp = function rollDaysUp(want, old, sum) { - var year = old.year(); - var month = old.month(); - var max = getMonthLength(month, year); - - while (sum > max) { - sum -= max; - month += 1; +var ue = w, + le = _, + he = j, + ce = function (e, t, a) { + for (let n = 0; n < se.length; n++) { + let r = t.match(se[n].reg); - if (month >= 12) { - month -= 12; - year += 1; + if (r) { + let t = se[n].parse(e, r, a); + if (null !== t && t.isValid()) return t; } - - max = getMonthLength(month, year); } - want.month = month; - want.date = sum; - return want; + return !1 === e.silent && console.warn("Warning: couldn't parse date-string: '" + t + "'"), e.epoch = null, e; }; -var _model = { - months: rollMonth, - days: rollDaysUp, - daysBack: rollDaysDown -}; // but briefly: -// millisecond-math, and some post-processing covers most-things -// we 'model' the calendar here only a little bit -// and that usually works-out... - -var order = ['millisecond', 'second', 'minute', 'hour', 'date', 'month']; -var keep = { - second: order.slice(0, 1), - minute: order.slice(0, 2), - quarterhour: order.slice(0, 2), - hour: order.slice(0, 3), - date: order.slice(0, 4), - month: order.slice(0, 4), - quarter: order.slice(0, 4), - season: order.slice(0, 4), - year: order, - decade: order, - century: order -}; -keep.week = keep.hour; -keep.season = keep.date; -keep.quarter = keep.date; // Units need to be dst adjuested - -var dstAwareUnits = { - year: true, - quarter: true, - season: true, - month: true, - week: true, - day: true -}; -var keepDate = { - month: true, - quarter: true, - season: true, - year: true +const { + parseArray: de, + parseObject: me, + parseNumber: pe +} = ue, + fe = { + year: new Date().getFullYear(), + month: 0, + date: 1 }; -var addMethods$3 = function addMethods(SpaceTime) { - SpaceTime.prototype.add = function (num, unit) { - var s = this.clone(); - - if (!unit || num === 0) { - return s; //don't bother - } +var ye = (e, t) => { + let a = e._today || fe; + if ("number" == typeof t) return pe(e, t); - var old = this.clone(); - unit = fns.normalize(unit); + if (e.epoch = Date.now(), e._today && E.isObject(e._today) && Object.keys(e._today).length > 0) { + let t = me(e, a, fe); + t.isValid() && (e.epoch = t.epoch); + } - if (unit === 'millisecond') { - s.epoch += num; - return s; - } // support 'fortnight' alias + return null == t || "" === t ? e : !0 === E.isDate(t) ? (e.epoch = t.getTime(), e) : !0 === E.isArray(t) ? e = de(e, t, a) : !0 === E.isObject(t) ? t.epoch ? (e.epoch = t.epoch, e.tz = t.tz, e) : e = me(e, t, a) : "string" != typeof t ? e : (t = he(t), !0 === le.hasOwnProperty(t) ? e = le[t](e) : ce(e, t)); +}; +let ge = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"], + be = ["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"]; +let ke = !0; - if (unit === 'fortnight') { - num *= 2; - unit = 'week'; - } //move forward by the estimated milliseconds (rough) +var we = { + short: () => ge, + long: () => be, + set: e => { + ge = e.short || ge, be = e.long || be; + }, + aliases: { + mo: 1, + tu: 2, + we: 3, + th: 4, + fr: 5, + sa: 6, + su: 7, + tues: 2, + weds: 3, + wedn: 3, + thur: 4, + thurs: 4 + } +}, + ve = { + useTitleCase: () => ke, + set: e => { + ke = e; + } +}, + ze = e => { + let t = e.timezone().current.offset; + return t ? E.formatTimezone(t, ":") : "Z"; +}; + +const _e = e => ve.useTitleCase() ? E.titleCase(e) : e, + je = { + day: e => _e(e.dayName()), + "day-short": e => _e(we.short()[e.day()]), + "day-number": e => e.day(), + "day-ordinal": e => E.ordinal(e.day()), + "day-pad": e => E.zeroPad(e.day()), + date: e => e.date(), + "date-ordinal": e => E.ordinal(e.date()), + "date-pad": e => E.zeroPad(e.date()), + month: e => _e(e.monthName()), + "month-short": e => _e(N.short()[e.month()]), + "month-number": e => e.month(), + "month-ordinal": e => E.ordinal(e.month()), + "month-pad": e => E.zeroPad(e.month()), + "iso-month": e => E.zeroPad(e.month() + 1), + year: e => { + let t = e.year(); + return t > 0 ? t : (t = Math.abs(t), t + " BC"); + }, + "year-short": e => { + let t = e.year(); + return t > 0 ? "'" + String(e.year()).substr(2, 4) : (t = Math.abs(t), t + " BC"); + }, + "iso-year": e => { + let t = e.year(), + a = t < 0, + n = E.zeroPad(Math.abs(t), 4); + return a && (n = E.zeroPad(n, 6), n = "-" + n), n; + }, + time: e => e.time(), + "time-24": e => "".concat(e.hour24(), ":").concat(E.zeroPad(e.minute())), + hour: e => e.hour12(), + "hour-pad": e => E.zeroPad(e.hour12()), + "hour-24": e => e.hour24(), + "hour-24-pad": e => E.zeroPad(e.hour24()), + minute: e => e.minute(), + "minute-pad": e => E.zeroPad(e.minute()), + second: e => e.second(), + "second-pad": e => E.zeroPad(e.second()), + millisecond: e => e.millisecond(), + "millisecond-pad": e => E.zeroPad(e.millisecond(), 3), + ampm: e => e.ampm(), + quarter: e => "Q" + e.quarter(), + season: e => e.season(), + era: e => e.era(), + json: e => e.json(), + timezone: e => e.timezone().name, + offset: e => ze(e), + numeric: e => "".concat(e.year(), "/").concat(E.zeroPad(e.month() + 1), "/").concat(E.zeroPad(e.date())), + "numeric-us": e => "".concat(E.zeroPad(e.month() + 1), "/").concat(E.zeroPad(e.date()), "/").concat(e.year()), + "numeric-uk": e => "".concat(E.zeroPad(e.date()), "/").concat(E.zeroPad(e.month() + 1), "/").concat(e.year()), + "mm/dd": e => "".concat(E.zeroPad(e.month() + 1), "/").concat(E.zeroPad(e.date())), + iso: e => "".concat(e.format("iso-year"), "-").concat(E.zeroPad(e.month() + 1), "-").concat(E.zeroPad(e.date()), "T").concat(E.zeroPad(e.h24()), ":").concat(E.zeroPad(e.minute()), ":").concat(E.zeroPad(e.second()), ".").concat(E.zeroPad(e.millisecond(), 3)).concat(ze(e)), + "iso-short": e => { + let t = E.zeroPad(e.month() + 1), + a = E.zeroPad(e.date()); + var n; + return "".concat((n = e.year()) >= 0 ? E.zeroPad(n, 4) : (n = Math.abs(n), "-" + E.zeroPad(n, 4)), "-").concat(t, "-").concat(a); + }, + "iso-utc": e => new Date(e.epoch).toISOString(), + nice: e => "".concat(N.short()[e.month()], " ").concat(E.ordinal(e.date()), ", ").concat(e.time()), + "nice-24": e => "".concat(N.short()[e.month()], " ").concat(E.ordinal(e.date()), ", ").concat(e.hour24(), ":").concat(E.zeroPad(e.minute())), + "nice-year": e => "".concat(N.short()[e.month()], " ").concat(E.ordinal(e.date()), ", ").concat(e.year()), + "nice-day": e => "".concat(we.short()[e.day()], " ").concat(_e(N.short()[e.month()]), " ").concat(E.ordinal(e.date())), + "nice-full": e => "".concat(e.dayName(), " ").concat(_e(e.monthName()), " ").concat(E.ordinal(e.date()), ", ").concat(e.time()), + "nice-full-24": e => "".concat(e.dayName(), " ").concat(_e(e.monthName()), " ").concat(E.ordinal(e.date()), ", ").concat(e.hour24(), ":").concat(E.zeroPad(e.minute())) +}, + Oe = { + "day-name": "day", + "month-name": "month", + "iso 8601": "iso", + "time-h24": "time-24", + "time-12": "time", + "time-h12": "time", + tz: "timezone", + "day-num": "day-number", + "month-num": "month-number", + "month-iso": "iso-month", + "year-iso": "iso-year", + "nice-short": "nice", + "nice-short-24": "nice-24", + mdy: "numeric-us", + dmy: "numeric-uk", + ymd: "numeric", + "yyyy/mm/dd": "numeric", + "mm/dd/yyyy": "numeric-us", + "dd/mm/yyyy": "numeric-us", + "little-endian": "numeric-uk", + "big-endian": "numeric", + "day-nice": "nice-day" +}; + +Object.keys(Oe).forEach(e => je[e] = je[Oe[e]]); + +var $e = function (e) { + let t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; + if (!0 !== e.isValid()) return ""; + + if (je.hasOwnProperty(t)) { + let a = je[t](e) || ""; + return "json" !== t && (a = String(a), "ampm" !== t && (a = _e(a))), a; + } + + if (-1 !== t.indexOf("{")) { + let a = /\{(.+?)\}/g; + return t = t.replace(a, (t, a) => { + if (a = a.toLowerCase().trim(), je.hasOwnProperty(a)) { + let t = String(je[a](e)); + return "ampm" !== a ? _e(t) : t; + } + return ""; + }); + } - if (milliseconds[unit]) { - s.epoch += milliseconds[unit] * num; - } else if (unit === 'week') { - s.epoch += milliseconds.day * (num * 7); - } else if (unit === 'quarter' || unit === 'season') { - s.epoch += milliseconds.month * (num * 3); - } else if (unit === 'quarterhour') { - s.epoch += milliseconds.minute * 15 * num; - } //now ensure our milliseconds/etc are in-line + return e.format("iso-short"); +}; + +const De = E.zeroPad, + Me = E.formatTimezone, + Pe = { + G: e => e.era(), + GG: e => e.era(), + GGG: e => e.era(), + GGGG: e => "AD" === e.era() ? "Anno Domini" : "Before Christ", + y: e => e.year(), + yy: e => parseInt(String(e.year()).substr(2, 4), 10), + yyy: e => e.year(), + yyyy: e => e.year(), + yyyyy: e => "0" + e.year(), + Q: e => e.quarter(), + QQ: e => e.quarter(), + QQQ: e => e.quarter(), + QQQQ: e => e.quarter(), + M: e => e.month() + 1, + MM: e => De(e.month() + 1), + MMM: e => e.format("month-short"), + MMMM: e => e.format("month"), + w: e => e.week(), + ww: e => De(e.week()), + d: e => e.date(), + dd: e => De(e.date()), + D: e => e.dayOfYear(), + DD: e => De(e.dayOfYear()), + DDD: e => De(e.dayOfYear(), 3), + E: e => e.format("day-short"), + EE: e => e.format("day-short"), + EEE: e => e.format("day-short"), + EEEE: e => e.format("day"), + EEEEE: e => e.format("day")[0], + e: e => e.day(), + ee: e => e.day(), + eee: e => e.format("day-short"), + eeee: e => e.format("day"), + eeeee: e => e.format("day")[0], + a: e => e.ampm().toUpperCase(), + aa: e => e.ampm().toUpperCase(), + aaa: e => e.ampm().toUpperCase(), + aaaa: e => e.ampm().toUpperCase(), + h: e => e.h12(), + hh: e => De(e.h12()), + H: e => e.hour(), + HH: e => De(e.hour()), + m: e => e.minute(), + mm: e => De(e.minute()), + s: e => e.second(), + ss: e => De(e.second()), + SSS: e => De(e.millisecond(), 3), + A: e => e.epoch - e.startOf("day").epoch, + z: e => e.timezone().name, + zz: e => e.timezone().name, + zzz: e => e.timezone().name, + zzzz: e => e.timezone().name, + Z: e => Me(e.timezone().current.offset), + ZZ: e => Me(e.timezone().current.offset), + ZZZ: e => Me(e.timezone().current.offset), + ZZZZ: e => Me(e.timezone().current.offset, ":") +}, + Se = (e, t, a) => { + let n = e, + r = t; + + for (let o = 0; o < a; o += 1) Pe[n] = Pe[r], n += e, r += t; +}; + +Se("q", "Q", 4), Se("L", "M", 4), Se("Y", "y", 4), Se("c", "e", 4), Se("k", "H", 2), Se("K", "h", 2), Se("S", "s", 2), Se("v", "z", 4), Se("V", "Z", 4); + +var qe = (e, t) => { + let a = t.split(""); + return a = function (e) { + for (let t = 0; t < e.length; t += 1) if ("'" === e[t]) for (let a = t + 1; a < e.length; a += 1) { + if (e[a] && (e[t] += e[a]), "'" === e[a]) { + e[a] = null; + break; + } + e[a] = null; + } - var want = {}; + return e.filter(e => e); + }(a), a = function (e) { + for (let t = 0; t < e.length; t += 1) { + let a = e[t]; - if (keep[unit]) { - keep[unit].forEach(function (u) { - want[u] = old[u](); - }); + for (let n = t + 1; n < e.length && e[n] === a; n += 1) e[t] += e[n], e[n] = null; } - if (dstAwareUnits[unit]) { - var diff = old.timezone().current.offset - s.timezone().current.offset; - s.epoch += diff * 3600 * 1000; - } //ensure month/year has ticked-over - + return (e = e.filter(e => e)).map(e => ("''" === e && (e = "'"), e)); + }(a), a.reduce((t, a) => (void 0 !== Pe[a] ? t += Pe[a](e) || "" : (/^'.{1,}'$/.test(a) && (a = a.replace(/'/g, "")), t += a), t), ""); +}; - if (unit === 'month') { - want.month = old.month() + num; //month is the one unit we 'model' directly +const Te = ["year", "season", "quarter", "month", "week", "day", "quarterHour", "hour", "minute"], + Ee = function (e, t) { + let a = e.clone().startOf(t), + n = e.clone().endOf(t).epoch - a.epoch, + r = (e.epoch - a.epoch) / n; + return parseFloat(r.toFixed(2)); +}; - want = _model.months(want, old); - } //support coercing a week, too +var Ne = (e, t) => { + if (t) return t = E.normalize(t), Ee(e, t); + let a = {}; + return Te.forEach(t => { + a[t] = Ee(e, t); + }), a; +}; +var Ce = (e, t) => { + let a = e.progress(); + return "quarterhour" === (t = E.normalize(t)) && (t = "quarterHour"), void 0 !== a[t] ? (a[t] > .5 && (e = e.add(1, t)), e = e.startOf(t)) : !1 === e.silent && console.warn("no known unit '" + t + "'"), e; +}; - if (unit === 'week') { - var sum = old.date() + num * 7; +const Ie = (e, t, a) => { + let n = 0; - if (sum <= 28 && sum > 1) { - want.date = sum; - } - } //support 25-hour day-changes on dst-changes - else if (unit === 'date') { - if (num < 0) { - want = _model.daysBack(want, old, num); - } else { - //specify a naive date number, if it's easy to do... - var _sum = old.date() + num; // ok, model this one too - - - want = _model.days(want, old, _sum); - } //manually punt it if we haven't moved at all.. - - - if (num !== 0 && old.isSame(s, 'day')) { - want.date = old.date() + num; - } - } // ensure a quarter is 3 months over - else if (unit === 'quarter') { - want.month = old.month() + num * 3; - want.year = old.year(); // handle rollover - - if (want.month < 0) { - var years = Math.floor(want.month / 12); - var remainder = want.month + Math.abs(years) * 12; - want.month = remainder; - want.year += years; - } else if (want.month >= 12) { - var _years = Math.floor(want.month / 12); - - want.month = want.month % 12; - want.year += _years; - } - - want.date = old.date(); - } //ensure year has changed (leap-years) - else if (unit === 'year') { - var wantYear = old.year() + num; - var haveYear = s.year(); - - if (haveYear < wantYear) { - s.epoch += milliseconds.day; - } else if (haveYear > wantYear) { - s.epoch += milliseconds.day; - } - } //these are easier - else if (unit === 'decade') { - want.year = s.year() + 10; - } else if (unit === 'century') { - want.year = s.year() + 100; - } //keep current date, unless the month doesn't have it. - - - if (keepDate[unit]) { - var max = monthLengths_1[want.month]; - want.date = old.date(); - - if (want.date > max) { - want.date = max; - } - } + for (e = e.clone(); e.isBefore(t);) e = e.add(1, a), n += 1; - if (Object.keys(want).length > 1) { - walk_1(s, want); - } + return e.isAfter(t, a) && (n -= 1), n; +}; - return s; - }; //subtract is only add *-1 +var Ye = (e, t, a) => e.isBefore(t) ? Ie(e, t, a) : -1 * Ie(t, e, a); +var Ae = function (e, t) { + let a = t.epoch - e.epoch, + n = { + milliseconds: a, + seconds: parseInt(a / 1e3, 10) + }; + n.minutes = parseInt(n.seconds / 60, 10), n.hours = parseInt(n.minutes / 60, 10); + let r = e.clone(); + return n.years = ((e, t) => { + let a = t.year() - e.year(); + return (e = e.year(t.year())).isAfter(t) && (a -= 1), a; + })(r, t), r = e.add(n.years, "year"), n.months = 12 * n.years, r = e.add(n.months, "month"), n.months += Ye(r, t, "month"), n.weeks = 52 * n.years, r = e.add(n.weeks, "week"), n.weeks += Ye(r, t, "week"), n.days = 7 * n.weeks, r = e.add(n.days, "day"), n.days += Ye(r, t, "day"), n; +}; - SpaceTime.prototype.subtract = function (num, unit) { - var s = this.clone(); - return s.add(num * -1, unit); - }; //add aliases +var xe = function (e, t, a) { + t = E.beADate(t, e); + let n = !1; + if (e.isAfter(t)) { + let a = e; + e = t, t = a, n = !0; + } - SpaceTime.prototype.minus = SpaceTime.prototype.subtract; - SpaceTime.prototype.plus = SpaceTime.prototype.add; + let r = Ae(e, t); + return n && (r = function (e) { + return Object.keys(e).forEach(t => { + e[t] *= -1; + }), e; + }(r)), a ? (a = E.normalize(a), !0 !== /s$/.test(a) && (a += "s"), "dates" === a && (a = "days"), r[a]) : r; }; -var add = addMethods$3; //make a string, for easy comparison between dates - -var print = { - millisecond: function millisecond(s) { - return s.epoch; - }, - second: function second(s) { - return [s.year(), s.month(), s.date(), s.hour(), s.minute(), s.second()].join('-'); - }, - minute: function minute(s) { - return [s.year(), s.month(), s.date(), s.hour(), s.minute()].join('-'); - }, - hour: function hour(s) { - return [s.year(), s.month(), s.date(), s.hour()].join('-'); - }, - day: function day(s) { - return [s.year(), s.month(), s.date()].join('-'); +const Le = { + months: { + almost: 10, + over: 4 }, - week: function week(s) { - return [s.year(), s.week()].join('-'); + days: { + almost: 25, + over: 10 }, - month: function month(s) { - return [s.year(), s.month()].join('-'); + hours: { + almost: 20, + over: 8 }, - quarter: function quarter(s) { - return [s.year(), s.quarter()].join('-'); + minutes: { + almost: 50, + over: 20 }, - year: function year(s) { - return s.year(); + seconds: { + almost: 50, + over: 20 } }; -print.date = print.day; - -var addMethods$2 = function addMethods(SpaceTime) { - SpaceTime.prototype.isSame = function (b, unit) { - var tzAware = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; - var a = this; - - if (!unit) { - return null; - } // support swapped params +function Fe(e, t) { + return 1 === e && (t = t.slice(0, -1)), e + " " + t; +} - if (typeof b === 'string' && _typeof(unit) === 'object') { - var tmp = b; - b = unit; - unit = tmp; +var Be = (e, t) => { + const a = function (e, t) { + const a = e.isBefore(t), + n = a ? t : e; + let r = a ? e : t; + r = r.clone(); + const o = { + years: 0, + months: 0, + days: 0, + hours: 0, + minutes: 0, + seconds: 0 + }; + return Object.keys(o).forEach(e => { + if (r.isSame(n, e)) return; + let t = r.diff(n, e); + r = r.add(t, e), o[e] = t; + }), a && Object.keys(o).forEach(e => { + 0 !== o[e] && (o[e] *= -1); + }), o; + }(e, t = E.beADate(t, e)); + + if (!0 === Object.keys(a).every(e => !a[e])) return { + diff: a, + rounded: "now", + qualified: "now", + precise: "now" + }; + let n, + r, + o, + i = []; + return Object.keys(a).forEach((e, t, o) => { + const s = Math.abs(a[e]); + if (0 === s) return; + const u = Fe(s, e); + + if (i.push(u), !n) { + if (n = r = u, t > 4) return; + const i = o[t + 1], + l = Math.abs(a[i]); + l > Le[i].almost ? (n = Fe(s + 1, e), r = "almost " + n) : l > Le[i].over && (r = "over " + u); + } + }), o = i.splice(0, 2).join(", "), !0 === e.isAfter(t) ? (n += " ago", r += " ago", o += " ago") : (n = "in " + n, r = "in " + r, o = "in " + o), { + diff: a, + rounded: n, + qualified: r, + precise: o + }; +}, + Ze = { + north: [["spring", 2, 1], ["summer", 5, 1], ["fall", 8, 1], ["autumn", 8, 1], ["winter", 11, 1]], + south: [["fall", 2, 1], ["autumn", 2, 1], ["winter", 5, 1], ["spring", 8, 1], ["summer", 11, 1]] +}, + He = [null, [0, 1], [3, 1], [6, 1], [9, 1]]; + +const Qe = { + minute: e => (x(e, { + second: 0, + millisecond: 0 + }), e), + quarterhour: e => { + let t = e.minutes(); + return e = t >= 45 ? e.minutes(45) : t >= 30 ? e.minutes(30) : t >= 15 ? e.minutes(15) : e.minutes(0), x(e, { + second: 0, + millisecond: 0 + }), e; + }, + hour: e => (x(e, { + minute: 0, + second: 0, + millisecond: 0 + }), e), + day: e => (x(e, { + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }), e), + week: e => { + let t = e.clone(); + return (e = e.day(e._weekStart)).isAfter(t) && (e = e.subtract(1, "week")), x(e, { + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }), e; + }, + month: e => (x(e, { + date: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }), e), + quarter: e => { + let t = e.quarter(); + return He[t] && x(e, { + month: He[t][0], + date: He[t][1], + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }), e; + }, + season: e => { + let t = e.season(), + a = "north"; + "South" === e.hemisphere() && (a = "south"); + + for (let n = 0; n < Ze[a].length; n++) if (Ze[a][n][0] === t) { + let r = e.year(); + return "winter" === t && e.month() < 3 && (r -= 1), x(e, { + year: r, + month: Ze[a][n][1], + date: Ze[a][n][2], + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }), e; + } + + return e; + }, + year: e => (x(e, { + month: 0, + date: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }), e), + decade: e => { + let t = (e = e.startOf("year")).year(), + a = 10 * parseInt(t / 10, 10); + return e = e.year(a); + }, + century: e => { + let t = (e = e.startOf("year")).year(), + a = 100 * parseInt(t / 100, 10); + return e = e.year(a); + } +}; +Qe.date = Qe.day; +var Ge = g; + +var Ue = $e, + Ve = qe, + We = Ne, + Je = Ce, + Ke = xe, + Re = Be, + Xe = { + startOf: (e, t) => { + let a = e.clone(); + return t = E.normalize(t), Qe[t] ? Qe[t](a) : "summer" === t || "winter" === t ? (a = a.season(t), Qe.season(a)) : a; + }, + endOf: (e, t) => { + let a = e.clone(); + return t = E.normalize(t), Qe[t] ? (a = Qe[t](a), a = a.add(1, t), a = a.subtract(1, "millisecond"), a) : a; + } +}, + et = function (e) { + let t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; + let a = arguments.length > 2 ? arguments[2] : undefined; + if (!t || !a) return []; + + if (t = E.normalize(t), a = e.clone().set(a), e.isAfter(a)) { + let t = e; + e = a, a = t; + } + + let n = e.clone(); + !function (e) { + return !!we.short().find(t => t === e) || !!we.long().find(t => t === e); + }(t) ? n = n.next(t) : (n = n.next(t), t = "week"); + let r = []; + + for (; n.isBefore(a);) r.push(n), n = n.add(1, t); + + return r; +}, + tt = e => { + let a = e.timezones, + n = e.tz; + if (!1 === a.hasOwnProperty(n) && (n = Ge(e.tz, a)), null === n) return !1 === e.silent && console.warn("Warn: could not find given or local timezone - '" + e.tz + "'"), { + current: { + epochShift: 0 } + }; + let r = a[n], + o = { + name: (i = n, i = (i = (i = i[0].toUpperCase() + i.substr(1)).replace(/\/gmt/, "/GMT")).replace(/[\/_]([a-z])/gi, e => e.toUpperCase())), + hasDst: Boolean(r.dst), + default_offset: r.offset, + hemisphere: "s" === r.hem ? "South" : "North", + current: {} + }; + var i, s; - if (typeof b === 'string' || typeof b === 'number') { - b = new SpaceTime(b, this.timezone.name); - } //support 'seconds' aswell as 'second' - - - unit = unit.replace(/s$/, ''); // make them the same timezone for proper comparison + if (o.hasDst) { + let e = (s = r.dst) ? s.split("->") : []; + o.change = { + start: e[0], + back: e[1] + }; + } - if (tzAware === true && a.tz !== b.tz) { - b = b.clone(); - b.tz = a.tz; - } + let u = r.offset, + l = u; + return !0 === o.hasDst && (l = "North" === o.hemisphere ? u - 1 : r.offset + 1), !1 === o.hasDst ? (o.current.offset = u, o.current.isDST = !1) : !0 === t(e.epoch, o.change.start, o.change.back, u, l) ? (o.current.offset = u, o.current.isDST = "North" === o.hemisphere) : (o.current.offset = l, o.current.isDST = "South" === o.hemisphere), o; +}, + at = ye; - if (print[unit]) { - return print[unit](a) === print[unit](b); +const nt = ["century", "decade", "year", "month", "date", "day", "hour", "minute", "second", "millisecond"], + rt = { + set: function (e, t) { + let a = this.clone(); + return a = at(a, e), t && (this.tz = Ge(t)), a; + }, + timezone: function () { + return tt(this); + }, + isDST: function () { + return tt(this).current.isDST; + }, + hasDST: function () { + return tt(this).hasDst; + }, + offset: function () { + return 60 * tt(this).current.offset; + }, + hemisphere: function () { + return tt(this).hemisphere; + }, + format: function (e) { + return Ue(this, e); + }, + unixFmt: function (e) { + return Ve(this, e); + }, + startOf: function (e) { + return Xe.startOf(this, e); + }, + endOf: function (e) { + return Xe.endOf(this, e); + }, + leapYear: function () { + let e = this.year(); + return E.isLeapYear(e); + }, + progress: function (e) { + return We(this, e); + }, + nearest: function (e) { + return Je(this, e); + }, + diff: function (e, t) { + return Ke(this, e, t); + }, + since: function (e) { + return e || (e = this.clone().set()), Re(this, e); + }, + next: function (e) { + return this.add(1, e).startOf(e); + }, + last: function (e) { + return this.subtract(1, e).startOf(e); + }, + isValid: function () { + return !(!this.epoch && 0 !== this.epoch) && !isNaN(this.d.getTime()); + }, + goto: function (e) { + let t = this.clone(); + return t.tz = Ge(e, t.timezones), t; + }, + every: function (e, t) { + if ("object" == typeof e && "string" == typeof t) { + let a = t; + t = e, e = a; } - return null; - }; -}; - -var same = addMethods$2; + return et(this, e, t); + }, + isAwake: function () { + let e = this.hour(); + return !(e < 8 || e > 22); + }, + isAsleep: function () { + return !this.isAwake(); + }, + daysInMonth: function () { + switch (this.month()) { + case 0: + return 31; -var addMethods$1 = function addMethods(SpaceTime) { - var methods = { - isAfter: function isAfter(d) { - d = fns.beADate(d, this); - var epoch = fns.getEpoch(d); + case 1: + return this.leapYear() ? 29 : 28; - if (epoch === null) { - return null; - } + case 2: + return 31; - return this.epoch > epoch; - }, - isBefore: function isBefore(d) { - d = fns.beADate(d, this); - var epoch = fns.getEpoch(d); + case 3: + return 30; - if (epoch === null) { - return null; - } + case 4: + return 31; - return this.epoch < epoch; - }, - isEqual: function isEqual(d) { - d = fns.beADate(d, this); - var epoch = fns.getEpoch(d); + case 5: + return 30; - if (epoch === null) { - return null; - } + case 6: + case 7: + return 31; - return this.epoch === epoch; - }, - isBetween: function isBetween(start, end) { - var isInclusive = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - start = fns.beADate(start, this); - end = fns.beADate(end, this); - var startEpoch = fns.getEpoch(start); - - if (startEpoch === null) { - return null; - } + case 8: + return 30; - var endEpoch = fns.getEpoch(end); + case 9: + return 31; - if (endEpoch === null) { - return null; - } + case 10: + return 30; - if (isInclusive) { - return this.isBetween(start, end) || this.isEqual(start) || this.isEqual(end); - } + case 11: + return 31; - return startEpoch < this.epoch && this.epoch < endEpoch; + default: + throw new Error("Invalid Month state."); } - }; //hook them into proto - - Object.keys(methods).forEach(function (k) { - SpaceTime.prototype[k] = methods[k]; - }); -}; - -var compare = addMethods$1; - -var addMethods = function addMethods(SpaceTime) { - var methods = { - i18n: function i18n(data) { - //change the day names - if (fns.isObject(data.days)) { - days.set(data.days); - } //change the month names - - - if (fns.isObject(data.months)) { - months$1.set(data.months); - } // change the the display style of the month / day names - + }, + log: function () { + return console.log(""), console.log(Ue(this, "nice-short")), this; + }, + logYear: function () { + return console.log(""), console.log(Ue(this, "full-short")), this; + }, + json: function () { + return nt.reduce((e, t) => (e[t] = this[t](), e), {}); + }, + debug: function () { + let e = this.timezone(), + t = this.format("MM") + " " + this.format("date-ordinal") + " " + this.year(); + return t += "\n - " + this.format("time"), console.log("\n\n", t + "\n - " + e.name + " (" + e.current.offset + ")"), this; + }, + from: function (e) { + return (e = this.clone().set(e)).since(this); + }, + fromNow: function () { + return this.clone().set(Date.now()).since(this); + }, + weekStart: function (e) { + if ("number" == typeof e) return this._weekStart = e, this; - if (fns.isBoolean(data.useTitleCase)) { - caseFormat.set(data.useTitleCase); - } - } - }; //hook them into proto + if ("string" == typeof e) { + e = e.toLowerCase().trim(); + let t = we.short().indexOf(e); + -1 === t && (t = we.long().indexOf(e)), -1 === t && (t = 1), this._weekStart = t; + } else console.warn("Spacetime Error: Cannot understand .weekStart() input:", e); - Object.keys(methods).forEach(function (k) { - SpaceTime.prototype[k] = methods[k]; - }); + return this; + } +}; +rt.inDST = rt.isDST, rt.round = rt.nearest, rt.each = rt.every; +var ot = rt; + +const it = E.isLeapYear, + st = e => ("string" == typeof e && (e = parseInt(e, 10)), e), + ut = ["year", "month", "date", "hour", "minute", "second", "millisecond"], + lt = (e, t, a) => { + let n = ut.indexOf(a), + r = ut.slice(n, ut.length); + + for (let a = 0; a < r.length; a++) { + let n = t[r[a]](); + e[r[a]](n); + } + + return e; +}, + ht = function (e, t, a, n) { + return !0 === a && e.isBefore(t) ? e = e.add(1, n) : !1 === a && e.isAfter(t) && (e = e.minus(1, n)), e; +}; + +var ct = { + milliseconds: (e, t) => { + t = st(t); + let a = e.millisecond() - t; + return e.epoch - a; + }, + seconds: (e, t, a) => { + t = st(t); + let n = e.clone(), + r = (e.second() - t) * $.second; + return e.epoch = e.epoch - r, (e = ht(e, n, a, "minute")).epoch; + }, + minutes: (e, t, a) => { + t = st(t); + let n = e.clone(), + r = (e.minute() - t) * $.minute; + return e.epoch -= r, lt(e, n, "second"), (e = ht(e, n, a, "hour")).epoch; + }, + hours: (e, t, a) => { + (t = st(t)) >= 24 ? t = 24 : t < 0 && (t = 0); + let n = e.clone(), + r = e.hour() - t, + o = r * $.hour; + return e.epoch -= o, e.date() !== n.date() && (e = n.clone(), r > 1 && (r -= 1), r < 1 && (r += 1), o = r * $.hour, e.epoch -= o), x(e, { + hour: t + }), lt(e, n, "minute"), (e = ht(e, n, a, "day")).epoch; + }, + time: (e, t, a) => { + let n = t.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/); + + if (!n) { + if (n = t.match(/([0-9]{1,2}) ?(am|pm)/), !n) return e.epoch; + n.splice(2, 0, "0"), n.splice(3, 0, ""); + } + + let r = !1, + o = parseInt(n[1], 10), + i = parseInt(n[2], 10); + i >= 60 && (i = 59), o > 12 && (r = !0), !1 === r && ("am" === n[4] && 12 === o && (o = 0), "pm" === n[4] && o < 12 && (o += 12)), n[3] = n[3] || "", n[3] = n[3].replace(/:/, ""); + let s = parseInt(n[3], 10) || 0, + u = e.clone(); + return e = (e = (e = (e = e.hour(o)).minute(i)).second(s)).millisecond(0), (e = ht(e, u, a, "day")).epoch; + }, + date: (e, t, a) => { + if ((t = st(t)) > 28) { + let a = e.month(), + n = T[a]; + 1 === a && 29 === t && it(e.year()) && (n = 29), t > n && (t = n); + } + + t <= 0 && (t = 1); + let n = e.clone(); + return x(e, { + date: t + }), (e = ht(e, n, a, "month")).epoch; + }, + month: (e, t, a) => { + "string" == typeof t && (t = N.mapping()[t.toLowerCase()]), (t = st(t)) >= 12 && (t = 11), t <= 0 && (t = 0); + let n = e.date(); + n > T[t] && (n = T[t]); + let r = e.clone(); + return x(e, { + month: t, + date: n + }), (e = ht(e, r, a, "year")).epoch; + }, + year: (e, t) => ("string" == typeof t && /^'[0-9]{2}$/.test(t) && (t = t.replace(/'/, "").trim(), t = (t = Number(t)) > 30 ? 1900 + t : 2e3 + t), t = st(t), x(e, { + year: t + }), e.epoch), + week: (e, t, a) => { + let n = e.clone(); + return t = st(t), "december" === (e = (e = (e = e.month(0)).date(1)).day("monday")).monthName() && e.date() >= 28 && (e = e.add(1, "week")), t -= 1, e = e.add(t, "weeks"), (e = ht(e, n, a, "year")).epoch; + }, + dayOfYear: (e, t, a) => { + t = st(t); + let n = e.clone(); + return (t -= 1) <= 0 ? t = 0 : t >= 365 && (t = 364), e = (e = e.startOf("year")).add(t, "day"), lt(e, n, "hour"), (e = ht(e, n, a, "year")).epoch; + } }; -var i18n = addMethods; -var timezones = unpack; //fake timezone-support, for fakers (es5 class) - -var SpaceTime = function SpaceTime(input$1, tz) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; //the holy moment - - this.epoch = null; //the shift for the given timezone +const dt = e => e = (e = (e = e.minute(0)).second(0)).millisecond(1); - this.tz = find(tz, timezones); //whether to output warnings to console +var mt = { + millisecond: function (e) { + if (void 0 !== e) { + let t = this.clone(); + return t.epoch = ct.milliseconds(t, e), t; + } - this.silent = options.silent || true; // favour british interpretation of 02/02/2018, etc + return this.d.getMilliseconds(); + }, + second: function (e, t) { + if (void 0 !== e) { + let a = this.clone(); + return a.epoch = ct.seconds(a, e, t), a; + } - this.british = options.dmy || options.british; //does the week start on sunday, or monday: + return this.d.getSeconds(); + }, + minute: function (e, t) { + if (void 0 !== e) { + let a = this.clone(); + return a.epoch = ct.minutes(a, e, t), a; + } - this._weekStart = 1; //default to monday + return this.d.getMinutes(); + }, + hour: function (e, t) { + let a = this.d; - if (options.weekStart !== undefined) { - this._weekStart = options.weekStart; - } // the reference today date object, (for testing) + if (void 0 !== e) { + let a = this.clone(); + return a.epoch = ct.hours(a, e, t), a; + } + return a.getHours(); + }, + hourFloat: function (e, t) { + if (void 0 !== e) { + let a = this.clone(), + n = e % 1; + n *= 60; + let r = parseInt(e, 10); + return a.epoch = ct.hours(a, r, t), a.epoch = ct.minutes(a, n, t), a; + } - this._today = {}; + let a = this.d, + n = a.getHours(), + r = a.getMinutes(); + return r /= 60, n + r; + }, + hour12: function (e, t) { + let a = this.d; - if (options.today !== undefined) { - this._today = options.today; - } //add getter/setters + if (void 0 !== e) { + let a = this.clone(), + n = (e = "" + e).match(/^([0-9]+)(am|pm)$/); + if (n) { + let e = parseInt(n[1], 10); + "pm" === n[2] && (e += 12), a.epoch = ct.hours(a, e, t); + } - Object.defineProperty(this, 'd', { - //return a js date object - get: function get() { - var offset = quick(this); //every computer is somewhere- get this computer's built-in offset + return a; + } - var bias = new Date(this.epoch).getTimezoneOffset() || 0; //movement + let n = a.getHours(); + return n > 12 && (n -= 12), 0 === n && (n = 12), n; + }, + time: function (e, t) { + if (void 0 !== e) { + let a = this.clone(); + return e = e.toLowerCase().trim(), a.epoch = ct.time(a, e, t), a; + } - var shift = bias + offset * 60; //in minutes + return "".concat(this.h12(), ":").concat(E.zeroPad(this.minute())).concat(this.ampm()); + }, + ampm: function (e, t) { + let a = "am", + n = this.hour(); + if (n >= 12 && (a = "pm"), "string" != typeof e) return a; + let r = this.clone(); + return e = e.toLowerCase().trim(), n >= 12 && "am" === e ? (n -= 12, r.hour(n, t)) : n < 12 && "pm" === e ? (n += 12, r.hour(n, t)) : r; + }, + dayTime: function (e, t) { + if (void 0 !== e) { + const a = { + morning: "7:00am", + breakfast: "7:00am", + noon: "12:00am", + lunch: "12:00pm", + afternoon: "2:00pm", + evening: "6:00pm", + dinner: "6:00pm", + night: "11:00pm", + midnight: "23:59pm" + }; + let n = this.clone(); + return e = (e = e || "").toLowerCase(), !0 === a.hasOwnProperty(e) && (n = n.time(a[e], t)), n; + } - shift = shift * 60 * 1000; //in ms - //remove this computer's offset + let a = this.hour(); + return a < 6 ? "night" : a < 12 ? "morning" : a < 17 ? "afternoon" : a < 22 ? "evening" : "night"; + }, + iso: function (e) { + return void 0 !== e ? this.set(e) : this.format("iso"); + } +}, + pt = { + date: function (e, t) { + if (void 0 !== e) { + let a = this.clone(); + return (e = parseInt(e, 10)) && (a.epoch = ct.date(a, e, t)), a; + } - var epoch = this.epoch + shift; - var d = new Date(epoch); - return d; + return this.d.getDate(); + }, + day: function (e, t) { + if (void 0 === e) return this.d.getDay(); + let a = this.clone(), + n = e; + "string" == typeof e && (e = e.toLowerCase(), we.aliases.hasOwnProperty(e) ? n = we.aliases[e] : (n = we.short().indexOf(e), -1 === n && (n = we.long().indexOf(e)))); + let r = this.d.getDay() - n; + !0 === t && r > 0 && (r -= 7), !1 === t && r < 0 && (r += 7); + let o = this.subtract(r, "days"); + return x(o, { + hour: a.hour(), + minute: a.minute(), + second: a.second() + }), o; + }, + dayName: function (e, t) { + if (void 0 === e) return we.long()[this.day()]; + let a = this.clone(); + return a = a.day(e, t), a; + } +}, + ft = { + dayOfYear: function (e, t) { + if (void 0 !== e) { + let a = this.clone(); + return a.epoch = ct.dayOfYear(a, e, t), a; + } + + let a, + n = 0, + r = this.d.getMonth(); + + for (let e = 1; e <= r; e++) a = new Date(), a.setDate(1), a.setFullYear(this.d.getFullYear()), a.setHours(1), a.setMinutes(1), a.setMonth(e), a.setHours(-2), n += a.getDate(); + + return n + this.d.getDate(); + }, + week: function (e, t) { + if (void 0 !== e) { + let a = this.clone(); + return a.epoch = ct.week(this, e, t), a = dt(a), a; + } + + let a = this.clone(); + a = a.month(0), a = a.date(1), a = dt(a), a = a.day("monday"), "december" === a.monthName() && a.date() >= 28 && (a = a.add(1, "week")); + let n = 1; + 1 === a.date() && (n = 0), a = a.minus(1, "second"); + const r = this.epoch; + if (a.epoch > r) return 1; + let o = 0, + i = 4 * this.month(); + + for (a.epoch += $.week * i, o += i; o <= 52; o++) { + if (a.epoch > r) return o + n; + a = a.add(1, "week"); } - }); //add this data on the object, to allow adding new timezones - Object.defineProperty(this, 'timezones', { - get: function get() { - return timezones; - }, - set: function set(obj) { - timezones = obj; - return obj; + return 52; + }, + month: function (e, t) { + if (void 0 !== e) { + let a = this.clone(); + return a.epoch = ct.month(a, e, t), a; } - }); //parse the various formats - var tmp = input(this, input$1, tz); - this.epoch = tmp.epoch; -}; //(add instance methods to prototype) + return this.d.getMonth(); + }, + monthName: function (e, t) { + if (void 0 !== e) { + let a = this.clone(); + return a = a.month(e, t), a; + } + return N.long()[this.month()]; + }, + quarter: function (e, t) { + if (void 0 !== e && ("string" == typeof e && (e = e.replace(/^q/i, ""), e = parseInt(e, 10)), He[e])) { + let a = this.clone(), + n = He[e][0]; + return a = a.month(n, t), a = a.date(1, t), a = a.startOf("day"), a; + } -Object.keys(methods_1).forEach(function (k) { - SpaceTime.prototype[k] = methods_1[k]; -}); // ¯\_(ツ)_/¯ + let a = this.d.getMonth(); -SpaceTime.prototype.clone = function () { - return new SpaceTime(this.epoch, this.tz, { - silent: this.silent, - weekStart: this._weekStart, - today: this._today - }); -}; //return native date object at the same epoch + for (let e = 1; e < He.length; e++) if (a < He[e][0]) return e - 1; + return 4; + }, + season: function (e, t) { + let a = "north"; -SpaceTime.prototype.toLocalDate = function () { - return new Date(this.epoch); -}; //append more methods + if ("South" === this.hemisphere() && (a = "south"), void 0 !== e) { + let n = this.clone(); + for (let r = 0; r < Ze[a].length; r++) e === Ze[a][r][0] && (n = n.month(Ze[a][r][1], t), n = n.date(1), n = n.startOf("day")); -query(SpaceTime); -add(SpaceTime); -same(SpaceTime); -compare(SpaceTime); -i18n(SpaceTime); -var spacetime$1 = SpaceTime; + return n; + } -var whereIts = function whereIts(a, b) { - var start = new spacetime$1(null); - var end = new spacetime$1(null); - start = start.time(a); //if b is undefined, use as 'within one hour' + let n = this.d.getMonth(); - if (b) { - end = end.time(b); - } else { - end = start.add(59, 'minutes'); - } + for (let e = 0; e < Ze[a].length - 1; e++) if (n >= Ze[a][e][1] && n < Ze[a][e + 1][1]) return Ze[a][e][0]; - var startHour = start.hour(); - var endHour = end.hour(); - var tzs = Object.keys(start.timezones).filter(function (tz) { - if (tz.indexOf('/') === -1) { - return false; + return "winter"; + }, + year: function (e) { + if (void 0 !== e) { + let t = this.clone(); + return t.epoch = ct.year(t, e), t; } - var m = new spacetime$1(null, tz); - var hour = m.hour(); //do 'calendar-compare' not real-time-compare + return this.d.getFullYear(); + }, + era: function (e) { + if (void 0 !== e) { + let t = this.clone(); + e = e.toLowerCase(); + let a = t.d.getFullYear(); + return "bc" === e && a > 0 && (t.epoch = ct.year(t, -1 * a)), "ad" === e && a < 0 && (t.epoch = ct.year(t, -1 * a)), t; + } - if (hour >= startHour && hour <= endHour) { - //test minutes too, if applicable - if (hour === startHour && m.minute() < start.minute()) { - return false; - } + return this.d.getFullYear() < 0 ? "BC" : "AD"; + }, + decade: function (e) { + if (void 0 !== e) { + if (!(e = (e = (e = String(e)).replace(/([0-9])'?s$/, "$1")).replace(/([0-9])(th|rd|st|nd)/, "$1"))) return console.warn("Spacetime: Invalid decade input"), this; + 2 === e.length && /[0-9][0-9]/.test(e) && (e = "19" + e); + let t = Number(e); + return isNaN(t) ? this : (t = 10 * Math.floor(t / 10), this.year(t)); + } - if (hour === endHour && m.minute() > end.minute()) { - return false; - } + return this.startOf("decade").year(); + }, + century: function (e) { + if (void 0 !== e) { + "string" == typeof e && (e = (e = (e = e.replace(/([0-9])(th|rd|st|nd)/, "$1")).replace(/([0-9]+) ?(b\.?c\.?|a\.?d\.?)/i, (e, t, a) => (a.match(/b\.?c\.?/i) && (t = "-" + t), t))).replace(/c$/, "")); + let t = Number(e); + return isNaN(e) ? (console.warn("Spacetime: Invalid century input"), this) : (0 === t && (t = 1), t = t >= 0 ? 100 * (t - 1) : 100 * (t + 1), this.year(t)); + } - return true; + let t = this.startOf("century").year(); + return t = Math.floor(t / 100), t < 0 ? t - 1 : t + 1; + }, + millenium: function (e) { + if (void 0 !== e) { + if ("string" == typeof e && (e = e.replace(/([0-9])(th|rd|st|nd)/, "$1"), e = Number(e), isNaN(e))) return console.warn("Spacetime: Invalid millenium input"), this; + e > 0 && (e -= 1); + let t = 1e3 * e; + return 0 === t && (t = 1), this.year(t); } - return false; - }); - return tzs; + let t = Math.floor(this.year() / 1e3); + return t >= 0 && (t += 1), t; + } }; +const yt = Object.assign({}, mt, pt, ft); +yt.milliseconds = yt.millisecond, yt.seconds = yt.second, yt.minutes = yt.minute, yt.hours = yt.hour, yt.hour24 = yt.hour, yt.h12 = yt.hour12, yt.h24 = yt.hour24, yt.days = yt.day; -var whereIts_1 = whereIts; -var _version = '6.14.0'; - -var main = function main(input, tz, options) { - return new spacetime$1(input, tz, options); -}; // set all properties of a given 'today' object - - -var setToday = function setToday(s) { - var today = s._today || {}; - Object.keys(today).forEach(function (k) { - s = s[k](today[k]); +var gt = e => { + Object.keys(yt).forEach(t => { + e.prototype[t] = yt[t]; }); - return s; -}; //some helper functions on the main method - - -main.now = function (tz, options) { - var s = new spacetime$1(new Date().getTime(), tz, options); - s = setToday(s); - return s; -}; - -main.today = function (tz, options) { - var s = new spacetime$1(new Date().getTime(), tz, options); - s = setToday(s); - return s.startOf('day'); -}; - -main.tomorrow = function (tz, options) { - var s = new spacetime$1(new Date().getTime(), tz, options); - s = setToday(s); - return s.add(1, 'day').startOf('day'); }; -main.yesterday = function (tz, options) { - var s = new spacetime$1(new Date().getTime(), tz, options); - s = setToday(s); - return s.subtract(1, 'day').startOf('day'); -}; +const bt = E.isLeapYear, + kt = function (e, t) { + return 1 === e && bt(t) ? 29 : T[e]; +}; + +var wt = { + months: (e, t) => { + if (e.month > 0) { + let a = parseInt(e.month / 12, 10); + e.year = t.year() + a, e.month = e.month % 12; + } else if (e.month < 0) { + let a = Math.floor(Math.abs(e.month) / 13, 10); + a = Math.abs(a) + 1, e.year = t.year() - a, e.month = e.month % 12, e.month = e.month + 12, 12 === e.month && (e.month = 0); + } + + return e; + }, + days: (e, t, a) => { + let n = t.year(), + r = t.month(), + o = kt(r, n); + + for (; a > o;) a -= o, r += 1, r >= 12 && (r -= 12, n += 1), o = kt(r, n); + + return e.month = r, e.date = a, e; + }, + daysBack: (e, t, a) => { + e.year = t.year(), e.month = t.month(); + let n = t.date(); + + for (e.date = n - Math.abs(a); e.date < 1;) { + e.month -= 1, e.month < 0 && (e.month = 11, e.year -= 1); + let t = kt(e.month, e.year); + e.date += t; + } + + return e; + } +}; +const vt = ["millisecond", "second", "minute", "hour", "date", "month"]; +let zt = { + second: vt.slice(0, 1), + minute: vt.slice(0, 2), + quarterhour: vt.slice(0, 2), + hour: vt.slice(0, 3), + date: vt.slice(0, 4), + month: vt.slice(0, 4), + quarter: vt.slice(0, 4), + season: vt.slice(0, 4), + year: vt, + decade: vt, + century: vt +}; +zt.week = zt.hour, zt.season = zt.date, zt.quarter = zt.date; +const _t = { + year: !0, + quarter: !0, + season: !0, + month: !0, + week: !0, + date: !0 +}, + jt = { + month: !0, + quarter: !0, + season: !0, + year: !0 +}; + +var Ot = e => { + e.prototype.add = function (e, t) { + let a = this.clone(); + if (!t || 0 === e) return a; + let n = this.clone(); + if ("millisecond" === (t = E.normalize(t))) return a.epoch += e, a; + "fortnight" === t && (e *= 2, t = "week"), $[t] ? a.epoch += $[t] * e : "week" === t || "weekend" === t ? a.epoch += $.day * (7 * e) : "quarter" === t || "season" === t ? a.epoch += $.month * (3 * e) : "quarterhour" === t && (a.epoch += 15 * $.minute * e); + let r = {}; + + if (zt[t] && zt[t].forEach(e => { + r[e] = n[e](); + }), _t[t]) { + const e = n.timezone().current.offset - a.timezone().current.offset; + a.epoch += 3600 * e * 1e3; + } + + if ("month" === t && (r.month = n.month() + e, r = wt.months(r, n)), "week" === t) { + let t = n.date() + 7 * e; + t <= 28 && t > 1 && (r.date = t); + } + + if ("weekend" === t && "saturday" !== a.dayName()) a = a.day("saturday", !0);else if ("date" === t) { + if (e < 0) r = wt.daysBack(r, n, e);else { + let t = n.date() + e; + r = wt.days(r, n, t); + } + 0 !== e && n.isSame(a, "day") && (r.date = n.date() + e); + } else if ("quarter" === t) { + if (r.month = n.month() + 3 * e, r.year = n.year(), r.month < 0) { + let e = Math.floor(r.month / 12), + t = r.month + 12 * Math.abs(e); + r.month = t, r.year += e; + } else if (r.month >= 12) { + let e = Math.floor(r.month / 12); + r.month = r.month % 12, r.year += e; + } -main.extend = function (obj) { - Object.keys(obj).forEach(function (k) { - spacetime$1.prototype[k] = obj[k]; + r.date = n.date(); + } else if ("year" === t) { + let t = n.year() + e, + r = a.year(); + + if (r < t) { + let t = Math.floor(e / 4) || 1; + a.epoch += Math.abs($.day * t); + } else if (r > t) { + let t = Math.floor(e / 4) || 1; + a.epoch += $.day * t; + } + } else "decade" === t ? r.year = a.year() + 10 : "century" === t && (r.year = a.year() + 100); + + if (jt[t]) { + let e = T[r.month]; + r.date = n.date(), r.date > e && (r.date = e); + } + + return Object.keys(r).length > 1 && x(a, r), a; + }, e.prototype.subtract = function (e, t) { + return this.clone().add(-1 * e, t); + }, e.prototype.minus = e.prototype.subtract, e.prototype.plus = e.prototype.add; +}; + +const $t = { + millisecond: e => e.epoch, + second: e => [e.year(), e.month(), e.date(), e.hour(), e.minute(), e.second()].join("-"), + minute: e => [e.year(), e.month(), e.date(), e.hour(), e.minute()].join("-"), + hour: e => [e.year(), e.month(), e.date(), e.hour()].join("-"), + day: e => [e.year(), e.month(), e.date()].join("-"), + week: e => [e.year(), e.week()].join("-"), + month: e => [e.year(), e.month()].join("-"), + quarter: e => [e.year(), e.quarter()].join("-"), + year: e => e.year() +}; +$t.date = $t.day; + +var Dt = e => { + const t = { + isAfter: function (e) { + e = E.beADate(e, this); + let t = E.getEpoch(e); + return null === t ? null : this.epoch > t; + }, + isBefore: function (e) { + e = E.beADate(e, this); + let t = E.getEpoch(e); + return null === t ? null : this.epoch < t; + }, + isEqual: function (e) { + e = E.beADate(e, this); + let t = E.getEpoch(e); + return null === t ? null : this.epoch === t; + }, + isBetween: function (e, t) { + let a = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : !1; + e = E.beADate(e, this), t = E.beADate(t, this); + let n = E.getEpoch(e); + if (null === n) return null; + let r = E.getEpoch(t); + return null === r ? null : a ? this.isBetween(e, t) || this.isEqual(e) || this.isEqual(t) : n < this.epoch && this.epoch < r; + } + }; + Object.keys(t).forEach(a => { + e.prototype[a] = t[a]; }); - return this; }; -main.timezones = function () { - var s = new spacetime$1(); - return s.timezones; +var Mt = e => { + const t = { + i18n: e => { + E.isObject(e.days) && we.set(e.days), E.isObject(e.months) && N.set(e.months), E.isBoolean(e.useTitleCase) && ve.set(e.useTitleCase); + } + }; + Object.keys(t).forEach(a => { + e.prototype[a] = t[a]; + }); +}, + Pt = a, + St = ot, + qt = gt, + Tt = Ot, + Et = e => { + e.prototype.isSame = function (t, a) { + let n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : !0; + let r = this; + if (!a) return null; + + if ("string" == typeof t && "object" == typeof a) { + let e = t; + t = a, a = e; + } + + return "string" != typeof t && "number" != typeof t || (t = new e(t, this.timezone.name)), a = a.replace(/s$/, ""), !0 === n && r.tz !== t.tz && ((t = t.clone()).tz = r.tz), $t[a] ? $t[a](r) === $t[a](t) : null; + }; +}, + Nt = Dt, + Ct = Mt; + +let It = d$1; + +const Yt = function (e, t) { + let a = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + this.epoch = null, this.tz = Ge(t, It), this.silent = a.silent || !0, this.british = a.dmy || a.british, this._weekStart = 1, void 0 !== a.weekStart && (this._weekStart = a.weekStart), this._today = {}, void 0 !== a.today && (this._today = a.today), Object.defineProperty(this, "d", { + get: function () { + let e = Pt(this), + t = (new Date(this.epoch).getTimezoneOffset() || 0) + 60 * e; + t = 60 * t * 1e3; + let a = this.epoch + t; + return new Date(a); + } + }), Object.defineProperty(this, "timezones", { + get: () => It, + set: e => (It = e, e) + }); + let n = at(this, e); + this.epoch = n.epoch; }; -main.max = function (tz, options) { - var s = new spacetime$1(null, tz, options); - s.epoch = 8640000000000000; - return s; +Object.keys(St).forEach(e => { + Yt.prototype[e] = St[e]; +}), Yt.prototype.clone = function () { + return new Yt(this.epoch, this.tz, { + silent: this.silent, + weekStart: this._weekStart, + today: this._today, + parsers: this.parsers + }); +}, Yt.prototype.toLocalDate = function () { + return this.toNativeDate(); +}, Yt.prototype.toNativeDate = function () { + return new Date(this.epoch); +}, qt(Yt), Tt(Yt), Et(Yt), Nt(Yt), Ct(Yt); +var At = Yt; + +var xt = (e, t) => { + let a = new At(null), + n = new At(null); + a = a.time(e), n = t ? n.time(t) : a.add(59, "minutes"); + let r = a.hour(), + o = n.hour(); + return Object.keys(a.timezones).filter(e => { + if (-1 === e.indexOf("/")) return !1; + let t = new At(null, e), + i = t.hour(); + return i >= r && i <= o && !(i === r && t.minute() < a.minute()) && !(i === o && t.minute() > n.minute()); + }); }; -main.min = function (tz, options) { - var s = new spacetime$1(null, tz, options); - s.epoch = -8640000000000000; - return s; -}; //find tz by time - - -main.whereIts = whereIts_1; -main.version = _version; //aliases: - -main.plugin = main.extend; -var src$1 = main; +const Lt = (e, t, a) => new At(e, t, a), + Ft = function (e) { + let t = e._today || {}; + return Object.keys(t).forEach(a => { + e = e[a](t[a]); + }), e; +}; + +Lt.now = (e, t) => { + let a = new At(new Date().getTime(), e, t); + return a = Ft(a), a; +}, Lt.today = (e, t) => { + let a = new At(new Date().getTime(), e, t); + return a = Ft(a), a.startOf("day"); +}, Lt.tomorrow = (e, t) => { + let a = new At(new Date().getTime(), e, t); + return a = Ft(a), a.add(1, "day").startOf("day"); +}, Lt.yesterday = (e, t) => { + let a = new At(new Date().getTime(), e, t); + return a = Ft(a), a.subtract(1, "day").startOf("day"); +}, Lt.extend = function () { + let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return Object.keys(e).forEach(t => { + At.prototype[t] = e[t]; + }), this; +}, Lt.timezones = function () { + return new At().timezones; +}, Lt.max = function (e, t) { + let a = new At(null, e, t); + return a.epoch = 864e13, a; +}, Lt.min = function (e, t) { + let a = new At(null, e, t); + return a.epoch = -864e13, a; +}, Lt.whereIts = xt, Lt.version = "6.16.3", Lt.plugin = Lt.extend; +var Bt = Lt; var spacetime$2 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': src$1 + __proto__: null, + 'default': Bt }); -function getCjsExportFromNamespace (n) { - return n && n['default'] || n; -} +var require$$0 = /*@__PURE__*/getDefaultExportFromNamespaceIfNotNamed(spacetime$2); -var spacetime = getCjsExportFromNamespace(spacetime$2); +const spacetime$1 = require$$0; const parseSentence = function (doc) { let s = doc.sentence(); @@ -4624,7 +2276,7 @@ const parseSentence = function (doc) { if (split[0]) { let str = split[0].replace(/^(born|ne) (c\.)?/, ''); - let d = spacetime(str); + let d = spacetime$1(str); if (d.isValid()) { return { @@ -4638,7 +2290,7 @@ const parseSentence = function (doc) { var getSentence = parseSentence; -const byCategory$2 = function (doc) { +const byCategory$4 = function (doc) { let cats = doc.categories(); for (let i = 0; i < cats.length; i += 1) { @@ -4656,9 +2308,11 @@ const byCategory$2 = function (doc) { return null; }; -var byCategory_1$1 = byCategory$2; +var byCategory_1$1 = byCategory$4; + +const spacetime = require$$0; -const parseDate = function (str) { +const parseDate$2 = function (str) { if (!str) { return null; } // remove parentheses @@ -4682,24 +2336,29 @@ const parseDate = function (str) { }; }; -var parseDate_1 = parseDate; +var parseDate_1 = parseDate$2; -const birthDate = function (doc) { - let res = getInfobox(doc, 'birth_date'); +const byInfobox$4 = getInfobox; +const bySentence$1 = getSentence; +const byCategory$3 = byCategory_1$1; +const parseDate$1 = parseDate_1; + +const birthDate$1 = function (doc) { + let res = byInfobox$4(doc, 'birth_date'); if (res) { - return parseDate_1(res); + return parseDate$1(res); } // try parentheses in first sentence - res = getSentence(doc); + res = bySentence$1(doc); if (res && res.birth) { - return parseDate_1(res.birth); + return parseDate$1(res.birth); } // try to get year from 'Category:1955 births' - let year = byCategory_1$1(doc); + let year = byCategory$3(doc); if (year) { return { @@ -4710,10 +2369,12 @@ const birthDate = function (doc) { return null; }; -var birthDate_1 = birthDate; +var birthDate_1 = birthDate$1; + +const byInfobox$3 = getInfobox; -const birthPlace = function (doc) { - let res = getInfobox(doc, 'birth_place'); +const birthPlace$1 = function (doc) { + let res = byInfobox$3(doc, 'birth_place'); if (res) { return res; @@ -4722,7 +2383,7 @@ const birthPlace = function (doc) { return null; }; -var birthPlace_1 = birthPlace; +var birthPlace_1 = birthPlace$1; const aliveCats = { 'Living people': true, @@ -4767,7 +2428,7 @@ const didDie = { 'Deaths by drowning‎': true }; -const byCat = function (doc) { +const byCat$1 = function (doc) { let cats = doc.categories(); //confirmed alive categories if (cats.find(c => aliveCats.hasOwnProperty(c))) { @@ -4782,12 +2443,12 @@ const byCat = function (doc) { return null; }; -var byCategory$1 = byCat; +var byCategory$2 = byCat$1; -// blp = biography of living persons // {{WikiProject Biography}} (with living=yes parameter) // {{WikiProject banner shell}} (with blp=y parameter) -const isAlive$1 = { + +const isAlive$2 = { blp: true, 'blp unsourced': true, 'blp unsourced section': true, @@ -4815,14 +2476,14 @@ const isDead = { memorial: true }; -const byTemplate = function (doc) { +const byTemplate$1 = function (doc) { let templates = doc.templates().map(tmpl => tmpl.json()); for (let i = 0; i < templates.length; i++) { let title = templates[i].template || ''; title = title.toLowerCase().trim(); - if (isAlive$1.hasOwnProperty(title)) { + if (isAlive$2.hasOwnProperty(title)) { return true; } @@ -4849,12 +2510,15 @@ const byTemplate = function (doc) { return null; }; -var byTemplate_1 = byTemplate; +var byTemplate_1 = byTemplate$1; + +const byCat = byCategory$2; +const byTemplate = byTemplate_1; // maximum age of a person let d = new Date(); const minYear = d.getFullYear() - 105; -const isAlive = function (doc) { +const isAlive$1 = function (doc) { // if we have a death date let death = doc.deathDate(); @@ -4870,14 +2534,14 @@ const isAlive = function (doc) { } // does it have a good category? - let fromCat = byCategory$1(doc); + let fromCat = byCat(doc); if (fromCat === true || fromCat === false) { return fromCat; } // does it have a good template? - let fromTemplate = byTemplate_1(doc); + let fromTemplate = byTemplate(doc); if (fromTemplate === true || fromTemplate === false) { return fromTemplate; @@ -4893,9 +2557,9 @@ const isAlive = function (doc) { return null; }; -var isAlive_1 = isAlive; +var isAlive_1 = isAlive$1; -const byCategory = function (doc) { +const byCategory$1 = function (doc) { let cats = doc.categories(); for (let i = 0; i < cats.length; i += 1) { @@ -4913,24 +2577,29 @@ const byCategory = function (doc) { return null; }; -var byCategory_1 = byCategory; +var byCategory_1 = byCategory$1; -const deathDate = function (doc) { - let res = getInfobox(doc, 'death_date'); +const byInfobox$2 = getInfobox; +const bySentence = getSentence; +const byCategory = byCategory_1; +const parseDate = parseDate_1; + +const deathDate$1 = function (doc) { + let res = byInfobox$2(doc, 'death_date'); if (res) { - return parseDate_1(res); + return parseDate(res); } // try parentheses in first sentence - res = getSentence(doc); + res = bySentence(doc); if (res && res.death) { - return parseDate_1(res.death); + return parseDate(res.death); } // try to get year from 'Category:1955 deaths' - let year = byCategory_1(doc); + let year = byCategory(doc); if (year) { return { @@ -4941,10 +2610,12 @@ const deathDate = function (doc) { return null; }; -var deathDate_1 = deathDate; +var deathDate_1 = deathDate$1; + +const byInfobox$1 = getInfobox; -const deathPlace = function (doc) { - let res = getInfobox(doc, 'death_place'); +const deathPlace$1 = function (doc) { + let res = byInfobox$1(doc, 'death_place'); if (res) { return res; @@ -4953,10 +2624,12 @@ const deathPlace = function (doc) { return null; }; -var deathPlace_1 = deathPlace; +var deathPlace_1 = deathPlace$1; + +const byInfobox = getInfobox; const getNationality = function (doc) { - let res = getInfobox(doc, 'nationality'); + let res = byInfobox(doc, 'nationality'); if (res) { return res; @@ -4965,27 +2638,34 @@ const getNationality = function (doc) { return null; }; -var nationality = getNationality; +var nationality$1 = getNationality; + +const birthDate = birthDate_1; +const birthPlace = birthPlace_1; +const isAlive = isAlive_1; +const deathDate = deathDate_1; +const deathPlace = deathPlace_1; +const nationality = nationality$1; const addMethod = function (models) { models.Doc.prototype.birthDate = function () { - return birthDate_1(this); + return birthDate(this); }; models.Doc.prototype.birthPlace = function () { - return birthPlace_1(this); + return birthPlace(this); }; models.Doc.prototype.isAlive = function () { - return isAlive_1(this); + return isAlive(this); }; models.Doc.prototype.deathDate = function () { - return deathDate_1(this); + return deathDate(this); }; models.Doc.prototype.deathPlace = function () { - return deathPlace_1(this); + return deathPlace(this); }; models.Doc.prototype.nationality = function () { @@ -4995,4 +2675,4 @@ const addMethod = function (models) { var src = addMethod; -export default src; +export { src as default }; diff --git a/plugins/person/package-lock.json b/plugins/person/package-lock.json index 289aea0a..f15ef54d 100644 --- a/plugins/person/package-lock.json +++ b/plugins/person/package-lock.json @@ -9,57 +9,61 @@ "version": "0.2.0", "license": "MIT", "dependencies": { - "compromise": "13.10.5", - "spacetime": "6.14.0" + "compromise": "13.11.4", + "spacetime": "6.16.3" }, "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "@rollup/plugin-node-resolve": "11.2.1", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "13.0.6", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^5.1.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", - "dev": true + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -76,83 +80,102 @@ } }, "node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -169,193 +192,249 @@ } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "dependencies": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -364,189 +443,278 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=4" @@ -579,6 +747,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -687,452 +870,570 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -1142,55 +1443,59 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1198,59 +1503,124 @@ "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } } }, - "node_modules/@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" } }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "node_modules/@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", @@ -1264,7 +1634,7 @@ "node": ">= 10.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "rollup": "^2.42.0" } }, "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { @@ -1276,16 +1646,6 @@ "@types/node": "*" } }, - "node_modules/@rollup/plugin-node-resolve/node_modules/resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "dependencies": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } - }, "node_modules/@rollup/pluginutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", @@ -1312,15 +1672,6 @@ "integrity": "sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g==", "dev": true }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1364,13 +1715,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" }, "peerDependencies": { @@ -1378,25 +1729,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1419,16 +1770,16 @@ } }, "node_modules/browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" @@ -1447,12 +1798,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "node_modules/buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, "node_modules/builtin-modules": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", @@ -1476,10 +1821,14 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", - "dev": true + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } }, "node_modules/chalk": { "version": "2.4.2", @@ -1511,9 +1860,9 @@ "dev": true }, "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "node_modules/commander": { @@ -1522,15 +1871,21 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "node_modules/compromise": { - "version": "13.10.5", - "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.10.5.tgz", - "integrity": "sha512-je5+lMKnQWmWfYZiO9IXtxWHr3KA4dQiyzVHsZskfNgGVHlSFK2sWreosoBYeRmP9/JrHiggSdDWE1lqPejvmA==", + "version": "13.11.4", + "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.11.4.tgz", + "integrity": "sha512-nBITcNdqIHSVDDluaG6guyFFCSNXN+Hu87fU8VlhkE5Z0PwTZN1nro2O7a8JcUH88nB5EOzrxd9zKfXLSNFqcg==", "dependencies": { "efrt-unpack": "2.2.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=8.0.0" } }, "node_modules/concat-map": { @@ -1549,12 +1904,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "dependencies": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "funding": { @@ -1572,9 +1927,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/debug": { @@ -1666,33 +2021,37 @@ "integrity": "sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==" }, "node_modules/electron-to-chromium": { - "version": "1.3.704", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", - "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -1840,10 +2199,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -1855,6 +2239,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { @@ -1887,6 +2274,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1908,6 +2307,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1924,6 +2338,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -1964,9 +2392,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true, "engines": { "node": ">= 0.4" @@ -2039,22 +2467,22 @@ } }, "node_modules/is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "dependencies": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -2072,11 +2500,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2127,6 +2567,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -2210,12 +2662,6 @@ "node": ">=6" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -2262,15 +2708,15 @@ "dev": true }, "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2338,9 +2784,15 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "node_modules/picomatch": { @@ -2353,9 +2805,9 @@ } }, "node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "node_modules/randombytes": { @@ -2368,23 +2820,23 @@ } }, "node_modules/re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "node_modules/readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -2395,21 +2847,21 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "dependencies": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" }, "engines": { "node": ">=4" } }, "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "node_modules/regenerator-transform": { @@ -2438,17 +2890,17 @@ } }, "node_modules/regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" @@ -2461,9 +2913,9 @@ "dev": true }, "node_modules/regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -2482,12 +2934,16 @@ } }, "node_modules/resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "dependencies": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resumer": { @@ -2500,9 +2956,9 @@ } }, "node_modules/rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2511,66 +2967,15 @@ "node": ">=10.0.0" }, "optionalDependencies": { - "fsevents": "~2.3.1" + "fsevents": "~2.3.2" } }, - "node_modules/rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "node_modules/rollup-plugin-commonjs/node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "node_modules/rollup-plugin-filesize-check": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/rollup-plugin-filesize-check/-/rollup-plugin-filesize-check-0.0.1.tgz", "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "node_modules/rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "dependencies": { - "rollup-pluginutils": "^2.5.0" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "dependencies": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -2583,21 +2988,6 @@ "terser": "^5.0.0" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, - "node_modules/rollup-pluginutils/node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2671,14 +3061,14 @@ "dev": true }, "node_modules/spacetime": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.14.0.tgz", - "integrity": "sha512-pz/nMIRGNSJeFfDFvhPjMHXhFU1NcrYnpydMuSS2Zsk0NEoHJc2rRKXugkmlqUv/l/fPxWVJVnj8isVS0//vbQ==" + "version": "6.16.3", + "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.16.3.tgz", + "integrity": "sha512-JQEfj3VHT1gU1IMV5NvhgAP8P+2mDFd84ZCiHN//dp6hRKmuW0IizHissy62lO0nilfFjVhnoSaMC7te+Y5f4A==" }, "node_modules/split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "dependencies": { "through": "2" @@ -2688,23 +3078,23 @@ } }, "node_modules/string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" }, "engines": { "node": ">= 0.4" @@ -2752,101 +3142,40 @@ } }, "node_modules/tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "dependencies": { - "chalk": "4.1.0", - "tap-out": "3.0.0" + "colorette": "^1.2.2", + "tap-in": "3.2.1" }, "bin": { "tap-dancer": "src/index.js" } }, - "node_modules/tap-dancer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tap-dancer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/tap-dancer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/tap-dancer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "bin": { + "tap-in": "bin/tap-in.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", - "dev": true, - "dependencies": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" - }, - "bin": { - "tap-out": "bin/cmd.js" + "node": ">=8.0.0" } }, "node_modules/tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", @@ -2854,17 +3183,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "bin": { @@ -2926,9 +3257,9 @@ } }, "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "node_modules/unbox-primitive": { @@ -2947,40 +3278,40 @@ } }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, "engines": { "node": ">=4" @@ -3065,35 +3396,35 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" } }, "@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true }, "@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -3103,74 +3434,75 @@ } }, "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -3184,339 +3516,370 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, - "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "@babel/plugin-proposal-class-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { @@ -3537,6 +3900,15 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -3618,353 +3990,366 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -3974,52 +4359,53 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" } }, "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -4030,56 +4416,89 @@ } }, "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, "@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -4098,16 +4517,6 @@ "requires": { "@types/node": "*" } - }, - "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "requires": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } } } }, @@ -4134,15 +4543,6 @@ "integrity": "sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g==", "dev": true }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -4177,33 +4577,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" } }, "balanced-match": { @@ -4223,16 +4623,16 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "buffer-from": { @@ -4241,12 +4641,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, "builtin-modules": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", @@ -4264,9 +4658,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true }, "chalk": { @@ -4296,9 +4690,9 @@ "dev": true }, "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "commander": { @@ -4307,10 +4701,16 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "compromise": { - "version": "13.10.5", - "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.10.5.tgz", - "integrity": "sha512-je5+lMKnQWmWfYZiO9IXtxWHr3KA4dQiyzVHsZskfNgGVHlSFK2sWreosoBYeRmP9/JrHiggSdDWE1lqPejvmA==", + "version": "13.11.4", + "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.11.4.tgz", + "integrity": "sha512-nBITcNdqIHSVDDluaG6guyFFCSNXN+Hu87fU8VlhkE5Z0PwTZN1nro2O7a8JcUH88nB5EOzrxd9zKfXLSNFqcg==", "requires": { "efrt-unpack": "2.2.0" } @@ -4331,12 +4731,12 @@ } }, "core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "requires": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "dependencies": { @@ -4349,9 +4749,9 @@ } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "debug": { @@ -4430,33 +4830,37 @@ "integrity": "sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==" }, "electron-to-chromium": { - "version": "1.3.704", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", - "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" } }, "es-get-iterator": { @@ -4569,10 +4973,26 @@ "has-symbols": "^1.0.1" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4604,6 +5024,15 @@ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, + "has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -4616,6 +5045,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4632,6 +5070,17 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -4657,9 +5106,9 @@ } }, "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-core-module": { @@ -4702,22 +5151,22 @@ "dev": true }, "is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "requires": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" } }, "is-set": { @@ -4726,12 +5175,21 @@ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -4760,6 +5218,15 @@ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -4821,12 +5288,6 @@ "minimist": "^1.2.5" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -4870,15 +5331,15 @@ "dev": true }, "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true }, "object-is": { @@ -4925,9 +5386,15 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "picomatch": { @@ -4937,9 +5404,9 @@ "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "randombytes": { @@ -4952,23 +5419,23 @@ } }, "re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -4979,18 +5446,18 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "regenerator-transform": { @@ -5013,17 +5480,17 @@ } }, "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { @@ -5033,9 +5500,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -5050,11 +5517,12 @@ } }, "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -5068,43 +5536,12 @@ } }, "rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" - }, - "dependencies": { - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - } + "fsevents": "~2.3.2" } }, "rollup-plugin-filesize-check": { @@ -5113,28 +5550,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "requires": { - "rollup-pluginutils": "^2.5.0" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -5147,23 +5562,6 @@ "terser": "^5.0.0" } }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - }, - "dependencies": { - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - } - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -5227,37 +5625,37 @@ "dev": true }, "spacetime": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.14.0.tgz", - "integrity": "sha512-pz/nMIRGNSJeFfDFvhPjMHXhFU1NcrYnpydMuSS2Zsk0NEoHJc2rRKXugkmlqUv/l/fPxWVJVnj8isVS0//vbQ==" + "version": "6.16.3", + "resolved": "https://registry.npmjs.org/spacetime/-/spacetime-6.16.3.tgz", + "integrity": "sha512-JQEfj3VHT1gU1IMV5NvhgAP8P+2mDFd84ZCiHN//dp6hRKmuW0IizHissy62lO0nilfFjVhnoSaMC7te+Y5f4A==" }, "split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "string.prototype.trimend": { @@ -5290,82 +5688,31 @@ } }, "tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "requires": { - "chalk": "4.1.0", - "tap-out": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "colorette": "^1.2.2", + "tap-in": "3.2.1" } }, - "tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", + "tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "requires": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" } }, "tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -5373,17 +5720,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "dependencies": { @@ -5431,9 +5780,9 @@ "dev": true }, "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "unbox-primitive": { @@ -5449,31 +5798,31 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "util-deprecate": { diff --git a/plugins/person/package.json b/plugins/person/package.json index f68cef70..92f491c3 100644 --- a/plugins/person/package.json +++ b/plugins/person/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-person", "description": "person-details plugin for wtf_wikipedia", - "version": "0.2.0", + "version": "0.2.1", "main": "./builds/wtf-plugin-person.js", "unpkg": "./builds/wtf-plugin-person.min.js", "module": "./builds/wtf-plugin-person.mjs", @@ -28,25 +28,23 @@ "printWidth": 100 }, "dependencies": { - "compromise": "13.10.5", - "spacetime": "6.14.0" + "compromise": "13.11.4", + "spacetime": "6.16.3" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "@rollup/plugin-node-resolve": "11.2.1", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "13.0.6", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^5.1.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "license": "MIT" -} +} \ No newline at end of file diff --git a/plugins/person/rollup.config.js b/plugins/person/rollup.config.js index 695e79a6..7319ecc1 100644 --- a/plugins/person/rollup.config.js +++ b/plugins/person/rollup.config.js @@ -1,6 +1,6 @@ -import commonjs from 'rollup-plugin-commonjs' +import commonjs from '@rollup/plugin-commonjs' import { terser } from 'rollup-plugin-terser' -import babel from 'rollup-plugin-babel' +import { babel } from '@rollup/plugin-babel' import sizeCheck from 'rollup-plugin-filesize-check' import resolve from '@rollup/plugin-node-resolve' //import spacetime @@ -16,8 +16,9 @@ export default [ output: [{ banner: banner, file: `builds/${name}.mjs`, format: 'esm' }], plugins: [ resolve(), - commonjs(), + commonjs({ requireReturnsDefault: "auto" }), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -38,8 +39,9 @@ export default [ ], plugins: [ resolve(), - commonjs(), + commonjs({ requireReturnsDefault: "auto" }), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -59,8 +61,9 @@ export default [ ], plugins: [ resolve(), - commonjs(), + commonjs({ requireReturnsDefault: "auto" }), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }), diff --git a/plugins/summary/builds/wtf-plugin-summary.js b/plugins/summary/builds/wtf-plugin-summary.js index 996860db..6f8390cf 100644 --- a/plugins/summary/builds/wtf-plugin-summary.js +++ b/plugins/summary/builds/wtf-plugin-summary.js @@ -1,15436 +1,15120 @@ -/* wtf-plugin-summary 0.3.0 MIT */ +/* wtf-plugin-summary 0.3.1 MIT */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfSummary = factory()); -}(this, (function () { 'use strict'; - - /* compromise 13.10.5 MIT */ - function _typeof(obj) { - "@babel/helpers - typeof"; - - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function (obj) { - return typeof obj; - }; - } else { - _typeof = function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - - return _typeof(obj); - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - - return _setPrototypeOf(o, p); - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); - return true; - } catch (e) { - return false; - } - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return self; - } - - function _possibleConstructorReturn(self, call) { - if (call && (typeof call === "object" || typeof call === "function")) { - return call; - } - - return _assertThisInitialized(self); - } - - function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), - result; - - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; - - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - - return _possibleConstructorReturn(this, result); - }; - } //this is a not-well-thought-out way to reduce our dependence on `object===object` stuff - - - var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.split(''); //generates a unique id for this term - - function makeId(str) { - str = str || '_'; - var text = str + '-'; - - for (var i = 0; i < 7; i++) { - text += chars[Math.floor(Math.random() * chars.length)]; - } - - return text; - } - - var _id = makeId; //a hugely-ignorant, and widely subjective transliteration of latin, cryllic, greek unicode characters to english ascii. - //approximate visual (not semantic or phonetic) relationship between unicode and ascii characters - //http://en.wikipedia.org/wiki/List_of_Unicode_characters - //https://docs.google.com/spreadsheet/ccc?key=0Ah46z755j7cVdFRDM1A2YVpwa1ZYWlpJM2pQZ003M0E - - var compact = { - '!': '¡', - '?': '¿Ɂ', - '"': '“”"❝❞', - "'": '‘‛❛❜', - '-': '—–', - a: 'ªÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАадѦѧӐӑӒӓƛɅæ', - b: 'ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ', - c: '¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼͽϲϹϽϾСсєҀҁҪҫ', - d: 'ÐĎďĐđƉƊȡƋƌǷ', - e: 'ÈÉÊËèéêëĒēĔĕĖėĘęĚěƎƏƐǝȄȅȆȇȨȩɆɇΈΕΞΣέεξϱϵ϶ЀЁЕЭеѐёҼҽҾҿӖӗӘәӚӛӬӭ', - f: 'ƑƒϜϝӺӻҒғſ', - g: 'ĜĝĞğĠġĢģƓǤǥǦǧǴǵ', - h: 'ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ', - I: 'ÌÍÎÏ', - i: 'ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇії', - j: 'ĴĵǰȷɈɉϳЈј', - k: 'ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ', - l: 'ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ', - m: 'ΜϺϻМмӍӎ', - n: 'ÑñŃńŅņŇňʼnŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ', - o: 'ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϭϴОФоѲѳӦӧӨөӪӫ', - p: 'ƤƿΡρϷϸϼРрҎҏÞ', - q: 'Ɋɋ', - r: 'ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ', - s: 'ŚśŜŝŞşŠšƧƨȘșȿЅѕ', - t: 'ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт', - u: 'µÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰμυϋύ', - v: 'νѴѵѶѷ', - w: 'ŴŵƜωώϖϢϣШЩшщѡѿ', - x: '×ΧχϗϰХхҲҳӼӽӾӿ', - y: 'ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ', - z: 'ŹźŻżŽžƩƵƶȤȥɀΖζ' - }; //decompress data into two hashes + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfSummary = factory()); +})(this, (function () { 'use strict'; + + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + var compromise = {exports: {}}; + + /* compromise 13.11.4 MIT */ + + (function (module, exports) { + (function (global, factory) { + module.exports = factory() ; + })(commonjsGlobal, function () { + + const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.split(''); //generates a unique id for this term + + function makeId$2(str) { + str = str || '_'; + let text = str + '-'; + + for (let i = 0; i < 7; i++) { + text += chars[Math.floor(Math.random() * chars.length)]; + } + + return text; + } + + var _id = makeId$2; //approximate visual (not semantic or phonetic) relationship between unicode and ascii characters + //http://en.wikipedia.org/wiki/List_of_Unicode_characters + //https://docs.google.com/spreadsheet/ccc?key=0Ah46z755j7cVdFRDM1A2YVpwa1ZYWlpJM2pQZ003M0E + + let compact = { + '!': '¡', + '?': '¿Ɂ', + '"': '“”"❝❞', + "'": '‘‛❛❜', + '-': '—–', + a: 'ªÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАадѦѧӐӑӒӓƛɅæ', + b: 'ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ', + c: '¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼͽϲϹϽϾСсєҀҁҪҫ', + d: 'ÐĎďĐđƉƊȡƋƌǷ', + e: 'ÈÉÊËèéêëĒēĔĕĖėĘęĚěƎƏƐǝȄȅȆȇȨȩɆɇΈΕΞΣέεξϱϵ϶ЀЁЕЭеѐёҼҽҾҿӖӗӘәӚӛӬӭ', + f: 'ƑƒϜϝӺӻҒғſ', + g: 'ĜĝĞğĠġĢģƓǤǥǦǧǴǵ', + h: 'ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ', + I: 'ÌÍÎÏ', + i: 'ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇії', + j: 'ĴĵǰȷɈɉϳЈј', + k: 'ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ', + l: 'ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ', + m: 'ΜϺϻМмӍӎ', + n: 'ÑñŃńŅņŇňʼnŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ', + o: 'ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϭϴОФоѲѳӦӧӨөӪӫ', + p: 'ƤƿΡρϷϸϼРрҎҏÞ', + q: 'Ɋɋ', + r: 'ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ', + s: 'ŚśŜŝŞşŠšƧƨȘșȿЅѕ', + t: 'ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт', + u: 'µÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰμυϋύ', + v: 'νѴѵѶѷ', + w: 'ŴŵƜωώϖϢϣШЩшщѡѿ', + x: '×ΧχϗϰХхҲҳӼӽӾӿ', + y: 'ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ', + z: 'ŹźŻżŽžƩƵƶȤȥɀΖζ' + }; //decompress data into two hashes - var unicode = {}; - Object.keys(compact).forEach(function (k) { - compact[k].split('').forEach(function (s) { - unicode[s] = k; - }); - }); + let unicode = {}; + Object.keys(compact).forEach(function (k) { + compact[k].split('').forEach(function (s) { + unicode[s] = k; + }); + }); - var killUnicode = function killUnicode(str) { - var chars = str.split(''); - chars.forEach(function (s, i) { - if (unicode[s]) { - chars[i] = unicode[s]; - } - }); - return chars.join(''); - }; + const killUnicode$3 = str => { + let chars = str.split(''); + chars.forEach((s, i) => { + if (unicode[s]) { + chars[i] = unicode[s]; + } + }); + return chars.join(''); + }; - var unicode_1 = killUnicode; // console.log(killUnicode('bjŏȒk—Ɏó')); + var unicode_1 = killUnicode$3; // console.log(killUnicode('bjŏȒk—Ɏó')); - var periodAcronym = /([A-Z]\.)+[A-Z]?,?$/; - var oneLetterAcronym$1 = /^[A-Z]\.,?$/; - var noPeriodAcronym = /[A-Z]{2,}('s|,)?$/; - var lowerCaseAcronym = /([a-z]\.)+[a-z]\.?$/; + const periodAcronym = /([A-Z]\.)+[A-Z]?,?$/; + const oneLetterAcronym$1 = /^[A-Z]\.,?$/; + const noPeriodAcronym = /[A-Z]{2,}('s|,)?$/; + const lowerCaseAcronym = /([a-z]\.)+[a-z]\.?$/; - var isAcronym$2 = function isAcronym(str) { - //like N.D.A - if (periodAcronym.test(str) === true) { - return true; - } //like c.e.o + const isAcronym$4 = function (str) { + //like N.D.A + if (periodAcronym.test(str) === true) { + return true; + } //like c.e.o - if (lowerCaseAcronym.test(str) === true) { - return true; - } //like 'F.' + if (lowerCaseAcronym.test(str) === true) { + return true; + } //like 'F.' - if (oneLetterAcronym$1.test(str) === true) { - return true; - } //like NDA + if (oneLetterAcronym$1.test(str) === true) { + return true; + } //like NDA - if (noPeriodAcronym.test(str) === true) { - return true; - } + if (noPeriodAcronym.test(str) === true) { + return true; + } + + return false; + }; + + var isAcronym_1 = isAcronym$4; + const killUnicode$2 = unicode_1; + const isAcronym$3 = isAcronym_1; + const hasSlash$1 = /[a-z\u00C0-\u00FF] ?\/ ?[a-z\u00C0-\u00FF]/; + /** some basic operations on a string to reduce noise */ + + const clean = function (str) { + str = str || ''; + str = str.toLowerCase(); + str = str.trim(); + let original = str; //(very) rough ASCII transliteration - bjŏrk -> bjork + + str = killUnicode$2(str); //rough handling of slashes - 'see/saw' + + if (hasSlash$1.test(str) === true) { + str = str.replace(/\/.*/, ''); + } //#tags, @mentions + + + str = str.replace(/^[#@]/, ''); //punctuation + + str = str.replace(/[,;.!?]+$/, ''); // coerce single curly quotes + + str = str.replace(/[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]+/g, "'"); // coerce double curly quotes + + str = str.replace(/[\u0022\u00AB\u00BB\u201C\u201D\u201E\u201F\u2033\u2034\u2036\u2037\u2E42\u301D\u301E\u301F\uFF02]+/g, '"'); //coerce Unicode ellipses - return false; - }; + str = str.replace(/\u2026/g, '...'); //en-dash - var isAcronym_1$1 = isAcronym$2; - var hasSlash$1 = /[a-z\u00C0-\u00FF] ?\/ ?[a-z\u00C0-\u00FF]/; - /** some basic operations on a string to reduce noise */ - - var clean = function clean(str) { - str = str || ''; - str = str.toLowerCase(); - str = str.trim(); - var original = str; //(very) rough ASCII transliteration - bjŏrk -> bjork - - str = unicode_1(str); //rough handling of slashes - 'see/saw' - - if (hasSlash$1.test(str) === true) { - str = str.replace(/\/.*/, ''); - } //#tags, @mentions + str = str.replace(/\u2013/g, '-'); //lookin'->looking (make it easier for conjugation) + str = str.replace(/([aeiou][ktrp])in$/, '$1ing'); //turn re-enactment to reenactment - str = str.replace(/^[#@]/, ''); //punctuation - - str = str.replace(/[,;.!?]+$/, ''); // coerce single curly quotes + if (/^(re|un)-?[^aeiou]./.test(str) === true) { + str = str.replace('-', ''); + } //compact acronyms - str = str.replace(/[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]+/g, "'"); // coerce double curly quotes - str = str.replace(/[\u0022\u00AB\u00BB\u201C\u201D\u201E\u201F\u2033\u2034\u2036\u2037\u2E42\u301D\u301E\u301F\uFF02]+/g, '"'); //coerce Unicode ellipses + if (isAcronym$3(str)) { + str = str.replace(/\./g, ''); + } //strip leading & trailing grammatical punctuation - str = str.replace(/\u2026/g, '...'); //en-dash - str = str.replace(/\u2013/g, '-'); //lookin'->looking (make it easier for conjugation) + if (/^[:;]/.test(str) === false) { + str = str.replace(/\.{3,}$/g, ''); + str = str.replace(/[",\.!:;\?\)]+$/g, ''); + str = str.replace(/^['"\(]+/g, ''); + } // remove zero-width characters - str = str.replace(/([aeiou][ktrp])in$/, '$1ing'); //turn re-enactment to reenactment - if (/^(re|un)-?[^aeiou]./.test(str) === true) { - str = str.replace('-', ''); - } //compact acronyms + str = str.replace(/[\u200B-\u200D\uFEFF]/g, ''); //do this again.. + str = str.trim(); //oh shucks, - if (isAcronym_1$1(str)) { - str = str.replace(/\./g, ''); - } //strip leading & trailing grammatical punctuation + if (str === '') { + str = original; + } //nice-numbers - if (/^[:;]/.test(str) === false) { - str = str.replace(/\.{3,}$/g, ''); - str = str.replace(/[",\.!:;\?\)]+$/g, ''); - str = str.replace(/^['"\(]+/g, ''); - } // remove zero-width characters + str = str.replace(/([0-9]),([0-9])/g, '$1$2'); + return str; + }; + var clean_1 = clean; // console.log(normalize('Dr. V Cooper')); - str = str.replace(/[\u200B-\u200D\uFEFF]/g, ''); //do this again.. + /** reduced is one step further than clean */ - str = str.trim(); //oh shucks, + const reduced = function (str) { + // remove apostrophes + str = str.replace(/['’]s$/, ''); + str = str.replace(/s['’]$/, 's'); + return str; + }; - if (str === '') { - str = original; - } //nice-numbers + var reduce$1 = reduced; + const normalize = clean_1; + const reduce = reduce$1; // basically, tokenize for terms. + //all punctuation marks, from https://en.wikipedia.org/wiki/Punctuation + //we have slightly different rules for start/end - like #hashtags. + const startings = /^[ \n\t\.\[\](){}⟨⟩:,،、‒–—―…!‹›«»‐\-?‘’;\/⁄·&*•^†‡°¡¿※№÷׺ª%‰+−=‱¶′″‴§~\|‖¦©℗®℠™¤₳฿\u0022\uFF02\u0027\u201C\u201F\u201B\u201E\u2E42\u201A\u2035\u2036\u2037\u301D\u0060\u301F]+/; + const endings = /[ \n\t\.'\[\](){}⟨⟩:,،、‒–—―…!‹›«»‐\-?‘’;\/⁄·&*@•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~\|‖¦©℗®℠™¤₳฿\u0022\uFF02\u201D\u00B4\u301E]+$/; //money = ₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥ - str = str.replace(/([0-9]),([0-9])/g, '$1$2'); - return str; - }; + const hasSlash = /\//; + const hasApostrophe = /['’]/; + const hasAcronym = /^[a-z]\.([a-z]\.)+/i; + const minusNumber = /^[-+\.][0-9]/; + const shortYear = /^'[0-9]{2}/; + /** turn given text into a parsed-up object + * seperate the 'meat' of the word from the whitespace+punctuation + */ - var clean_1 = clean; // console.log(normalize('Dr. V Cooper')); + const parseTerm$1 = str => { + let original = str; + let pre = ''; + let post = ''; + str = str.replace(startings, found => { + pre = found; // support '-40' - /** reduced is one step further than clean */ + if ((pre === '-' || pre === '+' || pre === '.') && minusNumber.test(str)) { + pre = ''; + return found; + } // support years like '97 - var reduced = function reduced(str) { - // remove apostrophes - str = str.replace(/['’]s$/, ''); - str = str.replace(/s['’]$/, 's'); - return str; - }; - var reduce = reduced; //all punctuation marks, from https://en.wikipedia.org/wiki/Punctuation - //we have slightly different rules for start/end - like #hashtags. + if (pre === "'" && shortYear.test(str)) { + pre = ''; + return found; + } - var startings = /^[ \n\t\.\[\](){}⟨⟩:,،、‒–—―…!‹›«»‐\-?‘’;\/⁄·&*•^†‡°¡¿※№÷׺ª%‰+−=‱¶′″‴§~\|‖¦©℗®℠™¤₳฿\u0022\uFF02\u0027\u201C\u201F\u201B\u201E\u2E42\u201A\u2035\u2036\u2037\u301D\u0060\u301F]+/; - var endings = /[ \n\t\.'\[\](){}⟨⟩:,،、‒–—―…!‹›«»‐\-?‘’;\/⁄·&*@•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~\|‖¦©℗®℠™¤₳฿\u0022\uFF02\u201D\u00B4\u301E]+$/; //money = ₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥ + return ''; + }); + str = str.replace(endings, found => { + post = found; // keep s-apostrophe - "flanders'" or "chillin'" - var hasSlash = /\//; - var hasApostrophe = /['’]/; - var hasAcronym = /^[a-z]\.([a-z]\.)+/i; - var minusNumber = /^[-+\.][0-9]/; - var shortYear = /^'[0-9]{2}/; - /** turn given text into a parsed-up object - * seperate the 'meat' of the word from the whitespace+punctuation - */ + if (hasApostrophe.test(found) && /[sn]['’]$/.test(original) && hasApostrophe.test(pre) === false) { + post = post.replace(hasApostrophe, ''); + return "'"; + } //keep end-period in acronym - var parseTerm = function parseTerm(str) { - var original = str; - var pre = ''; - var post = ''; - str = str.replace(startings, function (found) { - pre = found; // support '-40' - if ((pre === '-' || pre === '+' || pre === '.') && minusNumber.test(str)) { - pre = ''; - return found; - } // support years like '97 + if (hasAcronym.test(str) === true) { + post = post.replace(/\./, ''); + return '.'; + } + return ''; + }); //we went too far.. - if (pre === "'" && shortYear.test(str)) { - pre = ''; - return found; - } + if (str === '') { + // do a very mild parse, and hope for the best. + original = original.replace(/ *$/, after => { + post = after || ''; + return ''; + }); + str = original; + pre = ''; + post = post; + } // create the various forms of our text, - return ''; - }); - str = str.replace(endings, function (found) { - post = found; // keep s-apostrophe - "flanders'" or "chillin'" - if (hasApostrophe.test(found) && /[sn]['’]$/.test(original) && hasApostrophe.test(pre) === false) { - post = post.replace(hasApostrophe, ''); - return "'"; - } //keep end-period in acronym + let clean = normalize(str); + const parsed = { + text: str, + clean: clean, + reduced: reduce(clean), + pre: pre, + post: post + }; // support aliases for slashes + if (hasSlash.test(str)) { + str.split(hasSlash).forEach(word => { + parsed.alias = parsed.alias || {}; + parsed.alias[word.trim()] = true; + }); + } - if (hasAcronym.test(str) === true) { - post = post.replace(/\./, ''); - return '.'; - } + return parsed; + }; - return ''; - }); //we went too far.. + var parse$3 = parseTerm$1; + var _01Case = {}; - if (str === '') { - // do a very mild parse, and hope for the best. - original = original.replace(/ *$/, function (after) { - post = after || ''; - return ''; - }); - str = original; - pre = ''; - post = post; - } // create the various forms of our text, + (function (exports) { + const titleCase = /^[A-Z][a-z'\u00C0-\u00FF]/; + const upperCase = /^[A-Z]+s?$/; + /** convert all text to uppercase */ + exports.toUpperCase = function () { + this.text = this.text.toUpperCase(); + return this; + }; + /** convert all text to lowercase */ - var clean = clean_1(str); - var parsed = { - text: str, - clean: clean, - reduced: reduce(clean), - pre: pre, - post: post - }; // support aliases for slashes - if (hasSlash.test(str)) { - str.split(hasSlash).forEach(function (word) { - parsed.alias = parsed.alias || {}; - parsed.alias[word.trim()] = true; - }); - } + exports.toLowerCase = function () { + this.text = this.text.toLowerCase(); + return this; + }; + /** only set the first letter to uppercase + * leave any existing uppercase alone + */ - return parsed; - }; - var parse$2 = parseTerm; + exports.toTitleCase = function () { + this.text = this.text.replace(/^ *[a-z\u00C0-\u00FF]/, x => x.toUpperCase()); //support unicode? - function createCommonjsModule(fn) { - var module = { - exports: {} - }; - return fn(module, module.exports), module.exports; - } + return this; + }; + /** if all letters are uppercase */ - var _01Case = createCommonjsModule(function (module, exports) { - var titleCase = /^[A-Z][a-z'\u00C0-\u00FF]/; - var upperCase = /^[A-Z]+s?$/; - /** convert all text to uppercase */ - exports.toUpperCase = function () { - this.text = this.text.toUpperCase(); - return this; - }; - /** convert all text to lowercase */ + exports.isUpperCase = function () { + return upperCase.test(this.text); + }; + /** if the first letter is uppercase, and the rest are lowercase */ - exports.toLowerCase = function () { - this.text = this.text.toLowerCase(); - return this; - }; - /** only set the first letter to uppercase - * leave any existing uppercase alone - */ + exports.isTitleCase = function () { + return titleCase.test(this.text); + }; + exports.titleCase = exports.isTitleCase; + })(_01Case); - exports.toTitleCase = function () { - this.text = this.text.replace(/^ *[a-z\u00C0-\u00FF]/, function (x) { - return x.toUpperCase(); - }); //support unicode? + var _02Punctuation$1 = {}; - return this; - }; - /** if all letters are uppercase */ + (function (exports) { + // these methods are called with '@hasComma' in the match syntax + // various unicode quotation-mark formats + const startQuote = /(\u0022|\uFF02|\u0027|\u201C|\u2018|\u201F|\u201B|\u201E|\u2E42|\u201A|\u00AB|\u2039|\u2035|\u2036|\u2037|\u301D|\u0060|\u301F)/; + const endQuote = /(\u0022|\uFF02|\u0027|\u201D|\u2019|\u201D|\u2019|\u201D|\u201D|\u2019|\u00BB|\u203A|\u2032|\u2033|\u2034|\u301E|\u00B4|\u301E)/; + /** search the term's 'post' punctuation */ + exports.hasPost = function (punct) { + return this.post.indexOf(punct) !== -1; + }; + /** search the term's 'pre' punctuation */ - exports.isUpperCase = function () { - return upperCase.test(this.text); - }; - /** if the first letter is uppercase, and the rest are lowercase */ + exports.hasPre = function (punct) { + return this.pre.indexOf(punct) !== -1; + }; + /** does it have a quotation symbol? */ - exports.isTitleCase = function () { - return titleCase.test(this.text); - }; - exports.titleCase = exports.isTitleCase; - }); + exports.hasQuote = function () { + return startQuote.test(this.pre) || endQuote.test(this.post); + }; - var _02Punctuation$1 = createCommonjsModule(function (module, exports) { - // these methods are called with '@hasComma' in the match syntax - // various unicode quotation-mark formats - var startQuote = /(\u0022|\uFF02|\u0027|\u201C|\u2018|\u201F|\u201B|\u201E|\u2E42|\u201A|\u00AB|\u2039|\u2035|\u2036|\u2037|\u301D|\u0060|\u301F)/; - var endQuote = /(\u0022|\uFF02|\u0027|\u201D|\u2019|\u201D|\u2019|\u201D|\u201D|\u2019|\u00BB|\u203A|\u2032|\u2033|\u2034|\u301E|\u00B4|\u301E)/; - /** search the term's 'post' punctuation */ + exports.hasQuotation = exports.hasQuote; + /** does it have a comma? */ - exports.hasPost = function (punct) { - return this.post.indexOf(punct) !== -1; - }; - /** search the term's 'pre' punctuation */ + exports.hasComma = function () { + return this.hasPost(','); + }; + /** does it end in a period? */ - exports.hasPre = function (punct) { - return this.pre.indexOf(punct) !== -1; - }; - /** does it have a quotation symbol? */ + exports.hasPeriod = function () { + return this.hasPost('.') === true && this.hasPost('...') === false; + }; + /** does it end in an exclamation */ - exports.hasQuote = function () { - return startQuote.test(this.pre) || endQuote.test(this.post); - }; + exports.hasExclamation = function () { + return this.hasPost('!'); + }; + /** does it end with a question mark? */ - exports.hasQuotation = exports.hasQuote; - /** does it have a comma? */ - exports.hasComma = function () { - return this.hasPost(','); - }; - /** does it end in a period? */ + exports.hasQuestionMark = function () { + return this.hasPost('?') || this.hasPost('¿'); + }; + /** is there a ... at the end? */ - exports.hasPeriod = function () { - return this.hasPost('.') === true && this.hasPost('...') === false; - }; - /** does it end in an exclamation */ + exports.hasEllipses = function () { + return this.hasPost('..') || this.hasPost('…') || this.hasPre('..') || this.hasPre('…'); + }; + /** is there a semicolon after this word? */ - exports.hasExclamation = function () { - return this.hasPost('!'); - }; - /** does it end with a question mark? */ + exports.hasSemicolon = function () { + return this.hasPost(';'); + }; + /** is there a slash '/' in this word? */ - exports.hasQuestionMark = function () { - return this.hasPost('?') || this.hasPost('¿'); - }; - /** is there a ... at the end? */ + exports.hasSlash = function () { + return /\//.test(this.text); + }; + /** a hyphen connects two words like-this */ - exports.hasEllipses = function () { - return this.hasPost('..') || this.hasPost('…') || this.hasPre('..') || this.hasPre('…'); - }; - /** is there a semicolon after this word? */ + exports.hasHyphen = function () { + const hyphen = /^(-|–|—)$/; + return hyphen.test(this.post) || hyphen.test(this.pre); + }; + /** a dash separates words - like that */ - exports.hasSemicolon = function () { - return this.hasPost(';'); - }; - /** is there a slash '/' in this word? */ + exports.hasDash = function () { + const hyphen = / (-|–|—) /; + return hyphen.test(this.post) || hyphen.test(this.pre); + }; + /** is it multiple words combinded */ - exports.hasSlash = function () { - return /\//.test(this.text); - }; - /** a hyphen connects two words like-this */ + exports.hasContraction = function () { + return Boolean(this.implicit); + }; + /** try to sensibly put this punctuation mark into the term */ - exports.hasHyphen = function () { - var hyphen = /^(-|–|—)$/; - return hyphen.test(this.post) || hyphen.test(this.pre); - }; - /** a dash separates words - like that */ + exports.addPunctuation = function (punct) { + // dont add doubles + if (punct === ',' || punct === ';') { + this.post = this.post.replace(punct, ''); + } + this.post = punct + this.post; + return this; + }; + })(_02Punctuation$1); - exports.hasDash = function () { - var hyphen = / (-|–|—) /; - return hyphen.test(this.post) || hyphen.test(this.pre); - }; - /** is it multiple words combinded */ + var _03Misc = {}; // Based on tad-lispy /node-damerau-levenshtein + // https://github.com/tad-lispy/node-damerau-levenshtein/blob/master/index.js + // count steps (insertions, deletions, substitutions, or transpositions) + const editDistance = function (strA, strB) { + let aLength = strA.length, + bLength = strB.length; // fail-fast - exports.hasContraction = function () { - return Boolean(this.implicit); - }; - /** try to sensibly put this punctuation mark into the term */ + if (aLength === 0) { + return bLength; + } + if (bLength === 0) { + return aLength; + } // If the limit is not defined it will be calculate from this and that args. - exports.addPunctuation = function (punct) { - // dont add doubles - if (punct === ',' || punct === ';') { - this.post = this.post.replace(punct, ''); - } - this.post = punct + this.post; - return this; - }; - }); // fuzzy-match (damerau-levenshtein) - // Based on tad-lispy /node-damerau-levenshtein - // https://github.com/tad-lispy/node-damerau-levenshtein/blob/master/index.js - // count steps (insertions, deletions, substitutions, or transpositions) + let limit = (bLength > aLength ? bLength : aLength) + 1; + if (Math.abs(aLength - bLength) > (limit || 100)) { + return limit || 100; + } // init the array - var editDistance = function editDistance(strA, strB) { - var aLength = strA.length, - bLength = strB.length; // fail-fast - if (aLength === 0) { - return bLength; - } + let matrix = []; - if (bLength === 0) { - return aLength; - } // If the limit is not defined it will be calculate from this and that args. + for (let i = 0; i < limit; i++) { + matrix[i] = [i]; + matrix[i].length = limit; + } + for (let i = 0; i < limit; i++) { + matrix[0][i] = i; + } // Calculate matrix. - var limit = (bLength > aLength ? bLength : aLength) + 1; - if (Math.abs(aLength - bLength) > (limit || 100)) { - return limit || 100; - } // init the array + let j, a_index, b_index, cost, min, t; + for (let i = 1; i <= aLength; ++i) { + a_index = strA[i - 1]; - var matrix = []; + for (j = 1; j <= bLength; ++j) { + // Check the jagged distance total so far + if (i === j && matrix[i][j] > 4) { + return aLength; + } - for (var i = 0; i < limit; i++) { - matrix[i] = [i]; - matrix[i].length = limit; - } + b_index = strB[j - 1]; + cost = a_index === b_index ? 0 : 1; // Step 5 + // Calculate the minimum (much faster than Math.min(...)). - for (var _i = 0; _i < limit; _i++) { - matrix[0][_i] = _i; - } // Calculate matrix. + min = matrix[i - 1][j] + 1; // Deletion. + if ((t = matrix[i][j - 1] + 1) < min) min = t; // Insertion. - var j, a_index, b_index, cost, min, t; + if ((t = matrix[i - 1][j - 1] + cost) < min) min = t; // Substitution. + // Update matrix. - for (var _i2 = 1; _i2 <= aLength; ++_i2) { - a_index = strA[_i2 - 1]; + let shouldUpdate = i > 1 && j > 1 && a_index === strB[j - 2] && strA[i - 2] === b_index && (t = matrix[i - 2][j - 2] + cost) < min; - for (j = 1; j <= bLength; ++j) { - // Check the jagged distance total so far - if (_i2 === j && matrix[_i2][j] > 4) { - return aLength; - } + if (shouldUpdate) { + matrix[i][j] = t; + } else { + matrix[i][j] = min; + } + } + } // return number of steps - b_index = strB[j - 1]; - cost = a_index === b_index ? 0 : 1; // Step 5 - // Calculate the minimum (much faster than Math.min(...)). - min = matrix[_i2 - 1][j] + 1; // Deletion. + return matrix[aLength][bLength]; + }; // score similarity by from 0-1 (steps/length) - if ((t = matrix[_i2][j - 1] + 1) < min) min = t; // Insertion. - if ((t = matrix[_i2 - 1][j - 1] + cost) < min) min = t; // Substitution. - // Update matrix. + const fuzzyMatch = function (strA, strB) { + let minLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3; - var shouldUpdate = _i2 > 1 && j > 1 && a_index === strB[j - 2] && strA[_i2 - 2] === b_index && (t = matrix[_i2 - 2][j - 2] + cost) < min; + if (strA === strB) { + return 1; + } //don't even bother on tiny strings - if (shouldUpdate) { - matrix[_i2][j] = t; - } else { - matrix[_i2][j] = min; - } - } - } // return number of steps + if (strA.length < minLength || strB.length < minLength) { + return 0; + } - return matrix[aLength][bLength]; - }; // score similarity by from 0-1 (steps/length) + const steps = editDistance(strA, strB); + let length = Math.max(strA.length, strB.length); + let relative = length === 0 ? 0 : steps / length; + let similarity = 1 - relative; + return similarity; + }; + var _fuzzy = fuzzyMatch; // console.log(fuzzyMatch('test', 'test')) //exact match - var fuzzyMatch = function fuzzyMatch(strA, strB) { - var minLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3; + const fuzzy = _fuzzy; //declare it up here - if (strA === strB) { - return 1; - } //don't even bother on tiny strings + let wrapMatch = function () {}; + /** ignore optional/greedy logic, straight-up term match*/ - if (strA.length < minLength || strB.length < minLength) { - return 0; - } + const doesMatch$1 = function (t, reg, index, length) { + // support id matches + if (reg.id === t.id) { + return true; + } // support '.' - var steps = editDistance(strA, strB); - var length = Math.max(strA.length, strB.length); - var relative = length === 0 ? 0 : steps / length; - var similarity = 1 - relative; - return similarity; - }; - var _fuzzy = fuzzyMatch; // console.log(fuzzyMatch('test', 'test')) //exact match + if (reg.anything === true) { + return true; + } // support '^' (in parentheses) - var wrapMatch = function wrapMatch() {}; - /** ignore optional/greedy logic, straight-up term match*/ + if (reg.start === true && index !== 0) { + return false; + } // support '$' (in parentheses) - var doesMatch = function doesMatch(t, reg, index, length) { - // support id matches - if (reg.id === t.id) { - return true; - } // support '.' + if (reg.end === true && index !== length - 1) { + return false; + } //support a text match - if (reg.anything === true) { - return true; - } // support '^' (in parentheses) + if (reg.word !== undefined) { + //match contractions + if (t.implicit !== null && t.implicit === reg.word) { + return true; + } // term aliases for slashes and things - if (reg.start === true && index !== 0) { - return false; - } // support '$' (in parentheses) + if (t.alias !== undefined && t.alias.hasOwnProperty(reg.word)) { + return true; + } // support ~ match - if (reg.end === true && index !== length - 1) { - return false; - } //support a text match + if (reg.soft === true && reg.word === t.root) { + return true; + } // support fuzzy match param - if (reg.word !== undefined) { - //match contractions - if (t.implicit !== null && t.implicit === reg.word) { - return true; - } // term aliases for slashes and things + if (reg.fuzzy !== undefined) { + let score = fuzzy(reg.word, t.reduced); - if (t.alias !== undefined && t.alias.hasOwnProperty(reg.word)) { - return true; - } // support ~ match + if (score > reg.fuzzy) { + return true; + } // support fuzzy + soft match - if (reg.soft === true && reg.word === t.root) { - return true; - } // support fuzzy match param + if (reg.soft === true) { + score = fuzzy(reg.word, t.root); + if (score > reg.fuzzy) { + return true; + } + } + } //match either .clean or .text - if (reg.fuzzy !== undefined) { - var score = _fuzzy(reg.word, t.reduced); - if (score > reg.fuzzy) { - return true; - } // support fuzzy + soft match + return reg.word === t.clean || reg.word === t.text || reg.word === t.reduced; + } //support #Tag - if (reg.soft === true) { - score = _fuzzy(reg.word, t.root); + if (reg.tag !== undefined) { + return t.tags[reg.tag] === true; + } //support @method - if (score > reg.fuzzy) { - return true; - } - } - } //match either .clean or .text + if (reg.method !== undefined) { + if (typeof t[reg.method] === 'function' && t[reg.method]() === true) { + return true; + } - return reg.word === t.clean || reg.word === t.text || reg.word === t.reduced; - } //support #Tag + return false; + } //support /reg/ - if (reg.tag !== undefined) { - return t.tags[reg.tag] === true; - } //support @method + if (reg.regex !== undefined) { + return reg.regex.test(t.clean); + } // support optimized (one|two) - if (reg.method !== undefined) { - if (typeof t[reg.method] === 'function' && t[reg.method]() === true) { - return true; - } + if (reg.fastOr !== undefined) { + if (t.implicit && reg.fastOr.hasOwnProperty(t.implicit) === true) { + return true; + } - return false; - } //support /reg/ + return reg.fastOr.hasOwnProperty(t.reduced) || reg.fastOr.hasOwnProperty(t.text); + } //support slower (one|two) - if (reg.regex !== undefined) { - return reg.regex.test(t.clean); - } // support optimized (one|two) + if (reg.choices !== undefined) { + // try to support && operator + if (reg.operator === 'and') { + // must match them all + return reg.choices.every(r => wrapMatch(t, r, index, length)); + } // or must match one - if (reg.fastOr !== undefined) { - if (t.implicit && reg.fastOr.hasOwnProperty(t.implicit) === true) { - return true; - } + return reg.choices.some(r => wrapMatch(t, r, index, length)); + } - return reg.fastOr.hasOwnProperty(t.reduced) || reg.fastOr.hasOwnProperty(t.text); - } //support slower (one|two) + return false; + }; // wrap result for !negative match logic - if (reg.choices !== undefined) { - // try to support && operator - if (reg.operator === 'and') { - // must match them all - return reg.choices.every(function (r) { - return wrapMatch(t, r, index, length); - }); - } // or must match one + wrapMatch = function (t, reg, index, length) { + let result = doesMatch$1(t, reg, index, length); + if (reg.negative === true) { + return !result; + } - return reg.choices.some(function (r) { - return wrapMatch(t, r, index, length); - }); - } + return result; + }; - return false; - }; // wrap result for !negative match logic + var _doesMatch = wrapMatch; + const doesMatch = _doesMatch; + const isAcronym$2 = isAcronym_1; // these tags aren't juicy-enough + const boring = {}; + /** check a match object against this term */ - wrapMatch = function wrapMatch(t, reg, index, length) { - var result = doesMatch(t, reg, index, length); + _03Misc.doesMatch = function (reg, index, length) { + return doesMatch(this, reg, index, length); + }; + /** does this term look like an acronym? */ - if (reg.negative === true) { - return !result; - } - return result; - }; + _03Misc.isAcronym = function () { + return isAcronym$2(this.text); + }; + /** is this term implied by a contraction? */ - var _doesMatch = wrapMatch; - var boring = {}; - /** check a match object against this term */ - var doesMatch_1 = function doesMatch_1(reg, index, length) { - return _doesMatch(this, reg, index, length); - }; - /** does this term look like an acronym? */ + _03Misc.isImplicit = function () { + return this.text === '' && Boolean(this.implicit); + }; + /** does the term have at least one good tag? */ - var isAcronym_1 = function isAcronym_1() { - return isAcronym_1$1(this.text); - }; - /** is this term implied by a contraction? */ + _03Misc.isKnown = function () { + return Object.keys(this.tags).some(t => boring[t] !== true); + }; + /** cache the root property of the term */ - var isImplicit = function isImplicit() { - return this.text === '' && Boolean(this.implicit); - }; - /** does the term have at least one good tag? */ + _03Misc.setRoot = function (world) { + let transform = world.transforms; + let str = this.implicit || this.clean; + if (this.tags.Plural) { + str = transform.toSingular(str, world); + } - var isKnown = function isKnown() { - return Object.keys(this.tags).some(function (t) { - return boring[t] !== true; - }); - }; - /** cache the root property of the term */ + if (this.tags.Verb && !this.tags.Negative && !this.tags.Infinitive) { + let tense = null; + if (this.tags.PastTense) { + tense = 'PastTense'; + } else if (this.tags.Gerund) { + tense = 'Gerund'; + } else if (this.tags.PresentTense) { + tense = 'PresentTense'; + } else if (this.tags.Participle) { + tense = 'Participle'; + } else if (this.tags.Actor) { + tense = 'Actor'; + } - var setRoot = function setRoot(world) { - var transform = world.transforms; - var str = this.implicit || this.clean; + str = transform.toInfinitive(str, world, tense); + } - if (this.tags.Plural) { - str = transform.toSingular(str, world); - } + this.root = str; + }; - if (this.tags.Verb && !this.tags.Negative && !this.tags.Infinitive) { - var tense = null; + var _04Text = {}; + const killUnicode$1 = unicode_1; + const hasSpace$1 = /[\s-]/; + const isUpperCase = /^[A-Z-]+$/; // const titleCase = str => { + // return str.charAt(0).toUpperCase() + str.substr(1) + // } - if (this.tags.PastTense) { - tense = 'PastTense'; - } else if (this.tags.Gerund) { - tense = 'Gerund'; - } else if (this.tags.PresentTense) { - tense = 'PresentTense'; - } else if (this.tags.Participle) { - tense = 'Participle'; - } else if (this.tags.Actor) { - tense = 'Actor'; - } + /** return various text formats of this term */ - str = transform.toInfinitive(str, world, tense); - } + _04Text.textOut = function (options, showPre, showPost) { + options = options || {}; + let word = this.text; + let before = this.pre; + let after = this.post; // -word- + + if (options.reduced === true) { + word = this.reduced || ''; + } - this.root = str; - }; - - var _03Misc = { - doesMatch: doesMatch_1, - isAcronym: isAcronym_1, - isImplicit: isImplicit, - isKnown: isKnown, - setRoot: setRoot - }; - var hasSpace$1 = /[\s-]/; - var isUpperCase = /^[A-Z-]+$/; // const titleCase = str => { - // return str.charAt(0).toUpperCase() + str.substr(1) - // } - - /** return various text formats of this term */ - - var textOut = function textOut(options, showPre, showPost) { - options = options || {}; - var word = this.text; - var before = this.pre; - var after = this.post; // -word- - - if (options.reduced === true) { - word = this.reduced || ''; - } - - if (options.root === true) { - word = this.root || ''; - } - - if (options.implicit === true && this.implicit) { - word = this.implicit || ''; - } - - if (options.normal === true) { - word = this.clean || this.text || ''; - } - - if (options.root === true) { - word = this.root || this.reduced || ''; - } - - if (options.unicode === true) { - word = unicode_1(word); - } // cleanup case - - - if (options.titlecase === true) { - if (this.tags.ProperNoun && !this.titleCase()) ;else if (this.tags.Acronym) { - word = word.toUpperCase(); //uppercase acronyms - } else if (isUpperCase.test(word) && !this.tags.Acronym) { - // lowercase everything else - word = word.toLowerCase(); - } - } - - if (options.lowercase === true) { - word = word.toLowerCase(); - } // remove the '.'s from 'F.B.I.' (safely) - - - if (options.acronyms === true && this.tags.Acronym) { - word = word.replace(/\./g, ''); - } // -before/after- - - - if (options.whitespace === true || options.root === true) { - before = ''; - after = ' '; - - if ((hasSpace$1.test(this.post) === false || options.last) && !this.implicit) { - after = ''; - } - } - - if (options.punctuation === true && !options.root) { - //normalized end punctuation - if (this.hasPost('.') === true) { - after = '.' + after; - } else if (this.hasPost('?') === true) { - after = '?' + after; - } else if (this.hasPost('!') === true) { - after = '!' + after; - } else if (this.hasPost(',') === true) { - after = ',' + after; - } else if (this.hasEllipses() === true) { - after = '...' + after; - } - } - - if (showPre !== true) { - before = ''; - } - - if (showPost !== true) { - // let keep = after.match(/\)/) || '' - after = ''; //keep //after.replace(/[ .?!,]+/, '') - } // remove the '.' from 'Mrs.' (safely) - - - if (options.abbreviations === true && this.tags.Abbreviation) { - after = after.replace(/^\./, ''); - } - - return before + word + after; - }; - - var _04Text = { - textOut: textOut - }; - var boringTags = { - Auxiliary: 1, - Possessive: 1 - }; - /** a subjective ranking of tags kinda tfidf-based */ - - var rankTags = function rankTags(term, world) { - var tags = Object.keys(term.tags); - var tagSet = world.tags; - tags = tags.sort(function (a, b) { - //bury the tags we dont want - if (boringTags[b] || !tagSet[b]) { - return -1; - } // unknown tags are interesting - - - if (!tagSet[b]) { - return 1; - } - - if (!tagSet[a]) { - return 0; - } // then sort by #of parent tags (most-specific tags first) - - - if (tagSet[a].lineage.length > tagSet[b].lineage.length) { - return 1; - } - - if (tagSet[a].isA.length > tagSet[b].isA.length) { - return -1; - } - - return 0; - }); - return tags; - }; - - var _bestTag = rankTags; - var jsonDefault = { - text: true, - tags: true, - implicit: true, - whitespace: true, - clean: false, - id: false, - index: false, - offset: false, - bestTag: false - }; - /** return various metadata for this term */ - - var json$1 = function json(options, world) { - options = options || {}; - options = Object.assign({}, jsonDefault, options); - var result = {}; // default on - - if (options.text) { - result.text = this.text; - } - - if (options.normal) { - result.normal = this.clean; - } - - if (options.tags) { - result.tags = Object.keys(this.tags); - } // default off - - - if (options.clean) { - result.clean = this.clean; - } + if (options.root === true) { + word = this.root || ''; + } - if (options.id || options.offset) { - result.id = this.id; - } + if (options.implicit === true && this.implicit) { + word = this.implicit || ''; + } - if (options.implicit && this.implicit !== null) { - result.implicit = this.implicit; - } + if (options.normal === true) { + word = this.clean || this.text || ''; + } + + if (options.root === true) { + word = this.root || this.reduced || ''; + } + + if (options.unicode === true) { + word = killUnicode$1(word); + } // cleanup case + + + if (options.titlecase === true) { + if (this.tags.ProperNoun && !this.titleCase()) ;else if (this.tags.Acronym) { + word = word.toUpperCase(); //uppercase acronyms + } else if (isUpperCase.test(word) && !this.tags.Acronym) { + // lowercase everything else + word = word.toLowerCase(); + } + } + + if (options.lowercase === true) { + word = word.toLowerCase(); + } // remove the '.'s from 'F.B.I.' (safely) + + + if (options.acronyms === true && this.tags.Acronym) { + word = word.replace(/\./g, ''); + } // -before/after- + + + if (options.whitespace === true || options.root === true) { + before = ''; + after = ' '; + + if ((hasSpace$1.test(this.post) === false || options.last) && !this.implicit) { + after = ''; + } + } + + if (options.punctuation === true && !options.root) { + //normalized end punctuation + if (this.hasPost('.') === true) { + after = '.' + after; + } else if (this.hasPost('?') === true) { + after = '?' + after; + } else if (this.hasPost('!') === true) { + after = '!' + after; + } else if (this.hasPost(',') === true) { + after = ',' + after; + } else if (this.hasEllipses() === true) { + after = '...' + after; + } + } + + if (showPre !== true) { + before = ''; + } + + if (showPost !== true) { + // let keep = after.match(/\)/) || '' + after = ''; //keep //after.replace(/[ .?!,]+/, '') + } // remove the '.' from 'Mrs.' (safely) + + + if (options.abbreviations === true && this.tags.Abbreviation) { + after = after.replace(/^\./, ''); + } + + return before + word + after; + }; + + var _05Json$1 = {}; + const boringTags = { + Auxiliary: 1, + Possessive: 1 + }; + /** a subjective ranking of tags kinda tfidf-based */ + + const rankTags$1 = function (term, world) { + let tags = Object.keys(term.tags); + const tagSet = world.tags; + tags = tags.sort((a, b) => { + //bury the tags we dont want + if (boringTags[b] || !tagSet[b]) { + return -1; + } // unknown tags are interesting + + + if (!tagSet[b]) { + return 1; + } + + if (!tagSet[a]) { + return 0; + } // then sort by #of parent tags (most-specific tags first) + + + if (tagSet[a].lineage.length > tagSet[b].lineage.length) { + return 1; + } + + if (tagSet[a].isA.length > tagSet[b].isA.length) { + return -1; + } + + return 0; + }); + return tags; + }; + + var _bestTag = rankTags$1; + const rankTags = _bestTag; + const jsonDefault = { + text: true, + tags: true, + implicit: true, + whitespace: true, + clean: false, + id: false, + index: false, + offset: false, + bestTag: false + }; + /** return various metadata for this term */ - if (options.whitespace) { - result.pre = this.pre; - result.post = this.post; - } + _05Json$1.json = function (options, world) { + options = options || {}; + options = Object.assign({}, jsonDefault, options); + let result = {}; // default on + + if (options.text) { + result.text = this.text; + } - if (options.bestTag) { - result.bestTag = _bestTag(this, world)[0]; - } + if (options.normal) { + result.normal = this.clean; + } - return result; - }; + if (options.tags) { + result.tags = Object.keys(this.tags); + } // default off - var _05Json$1 = { - json: json$1 - }; - var methods$8 = Object.assign({}, _01Case, _02Punctuation$1, _03Misc, _04Text, _05Json$1); - function isClientSide() { - return typeof window !== 'undefined' && window.document; - } - /** add spaces at the end */ + if (options.clean) { + result.clean = this.clean; + } + if (options.id || options.offset) { + result.id = this.id; + } - var padEnd = function padEnd(str, width) { - str = str.toString(); + if (options.implicit && this.implicit !== null) { + result.implicit = this.implicit; + } - while (str.length < width) { - str += ' '; - } + if (options.whitespace) { + result.pre = this.pre; + result.post = this.post; + } - return str; - }; - /** output for verbose-mode */ + if (options.bestTag) { + result.bestTag = rankTags(this, world)[0]; + } + return result; + }; - var logTag = function logTag(t, tag, reason) { - if (isClientSide()) { - console.log('%c' + padEnd(t.clean, 3) + ' + ' + tag + ' ', 'color: #6accb2;'); - return; - } //server-side + var methods$d = Object.assign({}, _01Case, _02Punctuation$1, _03Misc, _04Text, _05Json$1); + var tag = {}; + var fns$3 = {}; + function isClientSide() { + return typeof window !== 'undefined' && window.document; + } + /** add spaces at the end */ - var log = '\x1b[33m' + padEnd(t.clean, 15) + '\x1b[0m + \x1b[32m' + tag + '\x1b[0m '; - if (reason) { - log = padEnd(log, 35) + ' ' + reason + ''; - } + const padEnd = function (str, width) { + str = str.toString(); - console.log(log); - }; - /** output for verbose mode */ + while (str.length < width) { + str += ' '; + } + return str; + }; + /** output for verbose-mode */ - var logUntag = function logUntag(t, tag, reason) { - if (isClientSide()) { - console.log('%c' + padEnd(t.clean, 3) + ' - ' + tag + ' ', 'color: #AB5850;'); - return; - } //server-side + fns$3.logTag = function (t, tag, reason) { + if (isClientSide()) { + console.log('%c' + padEnd(t.clean, 3) + ' + ' + tag + ' ', 'color: #6accb2;'); + return; + } //server-side - var log = '\x1b[33m' + padEnd(t.clean, 3) + ' \x1b[31m - #' + tag + '\x1b[0m '; - if (reason) { - log = padEnd(log, 35) + ' ' + reason; - } + let log = '\x1b[33m' + padEnd(t.clean, 15) + '\x1b[0m + \x1b[32m' + tag + '\x1b[0m '; - console.log(log); - }; + if (reason) { + log = padEnd(log, 35) + ' ' + reason + ''; + } - var isArray$3 = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; - }; + console.log(log); + }; + /** output for verbose mode */ - var titleCase$4 = function titleCase(str) { - return str.charAt(0).toUpperCase() + str.substr(1); - }; - var fns$1 = { - logTag: logTag, - logUntag: logUntag, - isArray: isArray$3, - titleCase: titleCase$4 - }; - /** add a tag, and its descendents, to a term */ + fns$3.logUntag = function (t, tag, reason) { + if (isClientSide()) { + console.log('%c' + padEnd(t.clean, 3) + ' - ' + tag + ' ', 'color: #AB5850;'); + return; + } //server-side - var addTag = function addTag(t, tag, reason, world) { - var tagset = world.tags; //support '.' or '-' notation for skipping the tag - if (tag === '' || tag === '.' || tag === '-') { - return; - } + let log = '\x1b[33m' + padEnd(t.clean, 3) + ' \x1b[31m - #' + tag + '\x1b[0m '; - if (tag[0] === '#') { - tag = tag.replace(/^#/, ''); - } + if (reason) { + log = padEnd(log, 35) + ' ' + reason; + } - tag = fns$1.titleCase(tag); //if we already got this one + console.log(log); + }; - if (t.tags[tag] === true) { - return; - } // log it? + fns$3.isArray = function (arr) { + return Object.prototype.toString.call(arr) === '[object Array]'; + }; + fns$3.titleCase = str => { + return str.charAt(0).toUpperCase() + str.substr(1); + }; - var isVerbose = world.isVerbose(); + const fns$2 = fns$3; + /** add a tag, and its descendents, to a term */ - if (isVerbose === true) { - fns$1.logTag(t, tag, reason); - } //add tag + const addTag = function (t, tag, reason, world) { + let tagset = world.tags; //support '.' or '-' notation for skipping the tag + if (tag === '' || tag === '.' || tag === '-') { + return; + } - t.tags[tag] = true; //whee! - //check tagset for any additional things to do... + if (tag[0] === '#') { + tag = tag.replace(/^#/, ''); + } - if (tagset.hasOwnProperty(tag) === true) { - //add parent Tags - tagset[tag].isA.forEach(function (down) { - t.tags[down] = true; + tag = fns$2.titleCase(tag); //if we already got this one - if (isVerbose === true) { - fns$1.logTag(t, '→ ' + down); - } - }); //remove any contrary tags + if (t.tags[tag] === true) { + return; + } // log it? - t.unTag(tagset[tag].notA, '←', world); - } - }; - /** support an array of tags */ + const isVerbose = world.isVerbose(); - var addTags = function addTags(term, tags, reason, world) { - if (typeof tags !== 'string') { - for (var i = 0; i < tags.length; i++) { - addTag(term, tags[i], reason, world); - } // tags.forEach(tag => addTag(term, tag, reason, world)) + if (isVerbose === true) { + fns$2.logTag(t, tag, reason); + } //add tag - } else { - addTag(term, tags, reason, world); - } - }; - var add = addTags; - var lowerCase = /^[a-z]/; + t.tags[tag] = true; //whee! + //check tagset for any additional things to do... - var titleCase$3 = function titleCase(str) { - return str.charAt(0).toUpperCase() + str.substr(1); - }; - /** remove this tag, and its descentents from the term */ + if (tagset.hasOwnProperty(tag) === true) { + //add parent Tags + tagset[tag].isA.forEach(down => { + t.tags[down] = true; + if (isVerbose === true) { + fns$2.logTag(t, '→ ' + down); + } + }); //remove any contrary tags - var unTag$1 = function unTag(t, tag, reason, world) { - var isVerbose = world.isVerbose(); //support '*' for removing all tags + t.unTag(tagset[tag].notA, '←', world); + } + }; + /** support an array of tags */ - if (tag === '*') { - t.tags = {}; - return t; - } - tag = tag.replace(/^#/, ''); + const addTags = function (term, tags, reason, world) { + if (typeof tags !== 'string') { + for (let i = 0; i < tags.length; i++) { + addTag(term, tags[i], reason, world); + } // tags.forEach(tag => addTag(term, tag, reason, world)) - if (lowerCase.test(tag) === true) { - tag = titleCase$3(tag); - } // remove the tag + } else { + addTag(term, tags, reason, world); + } + }; + var add$1 = addTags; + const fns$1 = fns$3; + const lowerCase = /^[a-z]/; - if (t.tags[tag] === true) { - delete t.tags[tag]; //log in verbose-mode + const titleCase$3 = str => { + return str.charAt(0).toUpperCase() + str.substr(1); + }; + /** remove this tag, and its descentents from the term */ - if (isVerbose === true) { - fns$1.logUntag(t, tag, reason); - } - } //delete downstream tags too + const unTag$1 = function (t, tag, reason, world) { + const isVerbose = world.isVerbose(); //support '*' for removing all tags - var tagset = world.tags; + if (tag === '*') { + t.tags = {}; + return t; + } - if (tagset[tag]) { - var lineage = tagset[tag].lineage; + tag = tag.replace(/^#/, ''); - for (var i = 0; i < lineage.length; i++) { - if (t.tags[lineage[i]] === true) { - delete t.tags[lineage[i]]; + if (lowerCase.test(tag) === true) { + tag = titleCase$3(tag); + } // remove the tag - if (isVerbose === true) { - fns$1.logUntag(t, ' - ' + lineage[i]); - } - } - } - } - return t; - }; //handle an array of tags + if (t.tags[tag] === true) { + delete t.tags[tag]; //log in verbose-mode + if (isVerbose === true) { + fns$1.logUntag(t, tag, reason); + } + } //delete downstream tags too - var untagAll = function untagAll(term, tags, reason, world) { - if (typeof tags !== 'string' && tags) { - for (var i = 0; i < tags.length; i++) { - unTag$1(term, tags[i], reason, world); - } - return; - } + const tagset = world.tags; - unTag$1(term, tags, reason, world); - }; + if (tagset[tag]) { + let lineage = tagset[tag].lineage; - var unTag_1$1 = untagAll; + for (let i = 0; i < lineage.length; i++) { + if (t.tags[lineage[i]] === true) { + delete t.tags[lineage[i]]; - var canBe$2 = function canBe(term, tag, world) { - var tagset = world.tags; // cleanup tag + if (isVerbose === true) { + fns$1.logUntag(t, ' - ' + lineage[i]); + } + } + } + } - if (tag[0] === '#') { - tag = tag.replace(/^#/, ''); - } //fail-fast + return t; + }; //handle an array of tags - if (tagset[tag] === undefined) { - return true; - } //loop through tag's contradictory tags + const untagAll = function (term, tags, reason, world) { + if (typeof tags !== 'string' && tags) { + for (let i = 0; i < tags.length; i++) { + unTag$1(term, tags[i], reason, world); + } + return; + } - var enemies = tagset[tag].notA || []; + unTag$1(term, tags, reason, world); + }; - for (var i = 0; i < enemies.length; i++) { - if (term.tags[enemies[i]] === true) { - return false; - } - } + var unTag_1 = untagAll; - if (tagset[tag].isA !== undefined) { - return canBe(term, tagset[tag].isA, world); //recursive - } + const canBe$1 = function (term, tag, world) { + const tagset = world.tags; // cleanup tag - return true; - }; + if (tag[0] === '#') { + tag = tag.replace(/^#/, ''); + } //fail-fast - var canBe_1$1 = canBe$2; - /** add a tag or tags, and their descendents to this term - * @param {string | string[]} tags - a tag or tags - * @param {string?} [reason] a clue for debugging - */ - var tag_1 = function tag_1(tags, reason, world) { - add(this, tags, reason, world); - return this; - }; - /** only tag this term if it's consistent with it's current tags */ + if (tagset[tag] === undefined) { + return true; + } //loop through tag's contradictory tags + + let enemies = tagset[tag].notA || []; - var tagSafe$1 = function tagSafe(tags, reason, world) { - if (canBe_1$1(this, tags, world)) { - add(this, tags, reason, world); - } + for (let i = 0; i < enemies.length; i++) { + if (term.tags[enemies[i]] === true) { + return false; + } + } - return this; - }; - /** remove a tag or tags, and their descendents from this term - * @param {string | string[]} tags - a tag or tags - * @param {string?} [reason] a clue for debugging - */ + if (tagset[tag].isA !== undefined) { + return canBe$1(term, tagset[tag].isA, world); //recursive + } + + return true; + }; + + var canBe_1 = canBe$1; + const add = add$1; + const unTag = unTag_1; + const canBe = canBe_1; + /** add a tag or tags, and their descendents to this term + * @param {string | string[]} tags - a tag or tags + * @param {string?} [reason] a clue for debugging + */ + + tag.tag = function (tags, reason, world) { + add(this, tags, reason, world); + return this; + }; + /** only tag this term if it's consistent with it's current tags */ + + + tag.tagSafe = function (tags, reason, world) { + if (canBe(this, tags, world)) { + add(this, tags, reason, world); + } + + return this; + }; + /** remove a tag or tags, and their descendents from this term + * @param {string | string[]} tags - a tag or tags + * @param {string?} [reason] a clue for debugging + */ - var unTag_1 = function unTag_1(tags, reason, world) { - unTag_1$1(this, tags, reason, world); - return this; - }; - /** is this tag consistent with the word's current tags? - * @param {string | string[]} tags - a tag or tags - * @returns {boolean} - */ - + tag.unTag = function (tags, reason, world) { + unTag(this, tags, reason, world); + return this; + }; + /** is this tag consistent with the word's current tags? + * @param {string | string[]} tags - a tag or tags + * @returns {boolean} + */ + + + tag.canBe = function (tags, world) { + return canBe(this, tags, world); + }; + + const makeId$1 = _id; + const parseTerm = parse$3; + const methods$c = methods$d; + const tagMethods = tag; + + class Term$3 { + constructor() { + let text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + text = String(text); + let obj = parseTerm(text); // the various forms of our text + + this.text = obj.text || ''; + this.clean = obj.clean; + this.reduced = obj.reduced; + this.root = null; + this.implicit = null; + this.pre = obj.pre || ''; + this.post = obj.post || ''; + this.tags = {}; + this.prev = null; + this.next = null; + this.id = makeId$1(obj.clean); + this.isA = 'Term'; // easier than .constructor... + // support alternative matches + + if (obj.alias) { + this.alias = obj.alias; + } + } + /** set the text of the Term to something else*/ + + + set(str) { + let obj = parseTerm(str); + this.text = obj.text; + this.clean = obj.clean; + this.reduced = obj.reduced; + this.root = null; + this.implicit = null; + return this; + } + + } + /** create a deep-copy of this term */ + + + Term$3.prototype.clone = function () { + let term = new Term$3(this.text); + term.pre = this.pre; + term.post = this.post; + term.clean = this.clean; + term.reduced = this.reduced; + term.root = this.root; + term.implicit = this.implicit; + term.tags = Object.assign({}, this.tags); //use the old id, so it can be matched with .match(doc) + // term.id = this.id + + return term; + }; + + Object.assign(Term$3.prototype, methods$c); + Object.assign(Term$3.prototype, tagMethods); + var Term_1 = Term$3; + var _01Utils$1 = {}; + /** return a flat array of Term objects */ + + _01Utils$1.terms = function (n) { + if (this.length === 0) { + return []; + } // use cache, if it exists + + + if (this.cache.terms) { + if (n !== undefined) { + return this.cache.terms[n]; + } + + return this.cache.terms; + } + + let terms = [this.pool.get(this.start)]; + + for (let i = 0; i < this.length - 1; i += 1) { + let id = terms[terms.length - 1].next; + + if (id === null) { + // throw new Error('linked-list broken') + console.error("Compromise error: Linked list broken in phrase '" + this.start + "'"); + break; + } + + let term = this.pool.get(id); + terms.push(term); //return this one? + + if (n !== undefined && n === i) { + return terms[n]; + } + } - var canBe_1 = function canBe_1(tags, world) { - return canBe_1$1(this, tags, world); - }; - - var tag$1 = { - tag: tag_1, - tagSafe: tagSafe$1, - unTag: unTag_1, - canBe: canBe_1 - }; - - var Term = /*#__PURE__*/function () { - function Term() { - var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - - _classCallCheck(this, Term); - - text = String(text); - var obj = parse$2(text); // the various forms of our text - - this.text = obj.text || ''; - this.clean = obj.clean; - this.reduced = obj.reduced; - this.root = null; - this.implicit = null; - this.pre = obj.pre || ''; - this.post = obj.post || ''; - this.tags = {}; - this.prev = null; - this.next = null; - this.id = _id(obj.clean); - this.isA = 'Term'; // easier than .constructor... - // support alternative matches - - if (obj.alias) { - this.alias = obj.alias; - } - } - /** set the text of the Term to something else*/ - - - _createClass(Term, [{ - key: "set", - value: function set(str) { - var obj = parse$2(str); - this.text = obj.text; - this.clean = obj.clean; - return this; - } - }]); - - return Term; - }(); - /** create a deep-copy of this term */ - - - Term.prototype.clone = function () { - var term = new Term(this.text); - term.pre = this.pre; - term.post = this.post; - term.clean = this.clean; - term.reduced = this.reduced; - term.root = this.root; - term.implicit = this.implicit; - term.tags = Object.assign({}, this.tags); //use the old id, so it can be matched with .match(doc) - // term.id = this.id - - return term; - }; - - Object.assign(Term.prototype, methods$8); - Object.assign(Term.prototype, tag$1); - var Term_1 = Term; - /** return a flat array of Term objects */ - - var terms = function terms(n) { - if (this.length === 0) { - return []; - } // use cache, if it exists - - - if (this.cache.terms) { - if (n !== undefined) { - return this.cache.terms[n]; - } - - return this.cache.terms; - } + if (n === undefined) { + this.cache.terms = terms; + } - var terms = [this.pool.get(this.start)]; - - for (var i = 0; i < this.length - 1; i += 1) { - var id = terms[terms.length - 1].next; - - if (id === null) { - // throw new Error('linked-list broken') - console.error("Compromise error: Linked list broken in phrase '" + this.start + "'"); - break; - } + if (n !== undefined) { + return terms[n]; + } - var term = this.pool.get(id); - terms.push(term); //return this one? + return terms; + }; + /** return a shallow or deep copy of this phrase */ - if (n !== undefined && n === i) { - return terms[n]; - } - } - if (n === undefined) { - this.cache.terms = terms; - } + _01Utils$1.clone = function (isShallow) { + if (isShallow) { + let p = this.buildFrom(this.start, this.length); + p.cache = this.cache; + return p; + } //how do we clone part of the pool? - if (n !== undefined) { - return terms[n]; - } - return terms; - }; - /** return a shallow or deep copy of this phrase */ + let terms = this.terms(); + let newTerms = terms.map(t => t.clone()); // console.log(newTerms) + //connect these new ids up + newTerms.forEach((t, i) => { + //add it to the pool.. + this.pool.add(t); - var clone$1 = function clone(isShallow) { - var _this = this; + if (newTerms[i + 1]) { + t.next = newTerms[i + 1].id; + } - if (isShallow) { - var p = this.buildFrom(this.start, this.length); - p.cache = this.cache; - return p; - } //how do we clone part of the pool? + if (newTerms[i - 1]) { + t.prev = newTerms[i - 1].id; + } + }); + return this.buildFrom(newTerms[0].id, newTerms.length); + }; + /** return last term object */ - var terms = this.terms(); - var newTerms = terms.map(function (t) { - return t.clone(); - }); // console.log(newTerms) - //connect these new ids up + _01Utils$1.lastTerm = function () { + let terms = this.terms(); + return terms[terms.length - 1]; + }; + /** quick lookup for a term id */ - newTerms.forEach(function (t, i) { - //add it to the pool.. - _this.pool.add(t); - if (newTerms[i + 1]) { - t.next = newTerms[i + 1].id; - } + _01Utils$1.hasId = function (wantId) { + if (this.length === 0 || !wantId) { + return false; + } - if (newTerms[i - 1]) { - t.prev = newTerms[i - 1].id; - } - }); - return this.buildFrom(newTerms[0].id, newTerms.length); - }; - /** return last term object */ + if (this.start === wantId) { + return true; + } // use cache, if available - var lastTerm = function lastTerm() { - var terms = this.terms(); - return terms[terms.length - 1]; - }; - /** quick lookup for a term id */ + if (this.cache.terms) { + let terms = this.cache.terms; + + for (let i = 0; i < terms.length; i++) { + if (terms[i].id === wantId) { + return true; + } + } + + return false; + } // otherwise, go through each term + + + let lastId = this.start; + + for (let i = 0; i < this.length - 1; i += 1) { + let term = this.pool.get(lastId); + + if (term === undefined) { + console.error("Compromise error: Linked list broken. Missing term '".concat(lastId, "' in phrase '").concat(this.start, "'\n")); // throw new Error('linked List error') + + return false; + } + + if (term.next === wantId) { + return true; + } + + lastId = term.next; + } + + return false; + }; + /** how many seperate, non-empty words is it? */ + + + _01Utils$1.wordCount = function () { + return this.terms().filter(t => t.text !== '').length; + }; + /** get the full-sentence this phrase belongs to */ + + + _01Utils$1.fullSentence = function () { + let t = this.terms(0); //find first term in sentence + + while (t.prev) { + t = this.pool.get(t.prev); + } + + let start = t.id; + let len = 1; //go to end of sentence + + while (t.next) { + t = this.pool.get(t.next); + len += 1; + } + + return this.buildFrom(start, len); + }; + + var _02Text = {}; + + const trimEnd = function (str) { + return str.replace(/ +$/, ''); + }; + /** produce output in the given format */ + + + _02Text.text = function () { + let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + let isFirst = arguments.length > 1 ? arguments[1] : undefined; + let isLast = arguments.length > 2 ? arguments[2] : undefined; + + if (typeof options === 'string') { + if (options === 'normal') { + options = { + whitespace: true, + unicode: true, + lowercase: true, + punctuation: true, + acronyms: true, + abbreviations: true, + implicit: true, + normal: true + }; + } else if (options === 'clean') { + options = { + titlecase: false, + lowercase: true, + punctuation: true, + whitespace: true, + unicode: true, + implicit: true, + normal: true + }; + } else if (options === 'reduced') { + options = { + punctuation: false, + //Hmm: is this reversed? + titlecase: false, + lowercase: true, + whitespace: true, + unicode: true, + implicit: true, + reduced: true + }; + } else if (options === 'implicit') { + options = { + punctuation: true, + implicit: true, + whitespace: true, + trim: true + }; + } else if (options === 'root') { + options = { + titlecase: false, + lowercase: true, + punctuation: true, + whitespace: true, + unicode: true, + implicit: true, + root: true + }; + } else { + options = {}; + } + } + + let terms = this.terms(); //this this phrase a complete sentence? + + let isFull = false; + + if (terms[0] && terms[0].prev === null && terms[terms.length - 1].next === null) { + isFull = true; + } + + let text = terms.reduce((str, t, i) => { + // don't output intro space for a contraction-match i'm good => "[am] good" + if (i === 0 && t.text === '' && t.implicit !== null && !options.implicit) { + return str; + } + + options.last = isLast && i === terms.length - 1; + let showPre = true; + let showPost = true; + + if (isFull === false) { + // dont show beginning whitespace + if (i === 0 && isFirst) { + showPre = false; + } // dont show end-whitespace + + + if (i === terms.length - 1 && isLast) { + showPost = false; + } + } + + let txt = t.textOut(options, showPre, showPost); // console.log(terms) + // if (options.titlecase && i === 0) { + // txt = titleCase(txt) + // } + + return str + txt; + }, ''); //full-phrases show punctuation, but not whitespace + + if (isFull === true && isLast) { + text = trimEnd(text); + } + + if (options.trim === true) { + text = text.trim(); + } + + return text; + }; + + var _03Change = {}; + /** remove start and end whitespace */ + + _03Change.trim = function () { + let terms = this.terms(); + + if (terms.length > 0) { + //trim starting + terms[0].pre = terms[0].pre.replace(/^\s+/, ''); //trim ending + + let lastTerm = terms[terms.length - 1]; + lastTerm.post = lastTerm.post.replace(/\s+$/, ''); + } + + return this; + }; + + var _04Insert = {}; + const endOfSentence = /[.?!]\s*$/; // replacing a 'word.' with a 'word!' + + const combinePost = function (before, after) { + //only transfer the whitespace + if (endOfSentence.test(after)) { + let whitespace = before.match(/\s*$/); + return after + whitespace; + } + + return before; + }; //add whitespace to the start of the second bit + + const addWhitespace$1 = function (beforeTerms, newTerms) { + // add any existing pre-whitespace to beginning + newTerms[0].pre = beforeTerms[0].pre; + let lastTerm = beforeTerms[beforeTerms.length - 1]; //add any existing punctuation to end of our new terms - var hasId = function hasId(wantId) { - if (this.length === 0 || !wantId) { - return false; - } + let newTerm = newTerms[newTerms.length - 1]; + newTerm.post = combinePost(lastTerm.post, newTerm.post); // remove existing punctuation - if (this.start === wantId) { - return true; - } // use cache, if available + lastTerm.post = ''; //before ←[space] - after + if (lastTerm.post === '') { + lastTerm.post += ' '; + } + }; //insert this segment into the linked-list - if (this.cache.terms) { - var _terms = this.cache.terms; - - for (var i = 0; i < _terms.length; i++) { - if (_terms[i].id === wantId) { - return true; - } - } - - return false; - } // otherwise, go through each term - - - var lastId = this.start; - - for (var _i = 0; _i < this.length - 1; _i += 1) { - var term = this.pool.get(lastId); - - if (term === undefined) { - console.error("Compromise error: Linked list broken. Missing term '".concat(lastId, "' in phrase '").concat(this.start, "'\n")); // throw new Error('linked List error') - - return false; - } - - if (term.next === wantId) { - return true; - } - - lastId = term.next; - } - - return false; - }; - /** how many seperate, non-empty words is it? */ - - - var wordCount = function wordCount() { - return this.terms().filter(function (t) { - return t.text !== ''; - }).length; - }; - /** get the full-sentence this phrase belongs to */ - - - var fullSentence = function fullSentence() { - var t = this.terms(0); //find first term in sentence - - while (t.prev) { - t = this.pool.get(t.prev); - } - - var start = t.id; - var len = 1; //go to end of sentence - - while (t.next) { - t = this.pool.get(t.next); - len += 1; - } - - return this.buildFrom(start, len); - }; - - var _01Utils$1 = { - terms: terms, - clone: clone$1, - lastTerm: lastTerm, - hasId: hasId, - wordCount: wordCount, - fullSentence: fullSentence - }; - - var trimEnd = function trimEnd(str) { - return str.replace(/ +$/, ''); - }; - /** produce output in the given format */ - - - var text$1 = function text() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var isFirst = arguments.length > 1 ? arguments[1] : undefined; - var isLast = arguments.length > 2 ? arguments[2] : undefined; - - if (typeof options === 'string') { - if (options === 'normal') { - options = { - whitespace: true, - unicode: true, - lowercase: true, - punctuation: true, - acronyms: true, - abbreviations: true, - implicit: true, - normal: true - }; - } else if (options === 'clean') { - options = { - titlecase: false, - lowercase: true, - punctuation: true, - whitespace: true, - unicode: true, - implicit: true, - normal: true - }; - } else if (options === 'reduced') { - options = { - punctuation: false, - //Hmm: is this reversed? - titlecase: false, - lowercase: true, - whitespace: true, - unicode: true, - implicit: true, - reduced: true - }; - } else if (options === 'implicit') { - options = { - punctuation: true, - implicit: true, - whitespace: true, - trim: true - }; - } else if (options === 'root') { - options = { - titlecase: false, - lowercase: true, - punctuation: true, - whitespace: true, - unicode: true, - implicit: true, - root: true - }; - } else { - options = {}; - } - } - - var terms = this.terms(); //this this phrase a complete sentence? - - var isFull = false; - - if (terms[0] && terms[0].prev === null && terms[terms.length - 1].next === null) { - isFull = true; - } - - var text = terms.reduce(function (str, t, i) { - // don't output intro space for a contraction-match i'm good => "[am] good" - if (i === 0 && t.text === '' && t.implicit !== null && !options.implicit) { - return str; - } - - options.last = isLast && i === terms.length - 1; - var showPre = true; - var showPost = true; - - if (isFull === false) { - // dont show beginning whitespace - if (i === 0 && isFirst) { - showPre = false; - } // dont show end-whitespace - - - if (i === terms.length - 1 && isLast) { - showPost = false; - } - } - - var txt = t.textOut(options, showPre, showPost); // console.log(terms) - // if (options.titlecase && i === 0) { - // txt = titleCase(txt) - // } - - return str + txt; - }, ''); //full-phrases show punctuation, but not whitespace - - if (isFull === true && isLast) { - text = trimEnd(text); - } - - if (options.trim === true) { - text = text.trim(); - } - - return text; - }; - - var _02Text = { - text: text$1 - }; - /** remove start and end whitespace */ - - var trim = function trim() { - var terms = this.terms(); - - if (terms.length > 0) { - //trim starting - terms[0].pre = terms[0].pre.replace(/^\s+/, ''); //trim ending - - var lastTerm = terms[terms.length - 1]; - lastTerm.post = lastTerm.post.replace(/\s+$/, ''); - } - - return this; - }; - - var _03Change = { - trim: trim - }; - var endOfSentence = /[.?!]\s*$/; // replacing a 'word.' with a 'word!' - - var combinePost = function combinePost(before, after) { - //only transfer the whitespace - if (endOfSentence.test(after)) { - var whitespace = before.match(/\s*$/); - return after + whitespace; - } - - return before; - }; //add whitespace to the start of the second bit + const stitchIn$1 = function (beforeTerms, newTerms, pool) { + let lastBefore = beforeTerms[beforeTerms.length - 1]; + let lastNew = newTerms[newTerms.length - 1]; + let afterId = lastBefore.next; //connect ours in (main → newPhrase) - var addWhitespace$1 = function addWhitespace(beforeTerms, newTerms) { - // add any existing pre-whitespace to beginning - newTerms[0].pre = beforeTerms[0].pre; - var lastTerm = beforeTerms[beforeTerms.length - 1]; //add any existing punctuation to end of our new terms + lastBefore.next = newTerms[0].id; //stich the end in (newPhrase → after) - var newTerm = newTerms[newTerms.length - 1]; - newTerm.post = combinePost(lastTerm.post, newTerm.post); // remove existing punctuation + lastNew.next = afterId; //do it backwards, too - lastTerm.post = ''; //before ←[space] - after + if (afterId) { + // newPhrase ← after + let afterTerm = pool.get(afterId); + afterTerm.prev = lastNew.id; + } // before ← newPhrase - if (lastTerm.post === '') { - lastTerm.post += ' '; - } - }; //insert this segment into the linked-list + let beforeId = beforeTerms[0].id; - var stitchIn$1 = function stitchIn(beforeTerms, newTerms, pool) { - var lastBefore = beforeTerms[beforeTerms.length - 1]; - var lastNew = newTerms[newTerms.length - 1]; - var afterId = lastBefore.next; //connect ours in (main → newPhrase) + if (beforeId) { + let newTerm = newTerms[0]; + newTerm.prev = beforeId; + } + }; // avoid stretching a phrase twice. - lastBefore.next = newTerms[0].id; //stich the end in (newPhrase → after) - lastNew.next = afterId; //do it backwards, too + const unique$6 = function (list) { + return list.filter((o, i) => { + return list.indexOf(o) === i; + }); + }; //append one phrase onto another. - if (afterId) { - // newPhrase ← after - var afterTerm = pool.get(afterId); - afterTerm.prev = lastNew.id; - } // before ← newPhrase + const appendPhrase = function (before, newPhrase, doc) { + let beforeTerms = before.terms(); + let newTerms = newPhrase.terms(); //spruce-up the whitespace issues - var beforeId = beforeTerms[0].id; + addWhitespace$1(beforeTerms, newTerms); //insert this segment into the linked-list - if (beforeId) { - var newTerm = newTerms[0]; - newTerm.prev = beforeId; - } - }; // avoid stretching a phrase twice. + stitchIn$1(beforeTerms, newTerms, before.pool); // stretch! + // make each effected phrase longer + let toStretch = [before]; + let hasId = before.start; + let docs = [doc]; + docs = docs.concat(doc.parents()); // find them all! - var unique$5 = function unique(list) { - return list.filter(function (o, i) { - return list.indexOf(o) === i; - }); - }; //append one phrase onto another. + docs.forEach(parent => { + // only the phrases that should change + let shouldChange = parent.list.filter(p => { + return p.hasId(hasId); + }); + toStretch = toStretch.concat(shouldChange); + }); // don't double-count a phrase + toStretch = unique$6(toStretch); + toStretch.forEach(p => { + p.length += newPhrase.length; + }); + before.cache = {}; + return before; + }; - var appendPhrase = function appendPhrase(before, newPhrase, doc) { - var beforeTerms = before.terms(); - var newTerms = newPhrase.terms(); //spruce-up the whitespace issues + var append$1 = appendPhrase; + const hasSpace = / /; //a new space needs to be added, either on the new phrase, or the old one + // '[new] [◻old]' -or- '[old] [◻new] [old]' - addWhitespace$1(beforeTerms, newTerms); //insert this segment into the linked-list + const addWhitespace = function (newTerms) { + //add a space before our new text? + // add a space after our text + let lastTerm = newTerms[newTerms.length - 1]; - stitchIn$1(beforeTerms, newTerms, before.pool); // stretch! - // make each effected phrase longer + if (hasSpace.test(lastTerm.post) === false) { + lastTerm.post += ' '; + } - var toStretch = [before]; - var hasId = before.start; - var docs = [doc]; - docs = docs.concat(doc.parents()); // find them all! + return; + }; //insert this segment into the linked-list - docs.forEach(function (parent) { - // only the phrases that should change - var shouldChange = parent.list.filter(function (p) { - return p.hasId(hasId); - }); - toStretch = toStretch.concat(shouldChange); - }); // don't double-count a phrase - toStretch = unique$5(toStretch); - toStretch.forEach(function (p) { - p.length += newPhrase.length; - }); - before.cache = {}; - return before; - }; + const stitchIn = function (main, newPhrase, newTerms) { + // [newPhrase] → [main] + let lastTerm = newTerms[newTerms.length - 1]; + lastTerm.next = main.start; // [before] → [main] - var append = appendPhrase; - var hasSpace = / /; //a new space needs to be added, either on the new phrase, or the old one - // '[new] [◻old]' -or- '[old] [◻new] [old]' + let pool = main.pool; + let start = pool.get(main.start); - var addWhitespace = function addWhitespace(newTerms) { - //add a space before our new text? - // add a space after our text - var lastTerm = newTerms[newTerms.length - 1]; + if (start.prev) { + let before = pool.get(start.prev); + before.next = newPhrase.start; + } //do it backwards, too + // before ← newPhrase - if (hasSpace.test(lastTerm.post) === false) { - lastTerm.post += ' '; - } - return; - }; //insert this segment into the linked-list + newTerms[0].prev = main.terms(0).prev; // newPhrase ← main + main.terms(0).prev = lastTerm.id; + }; - var stitchIn = function stitchIn(main, newPhrase, newTerms) { - // [newPhrase] → [main] - var lastTerm = newTerms[newTerms.length - 1]; - lastTerm.next = main.start; // [before] → [main] + const unique$5 = function (list) { + return list.filter((o, i) => { + return list.indexOf(o) === i; + }); + }; //append one phrase onto another - var pool = main.pool; - var start = pool.get(main.start); - if (start.prev) { - var before = pool.get(start.prev); - before.next = newPhrase.start; - } //do it backwards, too - // before ← newPhrase + const joinPhrase = function (original, newPhrase, doc) { + const starterId = original.start; + let newTerms = newPhrase.terms(); //spruce-up the whitespace issues + addWhitespace(newTerms); //insert this segment into the linked-list - newTerms[0].prev = main.terms(0).prev; // newPhrase ← main + stitchIn(original, newPhrase, newTerms); //increase the length of our phrases - main.terms(0).prev = lastTerm.id; - }; + let toStretch = [original]; + let docs = [doc]; + docs = docs.concat(doc.parents()); + docs.forEach(d => { + // only the phrases that should change + let shouldChange = d.list.filter(p => { + return p.hasId(starterId) || p.hasId(newPhrase.start); + }); + toStretch = toStretch.concat(shouldChange); + }); // don't double-count - var unique$4 = function unique(list) { - return list.filter(function (o, i) { - return list.indexOf(o) === i; - }); - }; //append one phrase onto another + toStretch = unique$5(toStretch); // stretch these phrases + toStretch.forEach(p => { + p.length += newPhrase.length; // change the start too, if necessary - var joinPhrase = function joinPhrase(original, newPhrase, doc) { - var starterId = original.start; - var newTerms = newPhrase.terms(); //spruce-up the whitespace issues + if (p.start === starterId) { + p.start = newPhrase.start; + } - addWhitespace(newTerms); //insert this segment into the linked-list + p.cache = {}; + }); + return original; + }; - stitchIn(original, newPhrase, newTerms); //increase the length of our phrases + var prepend$1 = joinPhrase; - var toStretch = [original]; - var docs = [doc]; - docs = docs.concat(doc.parents()); - docs.forEach(function (d) { - // only the phrases that should change - var shouldChange = d.list.filter(function (p) { - return p.hasId(starterId) || p.hasId(newPhrase.start); - }); - toStretch = toStretch.concat(shouldChange); - }); // don't double-count + const shrinkAll = function (doc, id, deleteLength, after) { + let arr = doc.parents(); + arr.push(doc); + arr.forEach(d => { + //find our phrase to shrink + let phrase = d.list.find(p => p.hasId(id)); - toStretch = unique$4(toStretch); // stretch these phrases + if (!phrase) { + return; + } - toStretch.forEach(function (p) { - p.length += newPhrase.length; // change the start too, if necessary + phrase.length -= deleteLength; // does it start with this soon-removed word? - if (p.start === starterId) { - p.start = newPhrase.start; - } + if (phrase.start === id) { + phrase.start = after.id; + } - p.cache = {}; - }); - return original; - }; + phrase.cache = {}; + }); // cleanup empty phrase objects - var prepend = joinPhrase; //recursively decrease the length of all the parent phrases + doc.list = doc.list.filter(p => { + if (!p.start || !p.length) { + return false; + } - var shrinkAll = function shrinkAll(doc, id, deleteLength, after) { - var arr = doc.parents(); - arr.push(doc); - arr.forEach(function (d) { - //find our phrase to shrink - var phrase = d.list.find(function (p) { - return p.hasId(id); - }); + return true; + }); + }; + /** wrap the linked-list around these terms + * so they don't appear any more + */ - if (!phrase) { - return; - } - phrase.length -= deleteLength; // does it start with this soon-removed word? + const deletePhrase$1 = function (phrase, doc) { + let pool = doc.pool(); + let terms = phrase.terms(); //grab both sides of the chain, - if (phrase.start === id) { - phrase.start = after.id; - } + let prev = pool.get(terms[0].prev) || {}; + let after = pool.get(terms[terms.length - 1].next) || {}; - phrase.cache = {}; - }); // cleanup empty phrase objects + if (terms[0].implicit && prev.implicit) { + prev.set(prev.implicit); + prev.post += ' '; + } // //first, change phrase lengths - doc.list = doc.list.filter(function (p) { - if (!p.start || !p.length) { - return false; - } - return true; - }); - }; - /** wrap the linked-list around these terms - * so they don't appear any more - */ + shrinkAll(doc, phrase.start, phrase.length, after); // connect [prev]->[after] + if (prev) { + prev.next = after.id; + } // connect [prev]<-[after] - var deletePhrase = function deletePhrase(phrase, doc) { - var pool = doc.pool(); - var terms = phrase.terms(); //grab both sides of the chain, - var prev = pool.get(terms[0].prev) || {}; - var after = pool.get(terms[terms.length - 1].next) || {}; + if (after) { + after.prev = prev.id; + } // lastly, actually delete the terms from the pool? + // for (let i = 0; i < terms.length; i++) { + // pool.remove(terms[i].id) + // } - if (terms[0].implicit && prev.implicit) { - prev.set(prev.implicit); - prev.post += ' '; - } // //first, change phrase lengths + }; + var _delete = deletePhrase$1; + const append = append$1; + const prepend = prepend$1; + const deletePhrase = _delete; // const tokenize = require('../../01-tokenizer') - shrinkAll(doc, phrase.start, phrase.length, after); // connect [prev]->[after] + /** put this text at the end */ - if (prev) { - prev.next = after.id; - } // connect [prev]<-[after] + _04Insert.append = function (newPhrase, doc) { + append(this, newPhrase, doc); + return this; + }; + /** add this text to the beginning */ - if (after) { - after.prev = prev.id; - } // lastly, actually delete the terms from the pool? - // for (let i = 0; i < terms.length; i++) { - // pool.remove(terms[i].id) - // } + _04Insert.prepend = function (newPhrase, doc) { + prepend(this, newPhrase, doc); + return this; + }; - }; + _04Insert.delete = function (doc) { + deletePhrase(this, doc); + return this; + }; // stich-in newPhrase, stretch 'doc' + parents - var _delete$1 = deletePhrase; - /** put this text at the end */ - var append_1 = function append_1(newPhrase, doc) { - append(this, newPhrase, doc); - return this; - }; - /** add this text to the beginning */ + _04Insert.replace = function (newPhrase, doc) { + //add it do the end + let firstLength = this.length; + append(this, newPhrase, doc); //delete original terms + let tmp = this.buildFrom(this.start, this.length); + tmp.length = firstLength; + deletePhrase(tmp, doc); + }; + /** + * Turn this phrase object into 3 phrase objects + */ - var prepend_1 = function prepend_1(newPhrase, doc) { - prepend(this, newPhrase, doc); - return this; - }; - var _delete = function _delete(doc) { - _delete$1(this, doc); + _04Insert.splitOn = function (p) { + let terms = this.terms(); + let result = { + before: null, + match: null, + after: null + }; + let index = terms.findIndex(t => t.id === p.start); - return this; - }; // stich-in newPhrase, stretch 'doc' + parents + if (index === -1) { + return result; + } //make all three sections into phrase-objects - var replace$1 = function replace(newPhrase, doc) { - //add it do the end - var firstLength = this.length; - append(this, newPhrase, doc); //delete original terms + let start = terms.slice(0, index); - var tmp = this.buildFrom(this.start, this.length); - tmp.length = firstLength; + if (start.length > 0) { + result.before = this.buildFrom(start[0].id, start.length); + } - _delete$1(tmp, doc); - }; - /** - * Turn this phrase object into 3 phrase objects - */ + let match = terms.slice(index, index + p.length); + if (match.length > 0) { + result.match = this.buildFrom(match[0].id, match.length); + } - var splitOn = function splitOn(p) { - var terms = this.terms(); - var result = { - before: null, - match: null, - after: null - }; - var index = terms.findIndex(function (t) { - return t.id === p.start; - }); + let end = terms.slice(index + p.length, terms.length); - if (index === -1) { - return result; - } //make all three sections into phrase-objects + if (end.length > 0) { + result.after = this.buildFrom(end[0].id, end.length, this.pool); + } + return result; + }; - var start = terms.slice(0, index); + var _05Json = {}; + /** return json metadata for this phrase */ - if (start.length > 0) { - result.before = this.buildFrom(start[0].id, start.length); - } + _05Json.json = function () { + let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + let world = arguments.length > 1 ? arguments[1] : undefined; + let res = {}; // text data - var match = terms.slice(index, index + p.length); + if (options.text) { + res.text = this.text(); + } - if (match.length > 0) { - result.match = this.buildFrom(match[0].id, match.length); - } + if (options.normal) { + res.normal = this.text('normal'); + } - var end = terms.slice(index + p.length, terms.length); + if (options.clean) { + res.clean = this.text('clean'); + } - if (end.length > 0) { - result.after = this.buildFrom(end[0].id, end.length, this.pool); - } + if (options.reduced) { + res.reduced = this.text('reduced'); + } - return result; - }; + if (options.implicit) { + res.implicit = this.text('implicit'); + } - var _04Insert = { - append: append_1, - prepend: prepend_1, - "delete": _delete, - replace: replace$1, - splitOn: splitOn - }; - /** return json metadata for this phrase */ + if (options.root) { + res.root = this.text('root'); + } - var json = function json() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var world = arguments.length > 1 ? arguments[1] : undefined; - var res = {}; // text data + if (options.trim) { + if (res.text) { + res.text = res.text.trim(); + } - if (options.text) { - res.text = this.text(); - } + if (res.normal) { + res.normal = res.normal.trim(); + } - if (options.normal) { - res.normal = this.text('normal'); - } + if (res.reduced) { + res.reduced = res.reduced.trim(); + } + } // terms data - if (options.clean) { - res.clean = this.text('clean'); - } - if (options.reduced) { - res.reduced = this.text('reduced'); - } + if (options.terms) { + if (options.terms === true) { + options.terms = {}; + } - if (options.implicit) { - res.implicit = this.text('implicit'); - } + res.terms = this.terms().map(t => t.json(options.terms, world)); + } - if (options.root) { - res.root = this.text('root'); - } + return res; + }; - if (options.trim) { - if (res.text) { - res.text = res.text.trim(); - } + var _06Lookahead = {}; + /** match any terms after this phrase */ - if (res.normal) { - res.normal = res.normal.trim(); - } + _06Lookahead.lookAhead = function (regs) { + // if empty match string, return everything after + if (!regs) { + regs = '.*'; + } - if (res.reduced) { - res.reduced = res.reduced.trim(); - } - } // terms data + let pool = this.pool; // get a list of all terms preceding our start + let terms = []; - if (options.terms) { - if (options.terms === true) { - options.terms = {}; - } + const getAfter = function (id) { + let term = pool.get(id); - res.terms = this.terms().map(function (t) { - return t.json(options.terms, world); - }); - } + if (!term) { + return; + } - return res; - }; + terms.push(term); - var _05Json = { - json: json - }; - /** match any terms after this phrase */ + if (term.prev) { + getAfter(term.next); //recursion + } + }; - var lookAhead = function lookAhead(regs) { - // if empty match string, return everything after - if (!regs) { - regs = '.*'; - } + let all = this.terms(); + let lastTerm = all[all.length - 1]; + getAfter(lastTerm.next); - var pool = this.pool; // get a list of all terms preceding our start + if (terms.length === 0) { + return []; + } // got the terms, make a phrase from them - var terms = []; - var getAfter = function getAfter(id) { - var term = pool.get(id); + let p = this.buildFrom(terms[0].id, terms.length); + return p.match(regs); + }; + /** match any terms before this phrase */ - if (!term) { - return; - } - terms.push(term); + _06Lookahead.lookBehind = function (regs) { + // if empty match string, return everything before + if (!regs) { + regs = '.*'; + } - if (term.prev) { - getAfter(term.next); //recursion - } - }; + let pool = this.pool; // get a list of all terms preceding our start - var all = this.terms(); - var lastTerm = all[all.length - 1]; - getAfter(lastTerm.next); + let terms = []; - if (terms.length === 0) { - return []; - } // got the terms, make a phrase from them + const getBefore = function (id) { + let term = pool.get(id); + if (!term) { + return; + } - var p = this.buildFrom(terms[0].id, terms.length); - return p.match(regs); - }; - /** match any terms before this phrase */ + terms.push(term); + if (term.prev) { + getBefore(term.prev); //recursion + } + }; - var lookBehind = function lookBehind(regs) { - // if empty match string, return everything before - if (!regs) { - regs = '.*'; - } + let term = pool.get(this.start); + getBefore(term.prev); - var pool = this.pool; // get a list of all terms preceding our start + if (terms.length === 0) { + return []; + } // got the terms, make a phrase from them - var terms = []; - var getBefore = function getBefore(id) { - var term = pool.get(id); + let p = this.buildFrom(terms[terms.length - 1].id, terms.length); + return p.match(regs); + }; - if (!term) { - return; - } + var methods$b = Object.assign({}, _01Utils$1, _02Text, _03Change, _04Insert, _05Json, _06Lookahead); + var match = {}; - terms.push(term); + const failFast$2 = function (p, regs) { + if (regs.length === 0) { + return true; + } - if (term.prev) { - getBefore(term.prev); //recursion - } - }; + for (let i = 0; i < regs.length; i += 1) { + let reg = regs[i]; //logical quick-ones - var term = pool.get(this.start); - getBefore(term.prev); + if (reg.optional !== true && reg.negative !== true) { + //start/end impossibilites + if (reg.start === true && i > 0) { + return true; + } + } //this is not possible - if (terms.length === 0) { - return []; - } // got the terms, make a phrase from them + if (reg.anything === true && reg.negative === true) { + return true; + } + } - var p = this.buildFrom(terms[terms.length - 1].id, terms.length); - return p.match(regs); - }; + return false; + }; - var _06Lookahead = { - lookAhead: lookAhead, - lookBehind: lookBehind - }; - var methods$7 = Object.assign({}, _01Utils$1, _02Text, _03Change, _04Insert, _05Json, _06Lookahead); // try to avoid doing the match + var _02FailFast = failFast$2; + var _matchLogic = {}; - var failFast$1 = function failFast(p, regs) { - if (regs.length === 0) { - return true; - } + (function (exports) { + //found a match? it's greedy? keep going! + exports.getGreedy = function (state, endReg) { + // for greedy checking, we no longer care about the reg.start + // value, and leaving it can cause failures for anchored greedy + // matches. ditto for end-greedy matches: we need an earlier non- + // ending match to succceed until we get to the actual end. + let reg = Object.assign({}, state.regs[state.r], { + start: false, + end: false + }); + let start = state.t; - for (var i = 0; i < regs.length; i += 1) { - var reg = regs[i]; //logical quick-ones + for (; state.t < state.terms.length; state.t += 1) { + //stop for next-reg match + if (endReg && state.terms[state.t].doesMatch(endReg, state.start_i + state.t, state.phrase_length)) { + return state.t; + } - if (reg.optional !== true && reg.negative !== true) { - //start/end impossibilites - if (reg.start === true && i > 0) { - return true; - } - } //this is not possible + let count = state.t - start + 1; // is it max-length now? + if (reg.max !== undefined && count === reg.max) { + return state.t; + } //stop here - if (reg.anything === true && reg.negative === true) { - return true; - } - } - return false; - }; + if (state.terms[state.t].doesMatch(reg, state.start_i + state.t, state.phrase_length) === false) { + // is it too short? + if (reg.min !== undefined && count < reg.min) { + return null; + } - var _02FailFast = failFast$1; + return state.t; + } + } - var _matchLogic = createCommonjsModule(function (module, exports) { - //found a match? it's greedy? keep going! - exports.getGreedy = function (state, endReg) { - // for greedy checking, we no longer care about the reg.start - // value, and leaving it can cause failures for anchored greedy - // matches. ditto for end-greedy matches: we need an earlier non- - // ending match to succceed until we get to the actual end. - var reg = Object.assign({}, state.regs[state.r], { - start: false, - end: false - }); - var start = state.t; + return state.t; + }; //'unspecific greedy' is a weird situation. - for (; state.t < state.terms.length; state.t += 1) { - //stop for next-reg match - if (endReg && state.terms[state.t].doesMatch(endReg, state.start_i + state.t, state.phrase_length)) { - return state.t; - } - var count = state.t - start + 1; // is it max-length now? + exports.greedyTo = function (state, nextReg) { + let t = state.t; //if there's no next one, just go off the end! - if (reg.max !== undefined && count === reg.max) { - return state.t; - } //stop here + if (!nextReg) { + return state.terms.length; + } //otherwise, we're looking for the next one - if (state.terms[state.t].doesMatch(reg, state.start_i + state.t, state.phrase_length) === false) { - // is it too short? - if (reg.min !== undefined && count < reg.min) { - return null; - } + for (; t < state.terms.length; t += 1) { + if (state.terms[t].doesMatch(nextReg, state.start_i + t, state.phrase_length) === true) { + return t; + } + } //guess it doesn't exist, then. - return state.t; - } - } - return state.t; - }; //'unspecific greedy' is a weird situation. + return null; + }; //we have a special case where an end-anchored greedy match may need to + //start matching before the actual end; we do this by (temporarily!) + //removing the "end" property from the matching token... since this is + //very situation-specific, we *only* do this when we really need to. - exports.greedyTo = function (state, nextReg) { - var t = state.t; //if there's no next one, just go off the end! + exports.isEndGreedy = function (reg, state) { + if (reg.end === true && reg.greedy === true) { + if (state.start_i + state.t < state.phrase_length - 1) { + let tmpReg = Object.assign({}, reg, { + end: false + }); - if (!nextReg) { - return state.terms.length; - } //otherwise, we're looking for the next one + if (state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length) === true) { + return true; + } + } + } + return false; + }; // match complex OR cases like (a|b|foo bar) - for (; t < state.terms.length; t += 1) { - if (state.terms[t].doesMatch(nextReg, state.start_i + t, state.phrase_length) === true) { - return t; - } - } //guess it doesn't exist, then. + exports.doOrBlock = function (state) { + let skipN = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + let block = state.regs[state.r]; + let wasFound = false; // do each multiword sequence - return null; - }; //we have a special case where an end-anchored greedy match may need to - //start matching before the actual end; we do this by (temporarily!) - //removing the "end" property from the matching token... since this is - //very situation-specific, we *only* do this when we really need to. + for (let c = 0; c < block.choices.length; c += 1) { + // try to match this list of tokens + let regs = block.choices[c]; + wasFound = regs.every((cr, w_index) => { + let extra = 0; + let t = state.t + w_index + skipN + extra; + + if (state.terms[t] === undefined) { + return false; + } + + let foundBlock = state.terms[t].doesMatch(cr, t + state.start_i, state.phrase_length); // this can be greedy - '(foo+ bar)' + + if (foundBlock === true && cr.greedy === true) { + for (let i = 1; i < state.terms.length; i += 1) { + let term = state.terms[t + i]; + + if (term) { + let keepGoing = term.doesMatch(cr, state.start_i + i, state.phrase_length); + + if (keepGoing === true) { + extra += 1; + } else { + break; + } + } + } + } + skipN += extra; + return foundBlock; + }); + + if (wasFound) { + skipN += regs.length; + break; + } + } // we found a match - is it greedy though? + + + if (wasFound && block.greedy === true) { + return exports.doOrBlock(state, skipN); // try it again! + } + + return skipN; + }; // match AND cases like (#Noun && foo) + + + exports.doAndBlock = function (state) { + let longest = 0; // all blocks must match, and we return the greediest match - exports.isEndGreedy = function (reg, state) { - if (reg.end === true && reg.greedy === true) { - if (state.start_i + state.t < state.phrase_length - 1) { - var tmpReg = Object.assign({}, reg, { - end: false - }); + let reg = state.regs[state.r]; + let allDidMatch = reg.choices.every(block => { + // for multi-word blocks, all must match + let allWords = block.every((cr, w_index) => { + let tryTerm = state.t + w_index; + + if (state.terms[tryTerm] === undefined) { + return false; + } + + return state.terms[tryTerm].doesMatch(cr, tryTerm, state.phrase_length); + }); - if (state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length) === true) { - return true; - } - } - } + if (allWords === true && block.length > longest) { + longest = block.length; + } - return false; - }; // match complex OR cases like (a|b|foo bar) + return allWords; + }); + if (allDidMatch === true) { + return longest; + } - exports.doOrBlock = function (state) { - var skipN = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - var block = state.regs[state.r]; - var wasFound = false; // do each multiword sequence + return false; + }; // get or create named group - for (var c = 0; c < block.choices.length; c += 1) { - // try to match this list of tokens - var regs = block.choices[c]; - wasFound = regs.every(function (cr, w_index) { - var extra = 0; - var t = state.t + w_index + skipN + extra; - - if (state.terms[t] === undefined) { - return false; - } - - var foundBlock = state.terms[t].doesMatch(cr, t + state.start_i, state.phrase_length); // this can be greedy - '(foo+ bar)' - - if (foundBlock === true && cr.greedy === true) { - for (var i = 1; i < state.terms.length; i += 1) { - var term = state.terms[t + i]; - - if (term) { - var keepGoing = term.doesMatch(cr, state.start_i + i, state.phrase_length); - - if (keepGoing === true) { - extra += 1; - } else { - break; - } - } - } - } - - skipN += extra; - return foundBlock; - }); - - if (wasFound) { - skipN += regs.length; - break; - } - } // we found a match - is it greedy though? - - - if (wasFound && block.greedy === true) { - return exports.doOrBlock(state, skipN); // try it again! - } - - return skipN; - }; // match AND cases like (#Noun && foo) - - - exports.doAndBlock = function (state) { - var longest = 0; // all blocks must match, and we return the greediest match - - var reg = state.regs[state.r]; - var allDidMatch = reg.choices.every(function (block) { - // for multi-word blocks, all must match - var allWords = block.every(function (cr, w_index) { - var tryTerm = state.t + w_index; - - if (state.terms[tryTerm] === undefined) { - return false; - } - - return state.terms[tryTerm].doesMatch(cr, tryTerm, state.phrase_length); - }); - - if (allWords === true && block.length > longest) { - longest = block.length; - } - return allWords; - }); + exports.getGroup = function (state, term_index, name) { + if (state.groups[state.groupId]) { + return state.groups[state.groupId]; + } - if (allDidMatch === true) { - return longest; - } + const termId = state.terms[term_index].id; + state.groups[state.groupId] = { + group: String(name), + start: termId, + length: 0 + }; + return state.groups[state.groupId]; + }; + })(_matchLogic); - return false; - }; // get or create named group + const makeId = _id; + const logic = _matchLogic; // i formally apologize for how complicated this is. + + /** tries to match a sequence of terms, starting from here */ + + const tryHere = function (terms, regs, start_i, phrase_length) { + // all the variables that matter + let state = { + t: 0, + //the term index we're on + terms: terms, + //the working slice of term objects + r: 0, + // the reg index we're on + regs: regs, + //our match conditions + groups: {}, + //all named-group matches + start_i: start_i, + // term index we're starting from + phrase_length: phrase_length, + // # of terms in the sentence + hasGroup: false, + groupId: null, + previousGroup: null + }; // we must satisfy each rule in 'regs' + + for (; state.r < regs.length; state.r += 1) { + let reg = regs[state.r]; // Check if this reg has a named capture group + state.hasGroup = typeof reg.named === 'string' || typeof reg.named === 'number'; // Reuse previous capture group if same - exports.getGroup = function (state, term_index, name) { - if (state.groups[state.groupId]) { - return state.groups[state.groupId]; - } + if (state.hasGroup === true) { + const prev = regs[state.r - 1]; - var termId = state.terms[term_index].id; - state.groups[state.groupId] = { - group: String(name), - start: termId, - length: 0 - }; - return state.groups[state.groupId]; - }; - }); - /** tries to match a sequence of terms, starting from here */ + if (prev && prev.named === reg.named && state.previousGroup) { + state.groupId = state.previousGroup; + } else { + state.groupId = makeId(reg.named); + state.previousGroup = state.groupId; + } + } //have we run-out of terms? - var tryHere = function tryHere(terms, regs, start_i, phrase_length) { - // all the variables that matter - var state = { - t: 0, - //the term index we're on - terms: terms, - //the working slice of term objects - r: 0, - // the reg index we're on - regs: regs, - //our match conditions - groups: {}, - //all named-group matches - start_i: start_i, - // term index we're starting from - phrase_length: phrase_length, - // # of terms in the sentence - hasGroup: false, - groupId: null, - previousGroup: null - }; // we must satisfy each rule in 'regs' + if (!state.terms[state.t]) { + //are all remaining regs optional or negative? + const haveNeeds = regs.slice(state.r).some(remain => !remain.optional); - for (; state.r < regs.length; state.r += 1) { - var reg = regs[state.r]; // Check if this reg has a named capture group + if (haveNeeds === false) { + break; //done! + } + + return null; // die + } //support 'unspecific greedy' .* properly - state.hasGroup = typeof reg.named === 'string' || typeof reg.named === 'number'; // Reuse previous capture group if same - if (state.hasGroup === true) { - var prev = regs[state.r - 1]; + if (reg.anything === true && reg.greedy === true) { + let skipto = logic.greedyTo(state, regs[state.r + 1]); //maybe we couldn't find it - if (prev && prev.named === reg.named && state.previousGroup) { - state.groupId = state.previousGroup; - } else { - state.groupId = _id(reg.named); - state.previousGroup = state.groupId; - } - } //have we run-out of terms? + if (skipto === null || skipto === 0) { + return null; + } // ensure it's long enough - if (!state.terms[state.t]) { - //are all remaining regs optional or negative? - var haveNeeds = regs.slice(state.r).some(function (remain) { - return !remain.optional; - }); + if (reg.min !== undefined && skipto - state.t < reg.min) { + return null; + } // reduce it back, if it's too long - if (haveNeeds === false) { - break; //done! - } - return null; // die - } //support 'unspecific greedy' .* properly + if (reg.max !== undefined && skipto - state.t > reg.max) { + state.t = state.t + reg.max; + continue; + } // is it really this easy?.... - if (reg.anything === true && reg.greedy === true) { - var skipto = _matchLogic.greedyTo(state, regs[state.r + 1]); // ensure it's long enough + if (state.hasGroup === true) { + const g = logic.getGroup(state, state.t, reg.named); + g.length = skipto - state.t; + } + state.t = skipto; + continue; + } // support multi-word OR (a|b|foo bar) - if (reg.min !== undefined && skipto - state.t < reg.min) { - return null; - } // reduce it back, if it's too long + if (reg.choices !== undefined && reg.operator === 'or') { + let skipNum = logic.doOrBlock(state); - if (reg.max !== undefined && skipto - state.t > reg.max) { - state.t = state.t + reg.max; - continue; - } + if (skipNum) { + // handle 'not' logic + if (reg.negative === true) { + return null; // die + } - if (skipto === null) { - return null; //couldn't find it - } // is it really this easy?.... + if (state.hasGroup === true) { + const g = logic.getGroup(state, state.t, reg.named); + g.length += skipNum; + } + state.t += skipNum; + continue; + } else if (!reg.optional) { + return null; //die + } + } // support AND (#Noun && foo) blocks - if (state.hasGroup === true) { - var g = _matchLogic.getGroup(state, state.t, reg.named); - g.length = skipto - state.t; - } + if (reg.choices !== undefined && reg.operator === 'and') { + let skipNum = logic.doAndBlock(state); - state.t = skipto; - continue; - } // support multi-word OR (a|b|foo bar) + if (skipNum) { + // handle 'not' logic + if (reg.negative === true) { + return null; // die + } + if (state.hasGroup === true) { + const g = logic.getGroup(state, state.t, reg.named); + g.length += skipNum; + } - if (reg.choices !== undefined && reg.operator === 'or') { - var skipNum = _matchLogic.doOrBlock(state); + state.t += skipNum; + continue; + } else if (!reg.optional) { + return null; //die + } + } // ok, finally test the term/reg - if (skipNum) { - // handle 'not' logic - if (reg.negative === true) { - return null; // die - } - if (state.hasGroup === true) { - var _g = _matchLogic.getGroup(state, state.t, reg.named); + let term = state.terms[state.t]; + let doesMatch = term.doesMatch(reg, state.start_i + state.t, state.phrase_length); - _g.length += skipNum; - } + if (reg.anything === true || doesMatch === true || logic.isEndGreedy(reg, state)) { + let startAt = state.t; // if it's a negative optional match... :0 - state.t += skipNum; - continue; - } else if (!reg.optional) { - return null; //die - } - } // support AND (#Noun && foo) blocks + if (reg.optional && regs[state.r + 1] && reg.negative) { + continue; + } // okay, it was a match, but if it's optional too, + // we should check the next reg too, to skip it? - if (reg.choices !== undefined && reg.operator === 'and') { - var _skipNum = _matchLogic.doAndBlock(state); + if (reg.optional && regs[state.r + 1]) { + // does the next reg match it too? + let nextRegMatched = term.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length); - if (_skipNum) { - // handle 'not' logic - if (reg.negative === true) { - return null; // die - } + if (reg.negative || nextRegMatched) { + // but does the next reg match the next term?? + // only skip if it doesn't + let nextTerm = state.terms[state.t + 1]; - if (state.hasGroup === true) { - var _g2 = _matchLogic.getGroup(state, state.t, reg.named); + if (!nextTerm || !nextTerm.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length)) { + state.r += 1; + } + } + } //advance to the next term! - _g2.length += _skipNum; - } - state.t += _skipNum; - continue; - } else if (!reg.optional) { - return null; //die - } - } // ok, finally test the term/reg + state.t += 1; //check any ending '$' flags + if (reg.end === true) { + //if this isn't the last term, refuse the match + if (state.t !== state.terms.length && reg.greedy !== true) { + return null; //die + } + } //try keep it going! - var term = state.terms[state.t]; - var doesMatch = term.doesMatch(reg, state.start_i + state.t, state.phrase_length); - if (reg.anything === true || doesMatch === true || _matchLogic.isEndGreedy(reg, state)) { - var startAt = state.t; // if it's a negative optional match... :0 + if (reg.greedy === true) { + state.t = logic.getGreedy(state, regs[state.r + 1]); - if (reg.optional && regs[state.r + 1] && reg.negative) { - continue; - } // okay, it was a match, but if it's optional too, - // we should check the next reg too, to skip it? + if (state.t === null) { + return null; //greedy was too short + } + if (reg.min && reg.min > state.t) { + return null; //greedy was too short + } // if this was also an end-anchor match, check to see we really + // reached the end - if (reg.optional && regs[state.r + 1]) { - // does the next reg match it too? - var nextRegMatched = term.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length); - if (reg.negative || nextRegMatched) { - // but does the next reg match the next term?? - // only skip if it doesn't - var nextTerm = state.terms[state.t + 1]; + if (reg.end === true && state.start_i + state.t !== phrase_length) { + return null; //greedy didn't reach the end + } + } - if (!nextTerm || !nextTerm.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length)) { - state.r += 1; - } - } - } //advance to the next term! + if (state.hasGroup === true) { + // Get or create capture group + const g = logic.getGroup(state, startAt, reg.named); // Update group - add greedy or increment length + if (state.t > 1 && reg.greedy) { + g.length += state.t - startAt; + } else { + g.length++; + } + } - state.t += 1; //check any ending '$' flags + continue; + } // ok, it doesn't match. + // did it *actually match* a negative? - if (reg.end === true) { - //if this isn't the last term, refuse the match - if (state.t !== state.terms.length && reg.greedy !== true) { - return null; //die - } - } //try keep it going! + if (reg.negative) { + let tmpReg = Object.assign({}, reg); + tmpReg.negative = false; // try removing it - if (reg.greedy === true) { - state.t = _matchLogic.getGreedy(state, regs[state.r + 1]); + let foundNeg = state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length); - if (state.t === null) { - return null; //greedy was too short - } + if (foundNeg === true) { + return null; //bye! + } + } //bah, who cares, keep going - if (reg.min && reg.min > state.t) { - return null; //greedy was too short - } // if this was also an end-anchor match, check to see we really - // reached the end + if (reg.optional === true) { + continue; + } // should we skip-over an implicit word? - if (reg.end === true && state.start_i + state.t !== phrase_length) { - return null; //greedy didn't reach the end - } - } - if (state.hasGroup === true) { - // Get or create capture group - var _g3 = _matchLogic.getGroup(state, startAt, reg.named); // Update group - add greedy or increment length + if (state.terms[state.t].isImplicit() && regs[state.r - 1] && state.terms[state.t + 1]) { + // if the last match was implicit too, we're missing a word. + if (state.terms[state.t - 1] && state.terms[state.t - 1].implicit === regs[state.r - 1].word) { + return null; + } // does the next one match? - if (state.t > 1 && reg.greedy) { - _g3.length += state.t - startAt; - } else { - _g3.length++; - } - } + if (state.terms[state.t + 1].doesMatch(reg, state.start_i + state.t, state.phrase_length)) { + state.t += 2; + continue; + } + } - continue; - } // ok, it doesn't match. - // did it *actually match* a negative? + return null; //die + } //return our result + + + return { + match: state.terms.slice(0, state.t), + groups: state.groups + }; + }; + + var _03TryMatch = tryHere; + + const postProcess$3 = function (terms, regs, matches) { + if (!matches || matches.length === 0) { + return matches; + } // ensure end reg has the end term + + + let atEnd = regs.some(r => r.end); + + if (atEnd) { + let lastTerm = terms[terms.length - 1]; + matches = matches.filter(_ref => { + let { + match: arr + } = _ref; + return arr.indexOf(lastTerm) !== -1; + }); + } + + return matches; + }; + + var _04PostProcess = postProcess$3; // suffixes: ? ] + * $ {2,6} ~ + // [\?\]\+\*\$~]* + // prefixes: ! [ ^ + // [\!\[\^]* + // match 'foo /yes/' and not 'foo/no/bar' + + const bySlashes = /(?:^|\s)([\!\[\^]*(?:<[^<]*>)?\/.*?[^\\\/]\/[\?\]\+\*\$~]*)(?:\s|$)/; // match '(yes) but not foo(no)bar' + + const byParentheses = /([\!\[\^]*(?:<[^<]*>)?\([^\)]+[^\\\)]\)[\?\]\+\*\$~]*)(?:\s|$)/; // okay + + const byWord = / /g; + + const isBlock = str => { + return /^[\!\[\^]*(<[^<]*>)?\(/.test(str) && /\)[\?\]\+\*\$~]*$/.test(str); + }; + + const isReg = str => { + return /^[\!\[\^]*(<[^<]*>)?\//.test(str) && /\/[\?\]\+\*\$~]*$/.test(str); + }; + + const cleanUp = function (arr) { + arr = arr.map(str => str.trim()); + arr = arr.filter(str => str); + return arr; + }; + + const parseBlocks$1 = function (txt) { + // parse by /regex/ first + let arr = txt.split(bySlashes); + let res = []; // parse by (blocks), next + + arr.forEach(str => { + if (isReg(str)) { + res.push(str); + return; + } + + res = res.concat(str.split(byParentheses)); + }); + res = cleanUp(res); // split by spaces, now + + let final = []; + res.forEach(str => { + if (isBlock(str)) { + final.push(str); + } else if (isReg(str)) { + final.push(str); + } else { + final = final.concat(str.split(byWord)); + } + }); + final = cleanUp(final); + return final; + }; + + var _01ParseBlocks = parseBlocks$1; // console.log('(one two) (upto) [#Date+]'.split(byParentheses)) + + /* break-down a match expression into this: + { + word:'', + tag:'', + regex:'', + start:false, + end:false, + negative:false, + anything:false, + greedy:false, + optional:false, + named:'', + choices:[], + } + */ + + const hasMinMax = /\{([0-9]+,?[0-9]*)\}/; + const andSign = /&&/; + const captureName = new RegExp(/^<\s*?(\S+)\s*?>/); + + const titleCase$2 = str => { + return str.charAt(0).toUpperCase() + str.substr(1); + }; + + const end = function (str) { + return str[str.length - 1]; + }; + + const start = function (str) { + return str[0]; + }; + + const stripStart = function (str) { + return str.substr(1); + }; + + const stripEnd = function (str) { + return str.substr(0, str.length - 1); + }; + + const stripBoth = function (str) { + str = stripStart(str); + str = stripEnd(str); + return str; + }; // + + + const parseToken$1 = function (w) { + let obj = {}; //collect any flags (do it twice) + + for (let i = 0; i < 2; i += 1) { + //end-flag + if (end(w) === '$') { + obj.end = true; + w = stripEnd(w); + } //front-flag + + + if (start(w) === '^') { + obj.start = true; + w = stripStart(w); + } //capture group (this one can span multiple-terms) + + + if (start(w) === '[' || end(w) === ']') { + obj.named = true; + + if (start(w) === '[') { + obj.groupType = end(w) === ']' ? 'single' : 'start'; + } else { + obj.groupType = 'end'; + } + + w = w.replace(/^\[/, ''); + w = w.replace(/\]$/, ''); // Use capture group name + + if (start(w) === '<') { + const res = captureName.exec(w); + + if (res.length >= 2) { + obj.named = res[1]; + w = w.replace(res[0], ''); + } + } + } //back-flags + + + if (end(w) === '+') { + obj.greedy = true; + w = stripEnd(w); + } + + if (w !== '*' && end(w) === '*' && w !== '\\*') { + obj.greedy = true; + w = stripEnd(w); + } + if (end(w) === '?') { + obj.optional = true; + w = stripEnd(w); + } + + if (start(w) === '!') { + obj.negative = true; // obj.optional = true + + w = stripStart(w); + } //wrapped-flags - if (reg.negative) { - var tmpReg = Object.assign({}, reg); - tmpReg.negative = false; // try removing it - var foundNeg = state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length); + if (start(w) === '(' && end(w) === ')') { + // support (one && two) + if (andSign.test(w)) { + obj.choices = w.split(andSign); + obj.operator = 'and'; + } else { + obj.choices = w.split('|'); + obj.operator = 'or'; + } //remove '(' and ')' - if (foundNeg === true) { - return null; //bye! - } - } //bah, who cares, keep going + obj.choices[0] = stripStart(obj.choices[0]); + let last = obj.choices.length - 1; + obj.choices[last] = stripEnd(obj.choices[last]); // clean up the results - if (reg.optional === true) { - continue; - } // should we skip-over an implicit word? + obj.choices = obj.choices.map(s => s.trim()); + obj.choices = obj.choices.filter(s => s); //recursion alert! + obj.choices = obj.choices.map(str => { + return str.split(/ /g).map(parseToken$1); + }); + w = ''; + } //regex - if (state.terms[state.t].isImplicit() && regs[state.r - 1] && state.terms[state.t + 1]) { - // if the last match was implicit too, we're missing a word. - if (state.terms[state.t - 1] && state.terms[state.t - 1].implicit === regs[state.r - 1].word) { - return null; - } // does the next one match? + if (start(w) === '/' && end(w) === '/') { + w = stripBoth(w); + obj.regex = new RegExp(w); //potential vuln - security/detect-non-literal-regexp - if (state.terms[state.t + 1].doesMatch(reg, state.start_i + state.t, state.phrase_length)) { - state.t += 2; - continue; - } - } + return obj; + } //soft-match - return null; //die - } //return our result + if (start(w) === '~' && end(w) === '~') { + w = stripBoth(w); + obj.soft = true; + obj.word = w; + return obj; + } + } // support #Tag{1,9} - return { - match: state.terms.slice(0, state.t), - groups: state.groups - }; - }; - - var _03TryMatch = tryHere; // final checks on the validity of our results - - var postProcess$1 = function postProcess(terms, regs, matches) { - if (!matches || matches.length === 0) { - return matches; - } // ensure end reg has the end term + if (hasMinMax.test(w) === true) { + w = w.replace(hasMinMax, (a, b) => { + let arr = b.split(/,/g); - var atEnd = regs.some(function (r) { - return r.end; - }); + if (arr.length === 1) { + // '{3}' Exactly three times + obj.min = Number(arr[0]); + obj.max = Number(arr[0]); + } else { + // '{2,4}' Two to four times + // '{3,}' Three or more times + obj.min = Number(arr[0]); + obj.max = Number(arr[1] || 999); + } // use same method as '+' - if (atEnd) { - var lastTerm = terms[terms.length - 1]; - matches = matches.filter(function (_ref) { - var arr = _ref.match; - return arr.indexOf(lastTerm) !== -1; - }); - } - - return matches; - }; - var _04PostProcess = postProcess$1; // supported suffix-flags: - // suffixes: ? ] + * $ {2,6} ~ - // [\?\]\+\*\$~]* - // prefixes: ! [ ^ - // [\!\[\^]* - // match 'foo /yes/' and not 'foo/no/bar' - - var bySlashes = /(?:^|\s)([\!\[\^]*(?:<[^<]*>)?\/.*?[^\\\/]\/[\?\]\+\*\$~]*)(?:\s|$)/; // match '(yes) but not foo(no)bar' - - var byParentheses = /([\!\[\^]*(?:<[^<]*>)?\([^\)]+[^\\\)]\)[\?\]\+\*\$~]*)(?:\s|$)/; // okay - - var byWord = / /g; - - var isBlock = function isBlock(str) { - return /^[\!\[\^]*(<[^<]*>)?\(/.test(str) && /\)[\?\]\+\*\$~]*$/.test(str); - }; - - var isReg = function isReg(str) { - return /^[\!\[\^]*(<[^<]*>)?\//.test(str) && /\/[\?\]\+\*\$~]*$/.test(str); - }; - - var cleanUp$1 = function cleanUp(arr) { - arr = arr.map(function (str) { - return str.trim(); - }); - arr = arr.filter(function (str) { - return str; - }); - return arr; - }; + obj.greedy = true; // 0 as min means the same as '?' - var parseBlocks = function parseBlocks(txt) { - // parse by /regex/ first - var arr = txt.split(bySlashes); - var res = []; // parse by (blocks), next - - arr.forEach(function (str) { - if (isReg(str)) { - res.push(str); - return; - } - - res = res.concat(str.split(byParentheses)); - }); - res = cleanUp$1(res); // split by spaces, now - - var _final = []; - res.forEach(function (str) { - if (isBlock(str)) { - _final.push(str); - } else if (isReg(str)) { - _final.push(str); - } else { - _final = _final.concat(str.split(byWord)); - } - }); - _final = cleanUp$1(_final); - return _final; - }; - - var _01ParseBlocks = parseBlocks; // console.log('(one two) (upto) [#Date+]'.split(byParentheses)) - - /* break-down a match expression into this: - { - word:'', - tag:'', - regex:'', - - start:false, - end:false, - negative:false, - anything:false, - greedy:false, - optional:false, - - named:'', - choices:[], - } - */ - - var hasMinMax = /\{([0-9]+,?[0-9]*)\}/; - var andSign = /&&/; - var captureName = new RegExp(/^<\s*?(\S+)\s*?>/); - - var titleCase$2 = function titleCase(str) { - return str.charAt(0).toUpperCase() + str.substr(1); - }; - - var end = function end(str) { - return str[str.length - 1]; - }; - - var start = function start(str) { - return str[0]; - }; - - var stripStart = function stripStart(str) { - return str.substr(1); - }; - - var stripEnd = function stripEnd(str) { - return str.substr(0, str.length - 1); - }; - - var stripBoth = function stripBoth(str) { - str = stripStart(str); - str = stripEnd(str); - return str; - }; // - - - var parseToken = function parseToken(w) { - var obj = {}; //collect any flags (do it twice) - - for (var i = 0; i < 2; i += 1) { - //end-flag - if (end(w) === '$') { - obj.end = true; - w = stripEnd(w); - } //front-flag - - - if (start(w) === '^') { - obj.start = true; - w = stripStart(w); - } //capture group (this one can span multiple-terms) - - - if (start(w) === '[' || end(w) === ']') { - obj.named = true; - - if (start(w) === '[') { - obj.groupType = end(w) === ']' ? 'single' : 'start'; - } else { - obj.groupType = 'end'; - } - - w = w.replace(/^\[/, ''); - w = w.replace(/\]$/, ''); // Use capture group name - - if (start(w) === '<') { - var res = captureName.exec(w); - - if (res.length >= 2) { - obj.named = res[1]; - w = w.replace(res[0], ''); - } - } - } //back-flags - - - if (end(w) === '+') { - obj.greedy = true; - w = stripEnd(w); - } + obj.optional = true; + return ''; + }); + } //do the actual token content - if (w !== '*' && end(w) === '*' && w !== '\\*') { - obj.greedy = true; - w = stripEnd(w); - } - if (end(w) === '?') { - obj.optional = true; - w = stripEnd(w); - } + if (start(w) === '#') { + obj.tag = stripStart(w); + obj.tag = titleCase$2(obj.tag); + return obj; + } //dynamic function on a term object - if (start(w) === '!') { - obj.negative = true; // obj.optional = true - w = stripStart(w); - } //wrapped-flags + if (start(w) === '@') { + obj.method = stripStart(w); + return obj; + } + if (w === '.') { + obj.anything = true; + return obj; + } //support alone-astrix + + + if (w === '*') { + obj.anything = true; + obj.greedy = true; + obj.optional = true; + return obj; + } + + if (w) { + //somehow handle encoded-chars? + w = w.replace('\\*', '*'); + w = w.replace('\\.', '.'); + obj.word = w.toLowerCase(); + } + + return obj; + }; + + var _02ParseToken = parseToken$1; + + const nameGroups = function (tokens) { + let convert = false; + let index = -1; + let current; //'fill in' capture groups between start-end + + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; // Give name to un-named single tokens + + if (token.groupType === 'single' && token.named === true) { + index += 1; + token.named = index; + continue; + } // Start converting tokens + + + if (token.groupType === 'start') { + convert = true; + + if (typeof token.named === 'string' || typeof token.named === 'number') { + current = token.named; + } else { + index += 1; + current = index; + } + } // Ensure this token has the right name + + + if (convert) { + token.named = current; + } // Stop converting tokens + + + if (token.groupType === 'end') { + convert = false; + } + } + + return tokens; + }; // optimize an 'or' lookup, when the (a|b|c) list is simple or multi-word + + + const doFastOrMode = function (tokens) { + return tokens.map(token => { + if (token.choices !== undefined) { + // are they all straight-up words? then optimize them. + let shouldPack = token.choices.every(block => { + if (block.length !== 1) { + return false; + } + + let reg = block[0]; + + if (reg.word !== undefined && reg.negative !== true && reg.optional !== true && reg.method !== true) { + return true; //reg is simple-enough + } + + return false; + }); + + if (shouldPack === true) { + let oneOf = {}; + token.choices.forEach(block => { + oneOf[block[0].word] = true; + }); + token.fastOr = oneOf; + delete token.choices; + } + } + + return token; + }); + }; // allow multiword OR (foo|one two) + // const doMultiWord = function (tokens) { + // return tokens.map(token => { + // if (token.choices !== undefined) { + // let isMulti = token.choices.find(o => hasASpace.test(o.word)) || false + // if (isMulti !== false) { + // token.multiword = true + // // turn all choices into arrays + // token.choices = token.choices.map(choice => { + // if (choice.word) { + // choice.sequence = choice.word.split(hasASpace) + // delete choice.word + // } + // return choice + // }) + // } + // } + // return token + // }) + // } + // const doBlockMode = function (tokens) { + // return tokens.map(token => { + // // we've already setup fastOr mode + // if (token.choices !== undefined) { + // // console.log(token) + // } + // return token + // }) + // } + + + const postProcess$2 = function (tokens) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + // ensure all capture groups are filled between start and end + // give all capture groups names + let count = tokens.filter(t => t.groupType).length; + + if (count > 0) { + tokens = nameGroups(tokens); + } // convert 'choices' format to 'fastOr' format + + + if (!opts.fuzzy) { + tokens = doFastOrMode(tokens); + } // support multiword OR (foo bar|baz) + // tokens = doMultiWord(tokens) + // support (one two three) + // tokens = doBlockMode(tokens) + + + return tokens; + }; + + var _03PostProcess = postProcess$2; + const parseBlocks = _01ParseBlocks; + const parseToken = _02ParseToken; + const postProcess$1 = _03PostProcess; + + const isArray$2 = function (arr) { + return Object.prototype.toString.call(arr) === '[object Array]'; + }; //turn an array into a 'choices' list + + + const byArray = function (arr) { + let blocks = arr.map(s => { + return [{ + word: s + }]; + }); + return [{ + choices: blocks, + operator: 'or' + }]; + }; // turn a Doc object into a reg of ids to lookup + + + const fromDoc = function (doc) { + if (!doc || !doc.list || !doc.list[0]) { + return []; + } + + let regs = []; + doc.list.forEach(p => { + let ids = []; + p.terms().forEach(t => { + ids.push(t.id); + }); + regs.push(ids); + }); + return [{ + idBlocks: regs + }]; + }; // add fuzziness etc to each reg + + + const addOptions = function (tokens, opts) { + // add default fuzzy-search limit + if (opts.fuzzy === true) { + opts.fuzzy = 0.85; + } + + if (typeof opts.fuzzy === 'number') { + tokens = tokens.map(reg => { + // add a fuzzy-match on 'word' tokens + if (opts.fuzzy > 0 && reg.word) { + reg.fuzzy = opts.fuzzy; + } //add it to or|and choices too + + + if (reg.choices) { + reg.choices.forEach(block => { + block.forEach(r => { + r.fuzzy = opts.fuzzy; + }); + }); + } + + return reg; + }); + } - if (start(w) === '(' && end(w) === ')') { - // support (one && two) - if (andSign.test(w)) { - obj.choices = w.split(andSign); - obj.operator = 'and'; - } else { - obj.choices = w.split('|'); - obj.operator = 'or'; - } //remove '(' and ')' + return tokens; + }; + /** parse a match-syntax string into json */ - obj.choices[0] = stripStart(obj.choices[0]); - var last = obj.choices.length - 1; - obj.choices[last] = stripEnd(obj.choices[last]); // clean up the results + const syntax$1 = function (input) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - obj.choices = obj.choices.map(function (s) { - return s.trim(); - }); - obj.choices = obj.choices.filter(function (s) { - return s; - }); //recursion alert! + // fail-fast + if (input === null || input === undefined || input === '') { + return []; + } //try to support a ton of different formats: - obj.choices = obj.choices.map(function (str) { - return str.split(/ /g).map(parseToken); - }); - w = ''; - } //regex + if (typeof input === 'object') { + if (isArray$2(input)) { + if (input.length === 0 || !input[0]) { + return []; + } //is it a pre-parsed reg-list? - if (start(w) === '/' && end(w) === '/') { - w = stripBoth(w); - obj.regex = new RegExp(w); //potential vuln - security/detect-non-literal-regexp - return obj; - } //soft-match + if (typeof input[0] === 'object') { + return input; + } //support a flat array of normalized words - if (start(w) === '~' && end(w) === '~') { - w = stripBoth(w); - obj.soft = true; - obj.word = w; - return obj; - } - } // support #Tag{1,9} + if (typeof input[0] === 'string') { + return byArray(input); + } + } //support passing-in a compromise object as a match - if (hasMinMax.test(w) === true) { - w = w.replace(hasMinMax, function (a, b) { - var arr = b.split(/,/g); + if (input && input.isA === 'Doc') { + return fromDoc(input); + } - if (arr.length === 1) { - // '{3}' Exactly three times - obj.min = Number(arr[0]); - obj.max = Number(arr[0]); - } else { - // '{2,4}' Two to four times - // '{3,}' Three or more times - obj.min = Number(arr[0]); - obj.max = Number(arr[1] || 999); - } // use same method as '+' + return []; + } + if (typeof input === 'number') { + input = String(input); //go for it? + } - obj.greedy = true; // 0 as min means the same as '?' + let tokens = parseBlocks(input); //turn them into objects - obj.optional = true; - return ''; - }); - } //do the actual token content + tokens = tokens.map(str => parseToken(str)); //clean up anything weird + tokens = postProcess$1(tokens, opts); // add fuzzy limits, etc - if (start(w) === '#') { - obj.tag = stripStart(w); - obj.tag = titleCase$2(obj.tag); - return obj; - } //dynamic function on a term object + tokens = addOptions(tokens, opts); // console.log(tokens) + return tokens; + }; - if (start(w) === '@') { - obj.method = stripStart(w); - return obj; - } - - if (w === '.') { - obj.anything = true; - return obj; - } //support alone-astrix - - - if (w === '*') { - obj.anything = true; - obj.greedy = true; - obj.optional = true; - return obj; - } - - if (w) { - //somehow handle encoded-chars? - w = w.replace('\\*', '*'); - w = w.replace('\\.', '.'); - obj.word = w.toLowerCase(); - } - - return obj; - }; - - var _02ParseToken = parseToken; // name any [unnamed] capture-groups with a number - - var nameGroups = function nameGroups(tokens) { - var convert = false; - var index = -1; - var current; //'fill in' capture groups between start-end - - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; // Give name to un-named single tokens - - if (token.groupType === 'single' && token.named === true) { - index += 1; - token.named = index; - continue; - } // Start converting tokens - - - if (token.groupType === 'start') { - convert = true; - - if (typeof token.named === 'string' || typeof token.named === 'number') { - current = token.named; - } else { - index += 1; - current = index; - } - } // Ensure this token has the right name - - - if (convert) { - token.named = current; - } // Stop converting tokens - - - if (token.groupType === 'end') { - convert = false; - } - } - - return tokens; - }; // optimize an 'or' lookup, when the (a|b|c) list is simple or multi-word - - - var doFastOrMode = function doFastOrMode(tokens) { - return tokens.map(function (token) { - if (token.choices !== undefined) { - // are they all straight-up words? then optimize them. - var shouldPack = token.choices.every(function (block) { - if (block.length !== 1) { - return false; - } - - var reg = block[0]; - - if (reg.word !== undefined && reg.negative !== true && reg.optional !== true && reg.method !== true) { - return true; //reg is simple-enough - } - - return false; - }); - - if (shouldPack === true) { - var oneOf = {}; - token.choices.forEach(function (block) { - oneOf[block[0].word] = true; - }); - token.fastOr = oneOf; - delete token.choices; - } - } - - return token; - }); - }; // allow multiword OR (foo|one two) - // const doMultiWord = function (tokens) { - // return tokens.map(token => { - // if (token.choices !== undefined) { - // let isMulti = token.choices.find(o => hasASpace.test(o.word)) || false - // if (isMulti !== false) { - // token.multiword = true - // // turn all choices into arrays - // token.choices = token.choices.map(choice => { - // if (choice.word) { - // choice.sequence = choice.word.split(hasASpace) - // delete choice.word - // } - // return choice - // }) - // } - // } - // return token - // }) - // } - // const doBlockMode = function (tokens) { - // return tokens.map(token => { - // // we've already setup fastOr mode - // if (token.choices !== undefined) { - // // console.log(token) - // } - // return token - // }) - // } - - - var postProcess = function postProcess(tokens) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // ensure all capture groups are filled between start and end - // give all capture groups names - - var count = tokens.filter(function (t) { - return t.groupType; - }).length; - - if (count > 0) { - tokens = nameGroups(tokens); - } // convert 'choices' format to 'fastOr' format - - - if (!opts.fuzzy) { - tokens = doFastOrMode(tokens); - } // support multiword OR (foo bar|baz) - // tokens = doMultiWord(tokens) - // support (one two three) - // tokens = doBlockMode(tokens) - - - return tokens; - }; - - var _03PostProcess = postProcess; - - var isArray$2 = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; - }; //turn an array into a 'choices' list - - - var byArray = function byArray(arr) { - var blocks = arr.map(function (s) { - return [{ - word: s - }]; - }); - return [{ - choices: blocks, - operator: 'or' - }]; - }; // turn a Doc object into a reg of ids to lookup - - - var fromDoc = function fromDoc(doc) { - if (!doc || !doc.list || !doc.list[0]) { - return []; - } - - var regs = []; - doc.list.forEach(function (p) { - var ids = []; - p.terms().forEach(function (t) { - ids.push(t.id); - }); - regs.push(ids); - }); - return [{ - idBlocks: regs - }]; - }; // add fuzziness etc to each reg - - - var addOptions = function addOptions(tokens, opts) { - // add default fuzzy-search limit - if (opts.fuzzy === true) { - opts.fuzzy = 0.85; - } - - if (typeof opts.fuzzy === 'number') { - tokens = tokens.map(function (reg) { - // add a fuzzy-match on 'word' tokens - if (opts.fuzzy > 0 && reg.word) { - reg.fuzzy = opts.fuzzy; - } //add it to or|and choices too - - - if (reg.choices) { - reg.choices.forEach(function (block) { - block.forEach(function (r) { - r.fuzzy = opts.fuzzy; - }); - }); - } + var matchSyntax = syntax$1; // console.log(syntax('[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)')) + // take a phrase and find any of the idBlocks in it - return reg; - }); - } + const idLookup$1 = function (terms, regs) { + let matches = []; + let blocklist = regs[0].idBlocks; - return tokens; - }; - /** parse a match-syntax string into json */ + for (let t = 0; t < terms.length; t += 1) { + blocklist.forEach(block => { + if (block.length === 0) { + return; + } + let foundAll = block.every((id, i) => { + return terms[t + i].id === id; + }); - var syntax = function syntax(input) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // fail-fast + if (foundAll) { + matches.push({ + match: terms.slice(t, t + block.length) + }); // skip top-loop forward - if (input === null || input === undefined || input === '') { - return []; - } //try to support a ton of different formats: + t += block.length - 1; + } + }); + } + return matches; + }; - if (_typeof(input) === 'object') { - if (isArray$2(input)) { - if (input.length === 0 || !input[0]) { - return []; - } //is it a pre-parsed reg-list? + var idLookup_1 = idLookup$1; + const failFast$1 = _02FailFast; + const tryMatch = _03TryMatch; + const postProcess = _04PostProcess; + const syntax = matchSyntax; + const idLookup = idLookup_1; + /** returns a simple array of arrays */ + const matchAll$2 = function (p, regs) { + let matchOne = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - if (_typeof(input[0]) === 'object') { - return input; - } //support a flat array of normalized words + //if we forgot to parse it.. + if (typeof regs === 'string') { + regs = syntax(regs); + } //try to dismiss it, at-once - if (typeof input[0] === 'string') { - return byArray(input); - } - } //support passing-in a compromise object as a match + if (failFast$1(p, regs) === true) { + return []; + } //any match needs to be this long, at least - if (input && input.isA === 'Doc') { - return fromDoc(input); - } + const minLength = regs.filter(r => r.optional !== true && r.negative !== true).length; + let terms = p.terms(); + let matches = []; // these id-lookups can be super-fast - return []; - } + if (regs[0].idBlocks) { + let res = idLookup(terms, regs); - if (typeof input === 'number') { - input = String(input); //go for it? - } + if (res && res.length > 0) { + return postProcess(terms, regs, res); + } + } //optimisation for '^' start logic - var tokens = _01ParseBlocks(input); //turn them into objects + if (regs[0].start === true) { + let res = tryMatch(terms, regs, 0, terms.length); - tokens = tokens.map(function (str) { - return _02ParseToken(str); - }); //clean up anything weird + if (res && res.match && res.match.length > 0) { + res.match = res.match.filter(m => m); + matches.push(res); + } - tokens = _03PostProcess(tokens, opts); // add fuzzy limits, etc + return postProcess(terms, regs, matches); + } //try starting, from every term - tokens = addOptions(tokens, opts); // console.log(tokens) - return tokens; - }; + for (let i = 0; i < terms.length; i += 1) { + // slice may be too short + if (i + minLength > terms.length) { + break; + } //try it! - var matchSyntax = syntax; // console.log(syntax('[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)')) - // match an explicit sequence of term ids - // take a phrase and find any of the idBlocks in it - var idLookup = function idLookup(terms, regs) { - var matches = []; - var blocklist = regs[0].idBlocks; + let res = tryMatch(terms.slice(i), regs, i, terms.length); - var _loop = function _loop(_t) { - blocklist.forEach(function (block) { - if (block.length === 0) { - t = _t; - return; - } + if (res && res.match && res.match.length > 0) { + //zoom forward! + i += res.match.length - 1; //[capture-groups] return some null responses - var foundAll = block.every(function (id, i) { - t = _t; - return terms[_t + i].id === id; - }); + res.match = res.match.filter(m => m); + matches.push(res); //ok, maybe that's enough? - if (foundAll) { - matches.push({ - match: terms.slice(_t, _t + block.length) - }); // skip top-loop forward + if (matchOne === true) { + return postProcess(terms, regs, matches); + } + } + } + + return postProcess(terms, regs, matches); + }; + + var _01MatchAll = matchAll$2; + const matchAll$1 = _01MatchAll; + /** return anything that doesn't match. + * returns a simple array of arrays + */ + + const notMatch$1 = function (p, regs) { + let found = {}; + let arr = matchAll$1(p, regs); + arr.forEach(_ref2 => { + let { + match: ts + } = _ref2; + ts.forEach(t => { + found[t.id] = true; + }); + }); //return anything not found + + let terms = p.terms(); + let result = []; + let current = []; + terms.forEach(t => { + if (found[t.id] === true) { + if (current.length > 0) { + result.push(current); + current = []; + } + + return; + } + + current.push(t); + }); + + if (current.length > 0) { + result.push(current); + } + + return result; + }; + + var not = notMatch$1; + const matchAll = _01MatchAll; + const notMatch = not; + /** return an array of matching phrases */ + + match.match = function (regs) { + let justOne = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + let matches = matchAll(this, regs, justOne); //make them phrase objects + + matches = matches.map(_ref3 => { + let { + match, + groups + } = _ref3; + let p = this.buildFrom(match[0].id, match.length, groups); + p.cache.terms = match; + return p; + }); + return matches; + }; + /** return boolean if one match is found */ + + + match.has = function (regs) { + let matches = matchAll(this, regs, true); + return matches.length > 0; + }; + /** remove all matches from the result */ + + + match.not = function (regs) { + let matches = notMatch(this, regs); //make them phrase objects + + matches = matches.map(list => { + return this.buildFrom(list[0].id, list.length); + }); + return matches; + }; + /** return a list of phrases that can have this tag */ + + + match.canBe = function (tag, world) { + let results = []; + let terms = this.terms(); + let previous = false; + + for (let i = 0; i < terms.length; i += 1) { + let can = terms[i].canBe(tag, world); + + if (can === true) { + if (previous === true) { + //add it to the end + results[results.length - 1].push(terms[i]); + } else { + results.push([terms[i]]); //make a new one + } + + previous = can; + } + } //turn them into Phrase objects + + + results = results.filter(a => a.length > 0).map(arr => { + return this.buildFrom(arr[0].id, arr.length); + }); + return results; + }; + + const methods$a = methods$b; + const matchMethods = match; // const tokenize = require('../01-tokenizer') + + class Phrase$3 { + constructor(id, length, pool) { + this.start = id; + this.length = length; + this.isA = 'Phrase'; // easier than .constructor... + + Object.defineProperty(this, 'pool', { + enumerable: false, + writable: true, + value: pool + }); + Object.defineProperty(this, 'cache', { + enumerable: false, + writable: true, + value: {} + }); + Object.defineProperty(this, 'groups', { + enumerable: false, + writable: true, + value: {} + }); + } + + } + /** create a new Phrase object from an id and length */ + + + Phrase$3.prototype.buildFrom = function (id, length, groups) { + let p = new Phrase$3(id, length, this.pool); //copy-over or replace capture-groups too + + if (groups && Object.keys(groups).length > 0) { + p.groups = groups; + } else { + p.groups = this.groups; + } + + return p; + }; //apply methods + + + Object.assign(Phrase$3.prototype, matchMethods); + Object.assign(Phrase$3.prototype, methods$a); //apply aliases + + const aliases$1 = { + term: 'terms' + }; + Object.keys(aliases$1).forEach(k => Phrase$3.prototype[k] = Phrase$3.prototype[aliases$1[k]]); + var Phrase_1 = Phrase$3; + /** a key-value store of all terms in our Document */ + + class Pool$3 { + constructor() { + let words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + //quiet this property in console.logs + Object.defineProperty(this, 'words', { + enumerable: false, + value: words + }); + } + /** throw a new term object in */ + + + add(term) { + this.words[term.id] = term; + return this; + } + /** find a term by it's id */ + + + get(id) { + return this.words[id]; + } + /** find a term by it's id */ + + + remove(id) { + delete this.words[id]; + } + + merge(pool) { + Object.assign(this.words, pool.words); + return this; + } + /** helper method */ + + + stats() { + return { + words: Object.keys(this.words).length + }; + } + + } + /** make a deep-copy of all terms */ + + + Pool$3.prototype.clone = function () { + let keys = Object.keys(this.words); + let words = keys.reduce((h, k) => { + let t = this.words[k].clone(); + h[t.id] = t; + return h; + }, {}); + return new Pool$3(words); + }; + + var Pool_1 = Pool$3; + + const linkTerms$2 = terms => { + terms.forEach((term, i) => { + if (i > 0) { + term.prev = terms[i - 1].id; + } + + if (terms[i + 1]) { + term.next = terms[i + 1].id; + } + }); + }; - _t += block.length - 1; - } - }); - t = _t; - }; + var _linkTerms = linkTerms$2; // Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc. + // @spencermountain 2017 MIT + //proper nouns with exclamation marks + // const blacklist = { + // yahoo: true, + // joomla: true, + // jeopardy: true, + // } + //regs- - for (var t = 0; t < terms.length; t += 1) { - _loop(t); - } + const initSplit = /(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g; + const hasSomething = /\S/; + const isAcronym$1 = /[ .][A-Z]\.? *$/i; + const hasEllipse = /(?:\u2026|\.{2,}) *$/; + const newLine = /((?:\r?\n|\r)+)/; // Match different new-line formats - return matches; - }; + const hasLetter = /[a-z0-9\u00C0-\u00FF\u00a9\u00ae\u2000-\u3300\ud000-\udfff]/i; + const startWhitespace = /^\s+/; // Start with a regex: - var idLookup_1 = idLookup; - /** returns a simple array of arrays */ + const naiive_split = function (text) { + let all = []; //first, split by newline - var matchAll = function matchAll(p, regs) { - var matchOne = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; //if we forgot to parse it.. + let lines = text.split(newLine); - if (typeof regs === 'string') { - regs = matchSyntax(regs); - } //try to dismiss it, at-once + for (let i = 0; i < lines.length; i++) { + //split by period, question-mark, and exclamation-mark + let arr = lines[i].split(initSplit); + for (let o = 0; o < arr.length; o++) { + all.push(arr[o]); + } + } - if (_02FailFast(p, regs) === true) { - return []; - } //any match needs to be this long, at least + return all; + }; + const testIsAcronym = function (str, suffix) { + // early exit + if (suffix.indexOf('.') === -1) { + return false; + } - var minLength = regs.filter(function (r) { - return r.optional !== true && r.negative !== true; - }).length; - var terms = p.terms(); - var matches = []; // these id-lookups can be super-fast + return isAcronym$1.test(str); + }; - if (regs[0].idBlocks) { - var res = idLookup_1(terms, regs); + const testHasEllipse = function (str, suffix) { + // early exit + if (suffix.indexOf('.') === -1) { + return false; + } - if (res && res.length > 0) { - return _04PostProcess(terms, regs, res); - } - } //optimisation for '^' start logic + return hasEllipse.test(str); + }; + const testHasLetter = function (suffix, prefixHasLetter) { + return prefixHasLetter || hasLetter.test(suffix); + }; + /** does this look like a sentence? */ - if (regs[0].start === true) { - var _res = _03TryMatch(terms, regs, 0, terms.length); - if (_res && _res.match && _res.match.length > 0) { - _res.match = _res.match.filter(function (m) { - return m; - }); - matches.push(_res); - } + const isSentence = function (str, suffix, abbrevs, prefixContext) { + // must have a letter + prefixContext.hasLetter = testHasLetter(suffix, prefixContext.hasLetter); - return _04PostProcess(terms, regs, matches); - } //try starting, from every term + if (!prefixContext.hasLetter) { + return false; + } // check for 'F.B.I.' - for (var i = 0; i < terms.length; i += 1) { - // slice may be too short - if (i + minLength > terms.length) { - break; - } //try it! + if (testIsAcronym(str, suffix)) { + return false; + } //check for '...' - var _res2 = _03TryMatch(terms.slice(i), regs, i, terms.length); + if (testHasEllipse(str, suffix)) { + return false; + } - if (_res2 && _res2.match && _res2.match.length > 0) { - //zoom forward! - i += _res2.match.length - 1; //[capture-groups] return some null responses + let txt = str.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/, ''); + let words = txt.split(' '); + let lastWord = words[words.length - 1].toLowerCase(); // check for 'Mr.' - _res2.match = _res2.match.filter(function (m) { - return m; - }); - matches.push(_res2); //ok, maybe that's enough? + if (abbrevs.hasOwnProperty(lastWord)) { + return false; + } // //check for jeopardy! + // if (blacklist.hasOwnProperty(lastWord)) { + // return false + // } - if (matchOne === true) { - return _04PostProcess(terms, regs, matches); - } - } - } - return _04PostProcess(terms, regs, matches); - }; + return true; + }; - var _01MatchAll = matchAll; - /** return anything that doesn't match. - * returns a simple array of arrays - */ + const splitSentences$1 = function (text, world) { + let abbrevs = world.cache.abbreviations; + text = text || ''; + text = String(text); + let sentences = []; // First do a greedy-split.. - var notMatch = function notMatch(p, regs) { - var found = {}; + let chunks = []; // Ensure it 'smells like' a sentence - var arr = _01MatchAll(p, regs); + if (!text || typeof text !== 'string' || hasSomething.test(text) === false) { + return sentences; + } // cleanup unicode-spaces - arr.forEach(function (_ref) { - var ts = _ref.match; - ts.forEach(function (t) { - found[t.id] = true; - }); - }); //return anything not found - var terms = p.terms(); - var result = []; - var current = []; - terms.forEach(function (t) { - if (found[t.id] === true) { - if (current.length > 0) { - result.push(current); - current = []; - } + text = text.replace('\xa0', ' '); // Start somewhere: - return; - } + let splits = naiive_split(text); // Filter-out the crap ones - current.push(t); - }); + for (let i = 0; i < splits.length; i++) { + let s = splits[i]; - if (current.length > 0) { - result.push(current); - } + if (s === undefined || s === '') { + continue; + } //this is meaningful whitespace - return result; - }; - var not$1 = notMatch; - /** return an array of matching phrases */ + if (hasSomething.test(s) === false) { + //add it to the last one + if (chunks[chunks.length - 1]) { + chunks[chunks.length - 1] += s; + continue; + } else if (splits[i + 1]) { + //add it to the next one + splits[i + 1] = s + splits[i + 1]; + continue; + } + } //else, only whitespace, no terms, no sentence - var match_1 = function match_1(regs) { - var _this = this; - var justOne = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + chunks.push(s); + } //detection of non-sentence chunks: + //loop through these chunks, and join the non-sentence chunks back together.. - var matches = _01MatchAll(this, regs, justOne); //make them phrase objects + let suffix = chunks[0] || ''; + const prefixContext = { + hasLetter: false + }; - matches = matches.map(function (_ref) { - var match = _ref.match, - groups = _ref.groups; + for (let i = 0; i < chunks.length; i++) { + let c = chunks[i]; //should this chunk be combined with the next one? - var p = _this.buildFrom(match[0].id, match.length, groups); + if (chunks[i + 1] && isSentence(c, suffix, abbrevs, prefixContext) === false) { + suffix = chunks[i + 1] || ''; + chunks[i + 1] = c + suffix; + } else if (c && c.length > 0) { + //&& hasLetter.test(c) + //this chunk is a proper sentence.. + sentences.push(c); + suffix = chunks[i + 1] || ''; + prefixContext.hasLetter = false; + } - p.cache.terms = match; - return p; - }); - return matches; - }; - /** return boolean if one match is found */ + chunks[i] = ''; + } //if we never got a sentence, return the given text - var has = function has(regs) { - var matches = _01MatchAll(this, regs, true); + if (sentences.length === 0) { + return [text]; + } //move whitespace to the ends of sentences, when possible + //['hello',' world'] -> ['hello ','world'] - return matches.length > 0; - }; - /** remove all matches from the result */ + for (let i = 1; i < sentences.length; i += 1) { + let ws = sentences[i].match(startWhitespace); - var not = function not(regs) { - var _this2 = this; + if (ws !== null) { + sentences[i - 1] += ws[0]; + sentences[i] = sentences[i].replace(startWhitespace, ''); + } + } - var matches = not$1(this, regs); //make them phrase objects + return sentences; + }; - matches = matches.map(function (list) { - return _this2.buildFrom(list[0].id, list.length); - }); - return matches; - }; - /** return a list of phrases that can have this tag */ + var _01Sentences = splitSentences$1; // console.log(sentence_parser('john f. kennedy')); + const wordlike = /\S/; + const isBoundary = /^[!?.]+$/; + const naiiveSplit = /(\S+)/; + const isSlash = /[a-z] ?\/ ?[a-z]*$/; + let notWord = ['.', '?', '!', ':', ';', '-', '–', '—', '--', '...', '(', ')', '[', ']', '"', "'", '`']; + notWord = notWord.reduce((h, c) => { + h[c] = true; + return h; + }, {}); - var canBe$1 = function canBe(tag, world) { - var _this3 = this; + const hasHyphen = function (str) { + //dont split 're-do' + if (/^(re|un|micro|macro|trans|bi|mono|over)-?[^aeiou]./.test(str) === true) { + return false; + } //dont split 'bat-like' - var results = []; - var terms = this.terms(); - var previous = false; - for (var i = 0; i < terms.length; i += 1) { - var can = terms[i].canBe(tag, world); + if (/^([a-z\u00C0-\u00FF/]+)(-|–|—)(like|ish|less|able)/i.test(str) === true) { + return false; + } //letter-number 'aug-20' - if (can === true) { - if (previous === true) { - //add it to the end - results[results.length - 1].push(terms[i]); - } else { - results.push([terms[i]]); //make a new one - } - - previous = can; - } - } //turn them into Phrase objects - - - results = results.filter(function (a) { - return a.length > 0; - }).map(function (arr) { - return _this3.buildFrom(arr[0].id, arr.length); - }); - return results; - }; - - var match = { - match: match_1, - has: has, - not: not, - canBe: canBe$1 - }; - - var Phrase = function Phrase(id, length, pool) { - _classCallCheck(this, Phrase); - - this.start = id; - this.length = length; - this.isA = 'Phrase'; // easier than .constructor... - - Object.defineProperty(this, 'pool', { - enumerable: false, - writable: true, - value: pool - }); - Object.defineProperty(this, 'cache', { - enumerable: false, - writable: true, - value: {} - }); - Object.defineProperty(this, 'groups', { - enumerable: false, - writable: true, - value: {} - }); - }; - /** create a new Phrase object from an id and length */ - - - Phrase.prototype.buildFrom = function (id, length, groups) { - var p = new Phrase(id, length, this.pool); //copy-over or replace capture-groups too - - if (groups && Object.keys(groups).length > 0) { - p.groups = groups; - } else { - p.groups = this.groups; - } - - return p; - }; //apply methods - - - Object.assign(Phrase.prototype, match); - Object.assign(Phrase.prototype, methods$7); //apply aliases - - var aliases$1 = { - term: 'terms' - }; - Object.keys(aliases$1).forEach(function (k) { - return Phrase.prototype[k] = Phrase.prototype[aliases$1[k]]; - }); - var Phrase_1 = Phrase; - /** a key-value store of all terms in our Document */ - - var Pool = /*#__PURE__*/function () { - function Pool() { - var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - _classCallCheck(this, Pool); //quiet this property in console.logs - - - Object.defineProperty(this, 'words', { - enumerable: false, - value: words - }); - } - /** throw a new term object in */ - - - _createClass(Pool, [{ - key: "add", - value: function add(term) { - this.words[term.id] = term; - return this; - } - /** find a term by it's id */ - - }, { - key: "get", - value: function get(id) { - return this.words[id]; - } - /** find a term by it's id */ - - }, { - key: "remove", - value: function remove(id) { - delete this.words[id]; - } - }, { - key: "merge", - value: function merge(pool) { - Object.assign(this.words, pool.words); - return this; - } - /** helper method */ - - }, { - key: "stats", - value: function stats() { - return { - words: Object.keys(this.words).length - }; - } - }]); - - return Pool; - }(); - /** make a deep-copy of all terms */ - - - Pool.prototype.clone = function () { - var _this = this; - - var keys = Object.keys(this.words); - var words = keys.reduce(function (h, k) { - var t = _this.words[k].clone(); - - h[t.id] = t; - return h; - }, {}); - return new Pool(words); - }; - - var Pool_1 = Pool; //add forward/backward 'linked-list' prev/next ids - - var linkTerms = function linkTerms(terms) { - terms.forEach(function (term, i) { - if (i > 0) { - term.prev = terms[i - 1].id; - } - - if (terms[i + 1]) { - term.next = terms[i + 1].id; - } - }); - }; - - var _linkTerms = linkTerms; //(Rule-based sentence boundary segmentation) - chop given text into its proper sentences. - // Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc. - // @spencermountain 2017 MIT - //proper nouns with exclamation marks - // const blacklist = { - // yahoo: true, - // joomla: true, - // jeopardy: true, - // } - //regs- - - var initSplit = /(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g; - var hasSomething = /\S/; - var isAcronym$1 = /[ .][A-Z]\.? *$/i; - var hasEllipse = /(?:\u2026|\.{2,}) *$/; - var newLine = /((?:\r?\n|\r)+)/; // Match different new-line formats - - var hasLetter = /[a-z0-9\u00C0-\u00FF\u00a9\u00ae\u2000-\u3300\ud000-\udfff]/i; - var startWhitespace = /^\s+/; // Start with a regex: - - var naiive_split = function naiive_split(text) { - var all = []; //first, split by newline - - var lines = text.split(newLine); - - for (var i = 0; i < lines.length; i++) { - //split by period, question-mark, and exclamation-mark - var arr = lines[i].split(initSplit); - - for (var o = 0; o < arr.length; o++) { - all.push(arr[o]); - } - } - - return all; - }; - /** does this look like a sentence? */ - - - var isSentence = function isSentence(str, abbrevs) { - // check for 'F.B.I.' - if (isAcronym$1.test(str) === true) { - return false; - } //check for '...' + let reg = /^([a-z\u00C0-\u00FF`"'/]+)(-|–|—)([a-z0-9\u00C0-\u00FF].*)/i; - if (hasEllipse.test(str) === true) { - return false; - } // must have a letter + if (reg.test(str) === true) { + return true; + } //number-letter '20-aug' - if (hasLetter.test(str) === false) { - return false; - } + let reg2 = /^([0-9]{1,4})(-|–|—)([a-z\u00C0-\u00FF`"'/-]+$)/i; - var txt = str.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/, ''); - var words = txt.split(' '); - var lastWord = words[words.length - 1].toLowerCase(); // check for 'Mr.' + if (reg2.test(str) === true) { + return true; + } - if (abbrevs.hasOwnProperty(lastWord)) { - return false; - } // //check for jeopardy! - // if (blacklist.hasOwnProperty(lastWord)) { - // return false - // } + return false; + }; // combine '2 - 5' like '2-5' is - return true; - }; + const combineRanges = function (arr) { + const startRange = /^[0-9]{1,4}(:[0-9][0-9])?([a-z]{1,2})? ?(-|–|—) ?$/; + const endRange = /^[0-9]{1,4}([a-z]{1,2})? ?$/; - var splitSentences = function splitSentences(text, world) { - var abbrevs = world.cache.abbreviations; - text = text || ''; - text = String(text); - var sentences = []; // First do a greedy-split.. + for (let i = 0; i < arr.length - 1; i += 1) { + if (arr[i + 1] && startRange.test(arr[i]) && endRange.test(arr[i + 1])) { + arr[i] = arr[i] + arr[i + 1]; + arr[i + 1] = null; + } + } - var chunks = []; // Ensure it 'smells like' a sentence + return arr; + }; // 'he / she' should be one word - if (!text || typeof text !== 'string' || hasSomething.test(text) === false) { - return sentences; - } // cleanup unicode-spaces + const combineSlashes = function (arr) { + for (let i = 1; i < arr.length - 1; i++) { + if (isSlash.test(arr[i])) { + arr[i - 1] += arr[i] + arr[i + 1]; + arr[i] = null; + arr[i + 1] = null; + } + } - text = text.replace('\xa0', ' '); // Start somewhere: + return arr; + }; - var splits = naiive_split(text); // Filter-out the crap ones + const splitHyphens = function (word) { + let arr = []; //support multiple-hyphenated-terms - for (var i = 0; i < splits.length; i++) { - var s = splits[i]; + const hyphens = word.split(/[-–—]/); + let whichDash = '-'; + let found = word.match(/[-–—]/); - if (s === undefined || s === '') { - continue; - } //this is meaningful whitespace + if (found && found[0]) { + whichDash = found; + } + for (let o = 0; o < hyphens.length; o++) { + if (o === hyphens.length - 1) { + arr.push(hyphens[o]); + } else { + arr.push(hyphens[o] + whichDash); + } + } - if (hasSomething.test(s) === false) { - //add it to the last one - if (chunks[chunks.length - 1]) { - chunks[chunks.length - 1] += s; - continue; - } else if (splits[i + 1]) { - //add it to the next one - splits[i + 1] = s + splits[i + 1]; - continue; - } - } //else, only whitespace, no terms, no sentence + return arr; + }; + const isArray$1 = function (arr) { + return Object.prototype.toString.call(arr) === '[object Array]'; + }; //turn a string into an array of strings (naiive for now, lumped later) - chunks.push(s); - } //detection of non-sentence chunks: - //loop through these chunks, and join the non-sentence chunks back together.. + const splitWords = function (str) { + let result = []; + let arr = []; //start with a naiive split - for (var _i = 0; _i < chunks.length; _i++) { - var c = chunks[_i]; //should this chunk be combined with the next one? + str = str || ''; - if (chunks[_i + 1] && isSentence(c, abbrevs) === false) { - chunks[_i + 1] = c + (chunks[_i + 1] || ''); - } else if (c && c.length > 0) { - //&& hasLetter.test(c) - //this chunk is a proper sentence.. - sentences.push(c); - chunks[_i] = ''; - } - } //if we never got a sentence, return the given text + if (typeof str === 'number') { + str = String(str); + } + if (isArray$1(str)) { + return str; + } - if (sentences.length === 0) { - return [text]; - } //move whitespace to the ends of sentences, when possible - //['hello',' world'] -> ['hello ','world'] + const words = str.split(naiiveSplit); + for (let i = 0; i < words.length; i++) { + //split 'one-two' + if (hasHyphen(words[i]) === true) { + arr = arr.concat(splitHyphens(words[i])); + continue; + } - for (var _i2 = 1; _i2 < sentences.length; _i2 += 1) { - var ws = sentences[_i2].match(startWhitespace); + arr.push(words[i]); + } //greedy merge whitespace+arr to the right - if (ws !== null) { - sentences[_i2 - 1] += ws[0]; - sentences[_i2] = sentences[_i2].replace(startWhitespace, ''); - } - } - return sentences; - }; + let carry = ''; - var _01Sentences = splitSentences; // console.log(sentence_parser('john f. kennedy')); + for (let i = 0; i < arr.length; i++) { + let word = arr[i]; //if it's more than a whitespace - var wordlike = /\S/; - var isBoundary = /^[!?.]+$/; - var naiiveSplit = /(\S+)/; - var isSlash = /[a-z] ?\/ ?[a-z]*$/; - var notWord = ['.', '?', '!', ':', ';', '-', '–', '—', '--', '...', '(', ')', '[', ']', '"', "'", '`']; - notWord = notWord.reduce(function (h, c) { - h[c] = true; - return h; - }, {}); + if (wordlike.test(word) === true && notWord.hasOwnProperty(word) === false && isBoundary.test(word) === false) { + //put whitespace on end of previous term, if possible + if (result.length > 0) { + result[result.length - 1] += carry; + result.push(word); + } else { + //otherwise, but whitespace before + result.push(carry + word); + } - var hasHyphen = function hasHyphen(str) { - //dont split 're-do' - if (/^(re|un)-?[^aeiou]./.test(str) === true) { - return false; - } //letter-number 'aug-20' + carry = ''; + } else { + carry += word; + } + } //handle last one + + + if (carry) { + if (result.length === 0) { + result[0] = ''; + } + result[result.length - 1] += carry; //put it on the end + } // combine 'one / two' - var reg = /^([a-z\u00C0-\u00FF`"'/]+)(-|–|—)([a-z0-9\u00C0-\u00FF].*)/i; - if (reg.test(str) === true) { - return true; - } //number-letter '20-aug' + result = combineSlashes(result); + result = combineRanges(result); // remove empty results + + result = result.filter(s => s); + return result; + }; + + var _02Words = splitWords; + const Term$2 = Term_1; + const Phrase$2 = Phrase_1; + const Pool$2 = Pool_1; + const linkTerms$1 = _linkTerms; + const splitSentences = _01Sentences; + const splitTerms = _02Words; + + const isArray = function (arr) { + return Object.prototype.toString.call(arr) === '[object Array]'; + }; + /** turn a string into an array of Phrase objects */ + + + const fromText = function () { + let text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let world = arguments.length > 1 ? arguments[1] : undefined; + let pool = arguments.length > 2 ? arguments[2] : undefined; + let sentences = null; //a bit of validation, first + + if (typeof text !== 'string') { + if (typeof text === 'number') { + text = String(text); + } else if (isArray(text)) { + sentences = text; + } + } //tokenize into words + + + sentences = sentences || splitSentences(text, world); + sentences = sentences.map(str => splitTerms(str)); //turn them into proper objects + + pool = pool || new Pool$2(); + let phrases = sentences.map(terms => { + terms = terms.map(str => { + let term = new Term$2(str); + pool.add(term); + return term; + }); //add next/previous ids + + linkTerms$1(terms); //return phrase objects + + let p = new Phrase$2(terms[0].id, terms.length, pool); + p.cache.terms = terms; + return p; + }); //return them ready for a Document object + + return phrases; + }; + + var _01Tokenizer = fromText; + const Term$1 = Term_1; + const Phrase$1 = Phrase_1; + const Pool$1 = Pool_1; + const linkTerms = _linkTerms; + + const fromJSON$1 = function (json, world) { + let pool = new Pool$1(); + let phrases = json.map((p, k) => { + let terms = p.terms.map((o, i) => { + let term = new Term$1(o.text); + term.pre = o.pre !== undefined ? o.pre : ''; + + if (o.post === undefined) { + o.post = ' '; //no given space for very last term + + if (i >= p.terms.length - 1) { + o.post = '. '; + + if (k >= p.terms.length - 1) { + o.post = '.'; + } + } + } + + term.post = o.post !== undefined ? o.post : ' '; + + if (o.tags) { + o.tags.forEach(tag => term.tag(tag, '', world)); + } + + pool.add(term); + return term; + }); //add prev/next links + + linkTerms(terms); // return a proper Phrase object + + return new Phrase$1(terms[0].id, terms.length, pool); + }); + return phrases; + }; + + var fromJSON_1 = fromJSON$1; + var _version = '13.11.4'; + const entity = ['Person', 'Place', 'Organization']; + var nouns$2 = { + Noun: { + notA: ['Verb', 'Adjective', 'Adverb'] + }, + // - singular + Singular: { + isA: 'Noun', + notA: 'Plural' + }, + //a specific thing that's capitalized + ProperNoun: { + isA: 'Noun' + }, + // -- people + Person: { + isA: ['ProperNoun', 'Singular'], + notA: ['Place', 'Organization', 'Date'] + }, + FirstName: { + isA: 'Person' + }, + MaleName: { + isA: 'FirstName', + notA: ['FemaleName', 'LastName'] + }, + FemaleName: { + isA: 'FirstName', + notA: ['MaleName', 'LastName'] + }, + LastName: { + isA: 'Person', + notA: ['FirstName'] + }, + NickName: { + isA: 'Person', + notA: ['FirstName', 'LastName'] + }, + Honorific: { + isA: 'Noun', + notA: ['FirstName', 'LastName', 'Value'] + }, + // -- places + Place: { + isA: 'Singular', + notA: ['Person', 'Organization'] + }, + Country: { + isA: ['Place', 'ProperNoun'], + notA: ['City'] + }, + City: { + isA: ['Place', 'ProperNoun'], + notA: ['Country'] + }, + Region: { + isA: ['Place', 'ProperNoun'] + }, + Address: { + isA: 'Place' + }, + //---Orgs--- + Organization: { + isA: ['Singular', 'ProperNoun'], + notA: ['Person', 'Place'] + }, + SportsTeam: { + isA: 'Organization' + }, + School: { + isA: 'Organization' + }, + Company: { + isA: 'Organization' + }, + // - plural + Plural: { + isA: 'Noun', + notA: ['Singular'] + }, + //(not plural or singular) + Uncountable: { + isA: 'Noun' + }, + Pronoun: { + isA: 'Noun', + notA: entity + }, + //a word for someone doing something -'plumber' + Actor: { + isA: 'Noun', + notA: entity + }, + //a gerund-as-noun - 'swimming' + Activity: { + isA: 'Noun', + notA: ['Person', 'Place'] + }, + //'kilograms' + Unit: { + isA: 'Noun', + notA: entity + }, + //'Canadians' + Demonym: { + isA: ['Noun', 'ProperNoun'], + notA: entity + }, + //`john's` + Possessive: { + isA: 'Noun' // notA: 'Pronoun', + + } + }; + var verbs$2 = { + Verb: { + notA: ['Noun', 'Adjective', 'Adverb', 'Value', 'Expression'] + }, + // walks + PresentTense: { + isA: 'Verb', + notA: ['PastTense', 'FutureTense'] + }, + // neutral form - 'walk' + Infinitive: { + isA: 'PresentTense', + notA: ['PastTense', 'Gerund'] + }, + //close the door! + Imperative: { + isA: 'Infinitive' // notA: ['PresentTense', 'PastTense', 'FutureTense', 'Gerund'], + + }, + // walking + Gerund: { + isA: 'PresentTense', + notA: ['PastTense', 'Copula', 'FutureTense'] + }, + // walked + PastTense: { + isA: 'Verb', + notA: ['FutureTense'] + }, + // will walk + FutureTense: { + isA: 'Verb' + }, + // is + Copula: { + isA: 'Verb' + }, + // would have + Modal: { + isA: 'Verb', + notA: ['Infinitive'] + }, + // had walked + PerfectTense: { + isA: 'Verb', + notA: 'Gerund' + }, + Pluperfect: { + isA: 'Verb' + }, + // shown + Participle: { + isA: 'PastTense' + }, + // show up + PhrasalVerb: { + isA: 'Verb' + }, + //'up' part + Particle: { + isA: 'PhrasalVerb' + }, + //this can be an adverb + Auxiliary: { + notA: ['Noun', 'Adjective', 'Value'] + } + }; + var values$1 = { + Value: { + notA: ['Verb', 'Adjective', 'Adverb'] + }, + Ordinal: { + isA: 'Value', + notA: ['Cardinal'] + }, + Cardinal: { + isA: 'Value', + notA: ['Ordinal'] + }, + Fraction: { + isA: 'Value', + notA: ['Noun'] + }, + RomanNumeral: { + isA: 'Cardinal', + //can be a person, too + notA: ['Ordinal', 'TextValue'] + }, + TextValue: { + isA: 'Value', + notA: ['NumericValue'] + }, + NumericValue: { + isA: 'Value', + notA: ['TextValue'] + }, + Money: { + isA: 'Cardinal' + }, + Percent: { + isA: 'Value' + } + }; + const anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value', 'QuestionWord']; + var misc$3 = { + //--Adjectives-- + Adjective: { + notA: ['Noun', 'Verb', 'Adverb', 'Value'] + }, + // adjectives that can conjugate + Comparable: { + isA: ['Adjective'] + }, + // better + Comparative: { + isA: ['Adjective'] + }, + // best + Superlative: { + isA: ['Adjective'], + notA: ['Comparative'] + }, + NumberRange: {// isA: ['Contraction'], + }, + Adverb: { + notA: ['Noun', 'Verb', 'Adjective', 'Value'] + }, + // Dates: + //not a noun, but usually is + Date: { + notA: ['Verb', 'Adverb', 'Preposition', 'Adjective'] + }, + Month: { + isA: ['Date', 'Singular'], + notA: ['Year', 'WeekDay', 'Time'] + }, + WeekDay: { + isA: ['Date', 'Noun'] + }, + // 'PST' + Timezone: { + isA: ['Date', 'Noun'], + notA: ['Adjective', 'ProperNoun'] + }, + // '9:20pm' + Time: { + isA: ['Date'], + notA: ['AtMention'] + }, + //glue + Determiner: { + notA: anything + }, + Conjunction: { + notA: anything + }, + Preposition: { + notA: anything + }, + // what, who, why + QuestionWord: { + notA: ['Determiner'] + }, + // peso, euro + Currency: { + isA: ['Noun'] + }, + // ughh + Expression: { + notA: ['Noun', 'Adjective', 'Verb', 'Adverb'] + }, + // dr. + Abbreviation: {}, + // internet tags + Url: { + notA: ['HashTag', 'PhoneNumber', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'] + }, + PhoneNumber: { + notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'] + }, + HashTag: {}, + AtMention: { + isA: ['Noun'], + notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'Email'] + }, + Emoji: { + notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'] + }, + Emoticon: { + notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'] + }, + Email: { + notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'] + }, + //non-exclusive + Acronym: { + notA: ['Plural', 'RomanNumeral'] + }, + Negative: { + notA: ['Noun', 'Adjective', 'Value'] + }, + // if, unless, were + Condition: { + notA: ['Verb', 'Adjective', 'Noun', 'Value'] + } + }; + const colorMap = { + Noun: 'blue', + Verb: 'green', + Negative: 'green', + Date: 'red', + Value: 'red', + Adjective: 'magenta', + Preposition: 'cyan', + Conjunction: 'cyan', + Determiner: 'cyan', + Adverb: 'cyan' + }; + /** add a debug color to some tags */ + + const addColors = function (tags) { + Object.keys(tags).forEach(k => { + // assigned from plugin, for example + if (tags[k].color) { + tags[k].color = tags[k].color; + return; + } // defined above + + + if (colorMap[k]) { + tags[k].color = colorMap[k]; + return; + } + + tags[k].isA.some(t => { + if (colorMap[t]) { + tags[k].color = colorMap[t]; + return true; + } + + return false; + }); + }); + return tags; + }; + + var _color = addColors; + + const unique$4 = function (arr) { + return arr.filter((v, i, a) => a.indexOf(v) === i); + }; //add 'downward' tags (that immediately depend on this one) + + + const inferIsA$1 = function (tags) { + Object.keys(tags).forEach(k => { + let tag = tags[k]; + let len = tag.isA.length; + + for (let i = 0; i < len; i++) { + let down = tag.isA[i]; + + if (tags[down]) { + tag.isA = tag.isA.concat(tags[down].isA); + } + } // clean it up + + + tag.isA = unique$4(tag.isA); + }); + return tags; + }; + + var _isA = inferIsA$1; + + const unique$3 = function (arr) { + return arr.filter((v, i, a) => a.indexOf(v) === i); + }; // crawl the tag-graph and infer any conflicts + // faster than doing this at tag-time + + + const inferNotA$1 = function (tags) { + let keys = Object.keys(tags); + keys.forEach(k => { + let tag = tags[k]; + tag.notA = tag.notA || []; + tag.isA.forEach(down => { + if (tags[down] && tags[down].notA) { + // borrow its conflicts + let notA = typeof tags[down].notA === 'string' ? [tags[down].isA] : tags[down].notA || []; + tag.notA = tag.notA.concat(notA); + } + }); // any tag that lists us as a conflict, we conflict it back. + + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + + if (tags[key].notA.indexOf(k) !== -1) { + tag.notA.push(key); + } + } // clean it up + + + tag.notA = unique$3(tag.notA); + }); + return tags; + }; + + var _notA = inferNotA$1; + + const inferLineage = function (tags) { + let keys = Object.keys(tags); + keys.forEach(k => { + let tag = tags[k]; + tag.lineage = []; // find all tags with it in their 'isA' set + + for (let i = 0; i < keys.length; i++) { + if (tags[keys[i]].isA.indexOf(k) !== -1) { + tag.lineage.push(keys[i]); + } + } + }); + return tags; + }; + + var _lineage = inferLineage; + const inferColor = _color; + const inferIsA = _isA; + const inferNotA = _notA; + const lineage = _lineage; + + const validate = function (tags) { + // cleanup format + Object.keys(tags).forEach(k => { + let tag = tags[k]; // ensure isA is an array + + tag.isA = tag.isA || []; + + if (typeof tag.isA === 'string') { + tag.isA = [tag.isA]; + } // ensure notA is an array + + + tag.notA = tag.notA || []; + + if (typeof tag.notA === 'string') { + tag.notA = [tag.notA]; + } + }); + return tags; + }; // build-out the tag-graph structure + + + const inferTags$1 = function (tags) { + // validate data + tags = validate(tags); // build its 'down tags' + + tags = inferIsA(tags); // infer the conflicts + + tags = inferNotA(tags); // debug tag color + + tags = inferColor(tags); // find incoming links + + tags = lineage(tags); + return tags; + }; + + var inference = inferTags$1; + const nouns$1 = nouns$2; + const verbs$1 = verbs$2; + const values = values$1; + const misc$2 = misc$3; + const inferTags = inference; //extend tagset with new tags + + const addIn = function (obj, tags) { + Object.keys(obj).forEach(k => { + tags[k] = obj[k]; + }); + }; + + const build = () => { + let tags = {}; + addIn(nouns$1, tags); + addIn(verbs$1, tags); + addIn(values, tags); + addIn(misc$2, tags); // do the graph-stuff + + tags = inferTags(tags); + return tags; + }; + + var tags = build(); + var _data = { + "Comparative": "true¦better", + "Superlative": "true¦earlier", + "PresentTense": "true¦is,sounds", + "Value": "true¦a few", + "Noun": "true¦a5b4c2f1here,ie,lit,m0no doubt,pd,tce;a,d;t,y;a,ca,o0;l,rp;a,l;d,l,rc", + "Copula": "true¦a1is,w0;as,ere;m,re", + "PastTense": "true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan", + "Condition": "true¦if,lest,unless", + "Preposition": "true¦'o,-,aLbIcHdGexcept,fFiDmidQnotwithstandiRoBpSqua,sAt6u3vi2w0;/o,hereNith0;!in,oR;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oJ;ans,ince,o that;',f0n2ut;!f;f,n0;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut", + "Gerund": "true¦accord0be0develop0go0result0stain0;ing", + "Negative": "true¦n0;ever,o0;!n,t", + "QuestionWord": "true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s", + "Plural": "true¦records", + "Conjunction": "true¦&,aFbBcuz,how9in caEno8o7p5supposing,t2v1wh0yet;eth9ile;ers4s;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh", + "Abbreviation": "true¦a0Jb0Gc0Ad08e05f02g01h00iYjWkanVlTmNnKoJpFque,rDs8t6u5v2w0;is0r,y0B;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;ce,e0;l,mp,nn,x;ask,e2fc,gt,i1q,r,s,t,u0;pt,rg;r,tu;c,nJp0;!t;b,d,e0;pGs,v;a,d,ennNhd,l,p,r1s0vt;!eud;ef,o0;b,f,n;ct,kla,nt;e0ov;b0e;!r;a4d,essrs,i1lle,me,r7s0t;!tr;n1s0;c,ter;!n;!j,r,sc;at,it,lb,ng,t0;!d;!s;an,d,r,u0;l,n;a,da,e,n0;c,f;on,wy;a,en,ov;e1ig,l0m,r,t,y;!a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0ist,r;c,f,pt,t;a3ca,l,m2o0pl,res,yn;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v", + "Pronoun": "true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s", + "Singular": "true¦0:16;1:13;2:19;a16b0Tc0Kd0De0Af05g00hWiVjel0kitty,lTmPnOoNpHquestionGrEs9t6u4w3;ay,om03;nc10s 3;doll0Lst0N; rex,a4h3ic,ragedy,v show;ere,i2;l0x return;i6ky,omeoNt3uper bowl,yst15;ep4ri2u3;de0Yff;faTmoT;st1ze;al0i2o3;om,se;! mark;a7i1la6r4u3;dQrpoI;e3ie0Hobl0V;roga00ss releaG;te,y1;rt,te0N;bjWceJthers,verview;othi2umb1;a5ee08o3;del,m3nopo0rni2th1;!my;n,yf0;i3unch;ne;ci2nsect;ead start,o3uman right;l0me4u3;se;! run;adf0entlem6irl02laci1od,rand4u3;l0y; slam,fa3mo3;th1;an;a6ella,ly,ol0r4un3;di2;ee market,iWo3;nti1sP;mi0th1;conomy,gg,ner7ven4x3;ampTecu9;i2t;ad8e5inn1o3ragonf0ude;cumentGg3i0l0or;gy;ath,t3;ec3;tive;!dy;a9eili2h7i5o3redit card;ttage,u3;ri1sin;ty,vil w3;ar;andeli1ocol3;ate;n3rF;ary;aCel0lesJo8r5u3;n3tterf0;ti2;eakfa4o3;!th1;st;dy,tt5y3;!fri3;end;le;nki2r3;ri1;er;d5l0noma0u3;nt;ly; homin5verti3;si2;ng;em", + "FemaleName": "true¦0:J3;1:J7;2:IG;3:IF;4:IX;5:IK;6:JO;7:H0;8:JG;9:JK;A:HN;B:HY;C:IT;D:IP;E:JD;F:HC;G:I0;aGRbFLcDPdCYeBOfB4gADh9Ti9Gj8Gk7Gl60m49n3No3Jp37qu36r2Ds16t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof2;e3Uf2la,ra;h3iKlIna,ynH;ab,ep;da,ma;da,h3iHra;nab;aKeJi0Fol5BuIvH;etAonDO;i0na;le0sen2;el,gm3Jn,rGJs8W;aoHme0nyi;m62yAE;aMendDYhiDFiH;dele8lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;cIktoriBMlAole7viH;anC3enJ0;kF9tor2;da,lA9nus,rHs0;a,nHoniH4;a,iFQ;leHnesH4;nIHrH;i1y;g8rHxH5;su5te;aYeUhRiNoLrIuHy3;i,la;acIZiHu0L;c2na,sH;hBPta;nHr0H;iBNya;aJffaEOnHs6;a,gtiH;ng;!nFQra;aIeHomasi0;a,l9Po8Ares1;l2ndolwethu;g9Go88rIssH;!a,ie;eHi,ri9;sa,za;bPlNmLnJrIs6tHwa0;ia0um;a63yn;iHya;a,ka,s6;arB6e3iHmEDra;!ka;a,iH;a,t6;at6it6;a0Fcarlet3We0BhXiTkye,neza0oRtNuIyH;bIBlvi1;e,ha,mayIEni7sIzH;an3MetAie,y;anHi9;!a,e,nH;aDe;aJeH;fHl5GphH;an4;cHZr5;b2fiA8m0OnHphi1;d3ia,ja,ya;er3lJmon1nIobh8PtH;a,i;dy;lEPv2;aMeIirHo0risF7y5;a,lDK;ba,e0i5lJrH;iHrDOyl;!d8Hfa;ia,lDX;hd,iMki3nJrIu0w0yH;la,ma,na;i,le8on,ron;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye81vH;da,inj;e0ife;en1i0ma;anA5bNd3Nh1RiBkMlLmJndIrHs6vannaD;aDi0;ra,y;aHi3;nt6ra;lDKma,ome;ee0in8Ru3;in1ri0;a05e00hYiVoIuH;by,thDH;bScRghQl2KnPsJwIxH;anAXie,y;an,e0;aIeHie,lE; merBLann9ll1marDBt7;!lHnn1;iHyn;e,nH;a,d9K;da,i,na;ayy8D;hel62io;bDKer7yn;a,cIkHmas,n9Fta,ya;ki,o;helGki;ea,iannGDoH;da,n1K;an0bJem9Agi0iInHta,y0;a88ee;han83na;a,eH;cEAkaD;bi0chIe,i0mo0nHquEKvCy0;di,ia;aEIelHiB;!e,le;een4ia0;aNeMhKipaluk,oJrHute66;iHudenCQ;scil3LyamvaB;lly,rt2;ilome0oebe,ylH;is,lis;arl,ggy,nelope,r5t3;ige,m0TnKo5rvaDGtIulH;a,etAin1;ricHsy,tBY;a,e,ia;do3i06;ctav2dIfCZis6lHphCZumC3yunbileg;a,ga,iv2;eHvAC;l2tA;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aDeCma;ll1mi;aNcLhariBOkKlaJna,sHta,vi;anHha;ur;!y;a,iDTki;hoGk9VolH;a,eDJ;!mh;hir,lHna,risFsreC;!a,lBT;asuLdKh2i6CnJomi9rgEPtHzanin zah3;aHhal4;li1s6;cy,etA;a,e8iEV;nngu30;a09ckenz4e01iMoJrignayani,uriDDyH;a,rH;a,lNna,tG;bi0i3llBInH;a,iH;ca,ka,qD3;a,cTkaSlNmi,nLrItzi,yH;ar;aIiam,lH;anEO;!l,nB;dy,eHh,n4;nhGrva;aKdJiCPlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5EgNi,lKrH;edi79iIjem,on,yH;em,l;em,sF;an4iHliF;nHsCE;a,da;!an,han;b0DcASd0Be,g09ha,i08ja,l06n04rLsoum60tKuIv82x9IyHz4;a,bell,ra,soB9;de,rH;a,eC;h8Fild1t4;a,cYgUiKjor4l7Sn4s6tJwa,yH;!aHbe6Wja8lAE;m,nBH;a,ha,in1;!aJbCBeIja,lEna,sHt64;!a,ol,sa;!l1H;! Jh,mInH;!a,e,n1;!awit,i;aliAHcJeduarBfernIjHlui5Y;o6Ful2;anB;ecil2la3;arJeIie,oHr44ueriA;!t;!ry;et42i37;el4Ui76y;dHon,ue5;akran7y;ak,en,iHk,lo3O;a,ka,nB;a,re,s4te;daHg4;!l3A;alEd4elHge,isDBon0;ei8in1yn;el,le;a0Ne0CiYoQuLyH;d2la,nH;!a,dIeBGnHsCL;!a,eBF;a,sCJ;aCWcJel0PiFlIna,pHz;e,i7;a,u,wa;iHy;a0Se,ja,l2JnB;is,l1SrJttIuHvel4;el5is1;e,ie;aKeIi9na,rH;a86i9;lHn1t7;ei;!in1;aSbb9CdRepa,lMnJsIv2zH;!a,be5LetAz4;a,etA;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lHy;iHy;aA0e;!aH;!n5F;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx4y5;iHt4;c2t2;e2LlCG;la,nHra;a,ie,o3;a,or1;a,gh,laH;!ni;!h,nH;a,d3e,n5P;cOdon97iNkes6mi9Ana,rMtJurIvHxmi,y5;ern1in2;a,e54ie,yn;as6iIoH;nya,ya;fa,s6;a,isF;a,la;ey,ie,y;a04eZhXiOlAKoNrJyH;lHra;a,ee,ie;istHy6D;a,en,iIyH;!na;!e,n59;nul,ri,urtnB0;aOerNlAZmJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stC;!na,ra;aHei3ongordzol;dij1w5;el7QiKjsi,lJnIrH;a,i,ri;d3na,za;ey,i,lBDs4y;ra,s6;bi7cAJdiat7IeB2iRlQmPnyakuma19rNss6KtKvi7yH;!e,lH;a,eH;e,i8L;a6DeIhHi4NlEri0y;ar6Ber6Bie,leCrB2y;!lyn8Gri0;a,en,iHl5Soli0yn;!ma,n3VsF;a5il1;ei8Ei,l4;a,tl6L;a07eYiVoNuH;anLdKliHst63;a8HeHsF;!n8tH;!a,te;e5Ji3Jy;a,i7;!anNcelEd6RelGhan7RlLni,sIva0yH;a,ce;eHie;fHlEph5U;a,in1;eHie;en,n1;!a,e,n41;lHng;!i1ClH;!i1B;anMle0nJrIsH;i8Csi8C;i,ri;!a,elGif2CnH;a,etAiHy;!e,f2A;a,e8EiInH;a,e8DiH;e,n1;cMd1mi,nIque4Xsmin3Ovie3y8zH;min9;a9eIiH;ce,e,n1s;!lHsFt0F;e,le;inIk4lEquelH;in1yn;da,ta;lRmPnOo0rNsIvaHzaro;!a0lu,na;aJiIlaHob84;!n9N;do3;!belHdo3;!a,e,l39;a77en1i0ma;a,di3es,gr6Yji;a8elBogH;en1;a,e8iHo0se;a0na;aSeOiJoHusFyacin2B;da,ll4rten23snH;a,i9Q;lImaH;ri;aIdHlaI;a,egard;ry;ath1CiJlInriet7rmi8sH;sa,t1B;en2Sga,mi;di;bi2Dil8IlNnMrJsItHwa,yl8Iz7H;i5St4;n5Yti;iHmo51ri52;etH;!te;aDnaD;a,ey,l4;a03eXiSlQoOrKunJwH;enHyne1Q;!dolE;ay,el;acIetHiselB;a,chC;e,ieH;!la;ld1AogooH;sh;adys,enHor2yn2H;a,da,na;aKgi,lIna,ov89selHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald3Pi,m3Ctru8B;etAi4W;a,eHna;s26vieve;ma;bIil,le,mHrnet,yG;al5Ni5;i5FrielH;a,l1;aVeSiRloOoz2rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0O;n1s61;!ca;!rH;a,encH;e,ia;en,o0;lIn0rnH;!anB;ec2ic2;jr,n7rKtHy9;emIiHma,ouma7;ha,ma,n;eh;ah,iBrah,za0;cr4Nd0Ne0Mi0Lk7l04mWn4YrTsNtMuLvH;aJelIiH;!e,ta;in0Gyn;!ngel2S;geni1la,ni45;h5Sta;mLperanKtH;eIhHrel5;er;l30r9;za;a,eralB;iHma,nest2Jyn;cHka,n;a,ka;a,eMiJmH;aHie,y;!li8;lHn1;ee,iHy;a,e,ja;lHrald;da,y;aWeUiNlMma,no3oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c2da,f,nMsJzaH;!betHve7;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a;!in1na;leCs6;vi;eIiHna,wi0;e,th;l,n;aYeMh2iLjeneKoHul30;lor5Tminiq4In3FrHtt4;a,eCis,la,othHthy;ea,y;ba;an0AnaDon8x4ya;anQbPde,eOiMja,lJmetr2nHsir5K;a,iH;ce,se;a,iIla,orHphi8;es,is;a,l6D;dHrdH;re;!d5Cna;!b2HoraDra;a,d3nH;!a,e;hl2i0l0HmNnLphn1rIvi1XyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,etAiH;!ca,el1Cka,z;arHia;is;a0Se0Oh05i03lVoKrIynH;di,th2;istHy05;al,i0;lPnMrIurH;tn1E;aJd2NiHn2Nri8;!nH;a,e,n1;!l1X;cepci59n4sH;tanHuelo;ce,za;eHleC;en,tA;aJeoIotH;il51;!pat3;ir9rJudH;etAiH;a,ne;a,e,iH;ce,sZ;a3er3ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Ren,iHy;!an1e,n1;deJlseIrH;!i9yl;a,y;li8;nMrH;isKlImH;ai8;a,eHotA;n1tA;!sa;d3elGtH;al,elG;cIlH;esAi44;el2ilH;e,ia,y;itlZlYmilXndWrOsMtHy5;aKeJhHri0;erHleCrEy;in1;ri0;li0ri0;a33sH;a32ie;a,iNlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eHie,o7y;ne,y;na,sF;a0Hi0H;a,e,l1;is7l4;in,yn;a0Ie02iZlXoUrH;andSeQiJoIyH;an0nn;nwEok9;an3DdgLg0XtH;n2XtH;!aInH;ey,i,y;ny;etH;!t9;an0e,nH;da,na;i9y;bbi9glarIlo05nH;i7n4;ka;ancHossom,ythe;a,he;an17lja0nHsm3I;i7tH;ou;aUcky,linTni7rPssOtJulaDvH;!erlH;ey,y;hJsy,tH;e,iHy9;e,na;!anH;ie,y;!ie;nHt6yl;adIiH;ce;etAi8;ay,da;!triH;ce,z;rbJyaH;rmH;aa;a3ie,o3ra;a2Sb2Md23g1Zi1Qj5l16m0Xn09oi,r04sUtTuPvOwa,yIzH;ra,u0;aKes6gJlIseH;!l;in;un;!nH;a,na;a,i2Ir2J;drJgus1RrIsteH;ja;el2;a,ey,i,y;aahua,he0;hIi2Gja,mi7s2DtrH;id;aMlIraqHt21;at;eIi9yH;!n;e,iHy;gh;!nH;ti;iJleIo6pi7;ta;en,n1tA;aHelG;!n1J;a00dje5eYgUiSjQnJohito,toHya;inetAnH;el5ia;!aKeIiHmJ;e,ka;!mHtA;ar4;!belIliFmU;sa;!le;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tA;te;! JbImHstasiNya;ar2;el;cla3jul2pau5;aLberKeliJiHy;e,l2naH;!ta;a,ja;!ly;hGiIl2nB;da;a,ra;le;aWba,ePiMlKma,thJyH;a,c2sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c2is6jaKksaKna,sJxH;aHia;!nd3;ia,saH;nd3;ra;ia;i0nIyH;ah,na;a,is,naDoud;la;c6da,leCmNnLsH;haDlH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lEsH;on;yn;!lH;i8yn;ne;aKbIiHrL;!gaK;ey,i9y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya", + "Actor": "true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJecretary,oldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt", + "Honorific": "true¦a01bYcQdPeOfiJgIhon,jr,king,lHmCoffic00p7queen,r3s0taoiseach,vice6;e1fc,gt,ir,r,u0;ltRpt,rg;cond liInBrgeaJ;abbi,e0;ar1p9s,v0;!erend; admirX;astOhd,r0vt;esideDi1of0;!essM;me mini4nce0;!ss;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al", + "SportsTeam": "true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls", + "Uncountable": "true¦0:1J;a1Qb1Ic19d16e0Zf0Tg0Mh0Hi0Dj0Cknowled1Pl07mXnWoVpRrMsBt6vi5w1;a3ea0Ai2oo1;d,l;ldlife,ne;rmth,t0;neg16ol0Btae;e4h3oothpaste,r1una;affSou1;ble,sers,t;ermod1Lund0;a,nnis;a9cene09eri0Wh8il7kittl0Wnow,o6p4t2u1;g0Znshi0P;ati1Ke1;am,el;ace1De1;ci0Red;ap,cc0;k,v0;eep,ingl0O;d0Cfe17l1nd,tish;m10t;a4e2ic1;e,ke0L;c1laxa0Hsearch;ogni0Grea0G;bi0Hin;aOe3hys17last8o1ress03;l1rk,w0;it15y9;a11trY;bstetr13il,xygen;ational securi0Vews;a8e6ilk,o3u1;mps,s1;ic;n1o0G;ey,o1;gamy;a1chan0V;sl03t;chine1il,themat0T; learn09ry;aught0e3i2ogi0Qu1;ck,g0G;ce,ghtn06ngui0OteratL;a1isK;th0;ewel8usti0J;ce,mp1nformaStself;a1ortan0H;ti1;en0F;a4isto3o1;ck1mework,n1spitali09;ey;ry;ir,libut,ppiB;ene4o2r1um,ymna0B;aAound;l1ssip;d,f; 1t08;editOpo1;ol;i5lour,o2urnit1;ure;od,rgive1uri0wl;ne1;ss;c7sh;conomZduca6lectr5n3quip4thZvery1;body,o1thF;ne;joy1tertain1;ment;iciNonU;tiG;ar2iabet1raugh2;es;ts;a8elcius,h4ivPl3o1urrency;al,ld w1nfusiBttB;ar;assMoth3;aos,e1;e2w1;ing;se;r5sh;a5eef,i2lood,owls,read,utt0;er;lliar2s1;on;ds;g1ss;ga1;ge;c6dvi5ero3ir2mnes1rt,thlet8;ty;craft;b5d1naut5;ynam4;ce;id,ou1;st1;ics", + "Infinitive": "true¦0:6S;1:76;2:5C;3:74;4:73;5:67;6:6F;7:6Y;8:6Q;9:72;A:70;B:5X;C:6X;D:6L;E:77;F:5B;a6Kb66c57d4De3Xf3Jg3Dh37i2Uj2Sk2Ql2Hm26n23o1Yp1Jr0Rs06tYuTvOwHyG;awn,e31ield;aJe1Zhist6iIoGre6D;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raE;d0t;aJiHoG;te,w;eGsC;!w;l6Jry;nHpGr4se;gra4Pli41;dGi9lo5Zpub3Q;erGo;mi5Cw1I;aMeLhKig5SoJrHuGwi7;ne,rn;aGe0Mi5Uu7y;de,in,nsf0p,v5J;r2ZuD;ank,reatB;nd,st;ke pa53lk,rg1Qs9;aZcWeVhTi4Dkip,lSmRnee3Lo52pQtJuGwitD;bmCck,ff0gge7ppHrGspe5;ge,pri1rou4Zvi3;ly,o36;aLeKoJrHuG;dy,mb6;aFeGi3;ngthBss,tD;p,re;m,p;in,ke,r0Qy;la58oil,rink6;e1Zi6o3J;am,ip;a2iv0oG;ck,rtBut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu8fYgXje5lUmTnt,pQquPsKtJvGwa5V;eGiew,o36;al,l,rG;se,t;aFi2u44;eJi7oItG;!o2rG;i5uc20;l3rt;mb6nt,r3;e7i2;air,eHlGo43r0K;a8y;at;aFemb0i3Zo3;aHeGi3y;a1nt;te,x;a5Dr0J;act1Yer,le5u1;a13ei3k5PoGyc6;gni2Cnci6rd;ch,li2Bs5N;i1nG;ge,k;aTerSiRlOoMrIuG;b21ll,mp,rGsh;cha1s4Q;ai1eIiEoG;cGdu8greAhibCmi1te7vi2W;eAlaim;di5pa2ss,veE;iEp,rtr46sGur;e,t;aHead,uG;g,n4;n,y;ck,le;fo34mCsi7;ck,iErt4Mss,u1;bJccur,ff0pera9utweIverGwe;co47lap,ta22u1wG;helm;igh;ser3taF;eHotG;e,i8;ed,gle5;aMeLiIoHuG;ltip3Grd0;nit13ve;nHrr12sreprG;eseE;d,g6us;asu2lt,n0Nr4;intaFna4rHtG;ch,t0;ch,kGry;et;aMeLiJoGu1C;aHck,oGve;k,sB;d,n;ft,g35ke,mCnk,st2YveG;!n;a2Fc0Et;b0Nck,uG;gh,nD;iGno34;ck,ll,ss;am,oFuG;d4mp;gno2mQnGss3H;cOdica9flu0MhNsKtIvG;eGol3;nt,st;erGrodu8;a5fe2;i7tG;aGru5;ll;abCibC;lu1Fr1D;agi24pG;lemeEo22ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppBrm,te;aKloAove1PrIuG;arGeAi15;ant39d;aGip,ow,umb6;b,sp;in,th0ze;aReaQiOlMoJrHuncG;ti3J;acGeshB;tu2;cus,lHrG;ce,eca7m,s30;d,l24;a1ZoG;at,od,w;gu2lGni1Xt,x;e,l;r,tu2;il,stBvG;or;a15cho,le5mSnPstNvalua9xG;a0AcLerKi7pGte19;a18eHi2laFoGreA;rt,se;ct,riG;en8;ci1t;el,han4;abGima9;li1J;ab6couXdHfor8ga4han8j03riDsu2t0vG;isi2Vy;!u2;body,er4pG;hasiGow0;ze;a07eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iZor8;aKcHliGmiApl1Btingui14;ke;oGuA;uGv0;ra4;gr1YppG;ear,ro3;cOeNfLliv0ma0Fny,pKsHterG;mi0G;cribe,er3iHtrG;oy;gn,re;a0Be0Ai5osC;eGi0By;at,ct;m,pB;iIlHrG;ea1;a2i06;de;ma4n8rGte;e,kB;a0Ae09h06i9l04oJrG;aHeGoAu0Hy;a9dC;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin8;rt,y;aFin0VrG;a7ibu9ol;iGtitu9;d0st;iHoGroE;rm;gu2rm;rn;biLfoKmaJpG;a2laF;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aSePloOoMrIuG;lGry;ly;igHuG;sh;htB;en;a7mb,o7rrGth0un8;ow;ck;ar,lHnefCtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waC;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia9uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun8sw0tG;icipa9;ce;lHt0;er;e4ow;ee;rd;aRdIju7mCoR;it;st;!reA;ss;cJhie3knowled4tiva9;te;ge;ve;eIouEu1;se;nt;pt;on", + "Unit": "true¦0:19;a14b12c0Od0Ne0Lf0Gg0Ch09in0Hjoule0k02l00mNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Nb,d0Dears old,o1;tt0H;att0b;able4b3d,e2on1sp;!ne0;a2r0D;!l,sp;spo04; ft,uare 1;c0Id0Hf3i0Fkilo0Jm1ya0E;e0Mil1;e0li0H;eet0o0D;t,uart0;ascals,e2i1ou0Pt;c0Mnt0;rcent,t02;hms,uYz;an0JewtT;/s,b,e9g,i3l,m2p1²,³;h,s;!²;!/h,cro5l1;e1li08;! pFs1²;! 1;anEpD;g06s0B;gQter1;! 2s1;! 1;per second;b,i00m,u1x;men0x0;b,elvin0g,ilo2m1nR;!/h,ph,²;byZgXmeter1;! p2s1;! p1;er1; hour;e1g,r0z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s", + "Organization": "true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c", + "Demonym": "true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an", + "Possessive": "true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne", + "Currency": "true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s", + "City": "true¦0:73;1:61;2:6G;3:5U;4:5R;a68b54c4Id4Ae46f3Yg3Jh38i2Zj2Uk2Dl22m1Kn19o16p0Uq0Sr0Ls01tPuOvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3J;greb,nzib5G;ang2e5okoha3Uunfu;katerin3Jrev0;a5n0O;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1K;hi5Zkl3C;l63xford;aw;a6ern2i5ladivost5Molgogr6K;en3lni6R;lenc6Dncouv2Yr3ughn;lan bat1Drumqi,trecht;aDbilisi,eCheBi9o8r7u5;l21n63r5;in,ku;ipoli,ondh62;kyo,m34ron1QulouS;an5jua3l2Zmisoa6Era3;j4Xshui; hag65ssaloni2L;gucigal28hr0l av1W;briz,i6llinn,mpe5Ang5rtu,shk2X;i2Msh0;an,chu1n0p2Iyu0;aEeDh8kopje,owe1It7u5ydney;ra5zh51;ba0Jt;aten is59ockholm,rasbou6Auttga31;an8e6i5;jiazhua1llo1m60y0;f54n5;ya1zh4L;gh3Ot4U;att4Ao1Yv49;cramen18int DlBn5o paulo,ppo3Wrajevo; 7aa,t5;a 5ia3Io domin3I;a3fe,m1O;antonCdie3Gfrancisco,j5ped3Ssalv8;o5u0;se;em,v5z2B;ad0I;lou59peters29;aAe9i7o5;me,sar5t5A;io;ga,o5yadh;! de janei3I;cife,ykjavik;b4Uip4lei2Mnc2Swalpindi;ingdao,u5;ez2i0Q;aEeDhCiBo8r7u6yong5;ya1;eb5Aya1;ag54etor53;rt5zn0; 5la4Fo;au prin0Nelizabe29sa05;ls3Srae5Ctts2B;iladelph4Ynom pe1Doenix;r26tah tik3I;ler00naji,r4Pt5;na,r36;ak47des0Lm1Rr6s5ttawa;a3Ylo;an,d07;a8ew6i5ovosibir1Oyc;ng2Hs; 5cast39;del27orlea46taip16york;g8iro4Xn5pl2Zshv36v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0Y;aFeCi9o6u5;mb2Cni28sc40;gadishu,nt6s5;c17ul;evideo,re31;ami,l6n18s5;kolc,sissauga;an,waukee;cca,d5lbour2Pmph41;an,ell5i3;in,ín;cau,drAkass2Tl9n8r5shh4A;aca6ib5rakesh,se2N;or;i1Ty;a4EchEdal12i47;mo;id;aCeiAi8o6u5vRy2;anLckn0Rdhia3;n5s angel28;d2g bea1O;brev2De3Kma5nz,sb2verpo2A;!ss29;c5pzig;est0C; p6g5ho2Yn0Gusan27;os;az,la35;aHharFiClaipeBo9rak0Hu7y5;iv,o5;to;ala lump4n5;mi1sh0;be,hi0Llka2Zpavog4si5wlo2;ce;da;ev,n5rkuk;gSsha5;sa;k5toum;iv;bIdu3llakuric0Tmpa3Gn6ohsiu1ra5un1Lwaguc0T;c0Sj;d5o,p4;ah1Vy;a7e6i5ohannesZ;l1Xn0;dd37rusalem;ip4k5;ar2J;bad0mph1QnBrkutYs8ta01z5̇zm7;m6tapala5;pa;ir;fah0l6tanb5;ul;am2Zi2I;che2d5;ianap2Lo21;aBe8o5yder2W; chi mi6ms,nolulu,u5;st2;nh;f6lsin5rakli2;ki;ei;ifa,lifax,m7n5rb1Dva3;gAnov5oi;er;bu2Wilt2;aFdanEenDhCiPlasgBo9raz,u5;a5jr21;dal6ng5yaquil;zh1H;aja2Lupe;ld coa18then5;bu2P;ow;ent;e0Toa;sk;lw7n5za;dhi5gt1C;nag0S;ay;aisal26es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Nl paso;in5mont2;bur5;gh;aAe8ha0Visp4o7resd0Ju5;b5esseldorf,rb0shanbe;ai,l0G;ha,nggu0rtmu11;hradRl5troit;hi;donghHe5k08li0masc1Xr es sala1HugavpiY;gu,je2;aKebu,hAo5raio03uriti1P;lo7n6penhag0Ar5;do1Nk;akLst0V;gVm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;n5ttogr12;digarh,g5;ch8sha,zh06;i9lga8mayenJn6pe town,r5;acCdiff;ber18c5;un;ry;ro;aUeMhJirmingh0ToIr9u5;chareRdapeRenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil0Mtisla7zzav5;il5;le;va;goZst2;op6ubaneshw5;ar;al;iBl9ng8r5;g6l5n;in;en;aluru,hazi;fa5grade,o horizonte;st;ji1rut;ghd0BkGnAot9r7s6yan n4;ur;el,r07;celo3ranquil09;na;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a04b01cc00ddis abaZgartaYhmedWizawl,lQmNnHqaZrEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a6chora5kaNtwerp;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 8buquerq7e5giers,maty;ppo,xandr5;ia;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg", + "Country": "true¦0:39;1:2M;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om3DpZqat1KrXsKtCu6v4wal3yemTz2;a25imbabwe;es,lis and futu2Y;a2enezue32ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2Y;k.,s.2; 28a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Ys and caic1U; and 2-2;toba1K;go,kel0Znga;iw2Wji2nz2S;ki2U;aCcotl1eBi8lov7o5pa2Cri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Rriname;lomon1Wmal0uth 2;afr2JkLsud2P;ak0en0;erra leoEn2;gapo1Xt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele25luc0mart20;epublic of ir0Dom2Duss0w2;an26;a3eHhilippinTitcairn1Lo2uerto riM;l1rtugE;ki2Cl3nama,pua new0Ura2;gu6;au,esti2;ne;aAe8i6or2;folk1Hth3w2;ay; k2ern mariana1C;or0N;caragua,ger2ue;!ia;p2ther19w zeal1;al;mib0u2;ru;a6exi5icro0Ao2yanm05;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagasc00l6r4urit3yot2;te;an0i15;shall0Wtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed01;a5e4i2uxembourg;b2echtenste11thu1F;er0ya;ban0Hsotho;os,tv0;azakh1Ee3iriba03o2uwait,yrgyz1E;rWsovo;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an", + "Region": "true¦0:2M;1:2S;2:2J;a2Pb2Cc1Yd1Tes1Sf1Qg1Kh1Gi1Bj17k12l0Zm0On07o05pZqWrTsKtFuCv9w5y3zacatec2T;akut0o0Du3;cat2k07;a4est 3isconsin,yomi1L;bengal,vi6;rwick2Ashington3;! dc;er4i3;rgin0;acruz,mont;dmurt0t3;ah,tar3; 2Ka0W;a5e4laxca1Qripu1Wu3;scaDva;langa1nnessee,x2E;bas0Um3smNtar24;aulip2Cil nadu;a8i6o4taf10u3ylh1E;ffYrr03s19;me1Bno1Puth 3;cVdU;ber0c3kkim,naloa;hu2ily;n4skatchew2xo3;ny; luis potosi,ta catari1;a3hode9;j3ngp06;asth2shahi;ingh24u3;e3intana roo;bec,en5reta0Q;ara7e5rince edward3unjab; i3;sl0A;i,nnsylv3rnambu0A;an0;!na;axa0Xdisha,h3klaho1Zntar3reg6ss0Ax0F;io;aIeDo5u3;evo le3nav0V;on;r3tt16va scot0;f8mandy,th3; 3ampton15;c5d4yo3;rk13;ako1M;aroli1;olk;bras1Lva0Bw3; 4foundland3;! and labrador;brunswick,hamp0Wjers3mexiRyork state;ey;galOyarit;a9eghala0Mi5o3;nta1r3;dov0elos;ch5dlanCn4ss3zor11;issippi,ouri;as geraOneso18;ig2oac2;dhy12harasht0Gine,ni4r3ssachusetts;anhao,i el,ylF;p3toba;ur;anca0Ie3incoln0IouisH;e3iR;ds;a5e4h3omi;aka06ul1;ntucky,ra01;bardino,lmyk0ns0Qr3;achay,el0nata0X;alis5har3iangxi;kh3;and;co;daho,llino6n3owa;d4gush3;et0;ia1;is;a5ert4i3un2;dalFm0D;fordZ;mpYrya1waii;ansu,eorg0lou7oa,u3;an4erre3izhou,jarat;ro;ajuato,gdo3;ng;cesterS;lori3uji2;da;sex;ageTe6o4uran3;go;rs3;et;lawaLrbyK;aEeaDh8o3rimea ,umbr0;ahui6l5nnectic4rsi3ventry;ca;ut;i02orado;la;e4hattisgarh,i3uvash0;apQhuahua;chn4rke3;ss0;ya;ra;lFm3;bridge6peche;a8ihar,r7u3;ck3ryat0;ingham3;shi3;re;emen,itish columb0;h0ja cal7lk6s3v6;hkorto3que;st2;an;ar0;iforn0;ia;dygea,guascalientes,lAndhr8r4ss3;am;izo1kans4un3;achal 6;as;na;a 3;pradesh;a5ber4t3;ai;ta;ba4s3;ka;ma", + "Place": "true¦a0Eb0Bc04d03e02f00gVhUiRjfk,kOlMmJneGoFpBque,rd,s9t6u5v4w1y0;akutOyz;ake isFis1y0;!o;!c;a,ostok,t;laanbaatar,p02safa,t;ahiti,e1he 0;bronx,hamptons;nn,x;a0fo,oho,t,under7yd;khalNsk;a2e1h0itcairn;l,x;k,nnN;!cif04;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dNnn;gadZlibu,nhattZ;a0gw,hr;s,x;an1osrae,rasnoyar0ul;sk;!s;a1cn,da,nd0st;ianRochina;!x;arlem,kg,nd,oHwy;a3re0;at 0enwich;brita0lakH;in;!y village;co,l0ra;!a;urope,vergladC;ak,en,fw,ist,own4xb;al5dg,gk,h2l1o0rA;lo,nn;!t;a1ina0uuk;town;morro,tham;!if;cn,e1kk,l0rooklyn;vd;l air,verly hills;frica,lta,m7n3r2sia,tl1ve,zor0;es;!ant2;ct1iz;adyr,tarct0;ic0; oce0;an;ericas,s", + "MaleName": "true¦0:E4;1:D5;2:DN;3:AX;4:D1;5:CF;6:B5;7:CV;8:C7;9:DJ;A:DK;B:A5;C:C1;aCNbBKcAId9Ge8Mf84g7Hh6Ti6Dj5Dk51l4Cm34n2So2Mp2Equ2Cr1Ls11t0Eu0Dv07wTxSyIzD;aDor0;cDh9Skaria,n5V;hEkD;!aCL;ar5VeCK;aLoFuD;sDu2JvBX;if,uf;nFsEusD;ouf,sD;ef;aDg;s,tD;an,h0;hli,nBLssX;avi3ho4;aMeKiFoDyaC1;jcie8Blfgang,odrow,utD;!er;lDnst1;bFey,frD0lD;aBCiD;am,e,s;e9Eur;i,nde6sD;!l8t1;de,lErrAyD;l1ne;lDt3;aA9y;aGiDladimir,ojte7Y;cEha0kt68nceDrgAIva0;!nt;e3Ut66;lentDnA4;in4X;ghBUlyss5Bnax,sm0;aXeShOiMoHrFuEyD;!l3ro7s1;n9r5B;avAVeDist0oy,um0;ntANv5Yy;bGdFmDny;!as,mDoharu;aCSie,y;!d;iBy;mDt5;!my,othy;adFeoEia8FomD;!as;!do8O;!de5;dGrD;en9KrD;an9JeDy;ll,n9I;!dy;dgh,ha,iDnn3req,tsu4S;cB4ka;aTcotRePhLiJoHpenc3tDur1Uylve9Jzym1;anFeDua8C;f0phBSvDwa8B;e61ie;!islaw,l8;lom1nBEuD;leyma7ta;dDlBm1yabonga;!dhart7An8;aFeD;lDrm0;d1t1;h7Tne,qu0Zun,wn,y7;aDbasti0k29l4Qrg4Nth,ymoAT;m5n;!tD;!ie,y;lEmDnti2Dq5Aul;!ke5LmCu4;ik,vato7W;aXeTheA9iPoHuEyD;an,ou;b7MdEf5pe7RssD;!elBY;ol3Ey;an,bJc66dIel,geHh0landBPmGnFry,sEyD;!ce;coe,s;!aAGnC;an,eo;l46r;e5Ng3n8olfo,ri79;bCeB7;cDl8;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ubAx,yDza;an1InY;gA8iD;naA4s;ch70fa4lHmGndFpha4sEul,wi2HyD;an,mo82;h7Vm5;alBDol2Uy;iATon;f,ph;ent2inD;cy,t1;aIeGhilFier72ol,rD;aka16eD;m,st1;!ip,lip;dALrcy,tD;ar,e3Gr1X;b4Kdra7Ft4ZulD;!o17;ctav3Fi3liv3mAFndrej,rHsEtDum9wA;is,to;aEc9k9m0vD;al5Z;ma;i,l53vL;aLeJiFoDu3A;aDel,j5l0ma0r3K;h,m;cEg4i49kD;!au,h7Uola;holBkDolB;!olB;al,d,il,ls1vD;il8Y;hom,thD;anDy;!a4i4;aZeWiMoHuEyD;l2Jr1;hamEr6XstaD;fa,p5C;ed,mH;di0We,hamFis2FntEsDussa;es,he;e,y;ad,ed,mD;ad,ed;cIgu4hai,kGlFnEtchD;!e6;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk8;aEeD;al,l;el,l;hElv2rD;le,ri6v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe6;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha6tDv2;iDy;!m,n;in,on;!el,oPus;!el9IoOus;iGu4;achDcolm,ik;ai,y;amEdi,eDmoud;sh;adDm5T;ou;aXeQiOlo3EoKuEyD;le,nd1;cGiFkDth3uk;aDe;!s;gi,s,z;as,iaD;no;g0nn7SrenFuDv8Jwe6;!iD;e,s;!zo;am,oD;n4r;a8Cevi,la5JnIoGst3thaFvD;eDi;nte;bo;!nD;!a6Sel;!ny;mFnErDur5Hwr5H;ry,s;ce,d1;ar,o5A;aLeGhaled,iDrist5Iu4Vy6X;er0p,rD;by,k,ollD;os;en0iGnDrmit,v44;!dEnDt5Z;e1Ay;a6ri59;r,th;cp3j5m66na73rEsp9them,uD;ri;im,l;a02eUiSoGuD;an,lDst2;en,iD;an,en,o,us;aNeLhnKkubBnIrGsD;eEhDi8Bue;!ua;!ph;dDge;an,i,on;!aDny;h,s,th5I;!ath5Hie,nC;!l,sDy;ph;o,qu2;an,mD;!mC;d,ffIrFsD;sDus;!e;a6BemEmai7oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKdAkImHrFsEvi3yD;!dAs1;on,p3;ed,od,rDv56;e5Nod;al,es4Xis1;a,e,oDub;b,v;k,ob,quD;es;aWbQchiPgNkeMlija,nuLonut,rJsFtDv0;ai,suD;ki;aEha0i7DmaDsac;el,il;ac,iaD;h,s;a,vinDw2;!g;k,nngu5S;!r;nacDor;io;ka;ai,rahD;im;aPeJoIuDyd9;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4JdA;an,s0;lGo50rFuDv8;hi4Gki,tD;a,o;is1y;an,ey;k,s;!im;ib;aVeRiPlenOoLrHuD;ilEsD;!tavo;herme,lerD;mo;aFegDov3;!g,orD;io,y;dy,h5Wnt;nzaErD;an,d1;lo;!n;lbe5Ano,oD;rg3Hvan5A;ne,oFrD;aDry;ld,rd5H;ffr8rge;brElArDv2;la28r3Sth,y;e3EielD;!i5;aTePiNlLorr0NrD;anFedDitz;!dCeDri2B;ri2A;cFkD;!ie,lD;in,yn;esLisD;!co,z36;etch3oD;yd;d4lDnn,onn;ip;deriFliEng,rnD;an06;pe,x;co;bi0di,hd;ar04dZfrYit0lSmKnHo2rFsteb0th0uge7vDymAzra;an,eD;ns,re36;gi,i0DnDrol,v2w2;est4Pie;oEriqDzo;ue;ch;aJerIiEmD;aIe2Z;lErD;!h0;!iD;o,s;s1y;nu4;be0Cd1iGliFmEt1viDwood;n,s;er,o;ot1Ys;!as,j4NsD;ha;a2en;!dCg9mGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay7ight;a7dl8nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e6ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay7ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne6rDyl;eDin,yl;l3Bn;n,o,us;!e,i4ny;iDon;an,en,on;e,lB;as;a09e07hYiar0lNoIrGuEyrD;il,us;rtD;!is;aDistob0U;ig;dy,lGnErD;ey,neli5y;or,rD;ad;by,e,in,l2t1;aIeFiDyK;fDnt;fo0Ft1;meEt5velaD;nd;nt;rFuEyD;!t1;de;enD;ce;aIeGrisEuD;ck;!tD;i0oph3;st3;er;d,rDs;b4leD;s,y;cDdric,s9;il;lGmer1rD;ey,lEro6y;ll;!os,t1;eb,v2;a07eZiVlaUoRrEuDyr1;ddy,rtK;aLeGiFuEyD;an,ce,on;ce,no;an,ce;nEtD;!t;dEtD;!on;an,on;dEndD;en,on;!foDl8y;rd;bErDyd;is;!by;i7ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n8rDt;eDy;tt;ey;dDeE;ar,iD;le;ar17b0Vd0Rf0Pgust2hm0Mi0Jja0Il04m00nSputsiRrIsaHuFveEyDziz;a0kh0;ry;gust5st2;us;hi;aKchJiIjun,maHnFon,tDy0;hDu09;ur;av,oD;ld;an,nd0H;!el,ki;ie;ta;aq;as,dIgel0CtD;hoGoD;i7nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePdAeJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;dAm9;ar;en;ad,eD;d,t;in;onD;so;aEi,olfDri0vik;!o;mDn;!a;dHeGraEuD;!bakr,lfazl;hDm;am;!l;allIelFoulaye,ulD;!lDrF;ah,o;! rD;ahm0;an;ah;av,on", + "LastName": "true¦0:9F;1:9V;2:9H;3:9X;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:6E;B:77;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaB;aBhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsB;liA1s3;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukA;lk5roby5;dAllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisB;dor95lst31m2rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps3s0Y;hirAkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot2lliv4zuB;aEein0oD;i67j3Lyan8V;l6rm0;kol5lovy5re6Psa,to,uD;ng,sa;iDy5Z;rn5tD;!h;l5YmDngh,rbu;mo6Do6J;aFeDimizu;hu,vchD;en7Cuk;la,r17;gu8mDoh,pulve8Trra4R;jDyD;on5;evi6Filtz,miDneid0roed0ulz,warz;dEtD;!z;!t;ar42h6ito,lFnDr2saBto,v2;ch7d0AtDz;a4Pe,os;as,ihAm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins3;!on;bei0LcEes,vDzzo;as,e8;ci,hards3;ag4es,it0ut0y9;dFmEnDsmu7Zv5F;tan1;ir7os;ic,u;aSeLhJiGoErDut6;asad,if5Zochazk1W;lishc24pDrti62u55we66;e2Tov48;cEe09nD;as,to;as60hl0;aDillips;k,m,n5K;de3AetIna,rGtD;ersErovDtersC;!a,ic;en,on;eDic,ry,ss3;i8ra,tz,z;ers;h71k,rk0tEvD;ic,l3T;el,t2O;bJconnor,g2ClGnei5PrEzD;demir,turk;ella3MtDwe5N;ega,iz;iDof6GsC;vDyn1F;ei8;aPri1;aLeJguy1iFoDune44ym4;rodahl,vDwak;ak3Uik5otn56;eEkolDlsCx3;ic,ov6X;ls1miD;!n1;ils3mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov2;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dAti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkAqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k2nDo;d,gu;mbarDpe2Rvr2;di;!nDu,yana1R;coln,dD;bDholm;erg;bed5TfeGhtFitn0kaEn6rDw2G;oy;!j;in1on1;bvDvD;re;iDmmy,rsCu,voie;ne,t11;aTennedy,h4iSlQnez46oJrGuEvar4woD;k,n;cerDmar58znets5;a,o2G;aDem0i2Zyeziu;sni3PvD;ch3U;bay4Frh0Jsk0TvaFwalDzl5;czDsB;yk;cFlD;!cDen3Q;huk;!ev2ic,s;e6uiveD;rt;eff0l2mu8nnun1;hn,lloe,minsBrEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r2;e2JhFnErge2Ju2NvD;anA;es,ss3;anEnsD;en,on,t3;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks3obs1;brahimAglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz2fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers3;kkiEnD;on1;la,n1;dz2g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw3;o,staf2Utierr7zm4;ayDg2iffitUub0;li1G;lub3Rme0JnD;calv9zale0I;aj,i;l,mDordaL;en7;iev3B;gnJlGmaFnd2No,rDs2Nuthi0;cDza;ia;ge;eaElD;agh0i,o;no;e,on;ab0erMiIjeldsted,lor9oGrFuD;cDent9ji3F;hs;an1Wiedm4;ntaDrt6st0urni0;na;lipEsD;ch0;ovD;!ic;hatAnandeVrD;arDei8;a,i;ov2;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s3;er,is3wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov2;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e3uD;ca;hl,mcevsBnErw6t2EviD;d5es,s;ieDku1S;ls1;ki;a05e00hNiobMlarkLoFrD;ivDuz;elli;h1lGntFop0rDs26x;byn,reD;a,ia;i,rer0O;em4liD;ns;!e;anu;aLeIiu,oGriDuJwe;stD;eDiaD;ns1;i,ng,uFwDy;!dhury;!n,onEuD;ng;!g;kEnDtterjee,v7;!d,g;ma,raboD;rty;bGl09ng2rD;eghetEnD;a,y;ti;an,ota0M;cer9lder3mpbeIrFstDvadi08;iDro;llo;doEt0uDvalho;so;so,zo;ll;es;a09eXhUiSlNoGrFyD;rne,tyD;qi;ank5iem,ooks,yant;gdan5nFruya,su,uchEyHziD;c,n5;ard;darDik;enD;ko;ov;aEondD;al;nEzD;ev2;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss3;asD;hi;er,ham;b2ch,ez,hMiley,kk0nHrDu0;bEnDua;es,i0;ieDosa;ri;dDik;a8yopadhyD;ay;ra;er;k,ng;ic;cosZdYguilXkhtXlSnJrGsl4yD;aEd6;in;la;aEsl4;an;ujo,ya;dFgelD;ovD;!a;ersGov,reD;aDjL;ss1;en;en,on,s3;on;eksejGiyGmeiFvD;ar7es;ez;da;ev;ar;ams;ta", + "WeekDay": "true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s", + "Month": "true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il", + "Date": "true¦ago,t2week0yesterd4; e0e0;nd;mr2o0;d0morrow;ay;!w", + "FirstName": "true¦aLblair,cHdevGgabrieFhinaEjCk9l8m4nelly,quinn,re3s0;h0umit;ay,e0iloh;a,lby;g6ne;a1el0ina,org5;!okuh9;naia,r0;ion,lo;ashawn,uca;asCe1ir0rE;an;lsAnyat2rry;am0ess6ie,ude;ie,m5;ta;le;an,on;as2h0;arl0eyenne;ie;ey,sidy;lex2ndr1ubr0;ey;a,ea;is", + "Person": "true¦ashton kutchTbScNdLeJgastOhHinez,jFkEleDmCnettKoBp9r4s3t2v0;a0irgin maH;lentino rossi,n go3;aylor,heresa may,iger woods,yra banks;addam hussain,carlett johanssKlobodan milosevic,uC;ay romano,e3o1ush limbau0;gh;d stewart,nald0;inho,o;ese witherspoFilly;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0;on;dinal wols1son0;! palm2;ey;arack obama,rock;er", + "Verb": "true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en", + "PhrasalVerb": "true¦0:7L;1:79;2:7X;3:7N;4:72;5:80;6:7P;7:6V;8:78;9:7J;A:6W;B:5Z;C:7S;D:7K;a81b6Lc5Rd5Me5Lf4Kg41h3Kiron0j3Gk3Bl2Vm2Jn2Ho2Fp1Wquiet7Ar1Js0CtSuQvacuum 1wHyammer9zE;eroBip FonE;e0k0;by,up;aLeHhGiForErit5G;d 1k33;mp0n2Vpe0r7s7;eel Dip 85;aFiEn2J;gh 09rd0;n Dr E;d2in,o5J;it 61k7lk6rm 6Csh 7Nt6Qv51;rge9sE;e AherB;aTeRhPiLoJrGuEype 69;ckBrn E;d2in,o3Sup;aFiEot0y 2I;ckle6Rp 7T;ck6Qde Y;ne6Pp Es4O;d2o73up;ck GdFe Egh6Bme0p o0Gre0;aw3ba4d2in,up;e 61y 1;by,o7D;ink Erow 6D;ba4ov8up;aEe 5Zll53;m 1r X;ck9ke Flk E;ov8u54;aEba4d2in,o3Cup;ba4ft8p59w3;a0Jc0Ie0Ch08i05l01m00nZoYpTquare StKuIwE;earGiE;ngFtch E;aw3ba4o77; by;ck Eit 1m 1ss0;in,up;aJe0WiIoGrEuc3G;aigh1WiE;ke 6Gn3A;p Erm1Z;by,in,o6T;n3Br 1tc3T;c3Amp0nd Er6Zve6y 1;ba4d2up;d2o6Pup;ar37eHiGlFrEur9;ing9uc7;a3Fit 5B;l13n 1;e5Sll0;be2Wrt0;ap 4Sow D;ash 5Foke0;eep FiEow A;c3Wp 1;in,oE;ff,v8;gn 4XngFt Ez7;d2o5up; al54le0;aGoEu4T;ot Eut0w 6D;aw3ba4f3Go67;c2PdeBk58ve6;e Ill1And HtE; Etl4H;d2in,o5upE;!on;aw3ba4d2in,o27up;o5Mto;al51out0rap51;il6v7;aPeMiLoHuE;b 4Ule0n Estl7;aEba4d2in5Jo3Ut39u3S;c26w3;ll Got FuE;g2Tnd6;a27f30o5;arCin,o5;ng 53p6;aEel6inBnt0;c5Dd E;o31u0I;c24t0;aSeRiPlNoLrIsyc2HuE;ll Gt E;aEba4d2in,o1Ot3Gup;p3Lw3;ap3Kd2in,o5t3Eup;attle9ess FiHoE;p 1;ah1Oon;iEp 5Hr3Yur4Jwer 5H;nt0;ay4DuE;gBmp A;ck Eg0le9n Ap4A;o2Yup;el 4KncilB;c42ir 3Un0ss GtFy E;ba4o54; d2c24;aw3ba4o18;pEw3X;e3Wt D;arrow46erd0oE;d6te45;aMeJiIoGuE;ddl7lE;l 3I;c1Dp 1uth6ve E;al3Nd2in,o5up;ss0x 1;asur7lFss E;a1Gup;t A;ke Fn ArEs1Px0;k Ary6;do,o48up;aRePiKoEuck0;aIc3Hg HoEse0;k Ese3F;aft8ba4d2forw2Jin46ov8uE;nd8p;in,o0M;d A;e HghtGnFsEv1V;ten 4M;e 1k 1; 1e37;arCd2;av1Jt 37velE; o3U;c7p 1sh Etch9ugh6y20;in3Uo5;eFick6nock E;d2o3Q;eEyB;l 2Pp E;aw3ba4d2fTin,o07to,up;aGoFuE;ic7mpB;ke31t35;c3Azz 1;aQeLiIoFuE;nker32rry 1s0W;lEneBrse2X;d Ee 1;ba4d2fast,o01up;de Ft E;ba4on,up;aw3o5;aElp0;d Gl 2Ar Et 1;fEof;rom;in,oTu1H;c02m 1nFve Ez25;it,to;d Eg 2FkerG;d2in,o5;aTeMive Kloss 22oGrFunE; f0N;in3How 2B; Eof 21;aFb1Dit,oErCt0Pu18;ff,n,v8;bo5ft8hKw3;aw3ba4d2in,oEup,w3;ff,n,ut;aJek0t E;aFb17d2oErCup;ff,n,ut,v8;cFhEl1XrCt,w3;ead;ross;r 1;d aFnE;g 1;bo5;a08e01iSlOoKrGuE;cEel 1;k 1;eFighten Eown9y 1;aw3o2S;eEshe1N; 1z7;lGol E;aEwi1G;bo5rC;d Alow 1;aFeEip0;sh0;g Ake0mErE;e 2R;gLlJnHrFsEzzle0;h 2P;e Em 1;aw3ba4up;d0isE;h 1;e El 19;aw3fJ;ht ba4ure0;eJnFsE;s 1;cGd E;fEo25;or;e D;dVl 1;cIll Erm0t0W;ap04bGd2in,oFtE;hrough;ff,ut,v8;a4ehi20;e 0L;at0dge0nd 0Ky7;oHrE;aFess Aop E;aw3bUin,o1E;g9w9; 0Dubl7;aXhUlean AoHrEut 10;ack9eep Eoss D;by,d2oEup;n,ut;me HoFuntE; o1Q;k 1l E;d2o1I;aKbJforHin,oGtFuE;nd8;ogeth8;ut,v8;th,wE;ard;a4y;pErCw3;art;eEipB;ck Der E;on,up;lKncel0rHsGtch FveB; in;o19up;h Dt6;ry FvE;e Y;aw3o15;l Em05;aEba4d2o13up;rCw3;a0Ke0Bl04oVrJuE;bblGcklWil02lk AndlWrn 08st FtEy 13zz6;t D;in,o5up;e E;ov8;anOeaMiFush E;o0Oup;ghIng E;aFba4d2forEin,o5up;th;bo5lErCw3;ong;teE;n 1;k E;d2in,o5up;ch0;arLgKil An7oHssGttlFunce Ex D;aw3ba4;e A; arC;k Dt 1;e 1;d2up; d2;d 1;aJeed0oEurt0;cGw E;aw3ba4d2o5up;ck;k E;in,oL;ck0nk0st6; oKaHef 1nd E;d2ov8up;er;up;r0t E;d2in,oEup;ff,ut;ff,nE;to;ck Kil0nGrgFsE;h D;ain9e D;g Dk9; on;in,o5; o5;aw3d2o5up;ay;cNdJsk Guction6; oE;ff;arCo5;ouE;nd;d E;d2oEup;ff,n;own;t E;o5up;ut", + "Modal": "true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld", + "Adjective": "true¦0:7P;1:84;2:83;3:8A;4:7W;5:5S;6:4N;7:4O;8:58;9:6I;A:81;a6Wb6Gc63d5Je54f4Hg49h3Wi39j37k36l2Vm2Ln2Bo1Wp1Dquack,r12s0Ft07uMvJwByear5;arp0eFholeEiDoB;man5oBu6P;d6Rzy;despr7Ls5S;!sa7;eClBste2A;co1Nl o4W;!k5;aCiBola4M;b89ce versa,ol5H;ca3gabo6Gnilla;ltUnHpCrb5Msu4tterB;!mo7G; Eb1SpDsBti1M;ca7etBide dKtairs;!ti2;er,i3U;f36to da1;aLbeco75convin29deIeHfair,ivers4knGprecedVrEsCwB;iel3Nritt6A;i1XuB;pervis0spec3Y;eBu5;cognHgul6Tl6T;own;ndi2v64xpect0;cid0rB;!grou5ZsB;iz0tood;b7pp0Dssu6UuthorB;iz0;i26ra;aGeEhDi6AoCrB;i1oubl0us3M;geth8p,rp6Vuc67;ough4Wril33;en60l32mpBrr2X;o6Ati2;boo,lBn;ent0;aWcVeThSiQmug,nobbi3LoOpNqueami3LtFuBymb6H;bDi gener5DpBrpri6D;erBre0N;! dup8b,i2C;du0seq52;anda77eGiFrBunni2y3F;aightCiB;ki2p0; fBfB;or5K;ll,r5S;aBreotyp0;dfa6Cmi2;a55ec2Gir1Hlend6Cot on; call0le,mb8phist1XrBu0Vvi48;d6Ary;gnifica3nB;ce51g7;am2Re8ocki2ut;cBda1em5lfi32ni1Wpa6Jre6;o1Er42;at5Gient28reec5G;cr0me;aJeEiCoB;bu60tt51uQy4;ghtBv4;!-2Bf9;ar,bel,condi1du6Dfres5AlEpublic42sCtard0vB;ea26;is4CoB;lu1na3;aQe1Cuc4A;b5TciBllyi2;al,st;aOeLicayu6lac5Ropuli5QrCuB;bl5Jmp0n51;eGiDoB;!b07fu5RmiBp8;ne3si2;mCor,sBva1;ti6;a53e;ci5MmB;a0EiB;er,um;ac20rBti1;feAma2XpleBv38;xi2;rBst;allelDtB;-tiBi4;me;!ed;bLffJkIld fashion0nHpGrg1Eth8utFvB;al,erB;!all,niCt,wB;eiBrouB;ght;do0Ter,g2Qsi4B;en,posi1; boa5Og2Oli6;!ay; gua5MbBli6;eat;eDsB;cBer0Eole1;e6u3O;d2Xse;aJeIiHoBua4X;nFrCtB;ab7;thB;!eB;rn;chala3descri58stop;ght5;arby,cessa44ighbor5xt;k0usia1A;aIeGiDoBultip7;bi7derBl0Vnth5ot,st;a1n;nBx0;dblo0RiaBor;tu37;ande3Qdi4NnaBre;ci2;cBgenta,in,j01keshift,le,mmoth,ny,sculi6;ab33ho;aKeFiCoBu15;uti14vi2;mCteraB;l,te;it0;ftEgBth4;al,eCitiB;ma1;nda3K;!-0C;ngu3Zst,tt8;ap1Xind5no0A;agg0uB;niMstifi0veni7;de4gno4Klleg4mQnEpso 20rB;a1rB;eleBita0J;va3; KaJbr0corIdGfluenQiQnFsEtCviB;go0Fti2;aAen3SoxB;ic3B;a6i2Vul0D;a1er,oce3;iCoB;or;reA;deq3Qppr33;fBsitu,vitro;ro3;mFpB;arDerfeAoBrop8;li1rtB;a3ed;ti4;eBi0S;d2Vn3C;aIeFiDoBumdr3I;ne36ok0rrBs08ur5;if2Z;ghfalut1QspB;an2X;aClB;liYpf9;li2;lEnDrB;d04roB;wi2;dy;f,low0;ainf9ener2Oiga24lHoGraDuB;ilBng ho;ty;cCtB;ef9is;ef9;ne,od;ea2Iob4;aTeNinMlKoFrB;a1VeDoz1MustB;raB;ti2;e2Gq10tf9;oDrB; keeps,eBm8tuna1;g03ign;liB;sh;aBue3;g31tte1P;al,i1;dFmCrB;ti7;a7ini6;ne;le; up;bl0i3l27r Cux,voB;ri1uri1;oBreac1E;ff;aLfficie3lKmHnFreAthere4veExB;aAcess,pe1QtraCuB;be2Nl0E;!va1E;n,ryday; BcouraEti0O;rou1sui1;erCiB;ne3;gi2;abo23dMe17i1;g8sB;t,ygB;oi2;er;aReJiDoBrea14ue;mina3ne,ubB;le,tf9;dact1Bfficu1OsCvB;er1K;creDeas0gruntl0hone1FordCtB;a3ressM;er5;et; HadpGfFgene1PliDrang0spe1PtCvoB;ut;ail0ermin0;be1Mca1ghB;tf9;ia3;an;facto;i5magBngeroUs0G;ed,i2;ly;ertaMhief,ivil,oDrB;aBowd0u0G;mp0vZz0;loImGnCrrBve0P;eAu1I;cre1fu0LgrDsCtB;empo0Dra0E;ta3;ue3;mer08pleB;te,x;ni4ss4;in;aNeIizarHlFoCrB;and new,isk,okN;gCna fiUttom,urgeoB;is;us;ank,indB;!i2;re;autif9hiDloCnBst,yoD;eUt;v0w;nd;ul;ckCnkru0WrrB;en;!wards; priori,b0Mc0Jd09fra08g04h03lYmWntiquVppSrMsIttracti06utheHvEwB;aCkB;wa0T;ke,re;ant garCerB;age;de;ntU;leep,piDsuDtonB;isB;hi2;ri2;ab,bitEroDtiB;fiB;ci4;ga3;raB;ry;are3etiNrB;oprB;ia1;at0;aJuB;si2;arEcohCeBiIl,oof;rt;olB;ic;mi2;ead;ainDgressiConiB;zi2;ve;st;id; IeGuFvB;aCerB;se;nc0;ed;lt;pt,qB;ua1;hoc,infinitB;um;cuCtu4u1;al;ra1;erLlKoIruHsCuB;nda3;e3oCtraA;ct;lu1rbi2;ng;te;pt;aBve;rd;aze,e;ra3;nt", + "Comparable": "true¦0:41;1:4I;2:45;3:2Y;4:4B;5:3X;a4Ob44c3Od3De35f2Rg2Fh24i1Vj1Uk1Rl1Jm1Dn17o15p0Vqu0Tr0KsTtMuIvFw7y6za13;ell27ou4;aBe9hi1Yi7r6;o4y;ck0Ode,l6n1ry,se;d,y;a6i4Mt;k,ry;n1Tr6sK;m,y;a7e6ulgar;nge5rda2xi4;g9in,st;g0n6pco3Mse5;like0t6;i1r6;ue;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te5;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft3;aAe9iff,r7u6;pXr1;a6ict,o4;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi4;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp3;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p3;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in5le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b3isy,rm15sy;ce,mb3;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt3ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti4;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b3id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te5;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t3uiY;u1y;aIeeb3iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get5mG;my;erce8n6rm;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi4;gey,lm8r6;e5i4;ful;!i4;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i4;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd", + "TextOrdinal": "true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th", + "Cardinal": "true¦bHeEf8hundred,mHnineAone,qu6s4t0zero;en,h2rGw0;e0o;lve,n8;irt9ousandEree;e0ix5;pt1ven4xt1;adr0int0;illion;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion0;!s", + "Expression": "true¦a02b01dXeVfuck,gShLlImHnGoDpBshAtsk,u7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la", + "Adverb": "true¦a08by 06d02eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,well,ye0;p,s; to,wards5;h1iny bit,o0wiO;o,t6ward;en,us;eldom,o0uch;!me1rt0; of;hYtimes,w09;a1e0;alT;ndomSthN;ar excellDer0oint blank; Nhaps;f3n0;ce0ly;! 0;ag02moW; courIten;ewKo0; longEt 0;onIwithstanding;aybe,eanwhiAore0;!ovB;! aboU;deed,steV;en0;ce;or2u0;lArther0;!moJ; 0ev3;examp0good,suH;le;n1v0;er; mas0ough;se;e0irect1; 1finite0;ly;ju8trop;far,n0;ow; DbroCd nauseam,gBl6ny3part,s2t 0w4;be6l0mo6wor6;arge,ea5; soon,ide;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori", + "Determiner": "true¦aBboth,d9e6few,l4mu8neiDown,plenty,s3th2various,wh0;at0ich0;evC;at,e4is,ose;everal,ome;a,e0;!ast,s;a1i6l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er" + }; + + const seq = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", + cache = seq.split("").reduce(function (n, o, e) { + return n[o] = e, n; + }, {}), + toAlphaCode = function (n) { + if (void 0 !== seq[n]) return seq[n]; + let o = 1, + e = 36, + t = ""; + + for (; n >= e; n -= e, o++, e *= 36); + + for (; o--;) { + const o = n % 36; + t = String.fromCharCode((o < 10 ? 48 : 55) + o) + t, n = (n - o) / 36; + } + + return t; + }, + fromAlphaCode = function (n) { + if (void 0 !== cache[n]) return cache[n]; + let o = 0, + e = 1, + t = 36, + r = 1; + + for (; e < n.length; o += t, e++, t *= 36); + + for (let e = n.length - 1; e >= 0; e--, r *= 36) { + let t = n.charCodeAt(e) - 48; + t > 10 && (t -= 7), o += t * r; + } + + return o; + }; + + var encoding = { + toAlphaCode: toAlphaCode, + fromAlphaCode: fromAlphaCode + }, + symbols = function (n) { + const o = new RegExp("([0-9A-Z]+):([0-9A-Z]+)"); + + for (let e = 0; e < n.nodes.length; e++) { + const t = o.exec(n.nodes[e]); + + if (!t) { + n.symCount = e; + break; + } + + n.syms[encoding.fromAlphaCode(t[1])] = encoding.fromAlphaCode(t[2]); + } + + n.nodes = n.nodes.slice(n.symCount, n.nodes.length); + }; + + const indexFromRef = function (n, o, e) { + const t = encoding.fromAlphaCode(o); + return t < n.symCount ? n.syms[t] : e + t + 1 - n.symCount; + }, + toArray = function (n) { + const o = [], + e = (t, r) => { + let s = n.nodes[t]; + "!" === s[0] && (o.push(r), s = s.slice(1)); + const c = s.split(/([A-Z0-9,]+)/g); + + for (let s = 0; s < c.length; s += 2) { + const u = c[s], + i = c[s + 1]; + if (!u) continue; + const l = r + u; + + if ("," === i || void 0 === i) { + o.push(l); + continue; + } + + const f = indexFromRef(n, i, t); + e(f, l); + } + }; + + return e(0, ""), o; + }, + unpack$2 = function (n) { + const o = { + nodes: n.split(";"), + syms: [], + symCount: 0 + }; + return n.match(":") && symbols(o), toArray(o); + }; + + var unpack_1$1 = unpack$2, + unpack_1$1$1 = function (n) { + const o = n.split("|").reduce((n, o) => { + const e = o.split("¦"); + return n[e[0]] = e[1], n; + }, {}), + e = {}; + return Object.keys(o).forEach(function (n) { + const t = unpack_1$1(o[n]); + "true" === n && (n = !0); + + for (let o = 0; o < t.length; o++) { + const r = t[o]; + !0 === e.hasOwnProperty(r) ? !1 === Array.isArray(e[r]) ? e[r] = [e[r], n] : e[r].push(n) : e[r] = n; + } + }), e; + }; + + var efrtUnpack_min = unpack_1$1$1; + var misc$1 = { + // numbers + '20th century fox': 'Organization', + // '3m': 'Organization', + '7 eleven': 'Organization', + 'motel 6': 'Organization', + g8: 'Organization', + vh1: 'Organization', + q1: 'Date', + q2: 'Date', + q3: 'Date', + q4: 'Date', + her: ['Possessive', 'Pronoun'], + his: ['Possessive', 'Pronoun'], + their: ['Possessive', 'Pronoun'], + themselves: ['Possessive', 'Pronoun'], + your: ['Possessive', 'Pronoun'], + our: ['Possessive', 'Pronoun'], + my: ['Possessive', 'Pronoun'], + its: ['Possessive', 'Pronoun'] + }; + const lexData = _data; + const unpack$1 = efrtUnpack_min; + let misc = misc$1; + const fancy = { + Unit: (lex, w) => { + lex[w] = ['Abbreviation', 'Unit']; + }, + Cardinal: (lex, w) => { + lex[w] = ['TextValue', 'Cardinal']; + }, + TextOrdinal: (lex, w) => { + lex[w] = ['Ordinal', 'TextValue']; + lex[w + 's'] = ['TextValue', 'Fraction']; // add 'millionths' + }, + // add plural/singular forms + Singular: (lex, w, world) => { + lex[w] = 'Singular'; + let plural = world.transforms.toPlural(w, world); + lex[plural] = lex[plural] || 'Plural'; + }, + // conjugate these verbs + Infinitive: (lex, w, world) => { + lex[w] = 'Infinitive'; + let conj = world.transforms.conjugate(w, world); + let tags = Object.keys(conj); + + for (let i = 0; i < tags.length; i++) { + let str = conj[tags[i]]; + lex[str] = lex[str] || tags[i]; // only if it's safe + } + }, + // conjugate other Adjectival forms + Comparable: (lex, w, world) => { + lex[w] = 'Comparable'; + let conj = world.transforms.adjectives(w); + let tags = Object.keys(conj); + + for (let i = 0; i < tags.length; i++) { + let word = conj[tags[i]]; + lex[word] = lex[word] || tags[i]; // only if it's safe + } + }, + //conjugate phrasal-verbs + PhrasalVerb: (lex, w, world) => { + // whole thing + lex[w] = ['PhrasalVerb', 'Infinitive']; //add original form + + let words = w.split(' '); // lex[words[0]] = lex[words[0]] || 'Infinitive' + // //conjugate first word + + let conj = world.transforms.conjugate(words[0], world); + let tags = Object.keys(conj); + + for (let i = 0; i < tags.length; i++) { + let str = conj[tags[i]] + ' ' + words[1]; + lex[str] = lex[str] || ['PhrasalVerb', tags[i]]; + world.hasCompound[conj[tags[i]]] = true; + } + }, + // inflect our demonyms - 'germans' + Demonym: (lex, w, world) => { + lex[w] = 'Demonym'; + let plural = world.transforms.toPlural(w, world); + lex[plural] = lex[plural] || ['Demonym', 'Plural']; // only if it's safe + } + }; // let a user explode their lexicon, too + + const addWords = function (wordsObj, lex, world) { + Object.keys(wordsObj).forEach(word => { + let tag = wordsObj[word]; // abbreviation-words are used in our tokenizer + + if (tag === 'Abbreviation' || tag === 'Unit') { + world.cache.abbreviations[word] = true; + } // cache multi-words + + + let multi = word.split(' '); + + if (multi.length > 1) { + world.hasCompound[multi[0]] = true; + } // do some ad-hoc work before adding it + + + if (fancy[tag] !== undefined) { + fancy[tag](lex, word, world); + return; + } //set it in our lexicon, basic + + + if (lex[word] === undefined) { + lex[word] = tag; + return; + } // if we already have that word + + + if (typeof lex[word] === 'string') { + lex[word] = [lex[word]]; + } + + if (typeof tag === 'string') { + lex[word].push(tag); + } else { + lex[word] = lex[word].concat(tag); + } + }); + }; // we do some ad-hoc stuff here, building-up our word-list + + + const buildOut = function (world) { + //our bag of words + let lexicon = Object.assign({}, misc); // start adding words to the lex + + Object.keys(lexData).forEach(tag => { + let wordsObj = unpack$1(lexData[tag]); // this part sucks + + Object.keys(wordsObj).forEach(w => { + wordsObj[w] = tag; + }); + addWords(wordsObj, lexicon, world); + }); // console.log(Object.keys(lexicon).length) + + return lexicon; + }; + + var unpack_1 = { + buildOut: buildOut, + addWords: addWords + }; + + const addIrregulars$1 = function (world) { + //add irregular plural nouns + let nouns = world.irregulars.nouns; + let words = Object.keys(nouns); + + for (let i = 0; i < words.length; i++) { + const w = words[i]; + world.words[w] = 'Singular'; + world.words[nouns[w]] = 'Plural'; + } // add irregular verb conjugations + + + let verbs = world.irregulars.verbs; + let keys = Object.keys(verbs); + + for (let i = 0; i < keys.length; i++) { + const inf = keys[i]; //add only if it it's safe... + + world.words[inf] = world.words[inf] || 'Infinitive'; + let forms = world.transforms.conjugate(inf, world); + forms = Object.assign(forms, verbs[inf]); //add the others + + Object.keys(forms).forEach(tag => { + world.words[forms[tag]] = world.words[forms[tag]] || tag; // lexicon should prefer other tags, over participle + + if (world.words[forms[tag]] === 'Participle') { + world.words[forms[tag]] = tag; + } + }); + } + }; + + var addIrregulars_1 = addIrregulars$1; //used in noun.inflect, and also in the lexicon. + + var plurals = { + addendum: 'addenda', + alga: 'algae', + alumna: 'alumnae', + alumnus: 'alumni', + analysis: 'analyses', + antenna: 'antennae', + appendix: 'appendices', + avocado: 'avocados', + axis: 'axes', + bacillus: 'bacilli', + barracks: 'barracks', + beau: 'beaux', + bus: 'buses', + cactus: 'cacti', + chateau: 'chateaux', + child: 'children', + circus: 'circuses', + clothes: 'clothes', + corpus: 'corpora', + criterion: 'criteria', + curriculum: 'curricula', + database: 'databases', + deer: 'deer', + diagnosis: 'diagnoses', + echo: 'echoes', + embargo: 'embargoes', + epoch: 'epochs', + foot: 'feet', + formula: 'formulae', + fungus: 'fungi', + genus: 'genera', + goose: 'geese', + halo: 'halos', + hippopotamus: 'hippopotami', + index: 'indices', + larva: 'larvae', + leaf: 'leaves', + libretto: 'libretti', + loaf: 'loaves', + man: 'men', + matrix: 'matrices', + memorandum: 'memoranda', + modulus: 'moduli', + mosquito: 'mosquitoes', + mouse: 'mice', + // move: 'moves', + nebula: 'nebulae', + nucleus: 'nuclei', + octopus: 'octopi', + opus: 'opera', + ovum: 'ova', + ox: 'oxen', + parenthesis: 'parentheses', + person: 'people', + phenomenon: 'phenomena', + prognosis: 'prognoses', + quiz: 'quizzes', + radius: 'radii', + referendum: 'referenda', + rodeo: 'rodeos', + sex: 'sexes', + shoe: 'shoes', + sombrero: 'sombreros', + stimulus: 'stimuli', + stomach: 'stomachs', + syllabus: 'syllabi', + synopsis: 'synopses', + tableau: 'tableaux', + thesis: 'theses', + thief: 'thieves', + tooth: 'teeth', + tornado: 'tornados', + tuxedo: 'tuxedos', + vertebra: 'vertebrae' // virus: 'viri', + // zero: 'zeros', + + }; // used in verbs().conjugate() + // but also added to our lexicon + //use shorter key-names + + const mapping$1 = { + g: 'Gerund', + prt: 'Participle', + perf: 'PerfectTense', + pst: 'PastTense', + fut: 'FuturePerfect', + pres: 'PresentTense', + pluperf: 'Pluperfect', + a: 'Actor' + }; // '_' in conjugations is the infinitive form + // (order matters, to the lexicon) + + let conjugations = { + act: { + a: '_or' + }, + ache: { + pst: 'ached', + g: 'aching' + }, + age: { + g: 'ageing', + pst: 'aged', + pres: 'ages' + }, + aim: { + a: '_er', + g: '_ing', + pst: '_ed' + }, + arise: { + prt: '_n', + pst: 'arose' + }, + babysit: { + a: '_ter', + pst: 'babysat' + }, + ban: { + a: '', + g: '_ning', + pst: '_ned' + }, + be: { + a: '', + g: 'am', + prt: 'been', + pst: 'was', + pres: 'is' + }, + beat: { + a: '_er', + g: '_ing', + prt: '_en' + }, + become: { + prt: '_' + }, + begin: { + g: '_ning', + prt: 'begun', + pst: 'began' + }, + being: { + g: 'are', + pst: 'were', + pres: 'are' + }, + bend: { + prt: 'bent' + }, + bet: { + a: '_ter', + prt: '_' + }, + bind: { + pst: 'bound' + }, + bite: { + g: 'biting', + prt: 'bitten', + pst: 'bit' + }, + bleed: { + pst: 'bled', + prt: 'bled' + }, + blow: { + prt: '_n', + pst: 'blew' + }, + boil: { + a: '_er' + }, + brake: { + prt: 'broken' + }, + break: { + pst: 'broke' + }, + breed: { + pst: 'bred' + }, + bring: { + pst: 'brought', + prt: 'brought' + }, + broadcast: { + pst: '_' + }, + budget: { + pst: '_ed' + }, + build: { + pst: 'built', + prt: 'built' + }, + burn: { + prt: '_ed' + }, + burst: { + prt: '_' + }, + buy: { + pst: 'bought', + prt: 'bought' + }, + can: { + a: '', + fut: '_', + g: '', + pst: 'could', + perf: 'could', + pluperf: 'could', + pres: '_' + }, + catch: { + pst: 'caught' + }, + choose: { + g: 'choosing', + prt: 'chosen', + pst: 'chose' + }, + cling: { + prt: 'clung' + }, + come: { + prt: '_', + pst: 'came', + g: 'coming' + }, + compete: { + a: 'competitor', + g: 'competing', + pst: '_d' + }, + cost: { + pst: '_' + }, + creep: { + prt: 'crept' + }, + cut: { + prt: '_' + }, + deal: { + pst: '_t', + prt: '_t' + }, + develop: { + a: '_er', + g: '_ing', + pst: '_ed' + }, + die: { + g: 'dying', + pst: '_d' + }, + dig: { + g: '_ging', + pst: 'dug', + prt: 'dug' + }, + dive: { + prt: '_d' + }, + do: { + pst: 'did', + pres: '_es' + }, + draw: { + prt: '_n', + pst: 'drew' + }, + dream: { + prt: '_t' + }, + drink: { + prt: 'drunk', + pst: 'drank' + }, + drive: { + g: 'driving', + prt: '_n', + pst: 'drove' + }, + drop: { + g: '_ping', + pst: '_ped' + }, + eat: { + a: '_er', + g: '_ing', + prt: '_en', + pst: 'ate' + }, + edit: { + pst: '_ed', + g: '_ing' + }, + egg: { + pst: '_ed' + }, + fall: { + prt: '_en', + pst: 'fell' + }, + feed: { + prt: 'fed', + pst: 'fed' + }, + feel: { + a: '_er', + pst: 'felt' + }, + fight: { + pst: 'fought', + prt: 'fought' + }, + find: { + pst: 'found' + }, + flee: { + g: '_ing', + prt: 'fled' + }, + fling: { + prt: 'flung' + }, + fly: { + prt: 'flown', + pst: 'flew' + }, + forbid: { + pst: 'forbade' + }, + forget: { + g: '_ing', + prt: 'forgotten', + pst: 'forgot' + }, + forgive: { + g: 'forgiving', + prt: '_n', + pst: 'forgave' + }, + free: { + a: '', + g: '_ing' + }, + freeze: { + g: 'freezing', + prt: 'frozen', + pst: 'froze' + }, + get: { + pst: 'got', + prt: 'gotten' + }, + give: { + g: 'giving', + prt: '_n', + pst: 'gave' + }, + go: { + prt: '_ne', + pst: 'went', + pres: 'goes' + }, + grow: { + prt: '_n' + }, + guide: { + pst: '_d' + }, + hang: { + pst: 'hung', + prt: 'hung' + }, + have: { + g: 'having', + pst: 'had', + prt: 'had', + pres: 'has' + }, + hear: { + pst: '_d', + prt: '_d' + }, + hide: { + prt: 'hidden', + pst: 'hid' + }, + hit: { + prt: '_' + }, + hold: { + pst: 'held', + prt: 'held' + }, + hurt: { + pst: '_', + prt: '_' + }, + ice: { + g: 'icing', + pst: '_d' + }, + imply: { + pst: 'implied', + pres: 'implies' + }, + is: { + a: '', + g: 'being', + pst: 'was', + pres: '_' + }, + keep: { + prt: 'kept' + }, + kneel: { + prt: 'knelt' + }, + know: { + prt: '_n' + }, + lay: { + pst: 'laid', + prt: 'laid' + }, + lead: { + pst: 'led', + prt: 'led' + }, + leap: { + prt: '_t' + }, + leave: { + pst: 'left', + prt: 'left' + }, + lend: { + prt: 'lent' + }, + lie: { + g: 'lying', + pst: 'lay' + }, + light: { + pst: 'lit', + prt: 'lit' + }, + log: { + g: '_ging', + pst: '_ged' + }, + loose: { + prt: 'lost' + }, + lose: { + g: 'losing', + pst: 'lost' + }, + make: { + pst: 'made', + prt: 'made' + }, + mean: { + pst: '_t', + prt: '_t' + }, + meet: { + a: '_er', + g: '_ing', + pst: 'met', + prt: 'met' + }, + miss: { + pres: '_' + }, + name: { + g: 'naming' + }, + patrol: { + g: '_ling', + pst: '_led' + }, + pay: { + pst: 'paid', + prt: 'paid' + }, + prove: { + prt: '_n' + }, + puke: { + g: 'puking' + }, + put: { + prt: '_' + }, + quit: { + prt: '_' + }, + read: { + pst: '_', + prt: '_' + }, + ride: { + prt: 'ridden' + }, + reside: { + pst: '_d' + }, + ring: { + pst: 'rang', + prt: 'rung' + }, + rise: { + fut: 'will have _n', + g: 'rising', + prt: '_n', + pst: 'rose', + pluperf: 'had _n' + }, + rub: { + g: '_bing', + pst: '_bed' + }, + run: { + g: '_ning', + prt: '_', + pst: 'ran' + }, + say: { + pst: 'said', + prt: 'said', + pres: '_s' + }, + seat: { + pst: 'sat', + prt: 'sat' + }, + see: { + g: '_ing', + prt: '_n', + pst: 'saw' + }, + seek: { + prt: 'sought' + }, + sell: { + pst: 'sold', + prt: 'sold' + }, + send: { + prt: 'sent' + }, + set: { + prt: '_' + }, + sew: { + prt: '_n' + }, + shake: { + prt: '_n' + }, + shave: { + prt: '_d' + }, + shed: { + g: '_ding', + pst: '_', + pres: '_s' + }, + shine: { + pst: 'shone', + prt: 'shone' + }, + shoot: { + pst: 'shot', + prt: 'shot' + }, + show: { + pst: '_ed' + }, + shut: { + prt: '_' + }, + sing: { + prt: 'sung', + pst: 'sang' + }, + sink: { + pst: 'sank', + pluperf: 'had sunk' + }, + sit: { + pst: 'sat' + }, + ski: { + pst: '_ied' + }, + slay: { + prt: 'slain' + }, + sleep: { + prt: 'slept' + }, + slide: { + pst: 'slid', + prt: 'slid' + }, + smash: { + pres: '_es' + }, + sneak: { + prt: 'snuck' + }, + speak: { + fut: 'will have spoken', + prt: 'spoken', + pst: 'spoke', + perf: 'have spoken', + pluperf: 'had spoken' + }, + speed: { + prt: 'sped' + }, + spend: { + prt: 'spent' + }, + spill: { + prt: '_ed', + pst: 'spilt' + }, + spin: { + g: '_ning', + pst: 'spun', + prt: 'spun' + }, + spit: { + prt: 'spat' + }, + split: { + prt: '_' + }, + spread: { + pst: '_' + }, + spring: { + prt: 'sprung' + }, + stand: { + pst: 'stood' + }, + steal: { + a: '_er', + pst: 'stole' + }, + stick: { + pst: 'stuck' + }, + sting: { + pst: 'stung' + }, + stink: { + pst: 'stunk', + prt: 'stunk' + }, + stream: { + a: '_er' + }, + strew: { + prt: '_n' + }, + strike: { + g: 'striking', + pst: 'struck' + }, + suit: { + a: '_er', + g: '_ing', + pst: '_ed' + }, + sware: { + prt: 'sworn' + }, + swear: { + pst: 'swore' + }, + sweep: { + prt: 'swept' + }, + swim: { + g: '_ming', + pst: 'swam' + }, + swing: { + pst: 'swung' + }, + take: { + fut: 'will have _n', + pst: 'took', + perf: 'have _n', + pluperf: 'had _n' + }, + teach: { + pst: 'taught', + pres: '_es' + }, + tear: { + pst: 'tore' + }, + tell: { + pst: 'told' + }, + think: { + pst: 'thought' + }, + thrive: { + prt: '_d' + }, + tie: { + g: 'tying', + pst: '_d' + }, + undergo: { + prt: '_ne' + }, + understand: { + pst: 'understood' + }, + upset: { + prt: '_' + }, + wait: { + a: '_er', + g: '_ing', + pst: '_ed' + }, + wake: { + pst: 'woke' + }, + wear: { + pst: 'wore' + }, + weave: { + prt: 'woven' + }, + wed: { + pst: 'wed' + }, + weep: { + prt: 'wept' + }, + win: { + g: '_ning', + pst: 'won' + }, + wind: { + prt: 'wound' + }, + withdraw: { + pst: 'withdrew' + }, + wring: { + prt: 'wrung' + }, + write: { + g: 'writing', + prt: 'written', + pst: 'wrote' + } + }; //uncompress our ad-hoc compression scheme + + let keys = Object.keys(conjugations); + + for (let i = 0; i < keys.length; i++) { + const inf = keys[i]; + let final = {}; + Object.keys(conjugations[inf]).forEach(key => { + let str = conjugations[inf][key]; //swap-in infinitives for '_' + + str = str.replace('_', inf); + let full = mapping$1[key]; + final[full] = str; + }); //over-write original + + conjugations[inf] = final; + } + + var conjugations_1 = conjugations; + const endsWith$2 = { + b: [{ + reg: /([^aeiou][aeiou])b$/i, + repl: { + pr: '$1bs', + pa: '$1bbed', + gr: '$1bbing' + } + }], + d: [{ + reg: /(end)$/i, + repl: { + pr: '$1s', + pa: 'ent', + gr: '$1ing', + ar: '$1er' + } + }, { + reg: /(eed)$/i, + repl: { + pr: '$1s', + pa: '$1ed', + gr: '$1ing', + ar: '$1er' + } + }, { + reg: /(ed)$/i, + repl: { + pr: '$1s', + pa: '$1ded', + ar: '$1der', + gr: '$1ding' + } + }, { + reg: /([^aeiou][ou])d$/i, + repl: { + pr: '$1ds', + pa: '$1dded', + gr: '$1dding' + } + }], + e: [{ + reg: /(eave)$/i, + repl: { + pr: '$1s', + pa: '$1d', + gr: 'eaving', + ar: '$1r' + } + }, { + reg: /(ide)$/i, + repl: { + pr: '$1s', + pa: 'ode', + gr: 'iding', + ar: 'ider' + } + }, { + //shake + reg: /(t|sh?)(ake)$/i, + repl: { + pr: '$1$2s', + pa: '$1ook', + gr: '$1aking', + ar: '$1$2r' + } + }, { + //awake + reg: /w(ake)$/i, + repl: { + pr: 'w$1s', + pa: 'woke', + gr: 'waking', + ar: 'w$1r' + } + }, { + //make + reg: /m(ake)$/i, + repl: { + pr: 'm$1s', + pa: 'made', + gr: 'making', + ar: 'm$1r' + } + }, { + reg: /(a[tg]|i[zn]|ur|nc|gl|is)e$/i, + repl: { + pr: '$1es', + pa: '$1ed', + gr: '$1ing' // prt: '$1en', + + } + }, { + reg: /([bd]l)e$/i, + repl: { + pr: '$1es', + pa: '$1ed', + gr: '$1ing' + } + }, { + reg: /(om)e$/i, + repl: { + pr: '$1es', + pa: 'ame', + gr: '$1ing' + } + }], + g: [{ + reg: /([^aeiou][aou])g$/i, + repl: { + pr: '$1gs', + pa: '$1gged', + gr: '$1gging' + } + }], + h: [{ + reg: /(..)([cs]h)$/i, + repl: { + pr: '$1$2es', + pa: '$1$2ed', + gr: '$1$2ing' + } + }], + k: [{ + reg: /(ink)$/i, + repl: { + pr: '$1s', + pa: 'unk', + gr: '$1ing', + ar: '$1er' + } + }], + m: [{ + reg: /([^aeiou][aeiou])m$/i, + repl: { + pr: '$1ms', + pa: '$1mmed', + gr: '$1mming' + } + }], + n: [{ + reg: /(en)$/i, + repl: { + pr: '$1s', + pa: '$1ed', + gr: '$1ing' + } + }], + p: [{ + reg: /(e)(ep)$/i, + repl: { + pr: '$1$2s', + pa: '$1pt', + gr: '$1$2ing', + ar: '$1$2er' + } + }, { + reg: /([^aeiou][aeiou])p$/i, + repl: { + pr: '$1ps', + pa: '$1pped', + gr: '$1pping' + } + }, { + reg: /([aeiu])p$/i, + repl: { + pr: '$1ps', + pa: '$1p', + gr: '$1pping' + } + }], + r: [{ + reg: /([td]er)$/i, + repl: { + pr: '$1s', + pa: '$1ed', + gr: '$1ing' + } + }, { + reg: /(er)$/i, + repl: { + pr: '$1s', + pa: '$1ed', + gr: '$1ing' + } + }], + s: [{ + reg: /(ish|tch|ess)$/i, + repl: { + pr: '$1es', + pa: '$1ed', + gr: '$1ing' + } + }], + t: [{ + reg: /(ion|end|e[nc]t)$/i, + repl: { + pr: '$1s', + pa: '$1ed', + gr: '$1ing' + } + }, { + reg: /(.eat)$/i, + repl: { + pr: '$1s', + pa: '$1ed', + gr: '$1ing' + } + }, { + reg: /([aeiu])t$/i, + repl: { + pr: '$1ts', + pa: '$1t', + gr: '$1tting' + } + }, { + reg: /([^aeiou][aeiou])t$/i, + repl: { + pr: '$1ts', + pa: '$1tted', + gr: '$1tting' + } + }], + w: [{ + reg: /(.llow)$/i, + //follow, allow + repl: { + pr: '$1s', + pa: '$1ed' + } + }, { + reg: /(..)(ow)$/i, + //grow + repl: { + pr: '$1$2s', + pa: '$1ew', + gr: '$1$2ing', + prt: '$1$2n' + } + }], + y: [{ + reg: /(i|f|rr)y$/i, + repl: { + pr: '$1ies', + pa: '$1ied', + gr: '$1ying' + } + }], + z: [{ + reg: /([aeiou]zz)$/i, + repl: { + pr: '$1es', + pa: '$1ed', + gr: '$1ing' + } + }] + }; + var suffixes$2 = endsWith$2; + const suffixes$1 = suffixes$2; + const posMap = { + pr: 'PresentTense', + pa: 'PastTense', + gr: 'Gerund', + prt: 'Participle', + ar: 'Actor' + }; + + const doTransform = function (str, obj) { + let found = {}; + let keys = Object.keys(obj.repl); + + for (let i = 0; i < keys.length; i += 1) { + let pos = keys[i]; + found[posMap[pos]] = str.replace(obj.reg, obj.repl[pos]); + } + + return found; + }; //look at the end of the word for clues + + + const checkSuffix$1 = function () { + let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let c = str[str.length - 1]; + + if (suffixes$1.hasOwnProperty(c) === true) { + for (let r = 0; r < suffixes$1[c].length; r += 1) { + const reg = suffixes$1[c][r].reg; + + if (reg.test(str) === true) { + return doTransform(str, suffixes$1[c][r]); + } + } + } + + return {}; + }; + + var _01Suffixes = checkSuffix$1; + const hasY = /[bcdfghjklmnpqrstvwxz]y$/; + const generic = { + Gerund: inf => { + if (inf.charAt(inf.length - 1) === 'e') { + return inf.replace(/e$/, 'ing'); + } + + return inf + 'ing'; + }, + PresentTense: inf => { + if (inf.charAt(inf.length - 1) === 's') { + return inf + 'es'; + } + + if (hasY.test(inf) === true) { + return inf.slice(0, -1) + 'ies'; + } + + return inf + 's'; + }, + PastTense: inf => { + if (inf.charAt(inf.length - 1) === 'e') { + return inf + 'd'; + } + + if (inf.substr(-2) === 'ed') { + return inf; + } + + if (hasY.test(inf) === true) { + return inf.slice(0, -1) + 'ied'; + } + + return inf + 'ed'; + } + }; + var _02Generic = generic; + const checkSuffix = _01Suffixes; + const genericFill = _02Generic; //we run this on every verb in the lexicon, so please keep it fast + //we assume the input word is a proper infinitive + + const conjugate$4 = function () { + let inf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let world = arguments.length > 1 ? arguments[1] : undefined; + let found = {}; // 1. look at irregulars + //the lexicon doesn't pass this in + + if (world && world.irregulars) { + if (world.irregulars.verbs.hasOwnProperty(inf) === true) { + found = Object.assign({}, world.irregulars.verbs[inf]); + } + } //2. rule-based regex + + + found = Object.assign({}, checkSuffix(inf), found); //3. generic transformations + //'buzzing' + + if (found.Gerund === undefined) { + found.Gerund = genericFill.Gerund(inf); + } //'buzzed' + + + if (found.PastTense === undefined) { + found.PastTense = genericFill.PastTense(inf); + } //'buzzes' + + + if (found.PresentTense === undefined) { + found.PresentTense = genericFill.PresentTense(inf); + } + + return found; + }; + + var conjugate_1$1 = conjugate$4; // console.log(conjugate('bake')) + + const do_rules$1 = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/]; + const dont_rules$1 = [/ary$/]; + const irregulars$5 = { + nice: 'nicest', + late: 'latest', + hard: 'hardest', + inner: 'innermost', + outer: 'outermost', + far: 'furthest', + worse: 'worst', + bad: 'worst', + good: 'best', + big: 'biggest', + large: 'largest' + }; + const transforms$2 = [{ + reg: /y$/i, + repl: 'iest' + }, { + reg: /([aeiou])t$/i, + repl: '$1ttest' + }, { + reg: /([aeou])de$/i, + repl: '$1dest' + }, { + reg: /nge$/i, + repl: 'ngest' + }, { + reg: /([aeiou])te$/i, + repl: '$1test' + }]; + + const to_superlative = function (str) { + //irregulars + if (irregulars$5.hasOwnProperty(str)) { + return irregulars$5[str]; + } //known transforms + + + for (let i = 0; i < transforms$2.length; i++) { + if (transforms$2[i].reg.test(str)) { + return str.replace(transforms$2[i].reg, transforms$2[i].repl); + } + } //dont-rules + + + for (let i = 0; i < dont_rules$1.length; i++) { + if (dont_rules$1[i].test(str) === true) { + return null; + } + } //do-rules + + + for (let i = 0; i < do_rules$1.length; i++) { + if (do_rules$1[i].test(str) === true) { + if (str.charAt(str.length - 1) === 'e') { + return str + 'st'; + } + + return str + 'est'; + } + } + + return str + 'est'; + }; + + var toSuperlative = to_superlative; + const do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/]; + const dont_rules = [/ary$/, /ous$/]; + const irregulars$4 = { + grey: 'greyer', + gray: 'grayer', + green: 'greener', + yellow: 'yellower', + red: 'redder', + good: 'better', + well: 'better', + bad: 'worse', + sad: 'sadder', + big: 'bigger' + }; + const transforms$1 = [{ + reg: /y$/i, + repl: 'ier' + }, { + reg: /([aeiou])t$/i, + repl: '$1tter' + }, { + reg: /([aeou])de$/i, + repl: '$1der' + }, { + reg: /nge$/i, + repl: 'nger' + }]; + + const to_comparative = function (str) { + //known-irregulars + if (irregulars$4.hasOwnProperty(str)) { + return irregulars$4[str]; + } //known-transforms + + + for (let i = 0; i < transforms$1.length; i++) { + if (transforms$1[i].reg.test(str) === true) { + return str.replace(transforms$1[i].reg, transforms$1[i].repl); + } + } //dont-patterns + + + for (let i = 0; i < dont_rules.length; i++) { + if (dont_rules[i].test(str) === true) { + return null; + } + } //do-patterns + + + for (let i = 0; i < do_rules.length; i++) { + if (do_rules[i].test(str) === true) { + return str + 'er'; + } + } //easy-one + + + if (/e$/.test(str) === true) { + return str + 'r'; + } + + return str + 'er'; + }; + + var toComparative = to_comparative; + const fns = { + toSuperlative: toSuperlative, + toComparative: toComparative + }; + /** conjugate an adjective into other forms */ + + const conjugate$3 = function (w) { + let res = {}; // 'greatest' + + let sup = fns.toSuperlative(w); + + if (sup) { + res.Superlative = sup; + } // 'greater' + + + let comp = fns.toComparative(w); + + if (comp) { + res.Comparative = comp; + } + + return res; + }; + + var adjectives$2 = conjugate$3; + /** patterns for turning 'bus' to 'buses'*/ + + const suffixes = { + a: [[/(antenn|formul|nebul|vertebr|vit)a$/i, '$1ae'], [/([ti])a$/i, '$1a']], + e: [[/(kn|l|w)ife$/i, '$1ives'], [/(hive)$/i, '$1s'], [/([m|l])ouse$/i, '$1ice'], [/([m|l])ice$/i, '$1ice']], + f: [[/^(dwar|handkerchie|hoo|scar|whar)f$/i, '$1ves'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i, '$1ves']], + i: [[/(octop|vir)i$/i, '$1i']], + m: [[/([ti])um$/i, '$1a']], + n: [[/^(oxen)$/i, '$1']], + o: [[/(al|ad|at|er|et|ed|ad)o$/i, '$1oes']], + s: [[/(ax|test)is$/i, '$1es'], [/(alias|status)$/i, '$1es'], [/sis$/i, 'ses'], [/(bu)s$/i, '$1ses'], [/(sis)$/i, 'ses'], [/^(?!talis|.*hu)(.*)man$/i, '$1men'], [/(octop|vir|radi|nucle|fung|cact|stimul)us$/i, '$1i']], + x: [[/(matr|vert|ind|cort)(ix|ex)$/i, '$1ices'], [/^(ox)$/i, '$1en']], + y: [[/([^aeiouy]|qu)y$/i, '$1ies']], + z: [[/(quiz)$/i, '$1zes']] + }; + var _rules$2 = suffixes; + const rules$5 = _rules$2; + const addE = /(x|ch|sh|s|z)$/; + + const trySuffix = function (str) { + let c = str[str.length - 1]; + + if (rules$5.hasOwnProperty(c) === true) { + for (let i = 0; i < rules$5[c].length; i += 1) { + let reg = rules$5[c][i][0]; + + if (reg.test(str) === true) { + return str.replace(reg, rules$5[c][i][1]); + } + } + } + + return null; + }; + /** Turn a singular noun into a plural + * assume the given string is singular + */ + + + const pluralize = function () { + let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let world = arguments.length > 1 ? arguments[1] : undefined; + let irregulars = world.irregulars.nouns; // check irregulars list + + if (irregulars.hasOwnProperty(str)) { + return irregulars[str]; + } //we have some rules to try-out + + + let plural = trySuffix(str); + + if (plural !== null) { + return plural; + } //like 'church' + + + if (addE.test(str)) { + return str + 'es'; + } // ¯\_(ツ)_/¯ + + + return str + 's'; + }; + + var toPlural = pluralize; + var _rules$1 = [[/([^v])ies$/i, '$1y'], [/ises$/i, 'isis'], [/(kn|[^o]l|w)ives$/i, '$1ife'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i, '$1f'], [/^(dwar|handkerchie|hoo|scar|whar)ves$/i, '$1f'], [/(antenn|formul|nebul|vertebr|vit)ae$/i, '$1a'], [/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i, '$1us'], [/(buffal|tomat|tornad)(oes)$/i, '$1o'], // [/(analy|diagno|parenthe|progno|synop|the)ses$/i, '$1sis'], + [/(eas)es$/i, '$1e'], //diseases + [/(..[aeiou]s)es$/i, '$1'], //geniouses + [/(vert|ind|cort)(ices)$/i, '$1ex'], [/(matr|append)(ices)$/i, '$1ix'], [/(x|ch|ss|sh|z|o)es$/i, '$1'], [/men$/i, 'man'], [/(n)ews$/i, '$1ews'], [/([ti])a$/i, '$1um'], [/([^aeiouy]|qu)ies$/i, '$1y'], [/(s)eries$/i, '$1eries'], [/(m)ovies$/i, '$1ovie'], [/([m|l])ice$/i, '$1ouse'], [/(cris|ax|test)es$/i, '$1is'], [/(alias|status)es$/i, '$1'], [/(ss)$/i, '$1'], [/(ics)$/i, '$1'], [/s$/i, '']]; + const rules$4 = _rules$1; + + const invertObj = function (obj) { + return Object.keys(obj).reduce((h, k) => { + h[obj[k]] = k; + return h; + }, {}); + }; + + const toSingular = function (str, world) { + let irregulars = world.irregulars.nouns; + let invert = invertObj(irregulars); //(not very efficient) + // check irregulars list + + if (invert.hasOwnProperty(str)) { + return invert[str]; + } // go through our regexes + + + for (let i = 0; i < rules$4.length; i++) { + if (rules$4[i][0].test(str) === true) { + str = str.replace(rules$4[i][0], rules$4[i][1]); + return str; + } + } + + return str; + }; + + var toSingular_1 = toSingular; + let rules$3 = { + Participle: [{ + reg: /own$/i, + to: 'ow' + }, { + reg: /(.)un([g|k])$/i, + to: '$1in$2' + }], + Actor: [{ + reg: /(er)er$/i, + to: '$1' + }], + PresentTense: [{ + reg: /(..)(ies)$/i, + to: '$1y' + }, { + reg: /(tch|sh)es$/i, + to: '$1' + }, { + reg: /(ss|zz)es$/i, + to: '$1' + }, { + reg: /([tzlshicgrvdnkmu])es$/i, + to: '$1e' + }, { + reg: /(n[dtk]|c[kt]|[eo]n|i[nl]|er|a[ytrl])s$/i, + to: '$1' + }, { + reg: /(ow)s$/i, + to: '$1' + }, { + reg: /(op)s$/i, + to: '$1' + }, { + reg: /([eirs])ts$/i, + to: '$1t' + }, { + reg: /(ll)s$/i, + to: '$1' + }, { + reg: /(el)s$/i, + to: '$1' + }, { + reg: /(ip)es$/i, + to: '$1e' + }, { + reg: /ss$/i, + to: 'ss' + }, { + reg: /s$/i, + to: '' + }], + Gerund: [{ + //popping -> pop + reg: /(..)(p|d|t|g){2}ing$/i, + to: '$1$2' + }, { + //fuzzing -> fuzz + reg: /(ll|ss|zz)ing$/i, + to: '$1' + }, { + reg: /([^aeiou])ying$/i, + to: '$1y' + }, { + reg: /([^ae]i.)ing$/i, + to: '$1e' + }, { + //eating, reading + reg: /(ea[dklnrtv])ing$/i, + to: '$1' + }, { + //washing -> wash + reg: /(ch|sh)ing$/i, + to: '$1' + }, //soft-e forms: + { + //z : hazing (not buzzing) + reg: /(z)ing$/i, + to: '$1e' + }, { + //a : baking, undulating + reg: /(a[gdkvtc])ing$/i, + to: '$1e' + }, { + //u : conjuring, tubing + reg: /(u[rtcbn])ing$/i, + to: '$1e' + }, { + //o : forboding, poking, hoping, boring (not hooping) + reg: /([^o]o[bdknprv])ing$/i, + to: '$1e' + }, { + //ling : tingling, wrinkling, circling, scrambling, bustling + reg: /([tbckg]l)ing$/i, + //dp + to: '$1e' + }, { + //cing : bouncing, denouncing + reg: /(c|s)ing$/i, + //dp + to: '$1e' + }, // { + // //soft-e : + // reg: /([ua]s|[dr]g|z|o[rlsp]|cre)ing$/i, + // to: '$1e', + // }, + { + //fallback + reg: /(..)ing$/i, + to: '$1' + }], + PastTense: [{ + reg: /(ued)$/i, + to: 'ue' + }, { + reg: /ea(rn|l|m)ed$/i, + //ea - earned, healed, sreamed + to: 'ea$1' + }, { + reg: /a([^aeiouy])ed$/i, + to: 'a$1e' + }, { + reg: /([aeiou]zz)ed$/i, + to: '$1' + }, { + reg: /(e|i)lled$/i, + to: '$1ll' + }, { + reg: /(.)(sh|ch)ed$/i, + to: '$1$2' + }, { + reg: /(tl|gl)ed$/i, + to: '$1e' + }, { + reg: /(um?pt?)ed$/i, + to: '$1' + }, { + reg: /(ss)ed$/i, + to: '$1' + }, { + reg: /pped$/i, + to: 'p' + }, { + reg: /tted$/i, + to: 't' + }, { + reg: /(..)gged$/i, + to: '$1g' + }, { + reg: /(..)lked$/i, + to: '$1lk' + }, { + reg: /([^aeiouy][aeiou])ked$/i, + to: '$1ke' + }, { + reg: /(.[aeiou])led$/i, + to: '$1l' + }, { + reg: /(..)(h|ion|n[dt]|ai.|[cs]t|pp|all|ss|tt|int|ail|ld|en|oo.|er|k|pp|w|ou.|rt|ght|rm)ed$/i, + to: '$1$2' + }, { + reg: /(.ut)ed$/i, + to: '$1e' + }, { + reg: /(.pt)ed$/i, + to: '$1' + }, { + reg: /(us)ed$/i, + to: '$1e' + }, { + reg: /(dd)ed$/i, + to: '$1' + }, { + reg: /(..[^aeiouy])ed$/i, + to: '$1e' + }, { + reg: /(..)ied$/i, + to: '$1y' + }, { + reg: /(.o)ed$/i, + to: '$1o' + }, { + reg: /(..i)ed$/i, + to: '$1' + }, { + reg: /(.a[^aeiou])ed$/i, + to: '$1' + }, { + //owed, aced + reg: /([aeiou][^aeiou])ed$/i, + to: '$1e' + }, { + reg: /([rl])ew$/i, + to: '$1ow' + }, { + reg: /([pl])t$/i, + to: '$1t' + }] + }; + var _transform = rules$3; + let guessVerb = { + Gerund: ['ing'], + Actor: ['erer'], + Infinitive: ['ate', 'ize', 'tion', 'rify', 'then', 'ress', 'ify', 'age', 'nce', 'ect', 'ise', 'ine', 'ish', 'ace', 'ash', 'ure', 'tch', 'end', 'ack', 'and', 'ute', 'ade', 'ock', 'ite', 'ase', 'ose', 'use', 'ive', 'int', 'nge', 'lay', 'est', 'ain', 'ant', 'ent', 'eed', 'er', 'le', 'own', 'unk', 'ung', 'en'], + PastTense: ['ed', 'lt', 'nt', 'pt', 'ew', 'ld'], + PresentTense: ['rks', 'cks', 'nks', 'ngs', 'mps', 'tes', 'zes', 'ers', 'les', 'acks', 'ends', 'ands', 'ocks', 'lays', 'eads', 'lls', 'els', 'ils', 'ows', 'nds', 'ays', 'ams', 'ars', 'ops', 'ffs', 'als', 'urs', 'lds', 'ews', 'ips', 'es', 'ts', 'ns'] + }; //flip it into a lookup object + + guessVerb = Object.keys(guessVerb).reduce((h, k) => { + guessVerb[k].forEach(a => h[a] = k); + return h; + }, {}); + var _guess = guessVerb; + const rules$2 = _transform; + const guess = _guess; + /** it helps to know what we're conjugating from */ + + const guessTense = function (str) { + let three = str.substr(str.length - 3); + + if (guess.hasOwnProperty(three) === true) { + return guess[three]; + } + + let two = str.substr(str.length - 2); + + if (guess.hasOwnProperty(two) === true) { + return guess[two]; + } + + let one = str.substr(str.length - 1); + + if (one === 's') { + return 'PresentTense'; + } + + return null; + }; + + const toInfinitive$3 = function (str, world, tense) { + if (!str) { + return ''; + } //1. look at known irregulars + + + if (world.words.hasOwnProperty(str) === true) { + let irregs = world.irregulars.verbs; + let keys = Object.keys(irregs); + + for (let i = 0; i < keys.length; i++) { + let forms = Object.keys(irregs[keys[i]]); + + for (let o = 0; o < forms.length; o++) { + if (str === irregs[keys[i]][forms[o]]) { + return keys[i]; + } + } + } + } // give'r! + + + tense = tense || guessTense(str); + + if (tense && rules$2[tense]) { + for (let i = 0; i < rules$2[tense].length; i++) { + const rule = rules$2[tense][i]; + + if (rule.reg.test(str) === true) { + // console.log(rule.reg) + return str.replace(rule.reg, rule.to); + } + } + } + + return str; + }; + + var toInfinitive_1$1 = toInfinitive$3; + const defaultTags = tags; + const unpack = unpack_1; + const addIrregulars = addIrregulars_1; + const inferTagSet = inference; //these let users change inflection / verb conjugation + + const irregulars$3 = { + nouns: plurals, + verbs: conjugations_1 + }; //these behaviours are configurable & shared across some plugins + + const transforms = { + conjugate: conjugate_1$1, + adjectives: adjectives$2, + toPlural: toPlural, + toSingular: toSingular_1, + toInfinitive: toInfinitive_1$1 + }; + let isVerbose = false; + /** all configurable linguistic data */ + + class World$1 { + constructor() { + // quiet these properties from a console.log + Object.defineProperty(this, 'words', { + enumerable: false, + value: {}, + writable: true + }); + Object.defineProperty(this, 'hasCompound', { + enumerable: false, + value: {}, + writable: true + }); + Object.defineProperty(this, 'irregulars', { + enumerable: false, + value: irregulars$3, + writable: true + }); + Object.defineProperty(this, 'tags', { + enumerable: false, + value: Object.assign({}, defaultTags), + writable: true + }); + Object.defineProperty(this, 'transforms', { + enumerable: false, + value: transforms, + writable: true + }); + Object.defineProperty(this, 'taggers', { + enumerable: false, + value: [], + writable: true + }); // cache our abbreviations for our sentence-parser + + Object.defineProperty(this, 'cache', { + enumerable: false, + value: { + abbreviations: {} + } + }); // add our compressed data to lexicon + + this.words = unpack.buildOut(this); // add our irregulars to lexicon + + addIrregulars(this); + } + /** more logs for debugging */ + + + verbose(bool) { + isVerbose = bool; + return this; + } + + isVerbose() { + return isVerbose; + } + /** put new words into our lexicon, properly */ + + + addWords(wordObj) { + // clean them up a bit + let cleaned = {}; + Object.keys(wordObj).forEach(w => { + let tag = wordObj[w]; + w = w.toLowerCase().trim(); + cleaned[w] = tag; + }); + unpack.addWords(cleaned, this.words, this); + } + /** add new custom conjugations */ + + + addConjugations(obj) { + Object.assign(this.irregulars.verbs, obj); + return this; + } + /** add new custom plural/singular pairs */ + + + addPlurals(obj) { + Object.assign(this.irregulars.nouns, obj); + return this; + } + /** extend the compromise tagset */ + + + addTags(tags) { + tags = Object.assign({}, tags); + this.tags = Object.assign(this.tags, tags); // calculate graph implications for the new tags + + this.tags = inferTagSet(this.tags); + return this; + } + /** call methods after tagger runs */ + + + postProcess(fn) { + this.taggers.push(fn); + return this; + } + /** helper method for logging + debugging */ + + + stats() { + return { + words: Object.keys(this.words).length, + plurals: Object.keys(this.irregulars.nouns).length, + conjugations: Object.keys(this.irregulars.verbs).length, + compounds: Object.keys(this.hasCompound).length, + postProcessors: this.taggers.length + }; + } + + } // ¯\_(:/)_/¯ + + + const clone = function (obj) { + return JSON.parse(JSON.stringify(obj)); + }; + /** produce a deep-copy of all lingustic data */ + + + World$1.prototype.clone = function () { + let w2 = new World$1(); // these are simple to copy: + + w2.words = Object.assign({}, this.words); + w2.hasCompound = Object.assign({}, this.hasCompound); //these ones are nested: + w2.irregulars = clone(this.irregulars); + w2.tags = clone(this.tags); // these are functions - var reg2 = /^([0-9]{1,4})(-|–|—)([a-z\u00C0-\u00FF`"'/-]+$)/i; + w2.transforms = this.transforms; + w2.taggers = this.taggers; + return w2; + }; - if (reg2.test(str) === true) { - return true; - } //support weird number-emdash combo '2010–2011' - // let reg2 = /^([0-9]+)(–|—)([0-9].*)/i - // if (reg2.test(str)) { - // return true - // } + var World_1 = World$1; + var _01Utils = {}; + /** return the root, first document */ + (function (exports) { + exports.all = function () { + return this.parents()[0] || this; + }; + /** return the previous result */ - return false; - }; // 'he / she' should be one word + exports.parent = function () { + if (this.from) { + return this.from; + } - var combineSlashes = function combineSlashes(arr) { - for (var i = 1; i < arr.length - 1; i++) { - if (isSlash.test(arr[i])) { - arr[i - 1] += arr[i] + arr[i + 1]; - arr[i] = null; - arr[i + 1] = null; - } - } + return this; + }; + /** return a list of all previous results */ - return arr; - }; - var splitHyphens = function splitHyphens(word) { - var arr = []; //support multiple-hyphenated-terms + exports.parents = function (n) { + let arr = []; - var hyphens = word.split(/[-–—]/); - var whichDash = '-'; - var found = word.match(/[-–—]/); + const addParent = function (doc) { + if (doc.from) { + arr.push(doc.from); + addParent(doc.from); + } + }; - if (found && found[0]) { - whichDash = found; - } + addParent(this); + arr = arr.reverse(); - for (var o = 0; o < hyphens.length; o++) { - if (o === hyphens.length - 1) { - arr.push(hyphens[o]); - } else { - arr.push(hyphens[o] + whichDash); - } - } + if (typeof n === 'number') { + return arr[n]; + } - return arr; - }; + return arr; + }; + /** deep-copy the document, so that no references remain */ - var isArray$1 = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; - }; //turn a string into an array of strings (naiive for now, lumped later) + exports.clone = function (doShallow) { + let list = this.list.map(ts => ts.clone(doShallow)); + let tmp = this.buildFrom(list); + return tmp; + }; + /** how many seperate terms does the document have? */ - var splitWords = function splitWords(str) { - var result = []; - var arr = []; //start with a naiive split - str = str || ''; + exports.wordCount = function () { + return this.list.reduce((count, p) => { + count += p.wordCount(); + return count; + }, 0); + }; - if (typeof str === 'number') { - str = String(str); - } + exports.wordcount = exports.wordCount; + /** turn on logging for decision-debugging */ + // exports.verbose = function(bool) { + // if (bool === undefined) { + // bool = true + // } + // this.world.verbose = bool + // } + })(_01Utils); - if (isArray$1(str)) { - return str; - } + var _02Accessors = {}; + /** use only the first result(s) */ - var words = str.split(naiiveSplit); + (function (exports) { + exports.first = function (n) { + if (n === undefined) { + return this.get(0); + } - for (var i = 0; i < words.length; i++) { - //split 'one-two' - if (hasHyphen(words[i]) === true) { - arr = arr.concat(splitHyphens(words[i])); - continue; - } + return this.slice(0, n); + }; + /** use only the last result(s) */ - arr.push(words[i]); - } //greedy merge whitespace+arr to the right + exports.last = function (n) { + if (n === undefined) { + return this.get(this.list.length - 1); + } - var carry = ''; + let end = this.list.length; + return this.slice(end - n, end); + }; + /** grab a given subset of the results*/ - for (var _i = 0; _i < arr.length; _i++) { - var word = arr[_i]; //if it's more than a whitespace - if (wordlike.test(word) === true && notWord.hasOwnProperty(word) === false && isBoundary.test(word) === false) { - //put whitespace on end of previous term, if possible - if (result.length > 0) { - result[result.length - 1] += carry; - result.push(word); - } else { - //otherwise, but whitespace before - result.push(carry + word); - } + exports.slice = function (start, end) { + let list = this.list.slice(start, end); + return this.buildFrom(list); + }; + /* grab nth result */ - carry = ''; - } else { - carry += word; - } - } //handle last one + exports.eq = function (n) { + let p = this.list[n]; - if (carry) { - if (result.length === 0) { - result[0] = ''; - } + if (p === undefined) { + return this.buildFrom([]); + } - result[result.length - 1] += carry; //put it on the end - } // combine 'one / two' + return this.buildFrom([p]); + }; + exports.get = exports.eq; + /** grab term[0] for every match */ - result = combineSlashes(result); // remove empty results + exports.firstTerms = function () { + return this.match('^.'); + }; - result = result.filter(function (s) { - return s; - }); - return result; - }; + exports.firstTerm = exports.firstTerms; + /** grab the last term for every match */ - var _02Words = splitWords; - - var isArray = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; - }; - /** turn a string into an array of Phrase objects */ - - - var fromText = function fromText() { - var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var world = arguments.length > 1 ? arguments[1] : undefined; - var pool = arguments.length > 2 ? arguments[2] : undefined; - var sentences = null; //a bit of validation, first - - if (typeof text !== 'string') { - if (typeof text === 'number') { - text = String(text); - } else if (isArray(text)) { - sentences = text; - } - } //tokenize into words - - - sentences = sentences || _01Sentences(text, world); - sentences = sentences.map(function (str) { - return _02Words(str); - }); //turn them into proper objects - - pool = pool || new Pool_1(); - var phrases = sentences.map(function (terms) { - terms = terms.map(function (str) { - var term = new Term_1(str); - pool.add(term); - return term; - }); //add next/previous ids - - _linkTerms(terms); //return phrase objects - - - var p = new Phrase_1(terms[0].id, terms.length, pool); - p.cache.terms = terms; - return p; - }); //return them ready for a Document object - - return phrases; - }; - - var _01Tokenizer = fromText; - - var fromJSON = function fromJSON(json, world) { - var pool = new Pool_1(); - var phrases = json.map(function (p, k) { - var terms = p.terms.map(function (o, i) { - var term = new Term_1(o.text); - term.pre = o.pre !== undefined ? o.pre : ''; - - if (o.post === undefined) { - o.post = ' '; //no given space for very last term - - if (i >= p.terms.length - 1) { - o.post = '. '; - - if (k >= p.terms.length - 1) { - o.post = '.'; - } - } - } - - term.post = o.post !== undefined ? o.post : ' '; - - if (o.tags) { - o.tags.forEach(function (tag) { - return term.tag(tag, '', world); - }); - } - - pool.add(term); - return term; - }); //add prev/next links - - _linkTerms(terms); // return a proper Phrase object - - - return new Phrase_1(terms[0].id, terms.length, pool); - }); - return phrases; - }; - - var fromJSON_1 = fromJSON; - var _version = '13.10.5'; - var entity = ['Person', 'Place', 'Organization']; - var nouns$1 = { - Noun: { - notA: ['Verb', 'Adjective', 'Adverb'] - }, - // - singular - Singular: { - isA: 'Noun', - notA: 'Plural' - }, - //a specific thing that's capitalized - ProperNoun: { - isA: 'Noun' - }, - // -- people - Person: { - isA: ['ProperNoun', 'Singular'], - notA: ['Place', 'Organization', 'Date'] - }, - FirstName: { - isA: 'Person' - }, - MaleName: { - isA: 'FirstName', - notA: ['FemaleName', 'LastName'] - }, - FemaleName: { - isA: 'FirstName', - notA: ['MaleName', 'LastName'] - }, - LastName: { - isA: 'Person', - notA: ['FirstName'] - }, - NickName: { - isA: 'Person', - notA: ['FirstName', 'LastName'] - }, - Honorific: { - isA: 'Noun', - notA: ['FirstName', 'LastName', 'Value'] - }, - // -- places - Place: { - isA: 'Singular', - notA: ['Person', 'Organization'] - }, - Country: { - isA: ['Place', 'ProperNoun'], - notA: ['City'] - }, - City: { - isA: ['Place', 'ProperNoun'], - notA: ['Country'] - }, - Region: { - isA: ['Place', 'ProperNoun'] - }, - Address: { - isA: 'Place' - }, - //---Orgs--- - Organization: { - isA: ['Singular', 'ProperNoun'], - notA: ['Person', 'Place'] - }, - SportsTeam: { - isA: 'Organization' - }, - School: { - isA: 'Organization' - }, - Company: { - isA: 'Organization' - }, - // - plural - Plural: { - isA: 'Noun', - notA: ['Singular'] - }, - //(not plural or singular) - Uncountable: { - isA: 'Noun' - }, - Pronoun: { - isA: 'Noun', - notA: entity - }, - //a word for someone doing something -'plumber' - Actor: { - isA: 'Noun', - notA: entity - }, - //a gerund-as-noun - 'swimming' - Activity: { - isA: 'Noun', - notA: ['Person', 'Place'] - }, - //'kilograms' - Unit: { - isA: 'Noun', - notA: entity - }, - //'Canadians' - Demonym: { - isA: ['Noun', 'ProperNoun'], - notA: entity - }, - //`john's` - Possessive: { - isA: 'Noun' // notA: 'Pronoun', - - } - }; - var verbs$1 = { - Verb: { - notA: ['Noun', 'Adjective', 'Adverb', 'Value'] - }, - // walks - PresentTense: { - isA: 'Verb', - notA: ['PastTense', 'FutureTense'] - }, - // neutral form - 'walk' - Infinitive: { - isA: 'PresentTense', - notA: ['PastTense', 'Gerund'] - }, - //close the door! - Imperative: { - isA: 'Infinitive' // notA: ['PresentTense', 'PastTense', 'FutureTense', 'Gerund'], - - }, - // walking - Gerund: { - isA: 'PresentTense', - notA: ['PastTense', 'Copula', 'FutureTense'] - }, - // walked - PastTense: { - isA: 'Verb', - notA: ['FutureTense'] - }, - // will walk - FutureTense: { - isA: 'Verb' - }, - // is - Copula: { - isA: 'Verb' - }, - // would have - Modal: { - isA: 'Verb', - notA: ['Infinitive'] - }, - // had walked - PerfectTense: { - isA: 'Verb', - notA: 'Gerund' - }, - Pluperfect: { - isA: 'Verb' - }, - // shown - Participle: { - isA: 'PastTense' - }, - // show up - PhrasalVerb: { - isA: 'Verb' - }, - //'up' part - Particle: { - isA: 'PhrasalVerb' - }, - //this can be an adverb - Auxiliary: { - notA: ['Noun', 'Adjective', 'Value'] - } - }; - var values = { - Value: { - notA: ['Verb', 'Adjective', 'Adverb'] - }, - Ordinal: { - isA: 'Value', - notA: ['Cardinal'] - }, - Cardinal: { - isA: 'Value', - notA: ['Ordinal'] - }, - Fraction: { - isA: 'Value', - notA: ['Noun'] - }, - RomanNumeral: { - isA: 'Cardinal', - //can be a person, too - notA: ['Ordinal', 'TextValue'] - }, - TextValue: { - isA: 'Value', - notA: ['NumericValue'] - }, - NumericValue: { - isA: 'Value', - notA: ['TextValue'] - }, - Money: { - isA: 'Cardinal' - }, - Percent: { - isA: 'Value' - } - }; - var anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value', 'QuestionWord']; - var misc$1 = { - //--Adjectives-- - Adjective: { - notA: ['Noun', 'Verb', 'Adverb', 'Value'] - }, - // adjectives that can conjugate - Comparable: { - isA: ['Adjective'] - }, - // better - Comparative: { - isA: ['Adjective'] - }, - // best - Superlative: { - isA: ['Adjective'], - notA: ['Comparative'] - }, - NumberRange: { - isA: ['Contraction'] - }, - Adverb: { - notA: ['Noun', 'Verb', 'Adjective', 'Value'] - }, - // Dates: - //not a noun, but usually is - Date: { - notA: ['Verb', 'Adverb', 'Preposition', 'Adjective'] - }, - Month: { - isA: ['Date', 'Singular'], - notA: ['Year', 'WeekDay', 'Time'] - }, - WeekDay: { - isA: ['Date', 'Noun'] - }, - // 'PST' - Timezone: { - isA: ['Date', 'Noun'], - notA: ['Adjective', 'ProperNoun'] - }, - // '9:20pm' - Time: { - isA: ['Date'], - notA: ['AtMention'] - }, - //glue - Determiner: { - notA: anything - }, - Conjunction: { - notA: anything - }, - Preposition: { - notA: anything - }, - // what, who, why - QuestionWord: { - notA: ['Determiner'] - }, - // peso, euro - Currency: { - isA: ['Noun'] - }, - // ughh - Expression: { - notA: ['Noun', 'Adjective', 'Verb', 'Adverb'] - }, - // dr. - Abbreviation: {}, - // internet tags - Url: { - notA: ['HashTag', 'PhoneNumber', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'] - }, - PhoneNumber: { - notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'] - }, - HashTag: {}, - AtMention: { - isA: ['Noun'], - notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'Email'] - }, - Emoji: { - notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'] - }, - Emoticon: { - notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'] - }, - Email: { - notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'] - }, - //non-exclusive - Acronym: { - notA: ['Plural', 'RomanNumeral'] - }, - Negative: { - notA: ['Noun', 'Adjective', 'Value'] - }, - // if, unless, were - Condition: { - notA: ['Verb', 'Adjective', 'Noun', 'Value'] - } - }; // i just made these up - - var colorMap = { - Noun: 'blue', - Verb: 'green', - Negative: 'green', - Date: 'red', - Value: 'red', - Adjective: 'magenta', - Preposition: 'cyan', - Conjunction: 'cyan', - Determiner: 'cyan', - Adverb: 'cyan' - }; - /** add a debug color to some tags */ - - var addColors = function addColors(tags) { - Object.keys(tags).forEach(function (k) { - // assigned from plugin, for example - if (tags[k].color) { - tags[k].color = tags[k].color; - return; - } // defined above - - - if (colorMap[k]) { - tags[k].color = colorMap[k]; - return; - } - - tags[k].isA.some(function (t) { - if (colorMap[t]) { - tags[k].color = colorMap[t]; - return true; - } - - return false; - }); - }); - return tags; - }; - - var _color = addColors; - - var unique$3 = function unique(arr) { - return arr.filter(function (v, i, a) { - return a.indexOf(v) === i; - }); - }; //add 'downward' tags (that immediately depend on this one) - - - var inferIsA = function inferIsA(tags) { - Object.keys(tags).forEach(function (k) { - var tag = tags[k]; - var len = tag.isA.length; - - for (var i = 0; i < len; i++) { - var down = tag.isA[i]; - - if (tags[down]) { - tag.isA = tag.isA.concat(tags[down].isA); - } - } // clean it up - - - tag.isA = unique$3(tag.isA); - }); - return tags; - }; - - var _isA = inferIsA; - - var unique$2 = function unique(arr) { - return arr.filter(function (v, i, a) { - return a.indexOf(v) === i; - }); - }; // crawl the tag-graph and infer any conflicts - // faster than doing this at tag-time - - - var inferNotA = function inferNotA(tags) { - var keys = Object.keys(tags); - keys.forEach(function (k) { - var tag = tags[k]; - tag.notA = tag.notA || []; - tag.isA.forEach(function (down) { - if (tags[down] && tags[down].notA) { - // borrow its conflicts - var notA = typeof tags[down].notA === 'string' ? [tags[down].isA] : tags[down].notA || []; - tag.notA = tag.notA.concat(notA); - } - }); // any tag that lists us as a conflict, we conflict it back. - - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - - if (tags[key].notA.indexOf(k) !== -1) { - tag.notA.push(key); - } - } // clean it up - - - tag.notA = unique$2(tag.notA); - }); - return tags; - }; - - var _notA = inferNotA; // a lineage is all 'incoming' tags that have this as 'isA' - - var inferLineage = function inferLineage(tags) { - var keys = Object.keys(tags); - keys.forEach(function (k) { - var tag = tags[k]; - tag.lineage = []; // find all tags with it in their 'isA' set - - for (var i = 0; i < keys.length; i++) { - if (tags[keys[i]].isA.indexOf(k) !== -1) { - tag.lineage.push(keys[i]); - } - } - }); - return tags; - }; - - var _lineage = inferLineage; - - var validate = function validate(tags) { - // cleanup format - Object.keys(tags).forEach(function (k) { - var tag = tags[k]; // ensure isA is an array - - tag.isA = tag.isA || []; - - if (typeof tag.isA === 'string') { - tag.isA = [tag.isA]; - } // ensure notA is an array - - - tag.notA = tag.notA || []; - - if (typeof tag.notA === 'string') { - tag.notA = [tag.notA]; - } - }); - return tags; - }; // build-out the tag-graph structure - - - var inferTags = function inferTags(tags) { - // validate data - tags = validate(tags); // build its 'down tags' - - tags = _isA(tags); // infer the conflicts - - tags = _notA(tags); // debug tag color - - tags = _color(tags); // find incoming links - - tags = _lineage(tags); - return tags; - }; - - var inference = inferTags; - - var addIn = function addIn(obj, tags) { - Object.keys(obj).forEach(function (k) { - tags[k] = obj[k]; - }); - }; - - var build = function build() { - var tags = {}; - addIn(nouns$1, tags); - addIn(verbs$1, tags); - addIn(values, tags); - addIn(misc$1, tags); // do the graph-stuff - - tags = inference(tags); - return tags; - }; - - var tags = build(); - var _data = { - "Comparative": "true¦better", - "Superlative": "true¦earlier", - "PresentTense": "true¦is,sounds", - "Value": "true¦a few", - "Noun": "true¦a5b4c2f1here,ie,lit,m0no doubt,pd,tce;a,d;t,y;a,ca,o0;l,rp;a,l;d,l,rc", - "Copula": "true¦a1is,w0;as,ere;m,re", - "PastTense": "true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan", - "Condition": "true¦if,lest,unless", - "Preposition": "true¦'o,-,aLbIcHdGexcept,fFiDmidQnotwithstandiRoBpSqua,sAt6u3vi2w0;/o,hereNith0;!in,oR;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oJ;ans,ince,o that;',f0n2ut;!f;f,n0;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut", - "Gerund": "true¦accord0be0develop0go0result0stain0;ing", - "Negative": "true¦n0;ever,o0;!n,t", - "QuestionWord": "true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s", - "Plural": "true¦records", - "Conjunction": "true¦&,aFbBcuz,how9in caEno8o7p5supposing,t2v1wh0yet;eth9ile;ers4s;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh", - "Abbreviation": "true¦a0Jb0Gc0Ad08e05f02g01h00iYjWkanVlTmNnKoJpFque,rDs8t6u5v2w0;is0r,y0B;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;ce,e0;l,mp,nn,x;ask,e2fc,gt,i1q,r,s,t,u0;pt,rg;r,tu;c,nJp0;!t;b,d,e0;pGs,v;a,d,ennNhd,l,p,r1s0vt;!eud;ef,o0;b,f,n;ct,kla,nt;e0ov;b0e;!r;a4d,essrs,i1lle,me,r7s0t;!tr;n1s0;c,ter;!n;!j,r,sc;at,it,lb,ng,t0;!d;!s;an,d,r,u0;l,n;a,da,e,n0;c,f;on,wy;a,en,ov;e1ig,l0m,r,t,y;!a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0ist,r;c,f,pt,t;a3ca,l,m2o0pl,res,yn;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v", - "Pronoun": "true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s", - "Singular": "true¦0:15;1:12;2:18;a15b0Sc0Jd0Ce09f04gZhViUjel0kitty,lSmOnNoMpHquestionGrEs9t6u4w3;ay,om02;nc0Zs 3;doll0Kst0M; rex,a4h3ic,ragedy,v show;ere,i2;l0x return;i6ky,omeoMt3uper bowl,yst14;ep4ri2u3;de0Xff;faSmoS;st1ze;al0i2o3;om,se;! mark;a6i1la5r4u3;dPrpoH;eroga00ie0Gobl0U;te,y1;rt,te0N;bjWceJthers,verview;othi2umb1;a5ee08o3;del,m3nopo0rni2th1;!my;n,yf0;i3unch;ne;ci2nsect;ead start,o3uman right;l0me4u3;se;! run;adf0entlem6irl02laci1od,rand4u3;l0y; slam,fa3mo3;th1;an;a6ella,ly,ol0r4un3;di2;ee market,iWo3;nti1sP;mi0th1;conomy,gg,ner7ven4x3;ampTecu9;i2t;ad8e5inn1o3ragonf0ude;cumentGg3i0l0or;gy;ath,t3;ec3;tive;!dy;a9eili2h7i5o3redit card;ttage,u3;ri1sin;ty,vil w3;ar;andeli1ocol3;ate;n3rF;ary;aCel0lesJo8r5u3;n3tterf0;ti2;eakfa4o3;!th1;st;dy,tt5y3;!fri3;end;le;nki2r3;ri1;er;d5l0noma0u3;nt;ly; homin5verti3;si2;ng;em", - "FemaleName": "true¦0:J3;1:J7;2:IG;3:IF;4:IX;5:IK;6:JO;7:H0;8:JG;9:JK;A:HN;B:HY;C:IT;D:IP;E:JD;F:HC;G:I0;aGRbFLcDPdCYeBOfB4gADh9Ti9Gj8Gk7Gl60m49n3No3Jp37qu36r2Ds16t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof2;e3Uf2la,ra;h3iKlIna,ynH;ab,ep;da,ma;da,h3iHra;nab;aKeJi0Fol5BuIvH;etAonDO;i0na;le0sen2;el,gm3Jn,rGJs8W;aoHme0nyi;m62yAE;aMendDYhiDFiH;dele8lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;cIktoriBMlAole7viH;anC3enJ0;kF9tor2;da,lA9nus,rHs0;a,nHoniH4;a,iFQ;leHnesH4;nIHrH;i1y;g8rHxH5;su5te;aYeUhRiNoLrIuHy3;i,la;acIZiHu0L;c2na,sH;hBPta;nHr0H;iBNya;aJffaEOnHs6;a,gtiH;ng;!nFQra;aIeHomasi0;a,l9Po8Ares1;l2ndolwethu;g9Go88rIssH;!a,ie;eHi,ri9;sa,za;bPlNmLnJrIs6tHwa0;ia0um;a63yn;iHya;a,ka,s6;arB6e3iHmEDra;!ka;a,iH;a,t6;at6it6;a0Fcarlet3We0BhXiTkye,neza0oRtNuIyH;bIBlvi1;e,ha,mayIEni7sIzH;an3MetAie,y;anHi9;!a,e,nH;aDe;aJeH;fHl5GphH;an4;cHZr5;b2fiA8m0OnHphi1;d3ia,ja,ya;er3lJmon1nIobh8PtH;a,i;dy;lEPv2;aMeIirHo0risF7y5;a,lDK;ba,e0i5lJrH;iHrDOyl;!d8Hfa;ia,lDX;hd,iMki3nJrIu0w0yH;la,ma,na;i,le8on,ron;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye81vH;da,inj;e0ife;en1i0ma;anA5bNd3Nh1RiBkMlLmJndIrHs6vannaD;aDi0;ra,y;aHi3;nt6ra;lDKma,ome;ee0in8Ru3;in1ri0;a05e00hYiVoIuH;by,thDH;bScRghQl2KnPsJwIxH;anAXie,y;an,e0;aIeHie,lE; merBLann9ll1marDBt7;!lHnn1;iHyn;e,nH;a,d9K;da,i,na;ayy8D;hel62io;bDKer7yn;a,cIkHmas,n9Fta,ya;ki,o;helGki;ea,iannGDoH;da,n1K;an0bJem9Agi0iInHta,y0;a88ee;han83na;a,eH;cEAkaD;bi0chIe,i0mo0nHquEKvCy0;di,ia;aEIelHiB;!e,le;een4ia0;aNeMhKipaluk,oJrHute66;iHudenCQ;scil3LyamvaB;lly,rt2;ilome0oebe,ylH;is,lis;arl,ggy,nelope,r5t3;ige,m0TnKo5rvaDGtIulH;a,etAin1;ricHsy,tBY;a,e,ia;do3i06;ctav2dIfCZis6lHphCZumC3yunbileg;a,ga,iv2;eHvAC;l2tA;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aDeCma;ll1mi;aNcLhariBOkKlaJna,sHta,vi;anHha;ur;!y;a,iDTki;hoGk9VolH;a,eDJ;!mh;hir,lHna,risFsreC;!a,lBT;asuLdKh2i6CnJomi9rgEPtHzanin zah3;aHhal4;li1s6;cy,etA;a,e8iEV;nngu30;a09ckenz4e01iMoJrignayani,uriDDyH;a,rH;a,lNna,tG;bi0i3llBInH;a,iH;ca,ka,qD3;a,cTkaSlNmi,nLrItzi,yH;ar;aIiam,lH;anEO;!l,nB;dy,eHh,n4;nhGrva;aKdJiCPlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5EgNi,lKrH;edi79iIjem,on,yH;em,l;em,sF;an4iHliF;nHsCE;a,da;!an,han;b0DcASd0Be,g09ha,i08ja,l06n04rLsoum60tKuIv82x9IyHz4;a,bell,ra,soB9;de,rH;a,eC;h8Fild1t4;a,cYgUiKjor4l7Sn4s6tJwa,yH;!aHbe6Wja8lAE;m,nBH;a,ha,in1;!aJbCBeIja,lEna,sHt64;!a,ol,sa;!l1H;! Jh,mInH;!a,e,n1;!awit,i;aliAHcJeduarBfernIjHlui5Y;o6Ful2;anB;ecil2la3;arJeIie,oHr44ueriA;!t;!ry;et42i37;el4Ui76y;dHon,ue5;akran7y;ak,en,iHk,lo3O;a,ka,nB;a,re,s4te;daHg4;!l3A;alEd4elHge,isDBon0;ei8in1yn;el,le;a0Ne0CiYoQuLyH;d2la,nH;!a,dIeBGnHsCL;!a,eBF;a,sCJ;aCWcJel0PiFlIna,pHz;e,i7;a,u,wa;iHy;a0Se,ja,l2JnB;is,l1SrJttIuHvel4;el5is1;e,ie;aKeIi9na,rH;a86i9;lHn1t7;ei;!in1;aSbb9CdRepa,lMnJsIv2zH;!a,be5LetAz4;a,etA;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lHy;iHy;aA0e;!aH;!n5F;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx4y5;iHt4;c2t2;e2LlCG;la,nHra;a,ie,o3;a,or1;a,gh,laH;!ni;!h,nH;a,d3e,n5P;cOdon97iNkes6mi9Ana,rMtJurIvHxmi,y5;ern1in2;a,e54ie,yn;as6iIoH;nya,ya;fa,s6;a,isF;a,la;ey,ie,y;a04eZhXiOlAKoNrJyH;lHra;a,ee,ie;istHy6D;a,en,iIyH;!na;!e,n59;nul,ri,urtnB0;aOerNlAZmJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stC;!na,ra;aHei3ongordzol;dij1w5;el7QiKjsi,lJnIrH;a,i,ri;d3na,za;ey,i,lBDs4y;ra,s6;bi7cAJdiat7IeB2iRlQmPnyakuma19rNss6KtKvi7yH;!e,lH;a,eH;e,i8L;a6DeIhHi4NlEri0y;ar6Ber6Bie,leCrB2y;!lyn8Gri0;a,en,iHl5Soli0yn;!ma,n3VsF;a5il1;ei8Ei,l4;a,tl6L;a07eYiVoNuH;anLdKliHst63;a8HeHsF;!n8tH;!a,te;e5Ji3Jy;a,i7;!anNcelEd6RelGhan7RlLni,sIva0yH;a,ce;eHie;fHlEph5U;a,in1;eHie;en,n1;!a,e,n41;lHng;!i1ClH;!i1B;anMle0nJrIsH;i8Csi8C;i,ri;!a,elGif2CnH;a,etAiHy;!e,f2A;a,e8EiInH;a,e8DiH;e,n1;cMd1mi,nIque4Xsmin3Ovie3y8zH;min9;a9eIiH;ce,e,n1s;!lHsFt0F;e,le;inIk4lEquelH;in1yn;da,ta;lRmPnOo0rNsIvaHzaro;!a0lu,na;aJiIlaHob84;!n9N;do3;!belHdo3;!a,e,l39;a77en1i0ma;a,di3es,gr6Yji;a8elBogH;en1;a,e8iHo0se;a0na;aSeOiJoHusFyacin2B;da,ll4rten23snH;a,i9Q;lImaH;ri;aIdHlaI;a,egard;ry;ath1CiJlInriet7rmi8sH;sa,t1B;en2Sga,mi;di;bi2Dil8IlNnMrJsItHwa,yl8Iz7H;i5St4;n5Yti;iHmo51ri52;etH;!te;aDnaD;a,ey,l4;a03eXiSlQoOrKunJwH;enHyne1Q;!dolE;ay,el;acIetHiselB;a,chC;e,ieH;!la;ld1AogooH;sh;adys,enHor2yn2H;a,da,na;aKgi,lIna,ov89selHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald3Pi,m3Ctru8B;etAi4W;a,eHna;s26vieve;ma;bIil,le,mHrnet,yG;al5Ni5;i5FrielH;a,l1;aVeSiRloOoz2rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0O;n1s61;!ca;!rH;a,encH;e,ia;en,o0;lIn0rnH;!anB;ec2ic2;jr,n7rKtHy9;emIiHma,ouma7;ha,ma,n;eh;ah,iBrah,za0;cr4Nd0Ne0Mi0Lk7l04mWn4YrTsNtMuLvH;aJelIiH;!e,ta;in0Gyn;!ngel2S;geni1la,ni45;h5Sta;mLperanKtH;eIhHrel5;er;l30r9;za;a,eralB;iHma,nest2Jyn;cHka,n;a,ka;a,eMiJmH;aHie,y;!li8;lHn1;ee,iHy;a,e,ja;lHrald;da,y;aWeUiNlMma,no3oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c2da,f,nMsJzaH;!betHve7;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a;!in1na;leCs6;vi;eIiHna,wi0;e,th;l,n;aYeMh2iLjeneKoHul30;lor5Tminiq4In3FrHtt4;a,eCis,la,othHthy;ea,y;ba;an0AnaDon8x4ya;anQbPde,eOiMja,lJmetr2nHsir5K;a,iH;ce,se;a,iIla,orHphi8;es,is;a,l6D;dHrdH;re;!d5Cna;!b2HoraDra;a,d3nH;!a,e;hl2i0l0HmNnLphn1rIvi1XyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,etAiH;!ca,el1Cka,z;arHia;is;a0Se0Oh05i03lVoKrIynH;di,th2;istHy05;al,i0;lPnMrIurH;tn1E;aJd2NiHn2Nri8;!nH;a,e,n1;!l1X;cepci59n4sH;tanHuelo;ce,za;eHleC;en,tA;aJeoIotH;il51;!pat3;ir9rJudH;etAiH;a,ne;a,e,iH;ce,sZ;a3er3ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Ren,iHy;!an1e,n1;deJlseIrH;!i9yl;a,y;li8;nMrH;isKlImH;ai8;a,eHotA;n1tA;!sa;d3elGtH;al,elG;cIlH;esAi44;el2ilH;e,ia,y;itlZlYmilXndWrOsMtHy5;aKeJhHri0;erHleCrEy;in1;ri0;li0ri0;a33sH;a32ie;a,iNlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eHie,o7y;ne,y;na,sF;a0Hi0H;a,e,l1;is7l4;in,yn;a0Ie02iZlXoUrH;andSeQiJoIyH;an0nn;nwEok9;an3DdgLg0XtH;n2XtH;!aInH;ey,i,y;ny;etH;!t9;an0e,nH;da,na;i9y;bbi9glarIlo05nH;i7n4;ka;ancHossom,ythe;a,he;an17lja0nHsm3I;i7tH;ou;aUcky,linTni7rPssOtJulaDvH;!erlH;ey,y;hJsy,tH;e,iHy9;e,na;!anH;ie,y;!ie;nHt6yl;adIiH;ce;etAi8;ay,da;!triH;ce,z;rbJyaH;rmH;aa;a3ie,o3ra;a2Sb2Md23g1Zi1Qj5l16m0Xn09oi,r04sUtTuPvOwa,yIzH;ra,u0;aKes6gJlIseH;!l;in;un;!nH;a,na;a,i2Ir2J;drJgus1RrIsteH;ja;el2;a,ey,i,y;aahua,he0;hIi2Gja,mi7s2DtrH;id;aMlIraqHt21;at;eIi9yH;!n;e,iHy;gh;!nH;ti;iJleIo6pi7;ta;en,n1tA;aHelG;!n1J;a00dje5eYgUiSjQnJohito,toHya;inetAnH;el5ia;!aKeIiHmJ;e,ka;!mHtA;ar4;!belIliFmU;sa;!le;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tA;te;! JbImHstasiNya;ar2;el;cla3jul2pau5;aLberKeliJiHy;e,l2naH;!ta;a,ja;!ly;hGiIl2nB;da;a,ra;le;aWba,ePiMlKma,thJyH;a,c2sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c2is6jaKksaKna,sJxH;aHia;!nd3;ia,saH;nd3;ra;ia;i0nIyH;ah,na;a,is,naDoud;la;c6da,leCmNnLsH;haDlH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lEsH;on;yn;!lH;i8yn;ne;aKbIiHrL;!gaK;ey,i9y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya", - "Actor": "true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJecretary,oldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt", - "Honorific": "true¦a01bYcQdPeOfiJgIhon,jr,king,lHmCoffic00p7queen,r3s0taoiseach,vice6;e1fc,gt,ir,r,u0;ltRpt,rg;cond liInBrgeaJ;abbi,e0;ar1p9s,v0;!erend; admirX;astOhd,r0vt;esideDi1of0;!essM;me mini4nce0;!ss;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al", - "SportsTeam": "true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls", - "Uncountable": "true¦0:1I;1:16;2:1X;a1Rb1Jc1Ad17e10f0Ug0Nh0Ii0Ej0Dknowled1Ql08mYnews,oXpTrOsDt8vi7w3;a5ea0Bi4oo3;d,l;ldlife,ne;rmth,t0;neg17ol0Ctae;e6h5oothpaste,r3una;affTou3;ble,sers,t;ermod1Mund0;a,nnis;aBcene0Aeri1hAil9kittl1now,o8p6t4u3;g10nshi0Q;ati1Le3;am,el;ace1Ee3;ci1ed;ap,cc0;k,v0;eep,ingl1;d0Dfe18l3nd,tish;m11t;a6e4ic3;e,ke0M;c3laxa0Isearch;ogni0Hrea0H;bi1in;aPe5hys2last9o3ress04;l3rk,w0;it2yA;a12trZ;bstetr2il,xygen;aAe8ilk,o5u3;mps,s3;ic;n3o0I;ey,o3;gamy;a3chan2;sl1t;chine3il,themat2; learn0Bry;aught0e5i4ogi0Su3;ck,g0I;ce,ghtn08ngui0QteratN;a3isM;th0;ewelAusti0L;ce,mp3nformaUtself;a3ortan0J;ti3;en0H;a6isto5o3;ck3mework,n3spitali0B;ey;ry;ir,libut,ppiD;ene6o4r3um,ymna0D;aCound;l3ssip;d,f; 3t2;editQpo3;ol;i7lour,o4urnit3;ure;od,rgive3uri0wl;ne3;ss;c9sh;conom2duca8lectr7n5quip6th2very3;body,o3thH;ne;joy3tertain3;ment;iciPon2;tiI;ar4iabet1raugh4;es;ts;aAelcius,h6iv2l5o3urrency;al,ld w3nfusiDttD;ar;ass2oth5;aos,e3;e4w3;ing;se;r7sh;a7eef,i4lood,owls,read,utt0;er;lliar4s3;on;ds;g3ss;ga3;ge;c8dvi7ero5ir4mnes3rt,thlet2;ty;craft;b2d3naut2;ynam2;ce;id,ou3;st2;ics", - "Infinitive": "true¦0:6S;1:76;2:5C;3:74;4:73;5:67;6:6F;7:6Y;8:6Q;9:72;A:70;B:5X;C:6X;D:6L;E:77;F:5B;a6Kb66c57d4De3Xf3Jg3Dh37i2Uj2Sk2Ql2Hm26n23o1Yp1Jr0Rs06tYuTvOwHyG;awn,ield;aJe1Zhist6iIoGre6D;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raE;d0t;aJiHoG;te,w;eGsC;!w;l6Jry;nHpGr4se;gra4Pli41;dGi9lo5Zpub3Q;erGo;mi5Cw1I;aMeLhKig5SoJrHuGwi7;ne,rn;aGe0Mi5Uu7y;de,in,nsf0p,v5J;r2ZuD;ank,reatB;nd,st;lk,rg1Qs9;aZcWeVhTi4Dkip,lSmRnee3Lo52pQtJuGwitD;bmCck,ff0gge7ppHrGspe5;ge,pri1rou4Zvi3;ly,o36;aLeKoJrHuG;dy,mb6;aFeGi3;ngthBss,tD;p,re;m,p;in,ke,r0Qy;la58oil,rink6;e1Zi6o3J;am,ip;a2iv0oG;ck,rtBut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu8fYgXje5lUmTnt,pQquPsKtJvGwa5V;eGiew,o36;al,l,rG;se,t;aFi2u44;eJi7oItG;!o2rG;i5uc20;l3rt;mb6nt,r3;e7i2;air,eHlGo43r0K;a8y;at;aFemb0i3Zo3;aHeGi3y;a1nt;te,x;a5Dr0J;act1Yer,le5u1;a13ei3k5PoGyc6;gni2Cnci6rd;ch,li2Bs5N;i1nG;ge,k;aTerSiRlOoMrIuG;b21ll,mp,rGsh;cha1s4Q;ai1eIiEoG;cGdu8greAhibCmi1te7vi2W;eAlaim;di5pa2ss,veE;iEp,rtr46sGur;e,t;aHead,uG;g,n4;n,y;ck,le;fo34mCsi7;ck,iErt4Mss,u1;bJccur,ff0pera9utweIverGwe;co47lap,ta22u1wG;helm;igh;ser3taF;eHotG;e,i8;ed,gle5;aMeLiIoHuG;ltip3Grd0;nit13ve;nHrr12sreprG;eseE;d,g6us;asu2lt,n0Nr4;intaFna4rHtG;ch,t0;ch,kGry;et;aMeLiJoGu1C;aHck,oGve;k,sB;d,n;ft,g35ke,mCnk,st2YveG;!n;a2Fc0Et;b0Nck,uG;gh,nD;iGno34;ck,ll,ss;am,oFuG;d4mp;gno2mQnGss3H;cOdica9flu0MhNsKtIvG;eGol3;nt,st;erGrodu8;a5fe2;i7tG;aGru5;ll;abCibC;lu1Fr1D;agi24pG;lemeEo22ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppBrm,te;aKloAove1PrIuG;arGeAi15;ant39d;aGip,ow,umb6;b,sp;in,th0ze;aReaQiOlMoJrHuncG;ti3J;acGeshB;tu2;cus,lHrG;ce,eca7m,s30;d,l24;a1ZoG;at,od,w;gu2lGni1Xt,x;e,l;r,tu2;il,stBvG;or;a15cho,le5mSnPstNvalua9xG;a0AcLerKi7pGte19;a18eHi2laFoGreA;rt,se;ct,riG;en8;ci1t;el,han4;abGima9;li1J;ab6couXdHfor8ga4han8j03riDsu2t0vG;isi2Vy;!u2;body,er4pG;hasiGow0;ze;a07eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iZor8;aKcHliGmiApl1Btingui14;ke;oGuA;uGv0;ra4;gr1YppG;ear,ro3;cOeNfLliv0ma0Fny,pKsHterG;mi0G;cribe,er3iHtrG;oy;gn,re;a0Be0Ai5osC;eGi0By;at,ct;m,pB;iIlHrG;ea1;a2i06;de;ma4n8rGte;e,kB;a0Ae09h06i9l04oJrG;aHeGoAu0Hy;a9dC;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin8;rt,y;aFin0VrG;a7ibu9ol;iGtitu9;d0st;iHoGroE;rm;gu2rm;rn;biLfoKmaJpG;a2laF;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aSePloOoMrIuG;lGry;ly;igHuG;sh;htB;en;a7mb,o7rrGth0un8;ow;ck;ar,lHnefCtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waC;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia9uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun8sw0tG;icipa9;ce;lHt0;er;e4ow;ee;rd;aRdIju7mCoR;it;st;!reA;ss;cJhie3knowled4tiva9;te;ge;ve;eIouEu1;se;nt;pt;on", - "Unit": "true¦0:19;a14b12c0Od0Ne0Lf0Gg0Ch09in0Hjoule0k02l00mNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Nb,d0Dears old,o1;tt0H;att0b;able4b3d,e2on1sp;!ne0;a2r0D;!l,sp;spo04; ft,uare 1;c0Id0Hf3i0Fkilo0Jm1ya0E;e0Mil1;e0li0H;eet0o0D;t,uart0;ascals,e2i1ou0Pt;c0Mnt0;rcent,t02;hms,uYz;an0JewtT;/s,b,e9g,i3l,m2p1²,³;h,s;!²;!/h,cro5l1;e1li08;! pFs1²;! 1;anEpD;g06s0B;gQter1;! 2s1;! 1;per second;b,i00m,u1x;men0x0;b,elvin0g,ilo2m1nR;!/h,ph,²;byZgXmeter1;! p2s1;! p1;er1; hour;e1g,r0z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s", - "Organization": "true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c", - "Demonym": "true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an", - "Possessive": "true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne", - "Currency": "true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s", - "City": "true¦0:73;1:61;2:6G;3:5U;4:5R;a68b54c4Id4Ae46f3Yg3Jh38i2Zj2Uk2Dl22m1Kn19o16p0Uq0Sr0Ls01tPuOvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3J;greb,nzib5G;ang2e5okoha3Uunfu;katerin3Jrev0;a5n0O;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1K;hi5Zkl3C;l63xford;aw;a6ern2i5ladivost5Molgogr6K;en3lni6R;lenc6Dncouv2Yr3ughn;lan bat1Drumqi,trecht;aDbilisi,eCheBi9o8r7u5;l21n63r5;in,ku;ipoli,ondh62;kyo,m34ron1QulouS;an5jua3l2Zmisoa6Era3;j4Xshui; hag65ssaloni2L;gucigal28hr0l av1W;briz,i6llinn,mpe5Ang5rtu,shk2X;i2Msh0;an,chu1n0p2Iyu0;aEeDh8kopje,owe1It7u5ydney;ra5zh51;ba0Jt;aten is59ockholm,rasbou6Auttga31;an8e6i5;jiazhua1llo1m60y0;f54n5;ya1zh4L;gh3Ot4U;att4Ao1Yv49;cramen18int DlBn5o paulo,ppo3Wrajevo; 7aa,t5;a 5ia3Io domin3I;a3fe,m1O;antonCdie3Gfrancisco,j5ped3Ssalv8;o5u0;se;em,v5z2B;ad0I;lou59peters29;aAe9i7o5;me,sar5t5A;io;ga,o5yadh;! de janei3I;cife,ykjavik;b4Uip4lei2Mnc2Swalpindi;ingdao,u5;ez2i0Q;aEeDhCiBo8r7u6yong5;ya1;eb5Aya1;ag54etor53;rt5zn0; 5la4Fo;au prin0Nelizabe29sa05;ls3Srae5Ctts2B;iladelph4Ynom pe1Doenix;r26tah tik3I;ler00naji,r4Pt5;na,r36;ak47des0Lm1Rr6s5ttawa;a3Ylo;an,d07;a8ew6i5ovosibir1Oyc;ng2Hs; 5cast39;del27orlea46taip16york;g8iro4Xn5pl2Zshv36v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0Y;aFeCi9o6u5;mb2Cni28sc40;gadishu,nt6s5;c17ul;evideo,re31;ami,l6n18s5;kolc,sissauga;an,waukee;cca,d5lbour2Pmph41;an,ell5i3;in,ín;cau,drAkass2Tl9n8r5shh4A;aca6ib5rakesh,se2N;or;i1Ty;a4EchEdal12i47;mo;id;aCeiAi8o6u5vRy2;anLckn0Rdhia3;n5s angel28;d2g bea1O;brev2De3Kma5nz,sb2verpo2A;!ss29;c5pzig;est0C; p6g5ho2Yn0Gusan27;os;az,la35;aHharFiClaipeBo9rak0Hu7y5;iv,o5;to;ala lump4n5;mi1sh0;be,hi0Llka2Zpavog4si5wlo2;ce;da;ev,n5rkuk;gSsha5;sa;k5toum;iv;bIdu3llakuric0Tmpa3Gn6ohsiu1ra5un1Lwaguc0T;c0Sj;d5o,p4;ah1Vy;a7e6i5ohannesZ;l1Xn0;dd37rusalem;ip4k5;ar2J;bad0mph1QnBrkutYs8ta01z5̇zm7;m6tapala5;pa;ir;fah0l6tanb5;ul;am2Zi2I;che2d5;ianap2Lo21;aBe8o5yder2W; chi mi6ms,nolulu,u5;st2;nh;f6lsin5rakli2;ki;ei;ifa,lifax,m7n5rb1Dva3;gAnov5oi;er;bu2Wilt2;aFdanEenDhCiPlasgBo9raz,u5;a5jr21;dal6ng5yaquil;zh1H;aja2Lupe;ld coa18then5;bu2P;ow;ent;e0Toa;sk;lw7n5za;dhi5gt1C;nag0S;ay;aisal26es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Nl paso;in5mont2;bur5;gh;aAe8ha0Visp4o7resd0Ju5;b5esseldorf,rb0shanbe;ai,l0G;ha,nggu0rtmu11;hradRl5troit;hi;donghHe5k08li0masc1Xr es sala1HugavpiY;gu,je2;aKebu,hAo5raio03uriti1P;lo7n6penhag0Ar5;do1Nk;akLst0V;gVm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;n5ttogr12;digarh,g5;ch8sha,zh06;i9lga8mayenJn6pe town,r5;acCdiff;ber18c5;un;ry;ro;aUeMhJirmingh0ToIr9u5;chareRdapeRenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil0Mtisla7zzav5;il5;le;va;goZst2;op6ubaneshw5;ar;al;iBl9ng8r5;g6l5n;in;en;aluru,hazi;fa5grade,o horizonte;st;ji1rut;ghd0BkGnAot9r7s6yan n4;ur;el,r07;celo3ranquil09;na;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a04b01cc00ddis abaZgartaYhmedWizawl,lQmNnHqaZrEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a6chora5kaNtwerp;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 8buquerq7e5giers,maty;ppo,xandr5;ia;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg", - "Country": "true¦0:39;1:2M;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om3DpZqat1KrXsKtCu6v4wal3yemTz2;a25imbabwe;es,lis and futu2Y;a2enezue32ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2Y;k.,s.2; 28a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Ys and caic1U; and 2-2;toba1K;go,kel0Znga;iw2Wji2nz2S;ki2U;aCcotl1eBi8lov7o5pa2Cri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Rriname;lomon1Wmal0uth 2;afr2JkLsud2P;ak0en0;erra leoEn2;gapo1Xt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele25luc0mart20;epublic of ir0Dom2Duss0w2;an26;a3eHhilippinTitcairn1Lo2uerto riM;l1rtugE;ki2Cl3nama,pua new0Ura2;gu6;au,esti2;ne;aAe8i6or2;folk1Hth3w2;ay; k2ern mariana1C;or0N;caragua,ger2ue;!ia;p2ther19w zeal1;al;mib0u2;ru;a6exi5icro0Ao2yanm05;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagasc00l6r4urit3yot2;te;an0i15;shall0Wtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed01;a5e4i2uxembourg;b2echtenste11thu1F;er0ya;ban0Hsotho;os,tv0;azakh1Ee3iriba03o2uwait,yrgyz1E;rWsovo;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an", - "Region": "true¦0:2M;1:2S;2:2J;a2Pb2Cc1Yd1Tes1Sf1Qg1Kh1Gi1Bj17k12l0Zm0On07o05pZqWrTsKtFuCv9w5y3zacatec2T;akut0o0Du3;cat2k07;a4est 3isconsin,yomi1L;bengal,vi6;rwick2Ashington3;! dc;er4i3;rgin0;acruz,mont;dmurt0t3;ah,tar3; 2Ka0W;a5e4laxca1Qripu1Wu3;scaDva;langa1nnessee,x2E;bas0Um3smNtar24;aulip2Cil nadu;a8i6o4taf10u3ylh1E;ffYrr03s19;me1Bno1Puth 3;cVdU;ber0c3kkim,naloa;hu2ily;n4skatchew2xo3;ny; luis potosi,ta catari1;a3hode9;j3ngp06;asth2shahi;ingh24u3;e3intana roo;bec,en5reta0Q;ara7e5rince edward3unjab; i3;sl0A;i,nnsylv3rnambu0A;an0;!na;axa0Xdisha,h3klaho1Zntar3reg6ss0Ax0F;io;aIeDo5u3;evo le3nav0V;on;r3tt16va scot0;f8mandy,th3; 3ampton15;c5d4yo3;rk13;ako1M;aroli1;olk;bras1Lva0Bw3; 4foundland3;! and labrador;brunswick,hamp0Wjers3mexiRyork state;ey;galOyarit;a9eghala0Mi5o3;nta1r3;dov0elos;ch5dlanCn4ss3zor11;issippi,ouri;as geraOneso18;ig2oac2;dhy12harasht0Gine,ni4r3ssachusetts;anhao,i el,ylF;p3toba;ur;anca0Ie3incoln0IouisH;e3iR;ds;a5e4h3omi;aka06ul1;ntucky,ra01;bardino,lmyk0ns0Qr3;achay,el0nata0X;alis5har3iangxi;kh3;and;co;daho,llino6n3owa;d4gush3;et0;ia1;is;a5ert4i3un2;dalFm0D;fordZ;mpYrya1waii;ansu,eorg0lou7oa,u3;an4erre3izhou,jarat;ro;ajuato,gdo3;ng;cesterS;lori3uji2;da;sex;ageTe6o4uran3;go;rs3;et;lawaLrbyK;aEeaDh8o3rimea ,umbr0;ahui6l5nnectic4rsi3ventry;ca;ut;i02orado;la;e4hattisgarh,i3uvash0;apQhuahua;chn4rke3;ss0;ya;ra;lFm3;bridge6peche;a8ihar,r7u3;ck3ryat0;ingham3;shi3;re;emen,itish columb0;h0ja cal7lk6s3v6;hkorto3que;st2;an;ar0;iforn0;ia;dygea,guascalientes,lAndhr8r4ss3;am;izo1kans4un3;achal 6;as;na;a 3;pradesh;a5ber4t3;ai;ta;ba4s3;ka;ma", - "Place": "true¦a0Eb0Bc04d03e02f00gVhUiRjfk,kOlMmJneGoFpBque,rd,s9t6u5v4w1y0;akutOyz;ake isFis1y0;!o;!c;a,ostok,t;laanbaatar,p02safa,t;ahiti,e1he 0;bronx,hamptons;nn,x;a0fo,oho,t,under7yd;khalNsk;a2e1h0itcairn;l,x;k,nnN;!cif04;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dNnn;gadZlibu,nhattZ;a0gw,hr;s,x;an1osrae,rasnoyar0ul;sk;!s;a1cn,da,nd0st;ianRochina;!x;arlem,kg,nd,oHwy;a3re0;at 0enwich;brita0lakH;in;!y village;co,l0ra;!a;urope,vergladC;ak,en,fw,ist,own4xb;al5dg,gk,h2l1o0rA;lo,nn;!t;a1ina0uuk;town;morro,tham;!if;cn,e1kk,l0rooklyn;vd;l air,verly hills;frica,lta,m7n3r2sia,tl1ve,zor0;es;!ant2;ct1iz;adyr,tarct0;ic0; oce0;an;ericas,s", - "MaleName": "true¦0:E5;1:D6;2:DO;3:AY;4:D2;5:CG;6:B6;7:CW;8:C8;9:DK;A:DL;B:A6;C:C2;aCObBLcAJd9He8Nf85g7Ih6Ui6Ej5Ek52l4Dm35n2To2Np2Fqu2Dr1Ls11t0Eu0Dv07wTxSyIzD;aDor0;cDh9Tkaria,n5W;hEkD;!aCM;ar5WeCL;aLoFuD;sDu2KvBY;if,uf;nFsEusD;ouf,sD;ef;aDg;s,tD;an,h0;hli,nBMssX;avi3ho4;aMeKiFoDyaC2;jcie8Clfgang,odrow,utD;!er;lDnst1;bFey,frD1lD;aBDiD;am,e,s;e9Fur;i,nde6sD;!l8t1;de,lErrAyD;l1ne;lDt3;aAAy;aGiDladimir,ojte7Z;cEha0kt69nceDrgAJva0;!nt;e3Vt67;lentDnA5;in4Y;ghBVlyss5Cnax,sm0;aXeShOiMoHrFuEyD;!l3ro7s1;n9r5C;avAWeDist0oy,um0;ntAOv5Zy;bGdFmDny;!as,mDoharu;aCTie,y;!d;iBy;mDt5;!my,othy;adFeoEia8GomD;!as;!do8P;!de5;dGrD;en9LrD;an9KeDy;ll,n9J;!dy;dgh,ha,iDnn3req,tsu4T;cB5ka;aTcotRePhLiJoHpenc3tDur1Vylve9Kzym1;anFeDua8D;f0phBTvDwa8C;e62ie;!islaw,l8;lom1nBFuD;leyma7ta;dDlBm1yabonga;!dhart7Bn8;aFeD;lDrm0;d1t1;h7Une,qu10un,wn,y7;aDbasti0k2Al4Rrg4Oth,ymoAU;m5n;!tD;!ie,y;lEmDnti2Eq5Bul;!ke5MmCu4;ik,vato7X;aYeUheAAiQoHuEyD;an,ou;b7NdEf5pe7SssD;!elBZ;ol3Fy;an,bKcJdIel,geHh0landBQmGnFry,sEyD;!ce;coe,s;!aAHnC;an,eo;l47r;e5Og3n8olfo,ri7A;co,ky;bCeB7;cDl8;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ubAx,yDza;an1InY;gA8iD;naA4s;ch70fa4lHmGndFpha4sEul,wi2HyD;an,mo82;h7Vm5;alBDol2Uy;iATon;f,ph;ent2inD;cy,t1;aIeGhilFier72ol,rD;aka16eD;m,st1;!ip,lip;dALrcy,tD;ar,e3Gr1X;b4Kdra7Ft4ZulD;!o17;ctav3Fi3liv3mAFndrej,rHsEtDum9wA;is,to;aEc9k9m0vD;al5Z;ma;i,l53vL;aLeJiFoDu3A;aDel,j5l0ma0r3K;h,m;cEg4i49kD;!au,h7Uola;holBkDolB;!olB;al,d,il,ls1vD;il8Y;hom,thD;anDy;!a4i4;aZeWiMoHuEyD;l2Jr1;hamEr6XstaD;fa,p5C;ed,mH;di0We,hamFis2FntEsDussa;es,he;e,y;ad,ed,mD;ad,ed;cIgu4hai,kGlFnEtchD;!e6;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk8;aEeD;al,l;el,l;hElv2rD;le,ri6v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe6;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha6tDv2;iDy;!m,n;in,on;!el,oPus;!el9IoOus;iGu4;achDcolm,ik;ai,y;amEdi,eDmoud;sh;adDm5T;ou;aXeQiOlo3EoKuEyD;le,nd1;cGiFkDth3uk;aDe;!s;gi,s,z;as,iaD;no;g0nn7SrenFuDv8Jwe6;!iD;e,s;!zo;am,oD;n4r;a8Cevi,la5JnIoGst3thaFvD;eDi;nte;bo;!nD;!a6Sel;!ny;mFnErDur5Hwr5H;ry,s;ce,d1;ar,o5A;aLeGhaled,iDrist5Iu4Vy6X;er0p,rD;by,k,ollD;os;en0iGnDrmit,v44;!dEnDt5Z;e1Ay;a6ri59;r,th;cp3j5m66na73rEsp9them,uD;ri;im,l;a02eUiSoGuD;an,lDst2;en,iD;an,en,o,us;aNeLhnKkubBnIrGsD;eEhDi8Bue;!ua;!ph;dDge;an,i,on;!aDny;h,s,th5I;!ath5Hie,nC;!l,sDy;ph;o,qu2;an,mD;!mC;d,ffIrFsD;sDus;!e;a6BemEmai7oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKdAkImHrFsEvi3yD;!dAs1;on,p3;ed,od,rDv56;e5Nod;al,es4Xis1;a,e,oDub;b,v;k,ob,quD;es;aWbQchiPgNkeMlija,nuLonut,rJsFtDv0;ai,suD;ki;aEha0i7DmaDsac;el,il;ac,iaD;h,s;a,vinDw2;!g;k,nngu5S;!r;nacDor;io;ka;ai,rahD;im;aPeJoIuDyd9;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4JdA;an,s0;lGo50rFuDv8;hi4Gki,tD;a,o;is1y;an,ey;k,s;!im;ib;aVeRiPlenOoLrHuD;ilEsD;!tavo;herme,lerD;mo;aFegDov3;!g,orD;io,y;dy,h5Wnt;nzaErD;an,d1;lo;!n;lbe5Ano,oD;rg3Hvan5A;ne,oFrD;aDry;ld,rd5H;ffr8rge;brElArDv2;la28r3Sth,y;e3EielD;!i5;aTePiNlLorr0NrD;anFedDitz;!dCeDri2B;ri2A;cFkD;!ie,lD;in,yn;esLisD;!co,z36;etch3oD;yd;d4lDnn,onn;ip;deriFliEng,rnD;an06;pe,x;co;bi0di,hd;ar04dZfrYit0lSmKnHo2rFsteb0th0uge7vDymAzra;an,eD;ns,re36;gi,i0DnDrol,v2w2;est4Pie;oEriqDzo;ue;ch;aJerIiEmD;aIe2Z;lErD;!h0;!iD;o,s;s1y;nu4;be0Cd1iGliFmEt1viDwood;n,s;er,o;ot1Ys;!as,j4NsD;ha;a2en;!dCg9mGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay7ight;a7dl8nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e6ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay7ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne6rDyl;eDin,yl;l3Bn;n,o,us;!e,i4ny;iDon;an,en,on;e,lB;as;a09e07hYiar0lNoIrGuEyrD;il,us;rtD;!is;aDistob0U;ig;dy,lGnErD;ey,neli5y;or,rD;ad;by,e,in,l2t1;aIeFiDyK;fDnt;fo0Ft1;meEt5velaD;nd;nt;rFuEyD;!t1;de;enD;ce;aIeGrisEuD;ck;!tD;i0oph3;st3;er;d,rDs;b4leD;s,y;cDdric,s9;il;lGmer1rD;ey,lEro6y;ll;!os,t1;eb,v2;a07eZiVlaUoRrEuDyr1;ddy,rtK;aLeGiFuEyD;an,ce,on;ce,no;an,ce;nEtD;!t;dEtD;!on;an,on;dEndD;en,on;!foDl8y;rd;bErDyd;is;!by;i7ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n8rDt;eDy;tt;ey;dDeE;ar,iD;le;ar17b0Vd0Rf0Pgust2hm0Mi0Jja0Il04m00nSputsiRrIsaHuFveEyDziz;a0kh0;ry;gust5st2;us;hi;aKchJiIjun,maHnFon,tDy0;hDu09;ur;av,oD;ld;an,nd0H;!el,ki;ie;ta;aq;as,dIgel0CtD;hoGoD;i7nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePdAeJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;dAm9;ar;en;ad,eD;d,t;in;onD;so;aEi,olfDri0vik;!o;mDn;!a;dHeGraEuD;!bakr,lfazl;hDm;am;!l;allIelFoulaye,ulD;!lDrF;ah,o;! rD;ahm0;an;ah;av,on", - "LastName": "true¦0:9F;1:9V;2:9H;3:9X;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:6E;B:77;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaB;aBhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsB;liA1s3;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukA;lk5roby5;dAllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisB;dor95lst31m2rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps3s0Y;hirAkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot2lliv4zuB;aEein0oD;i67j3Lyan8V;l6rm0;kol5lovy5re6Psa,to,uD;ng,sa;iDy5Z;rn5tD;!h;l5YmDngh,rbu;mo6Do6J;aFeDimizu;hu,vchD;en7Cuk;la,r17;gu8mDoh,pulve8Trra4R;jDyD;on5;evi6Filtz,miDneid0roed0ulz,warz;dEtD;!z;!t;ar42h6ito,lFnDr2saBto,v2;ch7d0AtDz;a4Pe,os;as,ihAm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins3;!on;bei0LcEes,vDzzo;as,e8;ci,hards3;ag4es,it0ut0y9;dFmEnDsmu7Zv5F;tan1;ir7os;ic,u;aSeLhJiGoErDut6;asad,if5Zochazk1W;lishc24pDrti62u55we66;e2Tov48;cEe09nD;as,to;as60hl0;aDillips;k,m,n5K;de3AetIna,rGtD;ersErovDtersC;!a,ic;en,on;eDic,ry,ss3;i8ra,tz,z;ers;h71k,rk0tEvD;ic,l3T;el,t2O;bJconnor,g2ClGnei5PrEzD;demir,turk;ella3MtDwe5N;ega,iz;iDof6GsC;vDyn1F;ei8;aPri1;aLeJguy1iFoDune44ym4;rodahl,vDwak;ak3Uik5otn56;eEkolDlsCx3;ic,ov6X;ls1miD;!n1;ils3mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov2;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dAti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkAqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k2nDo;d,gu;mbarDpe2Rvr2;di;!nDu,yana1R;coln,dD;bDholm;erg;bed5TfeGhtFitn0kaEn6rDw2G;oy;!j;in1on1;bvDvD;re;iDmmy,rsCu,voie;ne,t11;aTennedy,h4iSlQnez46oJrGuEvar4woD;k,n;cerDmar58znets5;a,o2G;aDem0i2Zyeziu;sni3PvD;ch3U;bay4Frh0Jsk0TvaFwalDzl5;czDsB;yk;cFlD;!cDen3Q;huk;!ev2ic,s;e6uiveD;rt;eff0l2mu8nnun1;hn,lloe,minsBrEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r2;e2JhFnErge2Ju2NvD;anA;es,ss3;anEnsD;en,on,t3;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks3obs1;brahimAglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz2fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers3;kkiEnD;on1;la,n1;dz2g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw3;o,staf2Utierr7zm4;ayDg2iffitUub0;li1G;lub3Rme0JnD;calv9zale0I;aj,i;l,mDordaL;en7;iev3B;gnJlGmaFnd2No,rDs2Nuthi0;cDza;ia;ge;eaElD;agh0i,o;no;e,on;ab0erMiIjeldsted,lor9oGrFuD;cDent9ji3F;hs;an1Wiedm4;ntaDrt6st0urni0;na;lipEsD;ch0;ovD;!ic;hatAnandeVrD;arDei8;a,i;ov2;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s3;er,is3wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov2;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e3uD;ca;hl,mcevsBnErw6t2EviD;d5es,s;ieDku1S;ls1;ki;a05e00hNiobMlarkLoFrD;ivDuz;elli;h1lGntFop0rDs26x;byn,reD;a,ia;i,rer0O;em4liD;ns;!e;anu;aLeIiu,oGriDuJwe;stD;eDiaD;ns1;i,ng,uFwDy;!dhury;!n,onEuD;ng;!g;kEnDtterjee,v7;!d,g;ma,raboD;rty;bGl09ng2rD;eghetEnD;a,y;ti;an,ota0M;cer9lder3mpbeIrFstDvadi08;iDro;llo;doEt0uDvalho;so;so,zo;ll;es;a09eXhUiSlNoGrFyD;rne,tyD;qi;ank5iem,ooks,yant;gdan5nFruya,su,uchEyHziD;c,n5;ard;darDik;enD;ko;ov;aEondD;al;nEzD;ev2;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss3;asD;hi;er,ham;b2ch,ez,hMiley,kk0nHrDu0;bEnDua;es,i0;ieDosa;ri;dDik;a8yopadhyD;ay;ra;er;k,ng;ic;cosZdYguilXkhtXlSnJrGsl4yD;aEd6;in;la;aEsl4;an;ujo,ya;dFgelD;ovD;!a;ersGov,reD;aDjL;ss1;en;en,on,s3;on;eksejGiyGmeiFvD;ar7es;ez;da;ev;ar;ams;ta", - "WeekDay": "true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s", - "Month": "true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il", - "Date": "true¦ago,t2week0yesterd4; e0e0;nd;mr2o0;d0morrow;ay;!w", - "FirstName": "true¦aKblair,cGdevFgabrieEhinaDjBk8l7m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g6ne;a1el0ina,org5;!okuh9;naia,r0;ion,lo;ashawn,uca;asCe1ir0rE;an;lsAnyat2rry;am0ess6ie,ude;ie,m5;ta;le;an,on;as2h0;arl0eyenne;ie;ey,sidy;lex2ndr1ubr0;ey;a,ea;is", - "Person": "true¦ashton kutchTbScNdLeJgastOhHinez,jFkEleDmCnettKoBp9r4s3t2v0;a0irgin maH;lentino rossi,n go3;aylor,heresa may,iger woods,yra banks;addam hussain,carlett johanssKlobodan milosevic,uC;ay romano,e3o1ush limbau0;gh;d stewart,nald0;inho,o;ese witherspoFilly;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0;on;dinal wols1son0;! palm2;ey;arack obama,rock;er", - "Verb": "true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en", - "PhrasalVerb": "true¦0:7E;1:72;2:7Q;3:7G;4:6V;5:7T;6:7I;7:6O;8:71;9:6P;A:5T;B:7C;C:7J;D:6Q;E:7L;F:7D;G:7S;H:46;a7Yb6Jc5Sd5Oe5Mf4Lg43h3Miron0j3Ik3Dl2Xm2Ln2Jo2Hp1ZquietDr1Ms0FtVuTvacuum 1wLyammerBzI;eroAip JonI;e0k0;by,up;aOeLhKiJorIrit5H;d 1k35;mp0n2Xpe0r7s7;eel Fip G;aJiIn2L;gh 0Crd0;n Fr 3S;it 60k7lk6rm 6Bsh 7Lt6Ov53;rgeBsI;e 9herA;aXeVhTiPoNrKuIype 68;ckArn I;d2in,o3Vup;aJiIot0y 2L;ckleDp G;ckDde 02;neDp Is4Q;d2o71up;ck KdJe Igh69me0p o0Kre0;aw3ba4d2in,up;e 60y 1;by,oC;ink Irow 6B;ba4ov8up;aIe 4Vll52;m 1r 01;ckBke Jlk I;ov8u53;aIba4d2in,o3Fup;ba4ft8p58w3;a0Nc0Me0Gh0Ci09l05m04n03o02pXquare WtOuMwI;earKiI;ngJtch I;aw3ba4o75; by;ck Iit 1m 1ss0;in,up;aNe10iMoKrIucH;aigh1ZiI;ke 6En3C;p Irm22;by,in,oC;nHr 1tc3V;cHmp0nd Ir6Xve6y 1;ba4d2up;d2oCup;arHeLiKlJrIurB;ingBuc7;a3Hit 47;l16n 1;e5Qll0;be4Prt0;ap 4Row F;ash 5Doke0;eep JiIow 9;c3Yp 1;in,oI;ff,v8;gn 4WngJt Iz7;d2o5up; al52le0;aKoIu4S;ot Iut0w 6B;aw3ba4f3IoC;cHdeAk56ve6;e Mll0nd LtI; Itl4G;d2in,o5upI;!on;aw3ba4d2in,o2Aup;o5to;al4Zout0rap4Z;il6v7;aTeQiPoLuI;b 4Sle0n Istl7;aIba4d2in5Ho3Tt3Bu3R;c29w3;ll Kot JuI;g2Vnd6;a29f32o5;arEin,o5;ng 51p6;aIel6inAnt0;c5Bd I;o33u0L;cHt0;aVeUiTlRoPrMsyc2JuI;ll Kt I;aIba4d2in,o1Rt3Fup;p3Kw3;ap3Jd2in,o5t3Dup;attleBess JiLoI;p 1;ah1Ron;iIp 5Fr3XurDwer 5F;nt0;ay4BuI;gAmp 9;ck Gg0leBn 9p48;el 4JncilA;c41ir 2Rn0ss KtJy I;ba4oC; d2c27;aw3ba4o1C;pIw3W;e3Vt F;arrowDerd0oI;d6teD;aQeNiMoKuI;ddl7lI;l 3I;cHp 1uth6ve I;al3Md2in,o5up;ss0x 1;asur7lJss I;a1Jup;t 9;ke Jn 9rIs1Sx0;k 9ry6;do,o47up;aVeTiOoIuck0;aMc3Gg LoIse0;k Ise3E;aft8ba4d2forw2Jin45ov8uI;nd8p;in,o0Q;d 9;e LghtKnJsIv1Y;ten G;e 1k 1; 1e36;arEd2;av1Mt 36velI; o3T;c7p 1sh ItchBugh6y20;in3To5;eJick6nock I;d2o3P;eIyA;l 2Pp I;aw3ba4d2fXin,o0Bto,up;aKoJuI;ic7mpA;ke30tD;c39zz 1;aUePiMoJuI;nkerDrry 1s0Z;lIneArse2W;d Ie 1;ba4d2fast,o05up;de Jt I;ba4on,up;aw3o5;aIlp0;d Kl 2Ar It 1;fIof;rom;in,oXu1H;cHm 1nJve Iz25;it,to;d Ig 2EkerK;d2in,o5;aWeQive Oloss 22oKrJunI; f0Q;in3Gow 2A; Iof 0Y;aJb1Dit,oIrEt0Su18;ff,n,v8;bo5ft8hOw3;aw3ba4d2in,oIup,w3;ff,n,ut;a1Dek0t I;aJb17d2oIrEup;ff,n,ut,v8;cJhIl1WrEt,w3;ead;ross;d aJnI;g 1;bo5;a0Ce05iWlSoOrKuI;cHel 1;k 1;eJighten IownBy 1;aw3oC;eIshe1N; 1z7;lKol I;aIwi1G;bo5rE;d 9low 1;aJeIip0;sh0;g 9ke0mIrI;e G;gPlNnLrJsIzzle0;h G;e Im 1;aw3ba4up;d0isI;h 1;e Il 19;aw3fN;ht ba4ure0;eNnJsI;s 1;cKd I;fIoC;or;e F;dWl 1;cMll Irm0t0W;ap05bKd2in,oJtI;hrough;ff,ut,v8;a4ehi20;e J;at0dge0nd Iy7;oCup;oKrI;ess 9op I;aw3bUin,o1D; 0Eubl7;aYhVlean 9oIross Fut 10;me LoJuntI; o1T;k 1l I;d2oC;aObNforLin,oKtJuI;nd8;ogeth8;ut,v8;th,wI;ard;a4y;pIrEw3;art;eIipA;ck FeI;r 1;lOncel0rLsKtch JveA; in;o1Cup;h Ft6;ry JvI;e 01;aw3o18;l ImD;aIba4d2o16up;rEw3;a0Ne0El07oYrNuI;bblKcklZil05lk 9ndlZrn 0Bst JtIy Gzz6;t F;in,o5up;e I;ov8;anReaPiIush6;ghMng I;aJba4d2forIin,o5up;th;bo5lIrEw3;ong;teI;n 1;k I;d2in,o5up;ch0;arPgDil 9n7oLssKttlJunce Ix F;aw3ba4;e 9; arE;k Ft 1;e 1;d2up; d2;d 1;aNeed0oIurt0;cKw I;aw3ba4d2o5up;ck;k I;in,oP;ck0nk0st6; oOaLef 1nd I;d2ov8up;er;up;r0t I;d2in,oIup;ff,ut;ff,nI;to;ck Oil0nKrgJsI;h F;ainBe F;g FkB; on;in,o5; o5;aw3d2o5up;ay;cRdNsk Kuction6; oC;ff;arEo5;ouI;nd;d I;d2oIup;ff,n;own;t G;o5up;ut", - "Modal": "true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld", - "Adjective": "true¦0:7P;1:84;2:83;3:8A;4:7W;5:5S;6:4N;7:4O;8:58;9:6I;A:81;a6Wb6Gc63d5Je54f4Hg49h3Wi39j37k36l2Vm2Ln2Bo1Wp1Dquack,r12s0Ft07uMvJwByear5;arp0eFholeEiDoB;man5oBu6P;d6Rzy;despr7Ls5S;!sa7;eClBste2A;co1Nl o4W;!k5;aCiBola4M;b89ce versa,ol5H;ca3gabo6Gnilla;ltUnHpCrb5Msu4tterB;!mo7G; Eb1SpDsBti1M;ca7etBide dKtairs;!ti2;er,i3U;f36to da1;aLbeco75convin29deIeHfair,ivers4knGprecedVrEsCwB;iel3Nritt6A;i1XuB;pervis0spec3Y;eBu5;cognHgul6Tl6T;own;ndi2v64xpect0;cid0rB;!grou5ZsB;iz0tood;b7pp0Dssu6UuthorB;iz0;i26ra;aGeEhDi6AoCrB;i1oubl0us3M;geth8p,rp6Vuc67;ough4Wril33;en60l32mpBrr2X;o6Ati2;boo,lBn;ent0;aWcVeThSiQmug,nobbi3LoOpNqueami3LtFuBymb6H;bDi gener5DpBrpri6D;erBre0N;! dup8b,i2C;du0seq52;anda77eGiFrBunni2y3F;aightCiB;ki2p0; fBfB;or5K;ll,r5S;aBreotyp0;dfa6Cmi2;a55ec2Gir1Hlend6Cot on; call0le,mb8phist1XrBu0Vvi48;d6Ary;gnifica3nB;ce51g7;am2Re8ocki2ut;cBda1em5lfi32ni1Wpa6Jre6;o1Er42;at5Gient28reec5G;cr0me;aJeEiCoB;bu60tt51uQy4;ghtBv4;!-2Bf9;ar,bel,condi1du6Dfres5AlEpublic42sCtard0vB;ea26;is4CoB;lu1na3;aQe1Cuc4A;b5TciBllyi2;al,st;aOeLicayu6lac5Ropuli5QrCuB;bl5Jmp0n51;eGiDoB;!b07fu5RmiBp8;ne3si2;mCor,sBva1;ti6;a53e;ci5MmB;a0EiB;er,um;ac20rBti1;feAma2XpleBv38;xi2;rBst;allelDtB;-tiBi4;me;!ed;bLffJkIld fashion0nHpGrg1Eth8utFvB;al,erB;!all,niCt,wB;eiBrouB;ght;do0Ter,g2Qsi4B;en,posi1; boa5Og2Oli6;!ay; gua5MbBli6;eat;eDsB;cBer0Eole1;e6u3O;d2Xse;aJeIiHoBua4X;nFrCtB;ab7;thB;!eB;rn;chala3descri58stop;ght5;arby,cessa44ighbor5xt;k0usia1A;aIeGiDoBultip7;bi7derBl0Vnth5ot,st;a1n;nBx0;dblo0RiaBor;tu37;ande3Qdi4NnaBre;ci2;cBgenta,in,j01keshift,le,mmoth,ny,sculi6;ab33ho;aKeFiCoBu15;uti14vi2;mCteraB;l,te;it0;ftEgBth4;al,eCitiB;ma1;nda3K;!-0C;ngu3Zst,tt8;ap1Xind5no0A;agg0uB;niMstifi0veni7;de4gno4Klleg4mQnEpso 20rB;a1rB;eleBita0J;va3; KaJbr0corIdGfluenQiQnFsEtCviB;go0Fti2;aAen3SoxB;ic3B;a6i2Vul0D;a1er,oce3;iCoB;or;reA;deq3Qppr33;fBsitu,vitro;ro3;mFpB;arDerfeAoBrop8;li1rtB;a3ed;ti4;eBi0S;d2Vn3C;aIeFiDoBumdr3I;ne36ok0rrBs08ur5;if2Z;ghfalut1QspB;an2X;aClB;liYpf9;li2;lEnDrB;d04roB;wi2;dy;f,low0;ainf9ener2Oiga24lHoGraDuB;ilBng ho;ty;cCtB;ef9is;ef9;ne,od;ea2Iob4;aTeNinMlKoFrB;a1VeDoz1MustB;raB;ti2;e2Gq10tf9;oDrB; keeps,eBm8tuna1;g03ign;liB;sh;aBue3;g31tte1P;al,i1;dFmCrB;ti7;a7ini6;ne;le; up;bl0i3l27r Cux,voB;ri1uri1;oBreac1E;ff;aLfficie3lKmHnFreAthere4veExB;aAcess,pe1QtraCuB;be2Nl0E;!va1E;n,ryday; BcouraEti0O;rou1sui1;erCiB;ne3;gi2;abo23dMe17i1;g8sB;t,ygB;oi2;er;aReJiDoBrea14ue;mina3ne,ubB;le,tf9;dact1Bfficu1OsCvB;er1K;creDeas0gruntl0hone1FordCtB;a3ressM;er5;et; HadpGfFgene1PliDrang0spe1PtCvoB;ut;ail0ermin0;be1Mca1ghB;tf9;ia3;an;facto;i5magBngeroUs0G;ed,i2;ly;ertaMhief,ivil,oDrB;aBowd0u0G;mp0vZz0;loImGnCrrBve0P;eAu1I;cre1fu0LgrDsCtB;empo0Dra0E;ta3;ue3;mer08pleB;te,x;ni4ss4;in;aNeIizarHlFoCrB;and new,isk,okN;gCna fiUttom,urgeoB;is;us;ank,indB;!i2;re;autif9hiDloCnBst,yoD;eUt;v0w;nd;ul;ckCnkru0WrrB;en;!wards; priori,b0Mc0Jd09fra08g04h03lYmWntiquVppSrMsIttracti06utheHvEwB;aCkB;wa0T;ke,re;ant garCerB;age;de;ntU;leep,piDsuDtonB;isB;hi2;ri2;ab,bitEroDtiB;fiB;ci4;ga3;raB;ry;are3etiNrB;oprB;ia1;at0;aJuB;si2;arEcohCeBiIl,oof;rt;olB;ic;mi2;ead;ainDgressiConiB;zi2;ve;st;id; IeGuFvB;aCerB;se;nc0;ed;lt;pt,qB;ua1;hoc,infinitB;um;cuCtu4u1;al;ra1;erLlKoIruHsCuB;nda3;e3oCtraA;ct;lu1rbi2;ng;te;pt;aBve;rd;aze,e;ra3;nt", - "Comparable": "true¦0:41;1:4I;2:45;3:2Y;4:4B;5:3X;a4Ob44c3Od3De35f2Rg2Fh24i1Vj1Uk1Rl1Jm1Dn17o15p0Vqu0Tr0KsTtMuIvFw7y6za13;ell27ou4;aBe9hi1Yi7r6;o4y;ck0Ode,l6n1ry,se;d,y;a6i4Mt;k,ry;n1Tr6sK;m,y;a7e6ulgar;nge5rda2xi4;g9in,st;g0n6pco3Mse5;like0t6;i1r6;ue;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te5;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft3;aAe9iff,r7u6;pXr1;a6ict,o4;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi4;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp3;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p3;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in5le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b3isy,rm15sy;ce,mb3;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt3ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti4;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b3id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te5;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t3uiY;u1y;aIeeb3iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get5mG;my;erce8n6rm;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi4;gey,lm8r6;e5i4;ful;!i4;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i4;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd", - "TextOrdinal": "true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th", - "Cardinal": "true¦bHeEf8hundred,mHnineAone,qu6s4t0zero;en,h2rGw0;e0o;lve,n8;irt9ousandEree;e0ix5;pt1ven4xt1;adr0int0;illion;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion0;!s", - "Expression": "true¦a02b01dXeVfuck,gShLlImHnGoDpBshAtsk,u7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la", - "Adverb": "true¦a08by 06d02eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,well,ye0;p,s; to,wards5;h1iny bit,o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hYtimes,w09;a1e0;alT;ndomSthN;ar excellDer0oint blank; Nhaps;f3n0;ce0ly;! 0;ag02moW; courIten;ewKo0; longEt 0;onIwithstanding;aybe,eanwhiAore0;!ovB;! aboU;deed,steV;en0;ce;or2u0;lArther0;!moJ; 0ev3;examp0good,suH;le;n1v0;er; mas0ough;se;e0irect1; 1finite0;ly;ju8trop;far,n0;ow; DbroCd nauseam,gBl6ny3part,s2t 0w4;be6l0mo6wor6;arge,ea5; soon,ide;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori", - "Determiner": "true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er" - }; - - var seq = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", - cache$1 = seq.split("").reduce(function (n, o, e) { - return n[o] = e, n; - }, {}), - toAlphaCode = function toAlphaCode(n) { - if (void 0 !== seq[n]) return seq[n]; - var o = 1, - e = 36, - t = ""; - - for (; n >= e; n -= e, o++, e *= 36) {} - - for (; o--;) { - var _o = n % 36; - - t = String.fromCharCode((_o < 10 ? 48 : 55) + _o) + t, n = (n - _o) / 36; - } - - return t; - }, - fromAlphaCode = function fromAlphaCode(n) { - if (void 0 !== cache$1[n]) return cache$1[n]; - var o = 0, - e = 1, - t = 36, - r = 1; - - for (; e < n.length; o += t, e++, t *= 36) {} - - for (var _e = n.length - 1; _e >= 0; _e--, r *= 36) { - var _t = n.charCodeAt(_e) - 48; - - _t > 10 && (_t -= 7), o += _t * r; - } - - return o; - }; - - var encoding = { - toAlphaCode: toAlphaCode, - fromAlphaCode: fromAlphaCode - }, - symbols = function symbols(n) { - var o = new RegExp("([0-9A-Z]+):([0-9A-Z]+)"); - - for (var e = 0; e < n.nodes.length; e++) { - var t = o.exec(n.nodes[e]); - - if (!t) { - n.symCount = e; - break; - } - - n.syms[encoding.fromAlphaCode(t[1])] = encoding.fromAlphaCode(t[2]); - } - - n.nodes = n.nodes.slice(n.symCount, n.nodes.length); - }; - - var indexFromRef = function indexFromRef(n, o, e) { - var t = encoding.fromAlphaCode(o); - return t < n.symCount ? n.syms[t] : e + t + 1 - n.symCount; - }, - toArray = function toArray(n) { - var o = [], - e = function e(t, r) { - var s = n.nodes[t]; - "!" === s[0] && (o.push(r), s = s.slice(1)); - var c = s.split(/([A-Z0-9,]+)/g); - - for (var _s = 0; _s < c.length; _s += 2) { - var u = c[_s], - i = c[_s + 1]; - if (!u) continue; - var l = r + u; - - if ("," === i || void 0 === i) { - o.push(l); - continue; - } - - var f = indexFromRef(n, i, t); - e(f, l); - } - }; - - return e(0, ""), o; - }, - unpack = function unpack(n) { - var o = { - nodes: n.split(";"), - syms: [], - symCount: 0 - }; - return n.match(":") && symbols(o), toArray(o); - }; - - var unpack_1$1 = unpack, - unpack_1$1$1 = function unpack_1$1$1(n) { - var o = n.split("|").reduce(function (n, o) { - var e = o.split("¦"); - return n[e[0]] = e[1], n; - }, {}), - e = {}; - return Object.keys(o).forEach(function (n) { - var t = unpack_1$1(o[n]); - "true" === n && (n = !0); - - for (var _o2 = 0; _o2 < t.length; _o2++) { - var r = t[_o2]; - !0 === e.hasOwnProperty(r) ? !1 === Array.isArray(e[r]) ? e[r] = [e[r], n] : e[r].push(n) : e[r] = n; - } - }), e; - }; - - var efrtUnpack_min = unpack_1$1$1; //words that can't be compressed, for whatever reason - - var misc = { - // numbers - '20th century fox': 'Organization', - // '3m': 'Organization', - '7 eleven': 'Organization', - 'motel 6': 'Organization', - g8: 'Organization', - vh1: 'Organization', - q1: 'Date', - q2: 'Date', - q3: 'Date', - q4: 'Date', - her: ['Possessive', 'Pronoun'], - his: ['Possessive', 'Pronoun'], - their: ['Possessive', 'Pronoun'], - themselves: ['Possessive', 'Pronoun'], - your: ['Possessive', 'Pronoun'], - our: ['Possessive', 'Pronoun'], - my: ['Possessive', 'Pronoun'], - its: ['Possessive', 'Pronoun'] - }; - var fancy = { - Unit: function Unit(lex, w) { - lex[w] = ['Abbreviation', 'Unit']; - }, - Cardinal: function Cardinal(lex, w) { - lex[w] = ['TextValue', 'Cardinal']; - }, - TextOrdinal: function TextOrdinal(lex, w) { - lex[w] = ['Ordinal', 'TextValue']; - lex[w + 's'] = ['TextValue', 'Fraction']; // add 'millionths' - }, - // add plural/singular forms - Singular: function Singular(lex, w, world) { - lex[w] = 'Singular'; - var plural = world.transforms.toPlural(w, world); - lex[plural] = lex[plural] || 'Plural'; - }, - // conjugate these verbs - Infinitive: function Infinitive(lex, w, world) { - lex[w] = 'Infinitive'; - var conj = world.transforms.conjugate(w, world); - var tags = Object.keys(conj); - - for (var i = 0; i < tags.length; i++) { - var str = conj[tags[i]]; - lex[str] = lex[str] || tags[i]; // only if it's safe - } - }, - // conjugate other Adjectival forms - Comparable: function Comparable(lex, w, world) { - lex[w] = 'Comparable'; - var conj = world.transforms.adjectives(w); - var tags = Object.keys(conj); - - for (var i = 0; i < tags.length; i++) { - var word = conj[tags[i]]; - lex[word] = lex[word] || tags[i]; // only if it's safe - } - }, - //conjugate phrasal-verbs - PhrasalVerb: function PhrasalVerb(lex, w, world) { - // whole thing - lex[w] = ['PhrasalVerb', 'Infinitive']; //add original form - - var words = w.split(' '); // lex[words[0]] = lex[words[0]] || 'Infinitive' - // //conjugate first word - - var conj = world.transforms.conjugate(words[0], world); - var tags = Object.keys(conj); - - for (var i = 0; i < tags.length; i++) { - var str = conj[tags[i]] + ' ' + words[1]; - lex[str] = lex[str] || ['PhrasalVerb', tags[i]]; - world.hasCompound[conj[tags[i]]] = true; - } - }, - // inflect our demonyms - 'germans' - Demonym: function Demonym(lex, w, world) { - lex[w] = 'Demonym'; - var plural = world.transforms.toPlural(w, world); - lex[plural] = lex[plural] || ['Demonym', 'Plural']; // only if it's safe - } - }; // let a user explode their lexicon, too - - var addWords = function addWords(wordsObj, lex, world) { - Object.keys(wordsObj).forEach(function (word) { - var tag = wordsObj[word]; // abbreviation-words are used in our tokenizer - - if (tag === 'Abbreviation' || tag === 'Unit') { - world.cache.abbreviations[word] = true; - } // cache multi-words - - - var multi = word.split(' '); - - if (multi.length > 1) { - world.hasCompound[multi[0]] = true; - } // do some ad-hoc work before adding it - - - if (fancy[tag] !== undefined) { - fancy[tag](lex, word, world); - return; - } //set it in our lexicon, basic - - - if (lex[word] === undefined) { - lex[word] = tag; - return; - } // if we already have that word - - - if (typeof lex[word] === 'string') { - lex[word] = [lex[word]]; - } - - if (typeof tag === 'string') { - lex[word].push(tag); - } else { - lex[word] = lex[word].concat(tag); - } - }); - }; // we do some ad-hoc stuff here, building-up our word-list - - - var buildOut = function buildOut(world) { - //our bag of words - var lexicon = Object.assign({}, misc); // start adding words to the lex - - Object.keys(_data).forEach(function (tag) { - var wordsObj = efrtUnpack_min(_data[tag]); // this part sucks - - Object.keys(wordsObj).forEach(function (w) { - wordsObj[w] = tag; - }); - addWords(wordsObj, lexicon, world); - }); // console.log(Object.keys(lexicon).length) - - return lexicon; - }; - - var unpack_1 = { - buildOut: buildOut, - addWords: addWords - }; // add words from plurals and conjugations data - - var addIrregulars = function addIrregulars(world) { - //add irregular plural nouns - var nouns = world.irregulars.nouns; - var words = Object.keys(nouns); - - for (var i = 0; i < words.length; i++) { - var w = words[i]; - world.words[w] = 'Singular'; - world.words[nouns[w]] = 'Plural'; - } // add irregular verb conjugations - - - var verbs = world.irregulars.verbs; - var keys = Object.keys(verbs); - - var _loop = function _loop(_i) { - var inf = keys[_i]; //add only if it it's safe... - - world.words[inf] = world.words[inf] || 'Infinitive'; - var forms = world.transforms.conjugate(inf, world); - forms = Object.assign(forms, verbs[inf]); //add the others - - Object.keys(forms).forEach(function (tag) { - world.words[forms[tag]] = world.words[forms[tag]] || tag; // lexicon should prefer other tags, over participle - - if (world.words[forms[tag]] === 'Participle') { - world.words[forms[tag]] = tag; - } - }); - }; - - for (var _i = 0; _i < keys.length; _i++) { - _loop(_i); - } - }; - - var addIrregulars_1 = addIrregulars; //nouns with irregular plural/singular forms - //used in noun.inflect, and also in the lexicon. - - var plurals = { - addendum: 'addenda', - alga: 'algae', - alumna: 'alumnae', - alumnus: 'alumni', - analysis: 'analyses', - antenna: 'antennae', - appendix: 'appendices', - avocado: 'avocados', - axis: 'axes', - bacillus: 'bacilli', - barracks: 'barracks', - beau: 'beaux', - bus: 'buses', - cactus: 'cacti', - chateau: 'chateaux', - child: 'children', - circus: 'circuses', - clothes: 'clothes', - corpus: 'corpora', - criterion: 'criteria', - curriculum: 'curricula', - database: 'databases', - deer: 'deer', - diagnosis: 'diagnoses', - echo: 'echoes', - embargo: 'embargoes', - epoch: 'epochs', - foot: 'feet', - formula: 'formulae', - fungus: 'fungi', - genus: 'genera', - goose: 'geese', - halo: 'halos', - hippopotamus: 'hippopotami', - index: 'indices', - larva: 'larvae', - leaf: 'leaves', - libretto: 'libretti', - loaf: 'loaves', - man: 'men', - matrix: 'matrices', - memorandum: 'memoranda', - modulus: 'moduli', - mosquito: 'mosquitoes', - mouse: 'mice', - // move: 'moves', - nebula: 'nebulae', - nucleus: 'nuclei', - octopus: 'octopi', - opus: 'opera', - ovum: 'ova', - ox: 'oxen', - parenthesis: 'parentheses', - person: 'people', - phenomenon: 'phenomena', - prognosis: 'prognoses', - quiz: 'quizzes', - radius: 'radii', - referendum: 'referenda', - rodeo: 'rodeos', - sex: 'sexes', - shoe: 'shoes', - sombrero: 'sombreros', - stimulus: 'stimuli', - stomach: 'stomachs', - syllabus: 'syllabi', - synopsis: 'synopses', - tableau: 'tableaux', - thesis: 'theses', - thief: 'thieves', - tooth: 'teeth', - tornado: 'tornados', - tuxedo: 'tuxedos', - vertebra: 'vertebrae' // virus: 'viri', - // zero: 'zeros', - - }; // a list of irregular verb conjugations - // used in verbs().conjugate() - // but also added to our lexicon - //use shorter key-names - - var mapping$1 = { - g: 'Gerund', - prt: 'Participle', - perf: 'PerfectTense', - pst: 'PastTense', - fut: 'FuturePerfect', - pres: 'PresentTense', - pluperf: 'Pluperfect', - a: 'Actor' - }; // '_' in conjugations is the infinitive form - // (order matters, to the lexicon) - - var conjugations = { - act: { - a: '_or' - }, - ache: { - pst: 'ached', - g: 'aching' - }, - age: { - g: 'ageing', - pst: 'aged', - pres: 'ages' - }, - aim: { - a: '_er', - g: '_ing', - pst: '_ed' - }, - arise: { - prt: '_n', - pst: 'arose' - }, - babysit: { - a: '_ter', - pst: 'babysat' - }, - ban: { - a: '', - g: '_ning', - pst: '_ned' - }, - be: { - a: '', - g: 'am', - prt: 'been', - pst: 'was', - pres: 'is' - }, - beat: { - a: '_er', - g: '_ing', - prt: '_en' - }, - become: { - prt: '_' - }, - begin: { - g: '_ning', - prt: 'begun', - pst: 'began' - }, - being: { - g: 'are', - pst: 'were', - pres: 'are' - }, - bend: { - prt: 'bent' - }, - bet: { - a: '_ter', - prt: '_' - }, - bind: { - pst: 'bound' - }, - bite: { - g: 'biting', - prt: 'bitten', - pst: 'bit' - }, - bleed: { - pst: 'bled', - prt: 'bled' - }, - blow: { - prt: '_n', - pst: 'blew' - }, - boil: { - a: '_er' - }, - brake: { - prt: 'broken' - }, - "break": { - pst: 'broke' - }, - breed: { - pst: 'bred' - }, - bring: { - pst: 'brought', - prt: 'brought' - }, - broadcast: { - pst: '_' - }, - budget: { - pst: '_ed' - }, - build: { - pst: 'built', - prt: 'built' - }, - burn: { - prt: '_ed' - }, - burst: { - prt: '_' - }, - buy: { - pst: 'bought', - prt: 'bought' - }, - can: { - a: '', - fut: '_', - g: '', - pst: 'could', - perf: 'could', - pluperf: 'could', - pres: '_' - }, - "catch": { - pst: 'caught' - }, - choose: { - g: 'choosing', - prt: 'chosen', - pst: 'chose' - }, - cling: { - prt: 'clung' - }, - come: { - prt: '_', - pst: 'came', - g: 'coming' - }, - compete: { - a: 'competitor', - g: 'competing', - pst: '_d' - }, - cost: { - pst: '_' - }, - creep: { - prt: 'crept' - }, - cut: { - prt: '_' - }, - deal: { - pst: '_t', - prt: '_t' - }, - develop: { - a: '_er', - g: '_ing', - pst: '_ed' - }, - die: { - g: 'dying', - pst: '_d' - }, - dig: { - g: '_ging', - pst: 'dug', - prt: 'dug' - }, - dive: { - prt: '_d' - }, - "do": { - pst: 'did', - pres: '_es' - }, - draw: { - prt: '_n', - pst: 'drew' - }, - dream: { - prt: '_t' - }, - drink: { - prt: 'drunk', - pst: 'drank' - }, - drive: { - g: 'driving', - prt: '_n', - pst: 'drove' - }, - drop: { - g: '_ping', - pst: '_ped' - }, - eat: { - a: '_er', - g: '_ing', - prt: '_en', - pst: 'ate' - }, - edit: { - pst: '_ed', - g: '_ing' - }, - egg: { - pst: '_ed' - }, - fall: { - prt: '_en', - pst: 'fell' - }, - feed: { - prt: 'fed', - pst: 'fed' - }, - feel: { - a: '_er', - pst: 'felt' - }, - fight: { - pst: 'fought', - prt: 'fought' - }, - find: { - pst: 'found' - }, - flee: { - g: '_ing', - prt: 'fled' - }, - fling: { - prt: 'flung' - }, - fly: { - prt: 'flown', - pst: 'flew' - }, - forbid: { - pst: 'forbade' - }, - forget: { - g: '_ing', - prt: 'forgotten', - pst: 'forgot' - }, - forgive: { - g: 'forgiving', - prt: '_n', - pst: 'forgave' - }, - free: { - a: '', - g: '_ing' - }, - freeze: { - g: 'freezing', - prt: 'frozen', - pst: 'froze' - }, - get: { - pst: 'got', - prt: 'gotten' - }, - give: { - g: 'giving', - prt: '_n', - pst: 'gave' - }, - go: { - prt: '_ne', - pst: 'went', - pres: 'goes' - }, - grow: { - prt: '_n' - }, - guide: { - pst: '_d' - }, - hang: { - pst: 'hung', - prt: 'hung' - }, - have: { - g: 'having', - pst: 'had', - prt: 'had', - pres: 'has' - }, - hear: { - pst: '_d', - prt: '_d' - }, - hide: { - prt: 'hidden', - pst: 'hid' - }, - hit: { - prt: '_' - }, - hold: { - pst: 'held', - prt: 'held' - }, - hurt: { - pst: '_', - prt: '_' - }, - ice: { - g: 'icing', - pst: '_d' - }, - imply: { - pst: 'implied', - pres: 'implies' - }, - is: { - a: '', - g: 'being', - pst: 'was', - pres: '_' - }, - keep: { - prt: 'kept' - }, - kneel: { - prt: 'knelt' - }, - know: { - prt: '_n' - }, - lay: { - pst: 'laid', - prt: 'laid' - }, - lead: { - pst: 'led', - prt: 'led' - }, - leap: { - prt: '_t' - }, - leave: { - pst: 'left', - prt: 'left' - }, - lend: { - prt: 'lent' - }, - lie: { - g: 'lying', - pst: 'lay' - }, - light: { - pst: 'lit', - prt: 'lit' - }, - log: { - g: '_ging', - pst: '_ged' - }, - loose: { - prt: 'lost' - }, - lose: { - g: 'losing', - pst: 'lost' - }, - make: { - pst: 'made', - prt: 'made' - }, - mean: { - pst: '_t', - prt: '_t' - }, - meet: { - a: '_er', - g: '_ing', - pst: 'met', - prt: 'met' - }, - miss: { - pres: '_' - }, - name: { - g: 'naming' - }, - patrol: { - g: '_ling', - pst: '_led' - }, - pay: { - pst: 'paid', - prt: 'paid' - }, - prove: { - prt: '_n' - }, - puke: { - g: 'puking' - }, - put: { - prt: '_' - }, - quit: { - prt: '_' - }, - read: { - pst: '_', - prt: '_' - }, - ride: { - prt: 'ridden' - }, - reside: { - pst: '_d' - }, - ring: { - pst: 'rang', - prt: 'rung' - }, - rise: { - fut: 'will have _n', - g: 'rising', - prt: '_n', - pst: 'rose', - pluperf: 'had _n' - }, - rub: { - g: '_bing', - pst: '_bed' - }, - run: { - g: '_ning', - prt: '_', - pst: 'ran' - }, - say: { - pst: 'said', - prt: 'said', - pres: '_s' - }, - seat: { - pst: 'sat', - prt: 'sat' - }, - see: { - g: '_ing', - prt: '_n', - pst: 'saw' - }, - seek: { - prt: 'sought' - }, - sell: { - pst: 'sold', - prt: 'sold' - }, - send: { - prt: 'sent' - }, - set: { - prt: '_' - }, - sew: { - prt: '_n' - }, - shake: { - prt: '_n' - }, - shave: { - prt: '_d' - }, - shed: { - g: '_ding', - pst: '_', - pres: '_s' - }, - shine: { - pst: 'shone', - prt: 'shone' - }, - shoot: { - pst: 'shot', - prt: 'shot' - }, - show: { - pst: '_ed' - }, - shut: { - prt: '_' - }, - sing: { - prt: 'sung', - pst: 'sang' - }, - sink: { - pst: 'sank', - pluperf: 'had sunk' - }, - sit: { - pst: 'sat' - }, - ski: { - pst: '_ied' - }, - slay: { - prt: 'slain' - }, - sleep: { - prt: 'slept' - }, - slide: { - pst: 'slid', - prt: 'slid' - }, - smash: { - pres: '_es' - }, - sneak: { - prt: 'snuck' - }, - speak: { - fut: 'will have spoken', - prt: 'spoken', - pst: 'spoke', - perf: 'have spoken', - pluperf: 'had spoken' - }, - speed: { - prt: 'sped' - }, - spend: { - prt: 'spent' - }, - spill: { - prt: '_ed', - pst: 'spilt' - }, - spin: { - g: '_ning', - pst: 'spun', - prt: 'spun' - }, - spit: { - prt: 'spat' - }, - split: { - prt: '_' - }, - spread: { - pst: '_' - }, - spring: { - prt: 'sprung' - }, - stand: { - pst: 'stood' - }, - steal: { - a: '_er', - pst: 'stole' - }, - stick: { - pst: 'stuck' - }, - sting: { - pst: 'stung' - }, - stink: { - pst: 'stunk', - prt: 'stunk' - }, - stream: { - a: '_er' - }, - strew: { - prt: '_n' - }, - strike: { - g: 'striking', - pst: 'struck' - }, - suit: { - a: '_er', - g: '_ing', - pst: '_ed' - }, - sware: { - prt: 'sworn' - }, - swear: { - pst: 'swore' - }, - sweep: { - prt: 'swept' - }, - swim: { - g: '_ming', - pst: 'swam' - }, - swing: { - pst: 'swung' - }, - take: { - fut: 'will have _n', - pst: 'took', - perf: 'have _n', - pluperf: 'had _n' - }, - teach: { - pst: 'taught', - pres: '_es' - }, - tear: { - pst: 'tore' - }, - tell: { - pst: 'told' - }, - think: { - pst: 'thought' - }, - thrive: { - prt: '_d' - }, - tie: { - g: 'tying', - pst: '_d' - }, - undergo: { - prt: '_ne' - }, - understand: { - pst: 'understood' - }, - upset: { - prt: '_' - }, - wait: { - a: '_er', - g: '_ing', - pst: '_ed' - }, - wake: { - pst: 'woke' - }, - wear: { - pst: 'wore' - }, - weave: { - prt: 'woven' - }, - wed: { - pst: 'wed' - }, - weep: { - prt: 'wept' - }, - win: { - g: '_ning', - pst: 'won' - }, - wind: { - prt: 'wound' - }, - withdraw: { - pst: 'withdrew' - }, - wring: { - prt: 'wrung' - }, - write: { - g: 'writing', - prt: 'written', - pst: 'wrote' - } - }; //uncompress our ad-hoc compression scheme - - var keys = Object.keys(conjugations); - - var _loop = function _loop(i) { - var inf = keys[i]; - var _final = {}; - Object.keys(conjugations[inf]).forEach(function (key) { - var str = conjugations[inf][key]; //swap-in infinitives for '_' - - str = str.replace('_', inf); - var full = mapping$1[key]; - _final[full] = str; - }); //over-write original - - conjugations[inf] = _final; - }; - - for (var i = 0; i < keys.length; i++) { - _loop(i); - } - - var conjugations_1 = conjugations; - var endsWith$1 = { - b: [{ - reg: /([^aeiou][aeiou])b$/i, - repl: { - pr: '$1bs', - pa: '$1bbed', - gr: '$1bbing' - } - }], - d: [{ - reg: /(end)$/i, - repl: { - pr: '$1s', - pa: 'ent', - gr: '$1ing', - ar: '$1er' - } - }, { - reg: /(eed)$/i, - repl: { - pr: '$1s', - pa: '$1ed', - gr: '$1ing', - ar: '$1er' - } - }, { - reg: /(ed)$/i, - repl: { - pr: '$1s', - pa: '$1ded', - ar: '$1der', - gr: '$1ding' - } - }, { - reg: /([^aeiou][ou])d$/i, - repl: { - pr: '$1ds', - pa: '$1dded', - gr: '$1dding' - } - }], - e: [{ - reg: /(eave)$/i, - repl: { - pr: '$1s', - pa: '$1d', - gr: 'eaving', - ar: '$1r' - } - }, { - reg: /(ide)$/i, - repl: { - pr: '$1s', - pa: 'ode', - gr: 'iding', - ar: 'ider' - } - }, { - //shake - reg: /(t|sh?)(ake)$/i, - repl: { - pr: '$1$2s', - pa: '$1ook', - gr: '$1aking', - ar: '$1$2r' - } - }, { - //awake - reg: /w(ake)$/i, - repl: { - pr: 'w$1s', - pa: 'woke', - gr: 'waking', - ar: 'w$1r' - } - }, { - //make - reg: /m(ake)$/i, - repl: { - pr: 'm$1s', - pa: 'made', - gr: 'making', - ar: 'm$1r' - } - }, { - reg: /(a[tg]|i[zn]|ur|nc|gl|is)e$/i, - repl: { - pr: '$1es', - pa: '$1ed', - gr: '$1ing' // prt: '$1en', - - } - }, { - reg: /([bd]l)e$/i, - repl: { - pr: '$1es', - pa: '$1ed', - gr: '$1ing' - } - }, { - reg: /(om)e$/i, - repl: { - pr: '$1es', - pa: 'ame', - gr: '$1ing' - } - }], - g: [{ - reg: /([^aeiou][ou])g$/i, - repl: { - pr: '$1gs', - pa: '$1gged', - gr: '$1gging' - } - }], - h: [{ - reg: /(..)([cs]h)$/i, - repl: { - pr: '$1$2es', - pa: '$1$2ed', - gr: '$1$2ing' - } - }], - k: [{ - reg: /(ink)$/i, - repl: { - pr: '$1s', - pa: 'unk', - gr: '$1ing', - ar: '$1er' - } - }], - m: [{ - reg: /([^aeiou][aeiou])m$/i, - repl: { - pr: '$1ms', - pa: '$1mmed', - gr: '$1mming' - } - }], - n: [{ - reg: /(en)$/i, - repl: { - pr: '$1s', - pa: '$1ed', - gr: '$1ing' - } - }], - p: [{ - reg: /(e)(ep)$/i, - repl: { - pr: '$1$2s', - pa: '$1pt', - gr: '$1$2ing', - ar: '$1$2er' - } - }, { - reg: /([^aeiou][aeiou])p$/i, - repl: { - pr: '$1ps', - pa: '$1pped', - gr: '$1pping' - } - }, { - reg: /([aeiu])p$/i, - repl: { - pr: '$1ps', - pa: '$1p', - gr: '$1pping' - } - }], - r: [{ - reg: /([td]er)$/i, - repl: { - pr: '$1s', - pa: '$1ed', - gr: '$1ing' - } - }, { - reg: /(er)$/i, - repl: { - pr: '$1s', - pa: '$1ed', - gr: '$1ing' - } - }], - s: [{ - reg: /(ish|tch|ess)$/i, - repl: { - pr: '$1es', - pa: '$1ed', - gr: '$1ing' - } - }], - t: [{ - reg: /(ion|end|e[nc]t)$/i, - repl: { - pr: '$1s', - pa: '$1ed', - gr: '$1ing' - } - }, { - reg: /(.eat)$/i, - repl: { - pr: '$1s', - pa: '$1ed', - gr: '$1ing' - } - }, { - reg: /([aeiu])t$/i, - repl: { - pr: '$1ts', - pa: '$1t', - gr: '$1tting' - } - }, { - reg: /([^aeiou][aeiou])t$/i, - repl: { - pr: '$1ts', - pa: '$1tted', - gr: '$1tting' - } - }], - w: [{ - reg: /(.llow)$/i, - //follow, allow - repl: { - pr: '$1s', - pa: '$1ed' - } - }, { - reg: /(..)(ow)$/i, - //grow - repl: { - pr: '$1$2s', - pa: '$1ew', - gr: '$1$2ing', - prt: '$1$2n' - } - }], - y: [{ - reg: /(i|f|rr)y$/i, - repl: { - pr: '$1ies', - pa: '$1ied', - gr: '$1ying' - } - }], - z: [{ - reg: /([aeiou]zz)$/i, - repl: { - pr: '$1es', - pa: '$1ed', - gr: '$1ing' - } - }] - }; - var suffixes$1 = endsWith$1; - var posMap = { - pr: 'PresentTense', - pa: 'PastTense', - gr: 'Gerund', - prt: 'Participle', - ar: 'Actor' - }; - - var doTransform = function doTransform(str, obj) { - var found = {}; - var keys = Object.keys(obj.repl); - - for (var i = 0; i < keys.length; i += 1) { - var pos = keys[i]; - found[posMap[pos]] = str.replace(obj.reg, obj.repl[pos]); - } - - return found; - }; //look at the end of the word for clues - - - var checkSuffix = function checkSuffix() { - var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var c = str[str.length - 1]; - - if (suffixes$1.hasOwnProperty(c) === true) { - for (var r = 0; r < suffixes$1[c].length; r += 1) { - var reg = suffixes$1[c][r].reg; - - if (reg.test(str) === true) { - return doTransform(str, suffixes$1[c][r]); - } - } - } - - return {}; - }; - - var _01Suffixes = checkSuffix; //non-specifc, 'hail-mary' transforms from infinitive, into other forms - - var hasY = /[bcdfghjklmnpqrstvwxz]y$/; - var generic = { - Gerund: function Gerund(inf) { - if (inf.charAt(inf.length - 1) === 'e') { - return inf.replace(/e$/, 'ing'); - } - - return inf + 'ing'; - }, - PresentTense: function PresentTense(inf) { - if (inf.charAt(inf.length - 1) === 's') { - return inf + 'es'; - } - - if (hasY.test(inf) === true) { - return inf.slice(0, -1) + 'ies'; - } - - return inf + 's'; - }, - PastTense: function PastTense(inf) { - if (inf.charAt(inf.length - 1) === 'e') { - return inf + 'd'; - } - - if (inf.substr(-2) === 'ed') { - return inf; - } - - if (hasY.test(inf) === true) { - return inf.slice(0, -1) + 'ied'; - } - - return inf + 'ed'; - } - }; - var _02Generic = generic; //we assume the input word is a proper infinitive - - var conjugate$2 = function conjugate() { - var inf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var world = arguments.length > 1 ? arguments[1] : undefined; - var found = {}; // 1. look at irregulars - //the lexicon doesn't pass this in - - if (world && world.irregulars) { - if (world.irregulars.verbs.hasOwnProperty(inf) === true) { - found = Object.assign({}, world.irregulars.verbs[inf]); - } - } //2. rule-based regex - - - found = Object.assign({}, _01Suffixes(inf), found); //3. generic transformations - //'buzzing' - - if (found.Gerund === undefined) { - found.Gerund = _02Generic.Gerund(inf); - } //'buzzed' - - - if (found.PastTense === undefined) { - found.PastTense = _02Generic.PastTense(inf); - } //'buzzes' - - - if (found.PresentTense === undefined) { - found.PresentTense = _02Generic.PresentTense(inf); - } - - return found; - }; - - var conjugate_1$1 = conjugate$2; // console.log(conjugate('bake')) - //turn 'quick' into 'quickest' - - var do_rules$1 = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/]; - var dont_rules$1 = [/ary$/]; - var irregulars$5 = { - nice: 'nicest', - late: 'latest', - hard: 'hardest', - inner: 'innermost', - outer: 'outermost', - far: 'furthest', - worse: 'worst', - bad: 'worst', - good: 'best', - big: 'biggest', - large: 'largest' - }; - var transforms$2 = [{ - reg: /y$/i, - repl: 'iest' - }, { - reg: /([aeiou])t$/i, - repl: '$1ttest' - }, { - reg: /([aeou])de$/i, - repl: '$1dest' - }, { - reg: /nge$/i, - repl: 'ngest' - }, { - reg: /([aeiou])te$/i, - repl: '$1test' - }]; - - var to_superlative = function to_superlative(str) { - //irregulars - if (irregulars$5.hasOwnProperty(str)) { - return irregulars$5[str]; - } //known transforms - - - for (var i = 0; i < transforms$2.length; i++) { - if (transforms$2[i].reg.test(str)) { - return str.replace(transforms$2[i].reg, transforms$2[i].repl); - } - } //dont-rules - - - for (var _i = 0; _i < dont_rules$1.length; _i++) { - if (dont_rules$1[_i].test(str) === true) { - return null; - } - } //do-rules - - - for (var _i2 = 0; _i2 < do_rules$1.length; _i2++) { - if (do_rules$1[_i2].test(str) === true) { - if (str.charAt(str.length - 1) === 'e') { - return str + 'st'; - } - - return str + 'est'; - } - } - - return str + 'est'; - }; - - var toSuperlative = to_superlative; //turn 'quick' into 'quickly' - - var do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/]; - var dont_rules = [/ary$/, /ous$/]; - var irregulars$4 = { - grey: 'greyer', - gray: 'grayer', - green: 'greener', - yellow: 'yellower', - red: 'redder', - good: 'better', - well: 'better', - bad: 'worse', - sad: 'sadder', - big: 'bigger' - }; - var transforms$1 = [{ - reg: /y$/i, - repl: 'ier' - }, { - reg: /([aeiou])t$/i, - repl: '$1tter' - }, { - reg: /([aeou])de$/i, - repl: '$1der' - }, { - reg: /nge$/i, - repl: 'nger' - }]; - - var to_comparative = function to_comparative(str) { - //known-irregulars - if (irregulars$4.hasOwnProperty(str)) { - return irregulars$4[str]; - } //known-transforms - - - for (var i = 0; i < transforms$1.length; i++) { - if (transforms$1[i].reg.test(str) === true) { - return str.replace(transforms$1[i].reg, transforms$1[i].repl); - } - } //dont-patterns - - - for (var _i = 0; _i < dont_rules.length; _i++) { - if (dont_rules[_i].test(str) === true) { - return null; - } - } //do-patterns - - - for (var _i2 = 0; _i2 < do_rules.length; _i2++) { - if (do_rules[_i2].test(str) === true) { - return str + 'er'; - } - } //easy-one - - - if (/e$/.test(str) === true) { - return str + 'r'; - } - - return str + 'er'; - }; - - var toComparative = to_comparative; - var fns = { - toSuperlative: toSuperlative, - toComparative: toComparative - }; - /** conjugate an adjective into other forms */ - - var conjugate$1 = function conjugate(w) { - var res = {}; // 'greatest' - - var sup = fns.toSuperlative(w); - - if (sup) { - res.Superlative = sup; - } // 'greater' - - - var comp = fns.toComparative(w); - - if (comp) { - res.Comparative = comp; - } - - return res; - }; - - var adjectives$2 = conjugate$1; - /** patterns for turning 'bus' to 'buses'*/ - - var suffixes = { - a: [[/(antenn|formul|nebul|vertebr|vit)a$/i, '$1ae'], [/([ti])a$/i, '$1a']], - e: [[/(kn|l|w)ife$/i, '$1ives'], [/(hive)$/i, '$1s'], [/([m|l])ouse$/i, '$1ice'], [/([m|l])ice$/i, '$1ice']], - f: [[/^(dwar|handkerchie|hoo|scar|whar)f$/i, '$1ves'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i, '$1ves']], - i: [[/(octop|vir)i$/i, '$1i']], - m: [[/([ti])um$/i, '$1a']], - n: [[/^(oxen)$/i, '$1']], - o: [[/(al|ad|at|er|et|ed|ad)o$/i, '$1oes']], - s: [[/(ax|test)is$/i, '$1es'], [/(alias|status)$/i, '$1es'], [/sis$/i, 'ses'], [/(bu)s$/i, '$1ses'], [/(sis)$/i, 'ses'], [/^(?!talis|.*hu)(.*)man$/i, '$1men'], [/(octop|vir|radi|nucle|fung|cact|stimul)us$/i, '$1i']], - x: [[/(matr|vert|ind|cort)(ix|ex)$/i, '$1ices'], [/^(ox)$/i, '$1en']], - y: [[/([^aeiouy]|qu)y$/i, '$1ies']], - z: [[/(quiz)$/i, '$1zes']] - }; - var _rules$2 = suffixes; - var addE = /(x|ch|sh|s|z)$/; - - var trySuffix = function trySuffix(str) { - var c = str[str.length - 1]; - - if (_rules$2.hasOwnProperty(c) === true) { - for (var i = 0; i < _rules$2[c].length; i += 1) { - var reg = _rules$2[c][i][0]; - - if (reg.test(str) === true) { - return str.replace(reg, _rules$2[c][i][1]); - } - } - } - - return null; - }; - /** Turn a singular noun into a plural - * assume the given string is singular - */ - - - var pluralize = function pluralize() { - var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var world = arguments.length > 1 ? arguments[1] : undefined; - var irregulars = world.irregulars.nouns; // check irregulars list - - if (irregulars.hasOwnProperty(str)) { - return irregulars[str]; - } //we have some rules to try-out - - - var plural = trySuffix(str); - - if (plural !== null) { - return plural; - } //like 'church' - - - if (addE.test(str)) { - return str + 'es'; - } // ¯\_(ツ)_/¯ - - - return str + 's'; - }; - - var toPlural = pluralize; //patterns for turning 'dwarves' to 'dwarf' - - var _rules$1 = [[/([^v])ies$/i, '$1y'], [/ises$/i, 'isis'], [/(kn|[^o]l|w)ives$/i, '$1ife'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i, '$1f'], [/^(dwar|handkerchie|hoo|scar|whar)ves$/i, '$1f'], [/(antenn|formul|nebul|vertebr|vit)ae$/i, '$1a'], [/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i, '$1us'], [/(buffal|tomat|tornad)(oes)$/i, '$1o'], // [/(analy|diagno|parenthe|progno|synop|the)ses$/i, '$1sis'], - [/(eas)es$/i, '$1e'], //diseases - [/(..[aeiou]s)es$/i, '$1'], //geniouses - [/(vert|ind|cort)(ices)$/i, '$1ex'], [/(matr|append)(ices)$/i, '$1ix'], [/(x|ch|ss|sh|z|o)es$/i, '$1'], [/men$/i, 'man'], [/(n)ews$/i, '$1ews'], [/([ti])a$/i, '$1um'], [/([^aeiouy]|qu)ies$/i, '$1y'], [/(s)eries$/i, '$1eries'], [/(m)ovies$/i, '$1ovie'], [/([m|l])ice$/i, '$1ouse'], [/(cris|ax|test)es$/i, '$1is'], [/(alias|status)es$/i, '$1'], [/(ss)$/i, '$1'], [/(ics)$/i, '$1'], [/s$/i, '']]; - - var invertObj = function invertObj(obj) { - return Object.keys(obj).reduce(function (h, k) { - h[obj[k]] = k; - return h; - }, {}); - }; - - var toSingular = function toSingular(str, world) { - var irregulars = world.irregulars.nouns; - var invert = invertObj(irregulars); //(not very efficient) - // check irregulars list - - if (invert.hasOwnProperty(str)) { - return invert[str]; - } // go through our regexes - - - for (var i = 0; i < _rules$1.length; i++) { - if (_rules$1[i][0].test(str) === true) { - str = str.replace(_rules$1[i][0], _rules$1[i][1]); - return str; - } - } - - return str; - }; - - var toSingular_1 = toSingular; //rules for turning a verb into infinitive form - - var rules = { - Participle: [{ - reg: /own$/i, - to: 'ow' - }, { - reg: /(.)un([g|k])$/i, - to: '$1in$2' - }], - Actor: [{ - reg: /(er)er$/i, - to: '$1' - }], - PresentTense: [{ - reg: /(..)(ies)$/i, - to: '$1y' - }, { - reg: /(tch|sh)es$/i, - to: '$1' - }, { - reg: /(ss|zz)es$/i, - to: '$1' - }, { - reg: /([tzlshicgrvdnkmu])es$/i, - to: '$1e' - }, { - reg: /(n[dtk]|c[kt]|[eo]n|i[nl]|er|a[ytrl])s$/i, - to: '$1' - }, { - reg: /(ow)s$/i, - to: '$1' - }, { - reg: /(op)s$/i, - to: '$1' - }, { - reg: /([eirs])ts$/i, - to: '$1t' - }, { - reg: /(ll)s$/i, - to: '$1' - }, { - reg: /(el)s$/i, - to: '$1' - }, { - reg: /(ip)es$/i, - to: '$1e' - }, { - reg: /ss$/i, - to: 'ss' - }, { - reg: /s$/i, - to: '' - }], - Gerund: [{ - //popping -> pop - reg: /(..)(p|d|t|g){2}ing$/i, - to: '$1$2' - }, { - //fuzzing -> fuzz - reg: /(ll|ss|zz)ing$/i, - to: '$1' - }, { - reg: /([^aeiou])ying$/i, - to: '$1y' - }, { - reg: /([^ae]i.)ing$/i, - to: '$1e' - }, { - //eating, reading - reg: /(ea[dklnrtv])ing$/i, - to: '$1' - }, { - //washing -> wash - reg: /(ch|sh)ing$/i, - to: '$1' - }, //soft-e forms: - { - //z : hazing (not buzzing) - reg: /(z)ing$/i, - to: '$1e' - }, { - //a : baking, undulating - reg: /(a[gdkvtc])ing$/i, - to: '$1e' - }, { - //u : conjuring, tubing - reg: /(u[rtcbn])ing$/i, - to: '$1e' - }, { - //o : forboding, poking, hoping, boring (not hooping) - reg: /([^o]o[bdknprv])ing$/i, - to: '$1e' - }, { - //ling : tingling, wrinkling, circling, scrambling, bustling - reg: /([tbckg]l)ing$/i, - //dp - to: '$1e' - }, { - //cing : bouncing, denouncing - reg: /(c|s)ing$/i, - //dp - to: '$1e' - }, // { - // //soft-e : - // reg: /([ua]s|[dr]g|z|o[rlsp]|cre)ing$/i, - // to: '$1e', - // }, - { - //fallback - reg: /(..)ing$/i, - to: '$1' - }], - PastTense: [{ - reg: /(ued)$/i, - to: 'ue' - }, { - reg: /a([^aeiouy])ed$/i, - to: 'a$1e' - }, { - reg: /([aeiou]zz)ed$/i, - to: '$1' - }, { - reg: /(e|i)lled$/i, - to: '$1ll' - }, { - reg: /(.)(sh|ch)ed$/i, - to: '$1$2' - }, { - reg: /(tl|gl)ed$/i, - to: '$1e' - }, { - reg: /(um?pt?)ed$/i, - to: '$1' - }, { - reg: /(ss)ed$/i, - to: '$1' - }, { - reg: /pped$/i, - to: 'p' - }, { - reg: /tted$/i, - to: 't' - }, { - reg: /(..)gged$/i, - to: '$1g' - }, { - reg: /(..)lked$/i, - to: '$1lk' - }, { - reg: /([^aeiouy][aeiou])ked$/i, - to: '$1ke' - }, { - reg: /(.[aeiou])led$/i, - to: '$1l' - }, { - reg: /(..)(h|ion|n[dt]|ai.|[cs]t|pp|all|ss|tt|int|ail|ld|en|oo.|er|k|pp|w|ou.|rt|ght|rm)ed$/i, - to: '$1$2' - }, { - reg: /(.ut)ed$/i, - to: '$1e' - }, { - reg: /(.pt)ed$/i, - to: '$1' - }, { - reg: /(us)ed$/i, - to: '$1e' - }, { - reg: /(dd)ed$/i, - to: '$1' - }, { - reg: /(..[^aeiouy])ed$/i, - to: '$1e' - }, { - reg: /(..)ied$/i, - to: '$1y' - }, { - reg: /(.o)ed$/i, - to: '$1o' - }, { - reg: /(..i)ed$/i, - to: '$1' - }, { - reg: /(.a[^aeiou])ed$/i, - to: '$1' - }, { - //owed, aced - reg: /([aeiou][^aeiou])ed$/i, - to: '$1e' - }, { - reg: /([rl])ew$/i, - to: '$1ow' - }, { - reg: /([pl])t$/i, - to: '$1t' - }] - }; - var _transform = rules; - var guessVerb = { - Gerund: ['ing'], - Actor: ['erer'], - Infinitive: ['ate', 'ize', 'tion', 'rify', 'then', 'ress', 'ify', 'age', 'nce', 'ect', 'ise', 'ine', 'ish', 'ace', 'ash', 'ure', 'tch', 'end', 'ack', 'and', 'ute', 'ade', 'ock', 'ite', 'ase', 'ose', 'use', 'ive', 'int', 'nge', 'lay', 'est', 'ain', 'ant', 'ent', 'eed', 'er', 'le', 'own', 'unk', 'ung', 'en'], - PastTense: ['ed', 'lt', 'nt', 'pt', 'ew', 'ld'], - PresentTense: ['rks', 'cks', 'nks', 'ngs', 'mps', 'tes', 'zes', 'ers', 'les', 'acks', 'ends', 'ands', 'ocks', 'lays', 'eads', 'lls', 'els', 'ils', 'ows', 'nds', 'ays', 'ams', 'ars', 'ops', 'ffs', 'als', 'urs', 'lds', 'ews', 'ips', 'es', 'ts', 'ns'] - }; //flip it into a lookup object - - guessVerb = Object.keys(guessVerb).reduce(function (h, k) { - guessVerb[k].forEach(function (a) { - return h[a] = k; - }); - return h; - }, {}); - var _guess = guessVerb; - /** it helps to know what we're conjugating from */ - - var guessTense = function guessTense(str) { - var three = str.substr(str.length - 3); - - if (_guess.hasOwnProperty(three) === true) { - return _guess[three]; - } - - var two = str.substr(str.length - 2); - - if (_guess.hasOwnProperty(two) === true) { - return _guess[two]; - } - - var one = str.substr(str.length - 1); - - if (one === 's') { - return 'PresentTense'; - } - - return null; - }; - - var toInfinitive$1 = function toInfinitive(str, world, tense) { - if (!str) { - return ''; - } //1. look at known irregulars - - - if (world.words.hasOwnProperty(str) === true) { - var irregs = world.irregulars.verbs; - var keys = Object.keys(irregs); - - for (var i = 0; i < keys.length; i++) { - var forms = Object.keys(irregs[keys[i]]); - - for (var o = 0; o < forms.length; o++) { - if (str === irregs[keys[i]][forms[o]]) { - return keys[i]; - } - } - } - } // give'r! - - - tense = tense || guessTense(str); - - if (tense && _transform[tense]) { - for (var _i = 0; _i < _transform[tense].length; _i++) { - var rule = _transform[tense][_i]; - - if (rule.reg.test(str) === true) { - // console.log(rule.reg) - return str.replace(rule.reg, rule.to); - } - } - } - - return str; - }; - - var toInfinitive_1$1 = toInfinitive$1; - var irregulars$3 = { - nouns: plurals, - verbs: conjugations_1 - }; //these behaviours are configurable & shared across some plugins - - var transforms = { - conjugate: conjugate_1$1, - adjectives: adjectives$2, - toPlural: toPlural, - toSingular: toSingular_1, - toInfinitive: toInfinitive_1$1 - }; - var _isVerbose = false; - /** all configurable linguistic data */ - - var World = /*#__PURE__*/function () { - function World() { - _classCallCheck(this, World); // quiet these properties from a console.log - - - Object.defineProperty(this, 'words', { - enumerable: false, - value: {}, - writable: true - }); - Object.defineProperty(this, 'hasCompound', { - enumerable: false, - value: {}, - writable: true - }); - Object.defineProperty(this, 'irregulars', { - enumerable: false, - value: irregulars$3, - writable: true - }); - Object.defineProperty(this, 'tags', { - enumerable: false, - value: Object.assign({}, tags), - writable: true - }); - Object.defineProperty(this, 'transforms', { - enumerable: false, - value: transforms, - writable: true - }); - Object.defineProperty(this, 'taggers', { - enumerable: false, - value: [], - writable: true - }); // cache our abbreviations for our sentence-parser - - Object.defineProperty(this, 'cache', { - enumerable: false, - value: { - abbreviations: {} - } - }); // add our compressed data to lexicon - - this.words = unpack_1.buildOut(this); // add our irregulars to lexicon - - addIrregulars_1(this); - } - /** more logs for debugging */ - - - _createClass(World, [{ - key: "verbose", - value: function verbose(bool) { - _isVerbose = bool; - return this; - } - }, { - key: "isVerbose", - value: function isVerbose() { - return _isVerbose; - } - /** put new words into our lexicon, properly */ - - }, { - key: "addWords", - value: function addWords(wordObj) { - // clean them up a bit - var cleaned = {}; - Object.keys(wordObj).forEach(function (w) { - var tag = wordObj[w]; - w = w.toLowerCase().trim(); - cleaned[w] = tag; - }); - unpack_1.addWords(cleaned, this.words, this); - } - /** add new custom conjugations */ - - }, { - key: "addConjugations", - value: function addConjugations(obj) { - Object.assign(this.irregulars.verbs, obj); - return this; - } - /** add new custom plural/singular pairs */ - - }, { - key: "addPlurals", - value: function addPlurals(obj) { - Object.assign(this.irregulars.nouns, obj); - return this; - } - /** extend the compromise tagset */ - - }, { - key: "addTags", - value: function addTags(tags) { - tags = Object.assign({}, tags); - this.tags = Object.assign(this.tags, tags); // calculate graph implications for the new tags - - this.tags = inference(this.tags); - return this; - } - /** call methods after tagger runs */ - - }, { - key: "postProcess", - value: function postProcess(fn) { - this.taggers.push(fn); - return this; - } - /** helper method for logging + debugging */ - - }, { - key: "stats", - value: function stats() { - return { - words: Object.keys(this.words).length, - plurals: Object.keys(this.irregulars.nouns).length, - conjugations: Object.keys(this.irregulars.verbs).length, - compounds: Object.keys(this.hasCompound).length, - postProcessors: this.taggers.length - }; - } - }]); - - return World; - }(); // ¯\_(:/)_/¯ - - - var clone = function clone(obj) { - return JSON.parse(JSON.stringify(obj)); - }; - /** produce a deep-copy of all lingustic data */ - - - World.prototype.clone = function () { - var w2 = new World(); // these are simple to copy: - - w2.words = Object.assign({}, this.words); - w2.hasCompound = Object.assign({}, this.hasCompound); //these ones are nested: - - w2.irregulars = clone(this.irregulars); - w2.tags = clone(this.tags); // these are functions - - w2.transforms = this.transforms; - w2.taggers = this.taggers; - return w2; - }; - - var World_1 = World; - /** return the root, first document */ - - var _01Utils = createCommonjsModule(function (module, exports) { - exports.all = function () { - return this.parents()[0] || this; - }; - /** return the previous result */ - - - exports.parent = function () { - if (this.from) { - return this.from; - } - - return this; - }; - /** return a list of all previous results */ - - - exports.parents = function (n) { - var arr = []; - - var addParent = function addParent(doc) { - if (doc.from) { - arr.push(doc.from); - addParent(doc.from); - } - }; - - addParent(this); - arr = arr.reverse(); - - if (typeof n === 'number') { - return arr[n]; - } - - return arr; - }; - /** deep-copy the document, so that no references remain */ + exports.lastTerms = function () { + return this.match('.$'); + }; + exports.lastTerm = exports.lastTerms; + /** return a flat array of term objects */ - exports.clone = function (doShallow) { - var list = this.list.map(function (ts) { - return ts.clone(doShallow); - }); - var tmp = this.buildFrom(list); - return tmp; - }; - /** how many seperate terms does the document have? */ + exports.termList = function (num) { + let arr = []; //'reduce' but faster + for (let i = 0; i < this.list.length; i++) { + let terms = this.list[i].terms(); - exports.wordCount = function () { - return this.list.reduce(function (count, p) { - count += p.wordCount(); - return count; - }, 0); - }; + for (let o = 0; o < terms.length; o++) { + arr.push(terms[o]); //support .termList(4) - exports.wordcount = exports.wordCount; - /** turn on logging for decision-debugging */ - // exports.verbose = function(bool) { - // if (bool === undefined) { - // bool = true - // } - // this.world.verbose = bool - // } - }); - /** use only the first result(s) */ + if (num !== undefined && arr[num] !== undefined) { + return arr[num]; + } + } + } + return arr; + }; + /* grab named capture group terms as object */ - var _02Accessors = createCommonjsModule(function (module, exports) { - exports.first = function (n) { - if (n === undefined) { - return this.get(0); - } - return this.slice(0, n); - }; - /** use only the last result(s) */ + const getGroups = function (doc) { + let res = {}; + const allGroups = {}; + for (let i = 0; i < doc.list.length; i++) { + const phrase = doc.list[i]; + const groups = Object.keys(phrase.groups).map(k => phrase.groups[k]); - exports.last = function (n) { - if (n === undefined) { - return this.get(this.list.length - 1); - } + for (let j = 0; j < groups.length; j++) { + const { + group, + start, + length + } = groups[j]; - var end = this.list.length; - return this.slice(end - n, end); - }; - /** grab a given subset of the results*/ + if (!allGroups[group]) { + allGroups[group] = []; + } + allGroups[group].push(phrase.buildFrom(start, length)); + } + } - exports.slice = function (start, end) { - var list = this.list.slice(start, end); - return this.buildFrom(list); - }; - /* grab nth result */ + const keys = Object.keys(allGroups); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + res[key] = doc.buildFrom(allGroups[key]); + } - exports.eq = function (n) { - var p = this.list[n]; + return res; + }; + /** lookup a named-group, by its name */ - if (p === undefined) { - return this.buildFrom([]); - } - return this.buildFrom([p]); - }; + const getOneName = function (doc, name) { + const arr = []; - exports.get = exports.eq; - /** grab term[0] for every match */ + for (let i = 0; i < doc.list.length; i++) { + const phrase = doc.list[i]; + let keys = Object.keys(phrase.groups); + keys = keys.filter(id => phrase.groups[id].group === name); + keys.forEach(id => { + arr.push(phrase.buildFrom(phrase.groups[id].start, phrase.groups[id].length)); + }); + } - exports.firstTerms = function () { - return this.match('^.'); - }; + return doc.buildFrom(arr); + }; + /** grab named capture group results */ - exports.firstTerm = exports.firstTerms; - /** grab the last term for every match */ - exports.lastTerms = function () { - return this.match('.$'); - }; + exports.groups = function (target) { + if (target === undefined) { + return getGroups(this); + } - exports.lastTerm = exports.lastTerms; - /** return a flat array of term objects */ + if (typeof target === 'number') { + target = String(target); + } - exports.termList = function (num) { - var arr = []; //'reduce' but faster + return getOneName(this, target) || this.buildFrom([]); + }; - for (var i = 0; i < this.list.length; i++) { - var terms = this.list[i].terms(); + exports.group = exports.groups; + /** get the full-sentence each phrase belongs to */ - for (var o = 0; o < terms.length; o++) { - arr.push(terms[o]); //support .termList(4) + exports.sentences = function (n) { + let arr = []; + this.list.forEach(p => { + arr.push(p.fullSentence()); + }); - if (num !== undefined && arr[num] !== undefined) { - return arr[num]; - } - } - } + if (typeof n === 'number') { + return this.buildFrom([arr[n]]); + } - return arr; - }; - /* grab named capture group terms as object */ + return this.buildFrom(arr); + }; + exports.sentence = exports.sentences; + })(_02Accessors); - var getGroups = function getGroups(doc) { - var res = {}; - var allGroups = {}; + var _03Match = {}; - var _loop = function _loop(i) { - var phrase = doc.list[i]; - var groups = Object.keys(phrase.groups).map(function (k) { - return phrase.groups[k]; - }); + const cacheRequired$1 = function (reg) { + let needTags = []; + let needWords = []; + reg.forEach(obj => { + if (obj.optional === true || obj.negative === true) { + return; + } - for (var j = 0; j < groups.length; j++) { - var _groups$j = groups[j], - group = _groups$j.group, - start = _groups$j.start, - length = _groups$j.length; + if (obj.tag !== undefined) { + needTags.push(obj.tag); + } - if (!allGroups[group]) { - allGroups[group] = []; - } + if (obj.word !== undefined) { + needWords.push(obj.word); + } + }); + return { + tags: needTags, + words: needWords + }; + }; // try to pre-fail as many matches as possible, without doing them - allGroups[group].push(phrase.buildFrom(start, length)); - } - }; - for (var i = 0; i < doc.list.length; i++) { - _loop(i); - } + const failFast = function (doc, regs) { + if (doc._cache && doc._cache.set === true) { + let { + words, + tags + } = cacheRequired$1(regs); //check required words - var keys = Object.keys(allGroups); + for (let i = 0; i < words.length; i++) { + if (doc._cache.words[words[i]] === undefined) { + return false; + } + } //check required tags - for (var _i = 0; _i < keys.length; _i++) { - var key = keys[_i]; - res[key] = doc.buildFrom(allGroups[key]); - } - return res; - }; - /** lookup a named-group, by its name */ + for (let i = 0; i < tags.length; i++) { + if (doc._cache.tags[tags[i]] === undefined) { + return false; + } + } + } + return true; + }; - var getOneName = function getOneName(doc, name) { - var arr = []; + var _failFast = failFast; - var _loop2 = function _loop2(i) { - var phrase = doc.list[i]; - var keys = Object.keys(phrase.groups); - keys = keys.filter(function (id) { - return phrase.groups[id].group === name; - }); - keys.forEach(function (id) { - arr.push(phrase.buildFrom(phrase.groups[id].start, phrase.groups[id].length)); - }); - }; + (function (exports) { + const parseSyntax = matchSyntax; + const checkCache = _failFast; + /** return a new Doc, with this one as a parent */ - for (var i = 0; i < doc.list.length; i++) { - _loop2(i); - } + exports.match = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return doc.buildFrom(arr); - }; - /** grab named capture group results */ + // support '0' shorthand for named-groups + if (typeof opts === 'string' || typeof opts === 'number' || opts === null) { + opts = { + group: opts + }; + } //parse-up the input expression - exports.groups = function (target) { - if (target === undefined) { - return getGroups(this); - } + let regs = parseSyntax(reg, opts); - if (typeof target === 'number') { - target = String(target); - } + if (regs.length === 0) { + return this.buildFrom([]); + } //check our cache, if it exists - return getOneName(this, target) || this.buildFrom([]); - }; - exports.group = exports.groups; - /** get the full-sentence each phrase belongs to */ + if (checkCache(this, regs) === false) { + return this.buildFrom([]); + } //try expression on each phrase - exports.sentences = function (n) { - var arr = []; - this.list.forEach(function (p) { - arr.push(p.fullSentence()); - }); - if (typeof n === 'number') { - return this.buildFrom([arr[n]]); - } + let matches = this.list.reduce((arr, p) => { + return arr.concat(p.match(regs)); + }, []); // support returning named groups - return this.buildFrom(arr); - }; + if (opts.group !== undefined && opts.group !== null && opts.group !== '') { + return this.buildFrom(matches).groups(opts.group); + } - exports.sentence = exports.sentences; - }); // cache the easier conditions up-front + return this.buildFrom(matches); + }; + /** return all results except for this */ - var cacheRequired$1 = function cacheRequired(reg) { - var needTags = []; - var needWords = []; - reg.forEach(function (obj) { - if (obj.optional === true || obj.negative === true) { - return; - } + exports.not = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + //parse-up the input expression + let regs = parseSyntax(reg, opts); //if it's empty, return them all! - if (obj.tag !== undefined) { - needTags.push(obj.tag); - } + if (regs.length === 0 || checkCache(this, regs) === false) { + return this; + } //try expression on each phrase - if (obj.word !== undefined) { - needWords.push(obj.word); - } - }); - return { - tags: needTags, - words: needWords - }; - }; // try to pre-fail as many matches as possible, without doing them + let matches = this.list.reduce((arr, p) => { + return arr.concat(p.not(regs)); + }, []); + return this.buildFrom(matches); + }; + /** return only the first match */ - var failFast = function failFast(doc, regs) { - if (doc._cache && doc._cache.set === true) { - var _cacheRequired = cacheRequired$1(regs), - words = _cacheRequired.words, - tags = _cacheRequired.tags; //check required words + exports.matchOne = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let regs = parseSyntax(reg, opts); //check our cache, if it exists - for (var i = 0; i < words.length; i++) { - if (doc._cache.words[words[i]] === undefined) { - return false; - } - } //check required tags + if (checkCache(this, regs) === false) { + return this.buildFrom([]); + } + for (let i = 0; i < this.list.length; i++) { + let match = this.list[i].match(regs, true); + return this.buildFrom(match); + } - for (var _i = 0; _i < tags.length; _i++) { - if (doc._cache.tags[tags[_i]] === undefined) { - return false; - } - } - } + return this.buildFrom([]); + }; + /** return each current phrase, only if it contains this match */ - return true; - }; - var _failFast = failFast; + exports.if = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let regs = parseSyntax(reg, opts); //consult our cache, if it exists - var _03Match = createCommonjsModule(function (module, exports) { - /** return a new Doc, with this one as a parent */ - exports.match = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // support '0' shorthand for named-groups + if (checkCache(this, regs) === false) { + return this.buildFrom([]); + } - if (typeof opts === 'string' || typeof opts === 'number' || opts === null) { - opts = { - group: opts - }; - } //parse-up the input expression + let found = this.list.filter(p => p.has(regs) === true); + return this.buildFrom(found); + }; + /** Filter-out any current phrases that have this match*/ - var regs = matchSyntax(reg, opts); + exports.ifNo = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let regs = parseSyntax(reg, opts); + let found = this.list.filter(p => p.has(regs) === false); + return this.buildFrom(found); + }; + /**Return a boolean if this match exists */ - if (regs.length === 0) { - return this.buildFrom([]); - } //check our cache, if it exists + exports.has = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let regs = parseSyntax(reg, opts); //consult our cache, if it exists - if (_failFast(this, regs) === false) { - return this.buildFrom([]); - } //try expression on each phrase + if (checkCache(this, regs) === false) { + return false; + } + return this.list.some(p => p.has(regs) === true); + }; + /** match any terms after our matches, within the sentence */ - var matches = this.list.reduce(function (arr, p) { - return arr.concat(p.match(regs)); - }, []); // support returning named groups - if (opts.group !== undefined && opts.group !== null && opts.group !== '') { - return this.buildFrom(matches).groups(opts.group); - } + exports.lookAhead = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return this.buildFrom(matches); - }; - /** return all results except for this */ + // find everything afterwards, by default + if (!reg) { + reg = '.*'; + } + let regs = parseSyntax(reg, opts); + let matches = []; + this.list.forEach(p => { + matches = matches.concat(p.lookAhead(regs)); + }); + matches = matches.filter(p => p); + return this.buildFrom(matches); + }; - exports.not = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; //parse-up the input expression + exports.lookAfter = exports.lookAhead; + /** match any terms before our matches, within the sentence */ - var regs = matchSyntax(reg, opts); //if it's empty, return them all! + exports.lookBehind = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - if (regs.length === 0 || _failFast(this, regs) === false) { - return this; - } //try expression on each phrase + // find everything afterwards, by default + if (!reg) { + reg = '.*'; + } + let regs = parseSyntax(reg, opts); + let matches = []; + this.list.forEach(p => { + matches = matches.concat(p.lookBehind(regs)); + }); + matches = matches.filter(p => p); + return this.buildFrom(matches); + }; + + exports.lookBefore = exports.lookBehind; + /** return all terms before a match, in each phrase */ + + exports.before = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let regs = parseSyntax(reg, opts); //only the phrases we care about + + let phrases = this.if(regs).list; + let befores = phrases.map(p => { + let ids = p.terms().map(t => t.id); //run the search again + + let m = p.match(regs)[0]; + let index = ids.indexOf(m.start); //nothing is before a first-term match + + if (index === 0 || index === -1) { + return null; + } + + return p.buildFrom(p.start, index); + }); + befores = befores.filter(p => p !== null); + return this.buildFrom(befores); + }; + /** return all terms after a match, in each phrase */ + + + exports.after = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let regs = parseSyntax(reg, opts); //only the phrases we care about + + let phrases = this.if(regs).list; + let befores = phrases.map(p => { + let terms = p.terms(); + let ids = terms.map(t => t.id); //run the search again + + let m = p.match(regs)[0]; + let index = ids.indexOf(m.start); //skip if nothing is after it + + if (index === -1 || !terms[index + m.length]) { + return null; + } //create the new phrase, after our match. + + + let id = terms[index + m.length].id; + let len = p.length - index - m.length; + return p.buildFrom(id, len); + }); + befores = befores.filter(p => p !== null); + return this.buildFrom(befores); + }; + /** return only results with this match afterwards */ + + + exports.hasAfter = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return this.filter(doc => { + return doc.lookAfter(reg, opts).found; + }); + }; + /** return only results with this match before it */ + + + exports.hasBefore = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return this.filter(doc => { + return doc.lookBefore(reg, opts).found; + }); + }; + })(_03Match); + + var _04Tag = {}; + /** apply a tag, or tags to all terms */ + + const tagTerms = function (tag, doc, safe, reason) { + let tagList = []; + + if (typeof tag === 'string') { + tagList = tag.split(' '); + } // doc.parents()[0].reasons.push(reason) + //do indepenent tags for each term: + + + doc.list.forEach(p => { + let terms = p.terms(); // tagSafe - apply only to fitting terms + + if (safe === true) { + terms = terms.filter(t => t.canBe(tag, doc.world)); + } + + terms.forEach((t, i) => { + //fancy version: + if (tagList.length > 1) { + if (tagList[i] && tagList[i] !== '.') { + t.tag(tagList[i], reason, doc.world); + } + } else { + //non-fancy version (same tag for all terms) + t.tag(tag, reason, doc.world); + } + }); + }); + return; + }; + + var _setTag = tagTerms; + const setTag = _setTag; + /** Give all terms the given tag */ - var matches = this.list.reduce(function (arr, p) { - return arr.concat(p.not(regs)); - }, []); - return this.buildFrom(matches); - }; - /** return only the first match */ + _04Tag.tag = function (tags, why) { + if (!tags) { + return this; + } + setTag(tags, this, false, why); + return this; + }; + /** Only apply tag to terms if it is consistent with current tags */ - exports.matchOne = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var regs = matchSyntax(reg, opts); //check our cache, if it exists - if (_failFast(this, regs) === false) { - return this.buildFrom([]); - } + _04Tag.tagSafe = function (tags, why) { + if (!tags) { + return this; + } + + setTag(tags, this, true, why); + return this; + }; + /** Remove this term from the given terms */ - for (var i = 0; i < this.list.length; i++) { - var match = this.list[i].match(regs, true); - return this.buildFrom(match); - } - return this.buildFrom([]); - }; - /** return each current phrase, only if it contains this match */ + _04Tag.unTag = function (tags, why) { + this.list.forEach(p => { + p.terms().forEach(t => t.unTag(tags, why, this.world)); + }); + return this; + }; + /** return only the terms that can be this tag*/ - exports["if"] = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var regs = matchSyntax(reg, opts); //consult our cache, if it exists + _04Tag.canBe = function (tag) { + if (!tag) { + return this; + } - if (_failFast(this, regs) === false) { - return this.buildFrom([]); - } + let world = this.world; + let matches = this.list.reduce((arr, p) => { + return arr.concat(p.canBe(tag, world)); + }, []); + return this.buildFrom(matches); + }; - var found = this.list.filter(function (p) { - return p.has(regs) === true; - }); - return this.buildFrom(found); - }; - /** Filter-out any current phrases that have this match*/ + var _05Loops = {}; + /* run each phrase through a function, and create a new document */ + _05Loops.map = function (fn) { + if (!fn) { + return this; + } - exports.ifNo = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var regs = matchSyntax(reg, opts); - var found = this.list.filter(function (p) { - return p.has(regs) === false; - }); - return this.buildFrom(found); - }; - /**Return a boolean if this match exists */ + let list = this.list.map((p, i) => { + let doc = this.buildFrom([p]); + doc.from = null; //it's not a child/parent + let res = fn(doc, i); // if its a doc, return one result - exports.has = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var regs = matchSyntax(reg, opts); //consult our cache, if it exists + if (res && res.list && res.list[0]) { + return res.list[0]; + } - if (_failFast(this, regs) === false) { - return false; - } + return res; + }); //remove nulls - return this.list.some(function (p) { - return p.has(regs) === true; - }); - }; - /** match any terms after our matches, within the sentence */ + list = list.filter(x => x); // return an empty response + if (list.length === 0) { + return this.buildFrom(list); + } // if it is not a list of Phrase objects, then don't try to make a Doc object - exports.lookAhead = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // find everything afterwards, by default - if (!reg) { - reg = '.*'; - } - - var regs = matchSyntax(reg, opts); - var matches = []; - this.list.forEach(function (p) { - matches = matches.concat(p.lookAhead(regs)); - }); - matches = matches.filter(function (p) { - return p; - }); - return this.buildFrom(matches); - }; - - exports.lookAfter = exports.lookAhead; - /** match any terms before our matches, within the sentence */ - - exports.lookBehind = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // find everything afterwards, by default - - if (!reg) { - reg = '.*'; - } - - var regs = matchSyntax(reg, opts); - var matches = []; - this.list.forEach(function (p) { - matches = matches.concat(p.lookBehind(regs)); - }); - matches = matches.filter(function (p) { - return p; - }); - return this.buildFrom(matches); - }; - - exports.lookBefore = exports.lookBehind; - /** return all terms before a match, in each phrase */ - - exports.before = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var regs = matchSyntax(reg, opts); //only the phrases we care about - - var phrases = this["if"](regs).list; - var befores = phrases.map(function (p) { - var ids = p.terms().map(function (t) { - return t.id; - }); //run the search again - - var m = p.match(regs)[0]; - var index = ids.indexOf(m.start); //nothing is before a first-term match - - if (index === 0 || index === -1) { - return null; - } - - return p.buildFrom(p.start, index); - }); - befores = befores.filter(function (p) { - return p !== null; - }); - return this.buildFrom(befores); - }; - /** return all terms after a match, in each phrase */ - - - exports.after = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var regs = matchSyntax(reg, opts); //only the phrases we care about - - var phrases = this["if"](regs).list; - var befores = phrases.map(function (p) { - var terms = p.terms(); - var ids = terms.map(function (t) { - return t.id; - }); //run the search again - - var m = p.match(regs)[0]; - var index = ids.indexOf(m.start); //skip if nothing is after it - - if (index === -1 || !terms[index + m.length]) { - return null; - } //create the new phrase, after our match. - - - var id = terms[index + m.length].id; - var len = p.length - index - m.length; - return p.buildFrom(id, len); - }); - befores = befores.filter(function (p) { - return p !== null; - }); - return this.buildFrom(befores); - }; - /** return only results with this match afterwards */ - - - exports.hasAfter = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return this.filter(function (doc) { - return doc.lookAfter(reg, opts).found; - }); - }; - /** return only results with this match before it */ - - - exports.hasBefore = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return this.filter(function (doc) { - return doc.lookBefore(reg, opts).found; - }); - }; - }); - /** apply a tag, or tags to all terms */ - - - var tagTerms = function tagTerms(tag, doc, safe, reason) { - var tagList = []; - - if (typeof tag === 'string') { - tagList = tag.split(' '); - } // doc.parents()[0].reasons.push(reason) - //do indepenent tags for each term: - - - doc.list.forEach(function (p) { - var terms = p.terms(); // tagSafe - apply only to fitting terms - - if (safe === true) { - terms = terms.filter(function (t) { - return t.canBe(tag, doc.world); - }); - } - - terms.forEach(function (t, i) { - //fancy version: - if (tagList.length > 1) { - if (tagList[i] && tagList[i] !== '.') { - t.tag(tagList[i], reason, doc.world); - } - } else { - //non-fancy version (same tag for all terms) - t.tag(tag, reason, doc.world); - } - }); - }); - return; - }; + if (typeof list[0] !== 'object' || list[0].isA !== 'Phrase') { + return list; + } - var _setTag = tagTerms; - /** Give all terms the given tag */ + return this.buildFrom(list); + }; + /** run a function on each phrase */ - var tag = function tag(tags, why) { - if (!tags) { - return this; - } - - _setTag(tags, this, false, why); - return this; - }; - /** Only apply tag to terms if it is consistent with current tags */ + _05Loops.forEach = function (fn, detachParent) { + if (!fn) { + return this; + } + this.list.forEach((p, i) => { + let sub = this.buildFrom([p]); // if we're doing fancy insertions, we may want to skip updating the parent each time. - var tagSafe = function tagSafe(tags, why) { - if (!tags) { - return this; - } + if (detachParent === true) { + sub.from = null; // + } - _setTag(tags, this, true, why); + fn(sub, i); + }); + return this; + }; + /** return only the phrases that return true */ - return this; - }; - /** Remove this term from the given terms */ + _05Loops.filter = function (fn) { + if (!fn) { + return this; + } - var unTag = function unTag(tags, why) { - var _this = this; + let list = this.list.filter((p, i) => { + let doc = this.buildFrom([p]); + doc.from = null; //it's not a child/parent - this.list.forEach(function (p) { - p.terms().forEach(function (t) { - return t.unTag(tags, why, _this.world); - }); - }); - return this; - }; - /** return only the terms that can be this tag*/ + return fn(doc, i); + }); + return this.buildFrom(list); + }; + /** return a document with only the first phrase that matches */ - var canBe = function canBe(tag) { - if (!tag) { - return this; - } + _05Loops.find = function (fn) { + if (!fn) { + return this; + } - var world = this.world; - var matches = this.list.reduce(function (arr, p) { - return arr.concat(p.canBe(tag, world)); - }, []); - return this.buildFrom(matches); - }; + let phrase = this.list.find((p, i) => { + let doc = this.buildFrom([p]); + doc.from = null; //it's not a child/parent - var _04Tag = { - tag: tag, - tagSafe: tagSafe, - unTag: unTag, - canBe: canBe - }; - /* run each phrase through a function, and create a new document */ + return fn(doc, i); + }); - var map = function map(fn) { - var _this = this; + if (phrase) { + return this.buildFrom([phrase]); + } - if (!fn) { - return this; - } + return undefined; + }; + /** return true or false if there is one matching phrase */ - var list = this.list.map(function (p, i) { - var doc = _this.buildFrom([p]); - doc.from = null; //it's not a child/parent + _05Loops.some = function (fn) { + if (!fn) { + return this; + } - var res = fn(doc, i); // if its a doc, return one result + return this.list.some((p, i) => { + let doc = this.buildFrom([p]); + doc.from = null; //it's not a child/parent - if (res && res.list && res.list[0]) { - return res.list[0]; - } + return fn(doc, i); + }); + }; + /** sample a subset of the results */ - return res; - }); //remove nulls - list = list.filter(function (x) { - return x; - }); // return an empty response + _05Loops.random = function (n) { + if (!this.found) { + return this; + } - if (list.length === 0) { - return this.buildFrom(list); - } // if it is not a list of Phrase objects, then don't try to make a Doc object + let r = Math.floor(Math.random() * this.list.length); + if (n === undefined) { + let list = [this.list[r]]; + return this.buildFrom(list); + } //prevent it from going over the end - if (_typeof(list[0]) !== 'object' || list[0].isA !== 'Phrase') { - return list; - } - return this.buildFrom(list); - }; - /** run a function on each phrase */ + if (r + n > this.length) { + r = this.length - n; + r = r < 0 ? 0 : r; + } + return this.slice(r, r + n); + }; + + var _06Lookup = {}; + + const tokenize$4 = function (str) { + return str.split(/[ -]/g); + }; // take a list of strings + // look them up in the document - var forEach = function forEach(fn, detachParent) { - var _this2 = this; - if (!fn) { - return this; - } + const buildTree = function (termList) { + let values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + let root = {}; // parse our input + + termList.forEach((str, i) => { + let val = true; + + if (values[i] !== undefined) { + val = values[i]; + } // some rough normalization - this.list.forEach(function (p, i) { - var sub = _this2.buildFrom([p]); // if we're doing fancy insertions, we may want to skip updating the parent each time. + str = (str || '').toLowerCase(); + str = str.replace(/[,;.!?]+$/, ''); + let arr = tokenize$4(str).map(s => s.trim()); + root[arr[0]] = root[arr[0]] || {}; - if (detachParent === true) { - sub.from = null; // - } + if (arr.length === 1) { + root[arr[0]].value = val; + } else { + root[arr[0]].more = root[arr[0]].more || []; + root[arr[0]].more.push({ + rest: arr.slice(1), + value: val + }); + } + }); // sort by longest-first? + // console.log(JSON.stringify(root, null, 2)) + + return root; + }; + + const fastLookup = function (termList, values, doc) { + let root = buildTree(termList, values); + let found = []; // each phrase + + for (let i = 0; i < doc.list.length; i++) { + const p = doc.list[i]; + let terms = p.terms(); + let words = terms.map(t => t.reduced); // each word + + for (let w = 0; w < words.length; w++) { + if (root[words[w]] !== undefined) { + // is it a multi-word match? + if (root[words[w]].more !== undefined) { + root[words[w]].more.forEach(more => { + // is it too-long? + if (words[w + more.rest.length] === undefined) { + return; + } // compare each subsequent term + + + let everyTerm = more.rest.every((word, r) => { + return word === words[w + r + 1]; + }); + + if (everyTerm === true) { + found.push({ + id: p.terms()[w].id, + value: more.value, + length: more.rest.length + 1 + }); + } + }); + } // is it a single-word match? + + + if (root[words[w]].value !== undefined) { + found.push({ + id: p.terms()[w].id, + value: root[words[w]].value, + length: 1 + }); + } + } + } + } + + return found; + }; + + var _lookup = fastLookup; + + (function (exports) { + const lookup = _lookup; // compare one term and one match + // const doesMatch = function(term, str) { + // if (str === '') { + // return false + // } + // return term.reduced === str || term.implicit === str || term.root === str || term.text.toLowerCase() === str + // } + + const isObject = function (obj) { + return obj && Object.prototype.toString.call(obj) === '[object Object]'; + }; + /** lookup an array of words or phrases */ + + + exports.lookup = function (arr) { + let values = []; //is it a {key:val} object? + + let isObj = isObject(arr); + + if (isObj === true) { + arr = Object.keys(arr).map(k => { + values.push(arr[k]); + return k; + }); + } // support .lookup('foo') + + + if (typeof arr === 'string') { + arr = [arr]; + } //make sure we go fast. + + + if (this._cache.set !== true) { + this.cache(); + } + + let found = lookup(arr, values, this); + let p = this.list[0]; // make object response + + if (isObj === true) { + let byVal = {}; + found.forEach(o => { + byVal[o.value] = byVal[o.value] || []; + byVal[o.value].push(p.buildFrom(o.id, o.length)); + }); + Object.keys(byVal).forEach(k => { + byVal[k] = this.buildFrom(byVal[k]); + }); + return byVal; + } // otherwise, make array response: + + + found = found.map(o => p.buildFrom(o.id, o.length)); + return this.buildFrom(found); + }; + + exports.lookUp = exports.lookup; + })(_06Lookup); + + var _07Cache = {}; + /** freeze the current state of the document, for speed-purposes*/ + + _07Cache.cache = function (options) { + options = options || {}; + let words = {}; + let tags = {}; + this._cache.words = words; + this._cache.tags = tags; + this._cache.set = true; + this.list.forEach((p, i) => { + p.cache = p.cache || {}; //p.terms get cached automatically + + let terms = p.terms(); // cache all the terms + + terms.forEach(t => { + if (words[t.reduced] && !words.hasOwnProperty(t.reduced)) { + return; //skip prototype words + } + + words[t.reduced] = words[t.reduced] || []; + words[t.reduced].push(i); + Object.keys(t.tags).forEach(tag => { + tags[tag] = tags[tag] || []; + tags[tag].push(i); + }); // cache root-form on Term, too + + if (options.root) { + t.setRoot(this.world); + words[t.root] = [i]; + } + }); + }); + return this; + }; + /** un-freezes the current state of the document, so it may be transformed */ + + + _07Cache.uncache = function () { + this._cache = {}; + this.list.forEach(p => { + p.cache = {}; + }); // do parents too? + + this.parents().forEach(doc => { + doc._cache = {}; + doc.list.forEach(p => { + p.cache = {}; + }); + }); + return this; + }; + + var _01Replace = {}; + const tokenize$3 = _01Tokenizer; + + const titleCase$1 = str => { + return str.charAt(0).toUpperCase() + str.substr(1); + }; + /** substitute-in new content */ + + + _01Replace.replaceWith = function (replace) { + let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (!replace) { + return this.delete(); + } //support old-style params + + + if (options === true) { + options = { + keepTags: true + }; + } + + if (options === false) { + options = { + keepTags: false + }; + } + + options = options || {}; // clear the cache + + this.uncache(); // return this + + this.list.forEach(p => { + let input = replace; // accept a function for replace + + if (typeof replace === 'function') { + input = replace(p); + } - fn(sub, i); - }); - return this; - }; - /** return only the phrases that return true */ + let newPhrases; // accept a Doc object to replace + if (input && typeof input === 'object' && input.isA === 'Doc') { + newPhrases = input.list; + this.pool().merge(input.pool()); + } else if (typeof input === 'string') { + //input is a string + if (options.keepCase !== false && p.terms(0).isTitleCase()) { + input = titleCase$1(input); + } + + newPhrases = tokenize$3(input, this.world, this.pool()); //tag the new phrases + + let tmpDoc = this.buildFrom(newPhrases); + tmpDoc.tagger(); + newPhrases = tmpDoc.list; + } else { + return; //don't even bother + } // try to keep its old tags, if appropriate - var filter = function filter(fn) { - var _this3 = this; - if (!fn) { - return this; - } + if (options.keepTags === true) { + let oldTags = p.json({ + terms: { + tags: true + } + }).terms; + newPhrases[0].terms().forEach((t, i) => { + if (oldTags[i]) { + t.tagSafe(oldTags[i].tags, 'keptTag', this.world); + } + }); + } - var list = this.list.filter(function (p, i) { - var doc = _this3.buildFrom([p]); + p.replace(newPhrases[0], this); //Oneday: support multi-sentence replacements + }); + return this; + }; + /** search and replace match with new content */ - doc.from = null; //it's not a child/parent - return fn(doc, i); - }); - return this.buildFrom(list); - }; - /** return a document with only the first phrase that matches */ + _01Replace.replace = function (match, replace, options) { + // if there's no 2nd param, use replaceWith + if (replace === undefined) { + return this.replaceWith(match, options); + } + this.match(match).replaceWith(replace, options); + return this; + }; - var find = function find(fn) { - var _this4 = this; + var _02Insert = {}; - if (!fn) { - return this; - } + (function (exports) { + const tokenize = _01Tokenizer; - var phrase = this.list.find(function (p, i) { - var doc = _this4.buildFrom([p]); + const isObject = function (obj) { + return obj && Object.prototype.toString.call(obj) === '[object Object]'; + }; // if it's empty, just create the phrase - doc.from = null; //it's not a child/parent - return fn(doc, i); - }); + const makeNew = function (str, doc) { + let phrase = tokenize(str, doc.world)[0]; //assume it's one sentence, for now - if (phrase) { - return this.buildFrom([phrase]); - } + let tmpDoc = doc.buildFrom([phrase]); + tmpDoc.tagger(); + doc.list = tmpDoc.list; + return doc; + }; + /** add these new terms to the end*/ - return undefined; - }; - /** return true or false if there is one matching phrase */ + exports.append = function () { + let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var some = function some(fn) { - var _this5 = this; + if (!str) { + return this; + } // if it's empty, just create the phrase - if (!fn) { - return this; - } - return this.list.some(function (p, i) { - var doc = _this5.buildFrom([p]); + if (!this.found) { + return makeNew(str, this); + } // clear the cache - doc.from = null; //it's not a child/parent - return fn(doc, i); - }); - }; - /** sample a subset of the results */ + this.uncache(); //add it to end of every phrase + this.list.forEach(p => { + //build it + let phrase; - var random = function random(n) { - if (!this.found) { - return this; - } + if (isObject(str) && str.isA === 'Doc') { + phrase = str.list[0].clone(); //use the first phrase + } else if (typeof str === 'string') { + phrase = tokenize(str, this.world, this.pool())[0]; //assume it's one sentence, for now + } //tag it - var r = Math.floor(Math.random() * this.list.length); - if (n === undefined) { - var list = [this.list[r]]; - return this.buildFrom(list); - } //prevent it from going over the end + let tmpDoc = this.buildFrom([phrase]); + tmpDoc.tagger(); // push it onto the end + p.append(phrase, this); + }); + return this; + }; - if (r + n > this.length) { - r = this.length - n; - r = r < 0 ? 0 : r; - } + exports.insertAfter = exports.append; + exports.insertAt = exports.append; + /** add these new terms to the front*/ - return this.slice(r, r + n); - }; - /** combine each phrase into a new data-structure */ - // exports.reduce = function(fn, h) { - // let list = this.list.reduce((_h, ts) => { - // let doc = this.buildFrom([ts]) - // doc.from = null //it's not a child/parent - // return fn(_h, doc) - // }, h) - // return this.buildFrom(list) - // } - - - var _05Loops = { - map: map, - forEach: forEach, - filter: filter, - find: find, - some: some, - random: random - }; // const tokenize = require('../../01-tokenizer/02-words') - - var tokenize = function tokenize(str) { - return str.split(/[ -]/g); - }; // take a list of strings - // look them up in the document - - - var buildTree = function buildTree(termList) { - var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - var root = {}; // parse our input - - termList.forEach(function (str, i) { - var val = true; - - if (values[i] !== undefined) { - val = values[i]; - } // some rough normalization - - - str = (str || '').toLowerCase(); - str = str.replace(/[,;.!?]+$/, ''); - var arr = tokenize(str).map(function (s) { - return s.trim(); - }); - root[arr[0]] = root[arr[0]] || {}; - - if (arr.length === 1) { - root[arr[0]].value = val; - } else { - root[arr[0]].more = root[arr[0]].more || []; - root[arr[0]].more.push({ - rest: arr.slice(1), - value: val - }); - } - }); // sort by longest-first? - // console.log(JSON.stringify(root, null, 2)) - - return root; - }; - - var fastLookup = function fastLookup(termList, values, doc) { - var root = buildTree(termList, values); - var found = []; // each phrase - - var _loop = function _loop(i) { - var p = doc.list[i]; - var terms = p.terms(); - var words = terms.map(function (t) { - return t.reduced; - }); // each word - - var _loop2 = function _loop2(w) { - if (root[words[w]] !== undefined) { - // is it a multi-word match? - if (root[words[w]].more !== undefined) { - root[words[w]].more.forEach(function (more) { - // is it too-long? - if (words[w + more.rest.length] === undefined) { - return; - } // compare each subsequent term - - - var everyTerm = more.rest.every(function (word, r) { - return word === words[w + r + 1]; - }); - - if (everyTerm === true) { - found.push({ - id: p.terms()[w].id, - value: more.value, - length: more.rest.length + 1 - }); - } - }); - } // is it a single-word match? - - - if (root[words[w]].value !== undefined) { - found.push({ - id: p.terms()[w].id, - value: root[words[w]].value, - length: 1 - }); - } - } - }; - - for (var w = 0; w < words.length; w++) { - _loop2(w); - } - }; - - for (var i = 0; i < doc.list.length; i++) { - _loop(i); - } - - return found; - }; - - var _lookup = fastLookup; - - var _06Lookup = createCommonjsModule(function (module, exports) { - // compare one term and one match - // const doesMatch = function(term, str) { - // if (str === '') { - // return false - // } - // return term.reduced === str || term.implicit === str || term.root === str || term.text.toLowerCase() === str - // } - var isObject = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; - }; - /** lookup an array of words or phrases */ - - - exports.lookup = function (arr) { - var _this = this; - - var values = []; //is it a {key:val} object? - - var isObj = isObject(arr); - - if (isObj === true) { - arr = Object.keys(arr).map(function (k) { - values.push(arr[k]); - return k; - }); - } // support .lookup('foo') - - - if (typeof arr === 'string') { - arr = [arr]; - } //make sure we go fast. - - - if (this._cache.set !== true) { - this.cache(); - } - - var found = _lookup(arr, values, this); - - var p = this.list[0]; // make object response - - if (isObj === true) { - var byVal = {}; - found.forEach(function (o) { - byVal[o.value] = byVal[o.value] || []; - byVal[o.value].push(p.buildFrom(o.id, o.length)); - }); - Object.keys(byVal).forEach(function (k) { - byVal[k] = _this.buildFrom(byVal[k]); - }); - return byVal; - } // otherwise, make array response: - - - found = found.map(function (o) { - return p.buildFrom(o.id, o.length); - }); - return this.buildFrom(found); - }; - - exports.lookUp = exports.lookup; - }); - /** freeze the current state of the document, for speed-purposes*/ - - - var cache = function cache(options) { - var _this = this; - - options = options || {}; - var words = {}; - var tags = {}; - this._cache.words = words; - this._cache.tags = tags; - this._cache.set = true; - this.list.forEach(function (p, i) { - p.cache = p.cache || {}; //p.terms get cached automatically - - var terms = p.terms(); // cache all the terms - - terms.forEach(function (t) { - if (words[t.reduced] && !words.hasOwnProperty(t.reduced)) { - return; //skip prototype words - } + exports.prepend = function (str) { + if (!str) { + return this; + } // if it's empty, just create the phrase - words[t.reduced] = words[t.reduced] || []; - words[t.reduced].push(i); - Object.keys(t.tags).forEach(function (tag) { - tags[tag] = tags[tag] || []; - tags[tag].push(i); - }); // cache root-form on Term, too - - if (options.root) { - t.setRoot(_this.world); - words[t.root] = [i]; - } - }); - }); - return this; - }; - /** un-freezes the current state of the document, so it may be transformed */ - - - var uncache = function uncache() { - this._cache = {}; - this.list.forEach(function (p) { - p.cache = {}; - }); // do parents too? - - this.parents().forEach(function (doc) { - doc._cache = {}; - doc.list.forEach(function (p) { - p.cache = {}; - }); - }); - return this; - }; - - var _07Cache = { - cache: cache, - uncache: uncache - }; - - var titleCase$1 = function titleCase(str) { - return str.charAt(0).toUpperCase() + str.substr(1); - }; - /** substitute-in new content */ - - - var replaceWith = function replaceWith(replace) { - var _this = this; - - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - if (!replace) { - return this["delete"](); - } //support old-style params - - - if (options === true) { - options = { - keepTags: true - }; - } - - if (options === false) { - options = { - keepTags: false - }; - } - options = options || {}; // clear the cache + if (!this.found) { + return makeNew(str, this); + } // clear the cache - this.uncache(); // return this - this.list.forEach(function (p) { - var input = replace; // accept a function for replace + this.uncache(); //add it to start of every phrase - if (typeof replace === 'function') { - input = replace(p); - } + this.list.forEach(p => { + //build it + let phrase; - var newPhrases; // accept a Doc object to replace + if (isObject(str) && str.isA === 'Doc') { + phrase = str.list[0].clone(); //use the first phrase + } else if (typeof str === 'string') { + phrase = tokenize(str, this.world, this.pool())[0]; //assume it's one sentence, for now + } //tag it - if (input && _typeof(input) === 'object' && input.isA === 'Doc') { - newPhrases = input.list; - _this.pool().merge(input.pool()); - } else if (typeof input === 'string') { - //input is a string - if (options.keepCase !== false && p.terms(0).isTitleCase()) { - input = titleCase$1(input); - } + let tmpDoc = this.buildFrom([phrase]); + tmpDoc.tagger(); // add it to the start - newPhrases = _01Tokenizer(input, _this.world, _this.pool()); //tag the new phrases + p.prepend(phrase, this); + }); + return this; + }; - var tmpDoc = _this.buildFrom(newPhrases); + exports.insertBefore = exports.prepend; + /** add these new things to the end*/ - tmpDoc.tagger(); - newPhrases = tmpDoc.list; - } else { - return; //don't even bother - } // try to keep its old tags, if appropriate + exports.concat = function () { + // clear the cache + this.uncache(); + let list = this.list.slice(0); //repeat for any number of params + for (let i = 0; i < arguments.length; i++) { + let arg = arguments[i]; //support a fresh string - if (options.keepTags === true) { - var oldTags = p.json({ - terms: { - tags: true - } - }).terms; - newPhrases[0].terms().forEach(function (t, i) { - if (oldTags[i]) { - t.tagSafe(oldTags[i].tags, 'keptTag', _this.world); - } - }); - } + if (typeof arg === 'string') { + let arr = tokenize(arg, this.world); //TODO: phrase.tagger()? - p.replace(newPhrases[0], _this); //Oneday: support multi-sentence replacements - }); - return this; - }; - /** search and replace match with new content */ + list = list.concat(arr); + } else if (arg.isA === 'Doc') { + list = list.concat(arg.list); + } else if (arg.isA === 'Phrase') { + list.push(arg); + } + } + return this.buildFrom(list); + }; + /** fully remove these terms from the document */ - var replace = function replace(match, _replace, options) { - // if there's no 2nd param, use replaceWith - if (_replace === undefined) { - return this.replaceWith(match, options); - } - this.match(match).replaceWith(_replace, options); - return this; - }; + exports.delete = function (match) { + // clear the cache + this.uncache(); + let toRemove = this; + + if (match) { + toRemove = this.match(match); + } + + toRemove.list.forEach(phrase => phrase.delete(this)); + return this; + }; // aliases + + + exports.remove = exports.delete; + })(_02Insert); + + var _01Text = {}; + const shouldTrim = { + clean: true, + reduced: true, + root: true + }; + /** return the document as text */ + + _01Text.text = function (options) { + options = options || {}; //are we showing every phrase? + + let showFull = false; + + if (this.parents().length === 0) { + showFull = true; + } // cache roots, if necessary + + + if (options === 'root' || typeof options === 'object' && options.root) { + this.list.forEach(p => { + p.terms().forEach(t => { + if (t.root === null) { + t.setRoot(this.world); + } + }); + }); + } + + let txt = this.list.reduce((str, p, i) => { + const trimPre = !showFull && i === 0; + const trimPost = !showFull && i === this.list.length - 1; + return str + p.text(options, trimPre, trimPost); + }, ''); // clumsy final trim of leading/trailing whitespace + + if (shouldTrim[options] === true || options.reduced === true || options.clean === true || options.root === true) { + txt = txt.trim(); + } + + return txt; + }; + + var _02Json = {}; + + const termOffsets = function (doc) { + let elapsed = 0; + let index = 0; + let offsets = {}; + doc.termList().forEach(term => { + offsets[term.id] = { + index: index, + start: elapsed + term.pre.length, + length: term.text.length + }; + elapsed += term.pre.length + term.text.length + term.post.length; + index += 1; + }); + return offsets; + }; + + const calcOffset = function (doc, result, options) { + // calculate offsets for each term + let offsets = termOffsets(doc.all()); // add index values + + if (options.terms.index || options.index) { + result.forEach(o => { + o.terms.forEach(t => { + t.index = offsets[t.id].index; + }); + o.index = o.terms[0].index; + }); + } // add offset values + + + if (options.terms.offset || options.offset) { + result.forEach(o => { + o.terms.forEach(t => { + t.offset = offsets[t.id] || {}; + }); // let len = o.terms.reduce((n, t, i) => { + // n += t.offset.length || 0 + // //add whitespace, too + // console.log(t.post) + // return n + // }, 0) + // The offset information for the entire doc starts at (or just before) + // the first term, and is as long as the whole text. The code originally + // copied the entire offset value from terms[0], but since we're now + // overriding 2 of the three fields, it's cleaner to just create an all- + // new object and not pretend it's "just" the same as terms[0]. + + o.offset = { + index: o.terms[0].offset.index, + start: o.terms[0].offset.start - o.text.indexOf(o.terms[0].text), + length: o.text.length + }; + }); + } + }; + + var _offset = calcOffset; + + (function (exports) { + const offsets = _offset; + const jsonDefaults = { + text: true, + terms: true, + trim: true + }; //some options have dependents + + const setOptions = function (options) { + options = Object.assign({}, jsonDefaults, options); + + if (options.unique) { + options.reduced = true; + } //offset calculation requires these options to be on + + + if (options.offset) { + options.text = true; + + if (!options.terms || options.terms === true) { + options.terms = {}; + } + + options.terms.offset = true; + } + + if (options.index || options.terms.index) { + options.terms = options.terms === true ? {} : options.terms; + options.terms.id = true; + } + + return options; + }; + /** pull out desired metadata from the document */ + + + exports.json = function () { + let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + //support json(3) format + if (typeof options === 'number' && this.list[options]) { + return this.list[options].json(jsonDefaults); + } + + options = setOptions(options); // cache root strings beforehand, if necessary + + if (options.root === true) { + this.list.forEach(p => { + p.terms().forEach(t => { + if (t.root === null) { + t.setRoot(this.world); + } + }); + }); + } + + let result = this.list.map(p => { + return p.json(options, this.world); + }); // add offset and index data for each term + + if (options.terms.offset || options.offset || options.terms.index || options.index) { + offsets(this, result, options); + } // add frequency #s + + + if (options.frequency || options.freq || options.count) { + let obj = {}; + this.list.forEach(p => { + let str = p.text('reduced'); + obj[str] = obj[str] || 0; + obj[str] += 1; + }); + this.list.forEach((p, i) => { + result[i].count = obj[p.text('reduced')]; + }); + } // remove duplicates + + + if (options.unique) { + let already = {}; + result = result.filter(o => { + if (already[o.reduced] === true) { + return false; + } + + already[o.reduced] = true; + return true; + }); + } + + return result; + }; //aliases + + + exports.data = exports.json; + })(_02Json); + + var _03Out = {}; + var _debug = { + exports: {} + }; + + (function (module) { + // https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color + const reset = '\x1b[0m'; + + const padEnd = function (str, width) { + str = str.toString(); + + while (str.length < width) { + str += ' '; + } + + return str; + }; + + function isClientSide() { + return typeof window !== 'undefined' && window.document; + } // some nice colors for client-side debug + + + const css = { + green: '#7f9c6c', + red: '#914045', + blue: '#6699cc', + magenta: '#6D5685', + cyan: '#2D85A8', + yellow: '#e6d7b3', + black: '#303b50' + }; + + const logClientSide = function (doc) { + let tagset = doc.world.tags; + doc.list.forEach(p => { + console.log('\n%c"' + p.text() + '"', 'color: #e6d7b3;'); + let terms = p.terms(); + terms.forEach(t => { + let tags = Object.keys(t.tags); + let text = t.text || '-'; + + if (t.implicit) { + text = '[' + t.implicit + ']'; + } + + let word = "'" + text + "'"; + word = padEnd(word, 8); + let found = tags.find(tag => tagset[tag] && tagset[tag].color); + let color = 'steelblue'; + + if (tagset[found]) { + color = tagset[found].color; + color = css[color]; + } + + console.log(" ".concat(word, " - %c").concat(tags.join(', ')), "color: ".concat(color || 'steelblue', ";")); + }); + }); + }; //cheaper than requiring chalk + + + const cli = { + green: function (str) { + return '\x1b[32m' + str + reset; + }, + red: function (str) { + return '\x1b[31m' + str + reset; + }, + blue: function (str) { + return '\x1b[34m' + str + reset; + }, + magenta: function (str) { + return '\x1b[35m' + str + reset; + }, + cyan: function (str) { + return '\x1b[36m' + str + reset; + }, + yellow: function (str) { + return '\x1b[33m' + str + reset; + }, + black: function (str) { + return '\x1b[30m' + str + reset; + } + }; + + const tagString = function (tags, world) { + tags = tags.map(tag => { + if (!world.tags.hasOwnProperty(tag)) { + return tag; + } + + const c = world.tags[tag].color || 'blue'; + return cli[c](tag); + }); + return tags.join(', '); + }; //output some helpful stuff to the console + + + const debug = function (doc) { + if (isClientSide()) { + logClientSide(doc); + return doc; + } + + console.log(cli.blue('=====')); + doc.list.forEach(p => { + console.log(cli.blue(' -----')); + let terms = p.terms(); + terms.forEach(t => { + let tags = Object.keys(t.tags); + let text = t.text || '-'; + + if (t.implicit) { + text = '[' + t.implicit + ']'; + } + + { + text = cli.yellow(text); + } + let word = "'" + text + "'"; + word = padEnd(word, 18); + let str = cli.blue(' | ') + word + ' - ' + tagString(tags, doc.world); + console.log(str); + }); + }); + console.log(''); + return doc; + }; + + module.exports = debug; + })(_debug); + + const topk$1 = function (doc) { + let list = doc.json({ + text: false, + terms: false, + reduced: true + }); // combine them + + let obj = {}; + list.forEach(o => { + if (!obj[o.reduced]) { + o.count = 0; + obj[o.reduced] = o; + } + + obj[o.reduced].count += 1; + }); + let arr = Object.keys(obj).map(k => obj[k]); // sort them + + arr.sort((a, b) => { + if (a.count > b.count) { + return -1; + } else if (a.count < b.count) { + return 1; + } + + return 0; + }); + return arr; + }; + + var _topk = topk$1; + const debug = _debug.exports; + const topk = _topk; + /** pretty-print the current document and its tags */ + + _03Out.debug = function () { + debug(this); + return this; + }; + /** some named output formats */ + + + _03Out.out = function (method) { + if (method === 'text') { + return this.text(); + } + + if (method === 'normal') { + return this.text('normal'); + } + + if (method === 'json') { + return this.json(); + } + + if (method === 'offset' || method === 'offsets') { + return this.json({ + offset: true + }); + } + + if (method === 'array') { + return this.json({ + terms: false + }).map(obj => obj.text).filter(str => str); + } + + if (method === 'freq' || method === 'frequency') { + return topk(this); + } + + if (method === 'terms') { + let list = []; + this.json({ + text: false, + terms: { + text: true + } + }).forEach(obj => { + let terms = obj.terms.map(t => t.text); + terms = terms.filter(t => t); + list = list.concat(terms); + }); + return list; + } + + if (method === 'tags') { + return this.list.map(p => { + return p.terms().reduce((h, t) => { + h[t.clean || t.implicit] = Object.keys(t.tags); + return h; + }, {}); + }); + } + + if (method === 'debug') { + debug(this); + return this; + } + + return this.text(); + }; + + var _01Sort = {}; + const methods$9 = { + /** alphabetical order */ + alpha: (a, b) => { + let left = a.text('clean'); + let right = b.text('clean'); + + if (left < right) { + return -1; + } + + if (left > right) { + return 1; + } + + return 0; + }, + + /** count the # of characters of each match */ + length: (a, b) => { + let left = a.text().trim().length; + let right = b.text().trim().length; + + if (left < right) { + return 1; + } + + if (left > right) { + return -1; + } + + return 0; + }, + + /** count the # of terms in each match */ + wordCount: (a, b) => { + let left = a.wordCount(); + let right = b.wordCount(); + + if (left < right) { + return 1; + } + + if (left > right) { + return -1; + } + + return 0; + } + }; + /** sort by # of duplicates in the document*/ + + const byFreq = function (doc) { + let counts = {}; + const options = { + case: true, + punctuation: false, + whitespace: true, + unicode: true + }; + doc.list.forEach(p => { + let str = p.text(options); + counts[str] = counts[str] || 0; + counts[str] += 1; + }); // sort by freq + + doc.list.sort((a, b) => { + let left = counts[a.text(options)]; + let right = counts[b.text(options)]; + + if (left < right) { + return 1; + } + + if (left > right) { + return -1; + } + + return 0; + }); + return doc; + }; // order results 'chronologically', or document-order + + + const sortSequential = function (doc) { + let order = {}; + doc.json({ + terms: { + offset: true + } + }).forEach(o => { + order[o.terms[0].id] = o.terms[0].offset.start; + }); + doc.list = doc.list.sort((a, b) => { + if (order[a.start] > order[b.start]) { + return 1; + } else if (order[a.start] < order[b.start]) { + return -1; + } + + return 0; + }); + return doc; + }; //aliases + + + methods$9.alphabetical = methods$9.alpha; + methods$9.wordcount = methods$9.wordCount; // aliases for sequential ordering + + const seqNames = { + index: true, + sequence: true, + seq: true, + sequential: true, + chron: true, + chronological: true + }; + /** re-arrange the order of the matches (in place) */ + + _01Sort.sort = function (input) { + input = input || 'alpha'; //do this one up-front + + if (input === 'freq' || input === 'frequency' || input === 'topk') { + return byFreq(this); + } + + if (seqNames.hasOwnProperty(input)) { + return sortSequential(this); + } + + input = methods$9[input] || input; // apply sort method on each phrase + + if (typeof input === 'function') { + this.list = this.list.sort(input); + return this; + } + + return this; + }; + /** reverse the order of the matches, but not the words */ + + + _01Sort.reverse = function () { + let list = [].concat(this.list); + list = list.reverse(); + return this.buildFrom(list); + }; + /** remove any duplicate matches */ + + + _01Sort.unique = function () { + let list = [].concat(this.list); + let obj = {}; + list = list.filter(p => { + let str = p.text('reduced').trim() || p.text('implicit').trim(); + + if (obj.hasOwnProperty(str) === true) { + return false; + } + + obj[str] = true; + return true; + }); + return this.buildFrom(list); + }; + + var _02Normalize = {}; + const killUnicode = unicode_1; + const isPunct = /[\[\]{}⟨⟩:,،、‒–—―…‹›«»‐\-;\/⁄·*\•^†‡°¡¿※№÷׺ª%‰=‱¶§~|‖¦©℗®℠™¤₳฿]/g; + const quotes = /['‘’“”"′″‴]+/g; + const methods$8 = { + // cleanup newlines and extra spaces + whitespace: function (doc) { + let termArr = doc.list.map(ts => ts.terms()); + termArr.forEach((terms, o) => { + terms.forEach((t, i) => { + // keep dashes between words + if (t.hasDash() === true) { + t.post = ' - '; + return; + } // remove existing spaces + + + t.pre = t.pre.replace(/\s/g, ''); + t.post = t.post.replace(/\s/g, ''); //last word? ensure there's a next sentence. + + if (terms.length - 1 === i && !termArr[o + 1]) { + return; + } // no extra spaces for contractions + + + if (t.implicit && Boolean(t.text) === true) { + return; + } // no extra spaces for hyphenated words + + + if (t.hasHyphen() === true) { + return; + } + + t.post += ' '; + }); + }); + }, + punctuation: function (termList) { + termList.forEach(t => { + // space between hyphenated words + if (t.hasHyphen() === true) { + t.post = ' '; + } + + t.pre = t.pre.replace(isPunct, ''); + t.post = t.post.replace(isPunct, ''); // elipses + + t.post = t.post.replace(/\.\.\./, ''); // only allow one exclamation + + if (/!/.test(t.post) === true) { + t.post = t.post.replace(/!/g, ''); + t.post = '!' + t.post; + } // only allow one question mark + + + if (/\?/.test(t.post) === true) { + t.post = t.post.replace(/[\?!]*/, ''); + t.post = '?' + t.post; + } + }); + }, + unicode: function (termList) { + termList.forEach(t => { + if (t.isImplicit() === true) { + return; + } + + t.text = killUnicode(t.text); + }); + }, + quotations: function (termList) { + termList.forEach(t => { + t.post = t.post.replace(quotes, ''); + t.pre = t.pre.replace(quotes, ''); + }); + }, + adverbs: function (doc) { + doc.match('#Adverb').not('(not|nary|seldom|never|barely|almost|basically|so)').remove(); + }, + // remove the '.' from 'Mrs.' (safely) + abbreviations: function (doc) { + doc.list.forEach(ts => { + let terms = ts.terms(); + terms.forEach((t, i) => { + if (t.tags.Abbreviation === true && terms[i + 1]) { + t.post = t.post.replace(/^\./, ''); + } + }); + }); + } + }; + var _methods = methods$8; + const methods$7 = _methods; + const defaults = { + // light + whitespace: true, + unicode: true, + punctuation: true, + emoji: true, + acronyms: true, + abbreviations: true, + // medium + case: false, + contractions: false, + parentheses: false, + quotations: false, + adverbs: false, + // heavy (loose legibility) + possessives: false, + verbs: false, + nouns: false, + honorifics: false // pronouns: true, + + }; + const mapping = { + light: {}, + medium: { + case: true, + contractions: true, + parentheses: true, + quotations: true, + adverbs: true + } + }; + mapping.heavy = Object.assign({}, mapping.medium, { + possessives: true, + verbs: true, + nouns: true, + honorifics: true + }); + /** common ways to clean-up the document, and reduce noise */ + + _02Normalize.normalize = function (options) { + options = options || {}; // support named forms + + if (typeof options === 'string') { + options = mapping[options] || {}; + } // set defaults + + + options = Object.assign({}, defaults, options); // clear the cache + + this.uncache(); + let termList = this.termList(); // lowercase things + + if (options.case) { + this.toLowerCase(); + } //whitespace + + + if (options.whitespace) { + methods$7.whitespace(this); + } // unicode: é -> e + + + if (options.unicode) { + methods$7.unicode(termList); + } //punctuation - keep sentence punctation, quotes, parenths + + + if (options.punctuation) { + methods$7.punctuation(termList); + } // remove ':)' + + + if (options.emoji) { + this.remove('(#Emoji|#Emoticon)'); + } // 'f.b.i.' -> 'FBI' + + + if (options.acronyms) { + this.acronyms().strip(); // .toUpperCase() + } // remove period from abbreviations + + + if (options.abbreviations) { + methods$7.abbreviations(this); + } // --Medium methods-- + // `isn't` -> 'is not' - var _01Replace = { - replaceWith: replaceWith, - replace: replace - }; - var _02Insert = createCommonjsModule(function (module, exports) { - var isObject = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; - }; // if it's empty, just create the phrase + if (options.contraction || options.contractions) { + this.contractions().expand(); + } // '(word)' -> 'word' - var makeNew = function makeNew(str, doc) { - var phrase = _01Tokenizer(str, doc.world)[0]; //assume it's one sentence, for now + if (options.parentheses) { + this.parentheses().unwrap(); + } // remove "" punctuation - var tmpDoc = doc.buildFrom([phrase]); - tmpDoc.tagger(); - doc.list = tmpDoc.list; - return doc; - }; - /** add these new terms to the end*/ + if (options.quotations || options.quotes) { + methods$7.quotations(termList); + } // remove any un-necessary adverbs - exports.append = function () { - var _this = this; + if (options.adverbs) { + methods$7.adverbs(this); + } // --Heavy methods-- + // `cory hart's -> cory hart' - var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - if (!str) { - return this; - } // if it's empty, just create the phrase + if (options.possessive || options.possessives) { + this.possessives().strip(); + } // 'he walked' -> 'he walk' - if (!this.found) { - return makeNew(str, this); - } // clear the cache + if (options.verbs) { + this.verbs().toInfinitive(); + } // 'three dogs' -> 'three dog' - this.uncache(); //add it to end of every phrase + if (options.nouns || options.plurals) { + this.nouns().toSingular(); + } // remove 'Mr.' from 'Mr John Smith' - this.list.forEach(function (p) { - //build it - var phrase; - if (isObject(str) && str.isA === 'Doc') { - phrase = str.list[0].clone(); //use the first phrase - } else if (typeof str === 'string') { - phrase = _01Tokenizer(str, _this.world, _this.pool())[0]; //assume it's one sentence, for now - } //tag it + if (options.honorifics) { + this.remove('#Honorific'); + } + return this; + }; - var tmpDoc = _this.buildFrom([phrase]); + var _03Split = {}; - tmpDoc.tagger(); // push it onto the end + (function (exports) { + const parseSyntax = matchSyntax; + /** return a Document with three parts for every match + * seperate everything before the word, as a new phrase + */ - p.append(phrase, _this); - }); - return this; - }; + exports.splitOn = function (reg) { + // if there's no match, split parent, instead + if (!reg) { + let parent = this.parent(); + return parent.splitOn(this); + } //start looking for a match.. - exports.insertAfter = exports.append; - exports.insertAt = exports.append; - /** add these new terms to the front*/ - exports.prepend = function (str) { - var _this2 = this; + let regs = parseSyntax(reg); + let matches = []; + this.list.forEach(p => { + let foundEm = p.match(regs); //no match here, add full sentence - if (!str) { - return this; - } // if it's empty, just create the phrase + if (foundEm.length === 0) { + matches.push(p); + return; + } // we found something here. - if (!this.found) { - return makeNew(str, this); - } // clear the cache + let carry = p; + foundEm.forEach(found => { + let parts = carry.splitOn(found); // add em in + if (parts.before) { + matches.push(parts.before); + } - this.uncache(); //add it to start of every phrase + if (parts.match) { + matches.push(parts.match); + } // start matching now on the end - this.list.forEach(function (p) { - //build it - var phrase; - if (isObject(str) && str.isA === 'Doc') { - phrase = str.list[0].clone(); //use the first phrase - } else if (typeof str === 'string') { - phrase = _01Tokenizer(str, _this2.world, _this2.pool())[0]; //assume it's one sentence, for now - } //tag it + carry = parts.after; + }); // add that last part + if (carry) { + matches.push(carry); + } + }); + return this.buildFrom(matches); + }; + /** return a Document with two parts for every match + * seperate everything after the word, as a new phrase + */ - var tmpDoc = _this2.buildFrom([phrase]); - tmpDoc.tagger(); // add it to the start + exports.splitAfter = function (reg) { + // if there's no match, split parent, instead + if (!reg) { + let parent = this.parent(); + return parent.splitAfter(this); + } // start looking for our matches - p.prepend(phrase, _this2); - }); - return this; - }; - exports.insertBefore = exports.prepend; - /** add these new things to the end*/ + let regs = parseSyntax(reg); + let matches = []; + this.list.forEach(p => { + let foundEm = p.match(regs); //no match here, add full sentence - exports.concat = function () { - // clear the cache - this.uncache(); - var list = this.list.slice(0); //repeat for any number of params + if (foundEm.length === 0) { + matches.push(p); + return; + } // we found something here. - for (var i = 0; i < arguments.length; i++) { - var arg = arguments[i]; //support a fresh string - if (typeof arg === 'string') { - var arr = _01Tokenizer(arg, this.world); //TODO: phrase.tagger()? + let carry = p; + foundEm.forEach(found => { + let parts = carry.splitOn(found); // add em in + if (parts.before && parts.match) { + // merge these two together + parts.before.length += parts.match.length; + matches.push(parts.before); + } else if (parts.match) { + matches.push(parts.match); + } // start matching now on the end - list = list.concat(arr); - } else if (arg.isA === 'Doc') { - list = list.concat(arg.list); - } else if (arg.isA === 'Phrase') { - list.push(arg); - } - } - return this.buildFrom(list); - }; - /** fully remove these terms from the document */ + carry = parts.after; + }); // add that last part + + if (carry) { + matches.push(carry); + } + }); + return this.buildFrom(matches); + }; + exports.split = exports.splitAfter; //i guess? - exports["delete"] = function (match) { - var _this3 = this; // clear the cache + /** return a Document with two parts for every match */ + exports.splitBefore = function (reg) { + // if there's no match, split parent, instead + if (!reg) { + let parent = this.parent(); + return parent.splitBefore(this); + } //start looking for a match.. - this.uncache(); - var toRemove = this; - if (match) { - toRemove = this.match(match); - } + let regs = parseSyntax(reg); + let matches = []; + this.list.forEach(p => { + let foundEm = p.match(regs); //no match here, add full sentence - toRemove.list.forEach(function (phrase) { - return phrase["delete"](_this3); - }); - return this; - }; // aliases + if (foundEm.length === 0) { + matches.push(p); + return; + } // we found something here. + + + let carry = p; + foundEm.forEach(found => { + let parts = carry.splitOn(found); // add before part in + + if (parts.before) { + matches.push(parts.before); + } // merge match+after + + + if (parts.match && parts.after) { + parts.match.length += parts.after.length; + } // start matching now on the end + + + carry = parts.match; + }); // add that last part + + if (carry) { + matches.push(carry); + } + }); + return this.buildFrom(matches); + }; + /** split a document into labeled sections */ + + + exports.segment = function (regs, options) { + regs = regs || {}; + options = options || { + text: true + }; + let doc = this; + let keys = Object.keys(regs); // split em + + keys.forEach(k => { + doc = doc.splitOn(k); + }); //add labels for each section + + doc.list.forEach(p => { + for (let i = 0; i < keys.length; i += 1) { + if (p.has(keys[i])) { + p.segment = regs[keys[i]]; + return; + } + } + }); + return doc.list.map(p => { + let res = p.json(options); + res.segment = p.segment || null; + return res; + }); + }; + })(_03Split); + + var _04Case = {}; + + const eachTerm = function (doc, fn) { + let world = doc.world; + doc.list.forEach(p => { + p.terms().forEach(t => t[fn](world)); + }); + return doc; + }; + /** turn every letter of every term to lower-cse */ + + + _04Case.toLowerCase = function () { + return eachTerm(this, 'toLowerCase'); + }; + /** turn every letter of every term to upper case */ + + + _04Case.toUpperCase = function () { + return eachTerm(this, 'toUpperCase'); + }; + /** upper-case the first letter of each term */ + + + _04Case.toTitleCase = function () { + return eachTerm(this, 'toTitleCase'); + }; + /** remove whitespace and title-case each term */ + + + _04Case.toCamelCase = function () { + this.list.forEach(p => { + //remove whitespace + let terms = p.terms(); + terms.forEach((t, i) => { + if (i !== 0) { + t.toTitleCase(); + } + + if (i !== terms.length - 1) { + t.post = ''; + } + }); + }); // this.tag('#CamelCase', 'toCamelCase') + + return this; + }; + + var _05Whitespace = {}; + /** add this punctuation or whitespace before each match: */ + + (function (exports) { + exports.pre = function (str, concat) { + if (str === undefined) { + return this.list[0].terms(0).pre; + } + + this.list.forEach(p => { + let term = p.terms(0); + + if (concat === true) { + term.pre += str; + } else { + term.pre = str; + } + }); + return this; + }; + /** add this punctuation or whitespace after each match: */ + + + exports.post = function (str, concat) { + // return array of post strings + if (str === undefined) { + return this.list.map(p => { + let terms = p.terms(); + let term = terms[terms.length - 1]; + return term.post; + }); + } // set post string on all ends + + + this.list.forEach(p => { + let terms = p.terms(); + let term = terms[terms.length - 1]; + + if (concat === true) { + term.post += str; + } else { + term.post = str; + } + }); + return this; + }; + /** remove start and end whitespace */ + + + exports.trim = function () { + this.list = this.list.map(p => p.trim()); + return this; + }; + /** connect words with hyphen, and remove whitespace */ + + + exports.hyphenate = function () { + this.list.forEach(p => { + let terms = p.terms(); //remove whitespace + + terms.forEach((t, i) => { + if (i !== 0) { + t.pre = ''; + } + + if (terms[i + 1]) { + t.post = '-'; + } + }); + }); + return this; + }; + /** remove hyphens between words, and set whitespace */ + + + exports.dehyphenate = function () { + const hasHyphen = /(-|–|—)/; + this.list.forEach(p => { + let terms = p.terms(); //remove whitespace + + terms.forEach(t => { + if (hasHyphen.test(t.post)) { + t.post = ' '; + } + }); + }); + return this; + }; + + exports.deHyphenate = exports.dehyphenate; + /** add quotations around these matches */ + + exports.toQuotations = function (start, end) { + start = start || "\""; + end = end || "\""; + this.list.forEach(p => { + let terms = p.terms(); + terms[0].pre = start + terms[0].pre; + let last = terms[terms.length - 1]; + last.post = end + last.post; + }); + return this; + }; + + exports.toQuotation = exports.toQuotations; + /** add brackets around these matches */ + + exports.toParentheses = function (start, end) { + start = start || "("; + end = end || ")"; + this.list.forEach(p => { + let terms = p.terms(); + terms[0].pre = start + terms[0].pre; + let last = terms[terms.length - 1]; + last.post = end + last.post; + }); + return this; + }; + })(_05Whitespace); + + var _06Join = {}; + /** make all phrases into one phrase */ + + _06Join.join = function (str) { + // clear the cache + this.uncache(); // make one large phrase - 'main' + + let main = this.list[0]; + let before = main.length; + let removed = {}; + + for (let i = 1; i < this.list.length; i++) { + const p = this.list[i]; + removed[p.start] = true; + let term = main.lastTerm(); // add whitespace between them + + if (str) { + term.post += str; + } // main -> p + + + term.next = p.start; // main <- p + + p.terms(0).prev = term.id; + main.length += p.length; + main.cache = {}; + } // parents are bigger than than their children. + // when we increase a child, we increase their parent too. - exports.remove = exports["delete"]; - }); - - var shouldTrim = { - clean: true, - reduced: true, - root: true - }; - /** return the document as text */ - - var text = function text(options) { - var _this = this; - - options = options || {}; //are we showing every phrase? - - var showFull = false; - - if (this.parents().length === 0) { - showFull = true; - } // cache roots, if necessary - - - if (options === 'root' || _typeof(options) === 'object' && options.root) { - this.list.forEach(function (p) { - p.terms().forEach(function (t) { - if (t.root === null) { - t.setRoot(_this.world); - } - }); - }); - } - - var txt = this.list.reduce(function (str, p, i) { - var trimPre = !showFull && i === 0; - var trimPost = !showFull && i === _this.list.length - 1; - return str + p.text(options, trimPre, trimPost); - }, ''); // clumsy final trim of leading/trailing whitespace - - if (shouldTrim[options] === true || options.reduced === true || options.clean === true || options.root === true) { - txt = txt.trim(); - } - - return txt; - }; - - var _01Text = { - text: text - }; // get all character startings in doc - - var termOffsets = function termOffsets(doc) { - var elapsed = 0; - var index = 0; - var offsets = {}; - doc.termList().forEach(function (term) { - offsets[term.id] = { - index: index, - start: elapsed + term.pre.length, - length: term.text.length - }; - elapsed += term.pre.length + term.text.length + term.post.length; - index += 1; - }); - return offsets; - }; - - var calcOffset = function calcOffset(doc, result, options) { - // calculate offsets for each term - var offsets = termOffsets(doc.all()); // add index values - - if (options.terms.index || options.index) { - result.forEach(function (o) { - o.terms.forEach(function (t) { - t.index = offsets[t.id].index; - }); - o.index = o.terms[0].index; - }); - } // add offset values - - - if (options.terms.offset || options.offset) { - result.forEach(function (o) { - o.terms.forEach(function (t) { - t.offset = offsets[t.id] || {}; - }); // let len = o.terms.reduce((n, t, i) => { - // n += t.offset.length || 0 - // //add whitespace, too - // console.log(t.post) - // return n - // }, 0) - // The offset information for the entire doc starts at (or just before) - // the first term, and is as long as the whole text. The code originally - // copied the entire offset value from terms[0], but since we're now - // overriding 2 of the three fields, it's cleaner to just create an all- - // new object and not pretend it's "just" the same as terms[0]. - - o.offset = { - index: o.terms[0].offset.index, - start: o.terms[0].offset.start - o.text.indexOf(o.terms[0].text), - length: o.text.length - }; - }); - } - }; - - var _offset = calcOffset; - - var _02Json = createCommonjsModule(function (module, exports) { - var jsonDefaults = { - text: true, - terms: true, - trim: true - }; //some options have dependents - - var setOptions = function setOptions(options) { - options = Object.assign({}, jsonDefaults, options); - - if (options.unique) { - options.reduced = true; - } //offset calculation requires these options to be on - - - if (options.offset) { - options.text = true; - - if (!options.terms || options.terms === true) { - options.terms = {}; - } - - options.terms.offset = true; - } - - if (options.index || options.terms.index) { - options.terms = options.terms === true ? {} : options.terms; - options.terms.id = true; - } - - return options; - }; - /** pull out desired metadata from the document */ - - - exports.json = function () { - var _this = this; - - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; //support json(3) format - - if (typeof options === 'number' && this.list[options]) { - return this.list[options].json(jsonDefaults); - } - - options = setOptions(options); // cache root strings beforehand, if necessary - - if (options.root === true) { - this.list.forEach(function (p) { - p.terms().forEach(function (t) { - if (t.root === null) { - t.setRoot(_this.world); - } - }); - }); - } - - var result = this.list.map(function (p) { - return p.json(options, _this.world); - }); // add offset and index data for each term - - if (options.terms.offset || options.offset || options.terms.index || options.index) { - _offset(this, result, options); - } // add frequency #s - - - if (options.frequency || options.freq || options.count) { - var obj = {}; - this.list.forEach(function (p) { - var str = p.text('reduced'); - obj[str] = obj[str] || 0; - obj[str] += 1; - }); - this.list.forEach(function (p, i) { - result[i].count = obj[p.text('reduced')]; - }); - } // remove duplicates - - - if (options.unique) { - var already = {}; - result = result.filter(function (o) { - if (already[o.reduced] === true) { - return false; - } - - already[o.reduced] = true; - return true; - }); - } - - return result; - }; //aliases - - - exports.data = exports.json; - }); - - var _debug = createCommonjsModule(function (module) { - // https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color - var reset = '\x1b[0m'; - - var padEnd = function padEnd(str, width) { - str = str.toString(); - - while (str.length < width) { - str += ' '; - } - - return str; - }; - - function isClientSide() { - return typeof window !== 'undefined' && window.document; - } // some nice colors for client-side debug - - - var css = { - green: '#7f9c6c', - red: '#914045', - blue: '#6699cc', - magenta: '#6D5685', - cyan: '#2D85A8', - yellow: '#e6d7b3', - black: '#303b50' - }; - - var logClientSide = function logClientSide(doc) { - var tagset = doc.world.tags; - doc.list.forEach(function (p) { - console.log('\n%c"' + p.text() + '"', 'color: #e6d7b3;'); - var terms = p.terms(); - terms.forEach(function (t) { - var tags = Object.keys(t.tags); - var text = t.text || '-'; - - if (t.implicit) { - text = '[' + t.implicit + ']'; - } - - var word = "'" + text + "'"; - word = padEnd(word, 8); - var found = tags.find(function (tag) { - return tagset[tag] && tagset[tag].color; - }); - var color = 'steelblue'; - - if (tagset[found]) { - color = tagset[found].color; - color = css[color]; - } - - console.log(" ".concat(word, " - %c").concat(tags.join(', ')), "color: ".concat(color || 'steelblue', ";")); - }); - }); - }; //cheaper than requiring chalk - - - var cli = { - green: function green(str) { - return '\x1b[32m' + str + reset; - }, - red: function red(str) { - return '\x1b[31m' + str + reset; - }, - blue: function blue(str) { - return '\x1b[34m' + str + reset; - }, - magenta: function magenta(str) { - return '\x1b[35m' + str + reset; - }, - cyan: function cyan(str) { - return '\x1b[36m' + str + reset; - }, - yellow: function yellow(str) { - return '\x1b[33m' + str + reset; - }, - black: function black(str) { - return '\x1b[30m' + str + reset; - } - }; - - var tagString = function tagString(tags, world) { - tags = tags.map(function (tag) { - if (!world.tags.hasOwnProperty(tag)) { - return tag; - } - - var c = world.tags[tag].color || 'blue'; - return cli[c](tag); - }); - return tags.join(', '); - }; //output some helpful stuff to the console - - - var debug = function debug(doc) { - if (isClientSide()) { - logClientSide(doc); - return doc; - } - - console.log(cli.blue('=====')); - doc.list.forEach(function (p) { - console.log(cli.blue(' -----')); - var terms = p.terms(); - terms.forEach(function (t) { - var tags = Object.keys(t.tags); - var text = t.text || '-'; - - if (t.implicit) { - text = '[' + t.implicit + ']'; - } - - { - text = cli.yellow(text); - } - var word = "'" + text + "'"; - word = padEnd(word, 18); - var str = cli.blue(' | ') + word + ' - ' + tagString(tags, doc.world); - console.log(str); - }); - }); - console.log(''); - return doc; - }; - - module.exports = debug; - }); - - var topk = function topk(doc) { - var list = doc.json({ - text: false, - terms: false, - reduced: true - }); // combine them - - var obj = {}; - list.forEach(function (o) { - if (!obj[o.reduced]) { - o.count = 0; - obj[o.reduced] = o; - } - - obj[o.reduced].count += 1; - }); - var arr = Object.keys(obj).map(function (k) { - return obj[k]; - }); // sort them - - arr.sort(function (a, b) { - if (a.count > b.count) { - return -1; - } else if (a.count < b.count) { - return 1; - } - - return 0; - }); - return arr; - }; - - var _topk = topk; - /** pretty-print the current document and its tags */ - - var debug_1 = function debug_1() { - _debug(this); - - return this; - }; - /** some named output formats */ - - - var out = function out(method) { - if (method === 'text') { - return this.text(); - } - - if (method === 'normal') { - return this.text('normal'); - } - - if (method === 'json') { - return this.json(); - } - - if (method === 'offset' || method === 'offsets') { - return this.json({ - offset: true - }); - } - - if (method === 'array') { - return this.json({ - terms: false - }).map(function (obj) { - return obj.text; - }).filter(function (str) { - return str; - }); - } - - if (method === 'freq' || method === 'frequency') { - return _topk(this); - } - - if (method === 'terms') { - var list = []; - this.json({ - text: false, - terms: { - text: true - } - }).forEach(function (obj) { - var terms = obj.terms.map(function (t) { - return t.text; - }); - terms = terms.filter(function (t) { - return t; - }); - list = list.concat(terms); - }); - return list; - } - - if (method === 'tags') { - return this.list.map(function (p) { - return p.terms().reduce(function (h, t) { - h[t.clean || t.implicit] = Object.keys(t.tags); - return h; - }, {}); - }); - } - - if (method === 'debug') { - _debug(this); - - return this; - } - - return this.text(); - }; - - var _03Out = { - debug: debug_1, - out: out - }; - var methods$6 = { - /** alphabetical order */ - alpha: function alpha(a, b) { - var left = a.text('clean'); - var right = b.text('clean'); - - if (left < right) { - return -1; - } - - if (left > right) { - return 1; - } - - return 0; - }, - - /** count the # of characters of each match */ - length: function length(a, b) { - var left = a.text().trim().length; - var right = b.text().trim().length; - - if (left < right) { - return 1; - } - - if (left > right) { - return -1; - } - - return 0; - }, - - /** count the # of terms in each match */ - wordCount: function wordCount(a, b) { - var left = a.wordCount(); - var right = b.wordCount(); - - if (left < right) { - return 1; - } - - if (left > right) { - return -1; - } - - return 0; - } - }; - /** sort by # of duplicates in the document*/ - - var byFreq = function byFreq(doc) { - var counts = {}; - var options = { - "case": true, - punctuation: false, - whitespace: true, - unicode: true - }; - doc.list.forEach(function (p) { - var str = p.text(options); - counts[str] = counts[str] || 0; - counts[str] += 1; - }); // sort by freq - - doc.list.sort(function (a, b) { - var left = counts[a.text(options)]; - var right = counts[b.text(options)]; - - if (left < right) { - return 1; - } - - if (left > right) { - return -1; - } - - return 0; - }); - return doc; - }; // order results 'chronologically', or document-order - - - var sortSequential = function sortSequential(doc) { - var order = {}; - doc.json({ - terms: { - offset: true - } - }).forEach(function (o) { - order[o.terms[0].id] = o.terms[0].offset.start; - }); - doc.list = doc.list.sort(function (a, b) { - if (order[a.start] > order[b.start]) { - return 1; - } else if (order[a.start] < order[b.start]) { - return -1; - } - - return 0; - }); - return doc; - }; //aliases - - - methods$6.alphabetical = methods$6.alpha; - methods$6.wordcount = methods$6.wordCount; // aliases for sequential ordering - - var seqNames = { - index: true, - sequence: true, - seq: true, - sequential: true, - chron: true, - chronological: true - }; - /** re-arrange the order of the matches (in place) */ - - var sort = function sort(input) { - input = input || 'alpha'; //do this one up-front - - if (input === 'freq' || input === 'frequency' || input === 'topk') { - return byFreq(this); - } - - if (seqNames.hasOwnProperty(input)) { - return sortSequential(this); - } - - input = methods$6[input] || input; // apply sort method on each phrase - - if (typeof input === 'function') { - this.list = this.list.sort(input); - return this; - } - - return this; - }; - /** reverse the order of the matches, but not the words */ - - - var reverse = function reverse() { - var list = [].concat(this.list); - list = list.reverse(); - return this.buildFrom(list); - }; - /** remove any duplicate matches */ - - - var unique$1 = function unique() { - var list = [].concat(this.list); - var obj = {}; - list = list.filter(function (p) { - var str = p.text('reduced').trim() || p.text('implicit').trim(); - - if (obj.hasOwnProperty(str) === true) { - return false; - } - - obj[str] = true; - return true; - }); - return this.buildFrom(list); - }; - - var _01Sort = { - sort: sort, - reverse: reverse, - unique: unique$1 - }; - var isPunct = /[\[\]{}⟨⟩:,،、‒–—―…‹›«»‐\-;\/⁄·*\•^†‡°¡¿※№÷׺ª%‰=‱¶§~|‖¦©℗®℠™¤₳฿]/g; - var quotes = /['‘’“”"′″‴]+/g; - var methods$5 = { - // cleanup newlines and extra spaces - whitespace: function whitespace(doc) { - var termArr = doc.list.map(function (ts) { - return ts.terms(); - }); - termArr.forEach(function (terms, o) { - terms.forEach(function (t, i) { - // keep dashes between words - if (t.hasDash() === true) { - t.post = ' - '; - return; - } // remove existing spaces - - - t.pre = t.pre.replace(/\s/g, ''); - t.post = t.post.replace(/\s/g, ''); //last word? ensure there's a next sentence. - - if (terms.length - 1 === i && !termArr[o + 1]) { - return; - } // no extra spaces for contractions - - - if (t.implicit && Boolean(t.text) === true) { - return; - } // no extra spaces for hyphenated words - - - if (t.hasHyphen() === true) { - return; - } - - t.post += ' '; - }); - }); - }, - punctuation: function punctuation(termList) { - termList.forEach(function (t) { - // space between hyphenated words - if (t.hasHyphen() === true) { - t.post = ' '; - } - - t.pre = t.pre.replace(isPunct, ''); - t.post = t.post.replace(isPunct, ''); // elipses - - t.post = t.post.replace(/\.\.\./, ''); // only allow one exclamation - - if (/!/.test(t.post) === true) { - t.post = t.post.replace(/!/g, ''); - t.post = '!' + t.post; - } // only allow one question mark - - - if (/\?/.test(t.post) === true) { - t.post = t.post.replace(/[\?!]*/, ''); - t.post = '?' + t.post; - } - }); - }, - unicode: function unicode(termList) { - termList.forEach(function (t) { - if (t.isImplicit() === true) { - return; - } - - t.text = unicode_1(t.text); - }); - }, - quotations: function quotations(termList) { - termList.forEach(function (t) { - t.post = t.post.replace(quotes, ''); - t.pre = t.pre.replace(quotes, ''); - }); - }, - adverbs: function adverbs(doc) { - doc.match('#Adverb').not('(not|nary|seldom|never|barely|almost|basically|so)').remove(); - }, - // remove the '.' from 'Mrs.' (safely) - abbreviations: function abbreviations(doc) { - doc.list.forEach(function (ts) { - var terms = ts.terms(); - terms.forEach(function (t, i) { - if (t.tags.Abbreviation === true && terms[i + 1]) { - t.post = t.post.replace(/^\./, ''); - } - }); - }); - } - }; - var _methods = methods$5; - var defaults$1 = { - // light - whitespace: true, - unicode: true, - punctuation: true, - emoji: true, - acronyms: true, - abbreviations: true, - // medium - "case": false, - contractions: false, - parentheses: false, - quotations: false, - adverbs: false, - // heavy (loose legibility) - possessives: false, - verbs: false, - nouns: false, - honorifics: false // pronouns: true, - - }; - var mapping = { - light: {}, - medium: { - "case": true, - contractions: true, - parentheses: true, - quotations: true, - adverbs: true - } - }; - mapping.heavy = Object.assign({}, mapping.medium, { - possessives: true, - verbs: true, - nouns: true, - honorifics: true - }); - /** common ways to clean-up the document, and reduce noise */ - - var normalize = function normalize(options) { - options = options || {}; // support named forms - - if (typeof options === 'string') { - options = mapping[options] || {}; - } // set defaults - - - options = Object.assign({}, defaults$1, options); // clear the cache - - this.uncache(); - var termList = this.termList(); // lowercase things - - if (options["case"]) { - this.toLowerCase(); - } //whitespace - - - if (options.whitespace) { - _methods.whitespace(this); - } // unicode: é -> e - - - if (options.unicode) { - _methods.unicode(termList); - } //punctuation - keep sentence punctation, quotes, parenths - - - if (options.punctuation) { - _methods.punctuation(termList); - } // remove ':)' - - - if (options.emoji) { - this.remove('(#Emoji|#Emoticon)'); - } // 'f.b.i.' -> 'FBI' - - - if (options.acronyms) { - this.acronyms().strip(); // .toUpperCase() - } // remove period from abbreviations - - - if (options.abbreviations) { - _methods.abbreviations(this); - } // --Medium methods-- - // `isn't` -> 'is not' - + let increase = main.length - before; + this.parents().forEach(doc => { + // increase length on each effected phrase + doc.list.forEach(p => { + let terms = p.terms(); + + for (let i = 0; i < terms.length; i++) { + if (terms[i].id === main.start) { + p.length += increase; + break; + } + } + + p.cache = {}; + }); // remove redundant phrases now + + doc.list = doc.list.filter(p => removed[p.start] !== true); + }); // return one major phrase + + return this.buildFrom([main]); + }; + + var _07Contract = {}; + const postPunct = /[,\)"';:\-–—\.…]/; // const irregulars = { + // 'will not': `won't`, + // 'i am': `i'm`, + // } + + const setContraction = function (m, suffix) { + if (!m.found) { + return; + } - if (options.contraction || options.contractions) { - this.contractions().expand(); - } // '(word)' -> 'word' + let terms = m.termList(); //avoid any problematic punctuation + for (let i = 0; i < terms.length - 1; i++) { + const t = terms[i]; - if (options.parentheses) { - this.parentheses().unwrap(); - } // remove "" punctuation + if (postPunct.test(t.post)) { + return; + } + } // set them as implict - if (options.quotations || options.quotes) { - _methods.quotations(termList); - } // remove any un-necessary adverbs + terms.forEach(t => { + t.implicit = t.clean; + }); // perform the contraction + terms[0].text += suffix; // clean-up the others - if (options.adverbs) { - _methods.adverbs(this); - } // --Heavy methods-- - // `cory hart's -> cory hart' + terms.slice(1).forEach(t => { + t.text = ''; + }); + for (let i = 0; i < terms.length - 1; i++) { + const t = terms[i]; + t.post = t.post.replace(/ /, ''); + } + }; + /** turn 'i am' into i'm */ - if (options.possessive || options.possessives) { - this.possessives().strip(); - } // 'he walked' -> 'he walk' + _07Contract.contract = function () { + let doc = this.not('@hasContraction'); // we are -> we're - if (options.verbs) { - this.verbs().toInfinitive(); - } // 'three dogs' -> 'three dog' + let m = doc.match('(we|they|you) are'); + setContraction(m, "'re"); // they will -> they'll + m = doc.match('(he|she|they|it|we|you) will'); + setContraction(m, "'ll"); // she is -> she's - if (options.nouns || options.plurals) { - this.nouns().toSingular(); - } // remove 'Mr.' from 'Mr John Smith' + m = doc.match('(he|she|they|it|we) is'); + setContraction(m, "'s"); // spencer is -> spencer's + m = doc.match('#Person is'); + setContraction(m, "'s"); // spencer would -> spencer'd - if (options.honorifics) { - this.remove('#Honorific'); - } + m = doc.match('#Person would'); + setContraction(m, "'d"); // would not -> wouldn't - return this; - }; + m = doc.match('(is|was|had|would|should|could|do|does|have|has|can) not'); + setContraction(m, "n't"); // i have -> i've - var _02Normalize = { - normalize: normalize - }; + m = doc.match('(i|we|they) have'); + setContraction(m, "'ve"); // would have -> would've - var _03Split = createCommonjsModule(function (module, exports) { - /** return a Document with three parts for every match - * seperate everything before the word, as a new phrase - */ - exports.splitOn = function (reg) { - // if there's no match, split parent, instead - if (!reg) { - var parent = this.parent(); - return parent.splitOn(this); - } //start looking for a match.. + m = doc.match('(would|should|could) have'); + setContraction(m, "'ve"); // i am -> i'm + m = doc.match('i am'); + setContraction(m, "'m"); // going to -> gonna - var regs = matchSyntax(reg); - var matches = []; - this.list.forEach(function (p) { - var foundEm = p.match(regs); //no match here, add full sentence + m = doc.match('going to'); + return this; + }; - if (foundEm.length === 0) { - matches.push(p); - return; - } // we found something here. + var methods$6 = Object.assign({}, _01Utils, _02Accessors, _03Match, _04Tag, _05Loops, _06Lookup, _07Cache, _01Replace, _02Insert, _01Text, _02Json, _03Out, _01Sort, _02Normalize, _03Split, _04Case, _05Whitespace, _06Join, _07Contract); + let methods$5 = {}; // allow helper methods like .adjectives() and .adverbs() + const arr = [['terms', '.'], ['hyphenated', '@hasHyphen .'], ['adjectives', '#Adjective'], ['hashTags', '#HashTag'], ['emails', '#Email'], ['emoji', '#Emoji'], ['emoticons', '#Emoticon'], ['atMentions', '#AtMention'], ['urls', '#Url'], ['adverbs', '#Adverb'], ['pronouns', '#Pronoun'], ['conjunctions', '#Conjunction'], ['prepositions', '#Preposition']]; + arr.forEach(a => { + methods$5[a[0]] = function (n) { + let m = this.match(a[1]); - var carry = p; - foundEm.forEach(function (found) { - var parts = carry.splitOn(found); // add em in + if (typeof n === 'number') { + m = m.get(n); + } - if (parts.before) { - matches.push(parts.before); - } + return m; + }; + }); // aliases - if (parts.match) { - matches.push(parts.match); - } // start matching now on the end + methods$5.emojis = methods$5.emoji; + methods$5.atmentions = methods$5.atMentions; + methods$5.words = methods$5.terms; + /** return anything tagged as a phone number */ + methods$5.phoneNumbers = function (n) { + let m = this.splitAfter('@hasComma'); + m = m.match('#PhoneNumber+'); - carry = parts.after; - }); // add that last part + if (typeof n === 'number') { + m = m.get(n); + } - if (carry) { - matches.push(carry); - } - }); - return this.buildFrom(matches); - }; - /** return a Document with two parts for every match - * seperate everything after the word, as a new phrase - */ + return m; + }; + /** Deprecated: please use compromise-numbers plugin */ - exports.splitAfter = function (reg) { - // if there's no match, split parent, instead - if (!reg) { - var parent = this.parent(); - return parent.splitAfter(this); - } // start looking for our matches + methods$5.money = function (n) { + let m = this.match('#Money #Currency?'); + if (typeof n === 'number') { + m = m.get(n); + } - var regs = matchSyntax(reg); - var matches = []; - this.list.forEach(function (p) { - var foundEm = p.match(regs); //no match here, add full sentence + return m; + }; + /** return all cities, countries, addresses, and regions */ - if (foundEm.length === 0) { - matches.push(p); - return; - } // we found something here. + methods$5.places = function (n) { + // don't split 'paris, france' + let keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas - var carry = p; - foundEm.forEach(function (found) { - var parts = carry.splitOn(found); // add em in + let m = this.not(keep).splitAfter('@hasComma'); // combine them back together - if (parts.before && parts.match) { - // merge these two together - parts.before.length += parts.match.length; - matches.push(parts.before); - } else if (parts.match) { - matches.push(parts.match); - } // start matching now on the end - - - carry = parts.after; - }); // add that last part - - if (carry) { - matches.push(carry); - } - }); - return this.buildFrom(matches); - }; - - exports.split = exports.splitAfter; //i guess? - - /** return a Document with two parts for every match */ - - exports.splitBefore = function (reg) { - // if there's no match, split parent, instead - if (!reg) { - var parent = this.parent(); - return parent.splitBefore(this); - } //start looking for a match.. - - - var regs = matchSyntax(reg); - var matches = []; - this.list.forEach(function (p) { - var foundEm = p.match(regs); //no match here, add full sentence - - if (foundEm.length === 0) { - matches.push(p); - return; - } // we found something here. - - - var carry = p; - foundEm.forEach(function (found) { - var parts = carry.splitOn(found); // add before part in - - if (parts.before) { - matches.push(parts.before); - } // merge match+after - - - if (parts.match && parts.after) { - parts.match.length += parts.after.length; - } // start matching now on the end - - - carry = parts.match; - }); // add that last part - - if (carry) { - matches.push(carry); - } - }); - return this.buildFrom(matches); - }; - /** split a document into labeled sections */ - - - exports.segment = function (regs, options) { - regs = regs || {}; - options = options || { - text: true - }; - var doc = this; - var keys = Object.keys(regs); // split em - - keys.forEach(function (k) { - doc = doc.splitOn(k); - }); //add labels for each section - - doc.list.forEach(function (p) { - for (var i = 0; i < keys.length; i += 1) { - if (p.has(keys[i])) { - p.segment = regs[keys[i]]; - return; - } - } - }); - return doc.list.map(function (p) { - var res = p.json(options); - res.segment = p.segment || null; - return res; - }); - }; - }); - - var eachTerm = function eachTerm(doc, fn) { - var world = doc.world; - doc.list.forEach(function (p) { - p.terms().forEach(function (t) { - return t[fn](world); - }); - }); - return doc; - }; - /** turn every letter of every term to lower-cse */ - - - var toLowerCase = function toLowerCase() { - return eachTerm(this, 'toLowerCase'); - }; - /** turn every letter of every term to upper case */ - - - var toUpperCase = function toUpperCase() { - return eachTerm(this, 'toUpperCase'); - }; - /** upper-case the first letter of each term */ - - - var toTitleCase = function toTitleCase() { - return eachTerm(this, 'toTitleCase'); - }; - /** remove whitespace and title-case each term */ - - - var toCamelCase = function toCamelCase() { - this.list.forEach(function (p) { - //remove whitespace - var terms = p.terms(); - terms.forEach(function (t, i) { - if (i !== 0) { - t.toTitleCase(); - } - - if (i !== terms.length - 1) { - t.post = ''; - } - }); - }); // this.tag('#CamelCase', 'toCamelCase') - - return this; - }; - - var _04Case = { - toLowerCase: toLowerCase, - toUpperCase: toUpperCase, - toTitleCase: toTitleCase, - toCamelCase: toCamelCase - }; - /** add this punctuation or whitespace before each match: */ - - var _05Whitespace = createCommonjsModule(function (module, exports) { - exports.pre = function (str, concat) { - if (str === undefined) { - return this.list[0].terms(0).pre; - } - - this.list.forEach(function (p) { - var term = p.terms(0); - - if (concat === true) { - term.pre += str; - } else { - term.pre = str; - } - }); - return this; - }; - /** add this punctuation or whitespace after each match: */ - - - exports.post = function (str, concat) { - // return array of post strings - if (str === undefined) { - return this.list.map(function (p) { - var terms = p.terms(); - var term = terms[terms.length - 1]; - return term.post; - }); - } // set post string on all ends - - - this.list.forEach(function (p) { - var terms = p.terms(); - var term = terms[terms.length - 1]; - - if (concat === true) { - term.post += str; - } else { - term.post = str; - } - }); - return this; - }; - /** remove start and end whitespace */ - - - exports.trim = function () { - this.list = this.list.map(function (p) { - return p.trim(); - }); - return this; - }; - /** connect words with hyphen, and remove whitespace */ - - - exports.hyphenate = function () { - this.list.forEach(function (p) { - var terms = p.terms(); //remove whitespace - - terms.forEach(function (t, i) { - if (i !== 0) { - t.pre = ''; - } - - if (terms[i + 1]) { - t.post = '-'; - } - }); - }); - return this; - }; - /** remove hyphens between words, and set whitespace */ - - - exports.dehyphenate = function () { - var hasHyphen = /(-|–|—)/; - this.list.forEach(function (p) { - var terms = p.terms(); //remove whitespace - - terms.forEach(function (t) { - if (hasHyphen.test(t.post)) { - t.post = ' '; - } - }); - }); - return this; - }; - - exports.deHyphenate = exports.dehyphenate; - /** add quotations around these matches */ - - exports.toQuotations = function (start, end) { - start = start || "\""; - end = end || "\""; - this.list.forEach(function (p) { - var terms = p.terms(); - terms[0].pre = start + terms[0].pre; - var last = terms[terms.length - 1]; - last.post = end + last.post; - }); - return this; - }; - - exports.toQuotation = exports.toQuotations; - /** add brackets around these matches */ - - exports.toParentheses = function (start, end) { - start = start || "("; - end = end || ")"; - this.list.forEach(function (p) { - var terms = p.terms(); - terms[0].pre = start + terms[0].pre; - var last = terms[terms.length - 1]; - last.post = end + last.post; - }); - return this; - }; - }); - /** make all phrases into one phrase */ - - - var join = function join(str) { - // clear the cache - this.uncache(); // make one large phrase - 'main' - - var main = this.list[0]; - var before = main.length; - var removed = {}; - - for (var i = 1; i < this.list.length; i++) { - var p = this.list[i]; - removed[p.start] = true; - var term = main.lastTerm(); // add whitespace between them - - if (str) { - term.post += str; - } // main -> p - - - term.next = p.start; // main <- p - - p.terms(0).prev = term.id; - main.length += p.length; - main.cache = {}; - } // parents are bigger than than their children. - // when we increase a child, we increase their parent too. - - - var increase = main.length - before; - this.parents().forEach(function (doc) { - // increase length on each effected phrase - doc.list.forEach(function (p) { - var terms = p.terms(); - - for (var _i = 0; _i < terms.length; _i++) { - if (terms[_i].id === main.start) { - p.length += increase; - break; - } - } - - p.cache = {}; - }); // remove redundant phrases now - - doc.list = doc.list.filter(function (p) { - return removed[p.start] !== true; - }); - }); // return one major phrase - - return this.buildFrom([main]); - }; - - var _06Join = { - join: join - }; - var postPunct = /[,\)"';:\-–—\.…]/; // const irregulars = { - // 'will not': `won't`, - // 'i am': `i'm`, - // } - - var setContraction = function setContraction(m, suffix) { - if (!m.found) { - return; - } + m = m.concat(keep); + m.sort('index'); + m = m.match('#Place+'); - var terms = m.termList(); //avoid any problematic punctuation + if (typeof n === 'number') { + m = m.get(n); + } - for (var i = 0; i < terms.length - 1; i++) { - var t = terms[i]; + return m; + }; + /** return all schools, businesses and institutions */ - if (postPunct.test(t.post)) { - return; - } - } // set them as implict + methods$5.organizations = function (n) { + let m = this.clauses(); + m = m.match('#Organization+'); - terms.forEach(function (t) { - t.implicit = t.clean; - }); // perform the contraction + if (typeof n === 'number') { + m = m.get(n); + } - terms[0].text += suffix; // clean-up the others + return m; + }; //combine them with .topics() method - terms.slice(1).forEach(function (t) { - t.text = ''; - }); - for (var _i = 0; _i < terms.length - 1; _i++) { - var _t = terms[_i]; - _t.post = _t.post.replace(/ /, ''); - } - }; - /** turn 'i am' into i'm */ + methods$5.entities = function (n) { + let r = this.clauses(); // Find people, places, and organizations + let yup = r.people(); + yup = yup.concat(r.places()); + yup = yup.concat(r.organizations()); + let ignore = ['someone', 'man', 'woman', 'mother', 'brother', 'sister', 'father']; + yup = yup.not(ignore); //return them to normal ordering - var contract = function contract() { - var doc = this.not('@hasContraction'); // we are -> we're + yup.sort('sequence'); // yup.unique() //? not sure - var m = doc.match('(we|they|you) are'); - setContraction(m, "'re"); // they will -> they'll + if (typeof n === 'number') { + yup = yup.get(n); + } - m = doc.match('(he|she|they|it|we|you) will'); - setContraction(m, "'ll"); // she is -> she's + return yup; + }; //aliases - m = doc.match('(he|she|they|it|we) is'); - setContraction(m, "'s"); // spencer is -> spencer's - m = doc.match('#Person is'); - setContraction(m, "'s"); // spencer would -> spencer'd + methods$5.things = methods$5.entities; + methods$5.topics = methods$5.entities; + var _simple = methods$5; + const underOver = /^(under|over)-?.{3}/; + /** match a word-sequence, like 'super bowl' in the lexicon */ - m = doc.match('#Person would'); - setContraction(m, "'d"); // would not -> wouldn't + const tryMultiple = function (terms, t, world) { + let lex = world.words; //try a two-word version - m = doc.match('(is|was|had|would|should|could|do|does|have|has|can) not'); - setContraction(m, "n't"); // i have -> i've + let txt = terms[t].reduced + ' ' + terms[t + 1].reduced; - m = doc.match('(i|we|they) have'); - setContraction(m, "'ve"); // would have -> would've + if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) { + terms[t].tag(lex[txt], 'lexicon-two', world); + terms[t + 1].tag(lex[txt], 'lexicon-two', world); + return 1; + } //try a three-word version? - m = doc.match('(would|should|could) have'); - setContraction(m, "'ve"); // i am -> i'm - m = doc.match('i am'); - setContraction(m, "'m"); // going to -> gonna + if (t + 2 < terms.length) { + txt += ' ' + terms[t + 2].reduced; - m = doc.match('going to'); - return this; - }; + if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) { + terms[t].tag(lex[txt], 'lexicon-three', world); + terms[t + 1].tag(lex[txt], 'lexicon-three', world); + terms[t + 2].tag(lex[txt], 'lexicon-three', world); + return 2; + } + } //try a four-word version? - var _07Contract = { - contract: contract - }; - var methods$4 = Object.assign({}, _01Utils, _02Accessors, _03Match, _04Tag, _05Loops, _06Lookup, _07Cache, _01Replace, _02Insert, _01Text, _02Json, _03Out, _01Sort, _02Normalize, _03Split, _04Case, _05Whitespace, _06Join, _07Contract); - var methods$3 = {}; // allow helper methods like .adjectives() and .adverbs() - var arr = [['terms', '.'], ['hyphenated', '@hasHyphen .'], ['adjectives', '#Adjective'], ['hashTags', '#HashTag'], ['emails', '#Email'], ['emoji', '#Emoji'], ['emoticons', '#Emoticon'], ['atMentions', '#AtMention'], ['urls', '#Url'], ['adverbs', '#Adverb'], ['pronouns', '#Pronoun'], ['conjunctions', '#Conjunction'], ['prepositions', '#Preposition']]; - arr.forEach(function (a) { - methods$3[a[0]] = function (n) { - var m = this.match(a[1]); + if (t + 3 < terms.length) { + txt += ' ' + terms[t + 3].reduced; - if (typeof n === 'number') { - m = m.get(n); - } + if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) { + terms[t].tag(lex[txt], 'lexicon-four', world); + terms[t + 1].tag(lex[txt], 'lexicon-four', world); + terms[t + 2].tag(lex[txt], 'lexicon-four', world); + terms[t + 3].tag(lex[txt], 'lexicon-four', world); + return 3; + } + } - return m; - }; - }); // aliases + return 0; + }; + /** look at each word in our list of known-words */ - methods$3.emojis = methods$3.emoji; - methods$3.atmentions = methods$3.atMentions; - methods$3.words = methods$3.terms; - /** return anything tagged as a phone number */ - methods$3.phoneNumbers = function (n) { - var m = this.splitAfter('@hasComma'); - m = m.match('#PhoneNumber+'); + const checkLexicon$1 = function (terms, world) { + let lex = world.words; + let hasCompound = world.hasCompound; // use reduced? + //go through each term, and check the lexicon - if (typeof n === 'number') { - m = m.get(n); - } + for (let t = 0; t < terms.length; t += 1) { + let str = terms[t].clean; //is it the start of a compound word, like 'super bowl'? - return m; - }; - /** Deprecated: please use compromise-numbers plugin */ + if (hasCompound[str] === true && t + 1 < terms.length) { + let foundWords = tryMultiple(terms, t, world); + + if (foundWords > 0) { + t += foundWords; //skip any already-found words + + continue; + } + } //try one-word lexicon + + + if (lex[str] !== undefined && lex.hasOwnProperty(str) === true) { + terms[t].tag(lex[str], 'lexicon', world); + continue; + } // look at reduced version of term, too + + + if (str !== terms[t].reduced && lex.hasOwnProperty(terms[t].reduced) === true) { + terms[t].tag(lex[terms[t].reduced], 'lexicon', world); + continue; + } // prefix strip: try to match 'take' for 'undertake' + + + if (underOver.test(str) === true) { + let noPrefix = str.replace(/^(under|over)-?/, ''); + + if (lex.hasOwnProperty(noPrefix) === true) { + terms[t].tag(lex[noPrefix], 'noprefix-lexicon', world); + } + } + } + + return terms; + }; + + var _01Lexicon = checkLexicon$1; + const apostrophes = /[\'‘’‛‵′`´]$/; + const perSec = /^(m|k|cm|km|m)\/(s|h|hr)$/; // '5 k/m' + // + + const checkPunctuation = function (terms, i, world) { + let term = terms[i]; //check hyphenation + // if (term.post.indexOf('-') !== -1 && terms[i + 1] && terms[i + 1].pre === '') { + // term.tag('Hyphenated', 'has-hyphen', world) + // } + // support 'head-over' + // if (term.hasHyphen() === true) { + // console.log(term.tags) + // } + // console.log(term.hasHyphen(), term.text) + //an end-tick (trailing apostrophe) - flanders', or Carlos' + + if (apostrophes.test(term.text)) { + if (!apostrophes.test(term.pre) && !apostrophes.test(term.post) && term.clean.length > 2) { + let endChar = term.clean[term.clean.length - 2]; //flanders' + + if (endChar === 's') { + term.tag(['Possessive', 'Noun'], 'end-tick', world); + return; + } //chillin' + + + if (endChar === 'n') { + term.tag(['Gerund'], 'chillin', world); + } + } + } // '5 km/s' + + + if (perSec.test(term.text)) { + term.tag('Unit', 'per-sec', world); + } // 'NASA' is, but not 'i REALLY love it.' + // if (term.tags.Noun === true && isAcronym(term, world)) { + // term.tag('Acronym', 'acronym-step', world) + // term.tag('Noun', 'acronym-infer', world) + // } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) { + // term.tag('Acronym', 'one-letter-acronym', world) + // term.tag('Noun', 'one-letter-infer', world) + // } + + }; + + var _02Punctuation = checkPunctuation; // order matters. + + var startsWith = [//web tags + [/^[\w\.]+@[\w\.]+\.[a-z]{2,3}$/, 'Email'], //not fancy + [/^#[a-z0-9_\u00C0-\u00FF]{2,}$/, 'HashTag'], [/^@1?[0-9](am|pm)$/i, 'Time'], // @6pm + [/^@1?[0-9]:[0-9]{2}(am|pm)?$/i, 'Time'], // @6:30 + [/^@\w{2,}$/, 'AtMention'], //@spencermountain + [/^(https?:\/\/|www\.)+\w+\.[a-z]{2,3}/, 'Url'], //with http/www + [/^[a-z0-9./].+\.(com|net|gov|org|ly|edu|info|biz|dev|ru|jp|de|in|uk|br|io|ai)/, 'Url'], //http://mostpopularwebsites.net/top-level-domain or Check for domains like .io/.ai/.dev + //dates/times + [/^'[0-9]{2}$/, 'Year'], //like '97 + [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/, 'Time'], //4:32:32 + [/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i, 'Time'], //4pm + [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i, 'Time'], //4:00pm + [/^[PMCE]ST$/, 'Time'], //PST, time zone abbrevs + [/^utc ?[+-]?[0-9]+?$/, 'Time'], //UTC 8+ + [/^[a-z0-9]*? o\'?clock$/, 'Time'], //3 oclock + [/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i, 'Date'], // 2020-03-02T00:00:00.000Z + [/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/, 'Date'], // 03-02-89 + [/^[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,4}$/, 'Date'], // 03/02/89 + [/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i, 'Date'], // 03-March-89 + [/^gmt[+-][0-9][0-9]?$/i, 'Timezone'], // gmt-3 + [/^utc[+-][0-9][0-9]?$/i, 'Timezone'], // utc-3 + //names + [/^ma?c\'.*/, 'LastName'], //mc'adams + [/^o\'[drlkn].*/, 'LastName'], //o'douggan + [/^ma?cd[aeiou]/, 'LastName'], //macdonell - Last patterns https://en.wikipedia.org/wiki/List_of_family_name_affixes + //slang things + [/^(lol)+[sz]$/, 'Expression'], //lol + [/^woo+a*?h?$/, 'Expression'], //whoaa, wooo + [/^(un|de|re)\\-[a-z\u00C0-\u00FF]{2}/, 'Verb'], // [/^(over|under)[a-z]{2,}/, 'Adjective'], + [/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/, 'Date'], // 03-02-89 + //phone numbers + [/^[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //589-3809 + [/^(\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //632-589-3809 + //money + // currency regex + // /[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6] + //like $5.30 + [/^[-+]?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(k|m|b|bn)?\+?$/, ['Money', 'Value']], //like 5.30$ + [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]\+?$/, ['Money', 'Value']], //like $400usd + [/^[-+]?[\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value']], //numbers + // 50 | -50 | 3.23 | 5,999.0 | 10+ + [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/, ['Cardinal', 'NumericValue']], [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|r?th)$/, ['Ordinal', 'NumericValue']], // .73th + [/^\.[0-9]+\+?$/, ['Cardinal', 'NumericValue']], //percent + [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?%\+?$/, ['Percent', 'Cardinal', 'NumericValue']], //7% .. + [/^\.[0-9]+%$/, ['Percent', 'Cardinal', 'NumericValue']], //.7% .. + //fraction + [/^[0-9]{1,4}\/[0-9]{1,4}(st|nd|rd|th)?s?$/, ['Fraction', 'NumericValue']], //3/2ths + //range + [/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/, ['Value', 'NumberRange']], //7th-8th + //time-range + [/^[0-9][0-9]?(:[0-9][0-9])?(am|pm)? ?[-–—] ?[0-9][0-9]?(:[0-9][0-9])?(am|pm)?$/, ['Time', 'NumberRange']], //7pm-8:30 + //with unit + [/^[0-9.]+([a-z]{1,4})$/, 'Value'] //like 5tbsp + //ordinal + // [/^[0-9][0-9,.]*(st|nd|rd|r?th)$/, ['NumericValue', 'Ordinal']], //like 5th + // [/^[0-9]+(st|nd|rd|th)$/, 'Ordinal'], //like 5th + ]; + const regex = startsWith; + const romanNumeral = /^[IVXLCDM]{2,}$/; + const romanNumValid = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/; // https://stackoverflow.com/a/267405/168877 + //try each of the ^regexes in our list + + const checkRegex$1 = function (term, world) { + let str = term.text; // do them all! + + for (let r = 0; r < regex.length; r += 1) { + if (regex[r][0].test(str) === true) { + term.tagSafe(regex[r][1], 'prefix #' + r, world); + break; + } + } // do some more! + //roman numberals - XVII + + + if (term.text.length >= 2 && romanNumeral.test(str) && romanNumValid.test(str)) { + term.tag('RomanNumeral', 'xvii', world); + } + }; + + var _03Prefixes = checkRegex$1; //built using wordnet, by spencer kelly. + //this mapping shrinks-down the uglified build + + const Adj$1 = 'Adjective'; + const Inf$1 = 'Infinitive'; + const Pres$1 = 'PresentTense'; + const Sing$1 = 'Singular'; + const Past$1 = 'PastTense'; + const Adverb = 'Adverb'; + const Exp = 'Expression'; + const Actor$1 = 'Actor'; + const Verb = 'Verb'; + const Noun$1 = 'Noun'; + const Last$1 = 'LastName'; //the order here matters. + //regexes indexed by mandated last-character + + var endsWith$1 = { + a: [[/.[aeiou]na$/, Noun$1], [/.[oau][wvl]ska$/, Last$1], //polish (female) + [/.[^aeiou]ica$/, Sing$1], [/^([hyj]a)+$/, Exp] //hahah + ], + c: [[/.[^aeiou]ic$/, Adj$1]], + d: [//==-ed== + //double-consonant + [/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/, Past$1], //popped, planned + //double-vowel + [/.[aeo]{2}[bdgmnprvz]ed$/, Past$1], //beeped, mooned, veered + //-hed + [/.[aeiou][sg]hed$/, Past$1], //stashed, sighed + //-rd + [/.[aeiou]red$/, Past$1], //stored + [/.[aeiou]r?ried$/, Past$1], //buried + //-led + [/.[bcdgtr]led$/, Past$1], //startled, rumbled + [/.[aoui]f?led$/, Past$1], //impaled, stifled + //-sed + [/.[iao]sed$/, Past$1], //franchised + [/[aeiou]n?[cs]ed$/, Past$1], //laced, lanced + //-med + [/[aeiou][rl]?[mnf]ed$/, Past$1], //warmed, attained, engulfed + //-ked + [/[aeiou][ns]?c?ked$/, Past$1], //hooked, masked + //-ged + [/[aeiou][nl]?ged$/, Past$1], //engaged + //-ted + [/.[tdbwxz]ed$/, Past$1], //bribed, boxed + [/[^aeiou][aeiou][tvx]ed$/, Past$1], //boxed + //-ied + [/.[cdlmnprstv]ied$/, Past$1], //rallied + [/[^aeiou]ard$/, Sing$1], //card + [/[aeiou][^aeiou]id$/, Adj$1], [/.[vrl]id$/, Adj$1]], + e: [[/.[lnr]ize$/, Inf$1], [/.[^aeiou]ise$/, Inf$1], [/.[aeiou]te$/, Inf$1], [/.[^aeiou][ai]ble$/, Adj$1], [/.[^aeiou]eable$/, Adj$1], [/.[ts]ive$/, Adj$1], [/[a-z]-like$/, Adj$1]], + h: [[/.[^aeiouf]ish$/, Adj$1], [/.v[iy]ch$/, Last$1], //east-europe + [/^ug?h+$/, Exp], //uhh + [/^uh[ -]?oh$/, Exp], //uhoh + [/[a-z]-ish$/, Adj$1] //cartoon-ish + ], + i: [[/.[oau][wvl]ski$/, Last$1] //polish (male) + ], + k: [[/^(k){2}$/, Exp] //kkkk + ], + l: [[/.[gl]ial$/, Adj$1], [/.[^aeiou]ful$/, Adj$1], [/.[nrtumcd]al$/, Adj$1], [/.[^aeiou][ei]al$/, Adj$1]], + m: [[/.[^aeiou]ium$/, Sing$1], [/[^aeiou]ism$/, Sing$1], [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm + [/^\d+ ?[ap]m$/, 'Date']], + n: [[/.[lsrnpb]ian$/, Adj$1], [/[^aeiou]ician$/, Actor$1], [/[aeiou][ktrp]in$/, 'Gerund'] // 'cookin', 'hootin' + ], + o: [[/^no+$/, Exp], //noooo + [/^(yo)+$/, Exp], //yoyo + [/^woo+[pt]?$/, Exp] //woo + ], + r: [[/.[bdfklmst]ler$/, 'Noun'], [/[aeiou][pns]er$/, Sing$1], [/[^i]fer$/, Inf$1], [/.[^aeiou][ao]pher$/, Actor$1], [/.[lk]er$/, 'Noun'], [/.ier$/, 'Comparative']], + t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj$1], [/[aeiou].*ist$/, Adj$1], [/^[a-z]et$/, Verb]], + s: [[/.[^aeiou]ises$/, Pres$1], [/.[rln]ates$/, Pres$1], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing$1], [/.[aeiou]sks$/, Pres$1], //masks + [/.[aeiou]kes$/, Pres$1], //bakes + [/[aeiou][^aeiou]is$/, Sing$1], [/[a-z]\'s$/, Noun$1], [/^yes+$/, Exp] //yessss + ], + v: [[/.[^aeiou][ai][kln]ov$/, Last$1] //east-europe + ], + y: [[/.[cts]hy$/, Adj$1], [/.[st]ty$/, Adj$1], [/.[gk]y$/, Adj$1], [/.[tnl]ary$/, Adj$1], [/.[oe]ry$/, Sing$1], [/[rdntkbhs]ly$/, Adverb], [/...lly$/, Adverb], [/[bszmp]{2}y$/, Adj$1], [/.(gg|bb|zz)ly$/, Adj$1], [/.[ai]my$/, Adj$1], [/[ea]{2}zy$/, Adj$1], [/.[^aeiou]ity$/, Sing$1]] + }; + const Adj = 'Adjective'; + const Inf = 'Infinitive'; + const Pres = 'PresentTense'; + const Sing = 'Singular'; + const Past = 'PastTense'; + const Avb = 'Adverb'; + const Plrl = 'Plural'; + const Actor = 'Actor'; + const Vb = 'Verb'; + const Noun = 'Noun'; + const Last = 'LastName'; + const Modal = 'Modal'; + const Place = 'Place'; // find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup + + var suffixMap$1 = [null, //0 + null, //1 + { + //2-letter + ea: Sing, + ia: Noun, + ic: Adj, + ly: Avb, + "'n": Vb, + "'t": Vb + }, { + //3-letter + oed: Past, + ued: Past, + xed: Past, + ' so': Avb, + "'ll": Modal, + "'re": 'Copula', + azy: Adj, + eer: Noun, + end: Vb, + ped: Past, + ffy: Adj, + ify: Inf, + ing: 'Gerund', + //likely to be converted to Adj after lexicon pass + ize: Inf, + lar: Adj, + mum: Adj, + nes: Pres, + nny: Adj, + oid: Adj, + ous: Adj, + que: Adj, + rol: Sing, + sis: Sing, + zes: Pres + }, { + //4-letter + amed: Past, + aped: Past, + ched: Past, + lked: Past, + nded: Past, + cted: Past, + dged: Past, + akis: Last, + //greek + cede: Inf, + chuk: Last, + //east-europe + czyk: Last, + //polish (male) + ects: Pres, + ends: Vb, + enko: Last, + //east-europe + ette: Sing, + fies: Pres, + fore: Avb, + gate: Inf, + gone: Adj, + ices: Plrl, + ints: Plrl, + ines: Plrl, + ions: Plrl, + less: Avb, + llen: Adj, + made: Adj, + nsen: Last, + //norway + oses: Pres, + ould: Modal, + some: Adj, + sson: Last, + //swedish male + tage: Inf, + teen: 'Value', + tion: Sing, + tive: Adj, + tors: Noun, + vice: Sing + }, { + //5-letter + tized: Past, + urned: Past, + eased: Past, + ances: Plrl, + bound: Adj, + ettes: Plrl, + fully: Avb, + ishes: Pres, + ities: Plrl, + marek: Last, + //polish (male) + nssen: Last, + //norway + ology: Noun, + ports: Plrl, + rough: Adj, + tches: Pres, + tieth: 'Ordinal', + tures: Plrl, + wards: Avb, + where: Avb + }, { + //6-letter + auskas: Last, + //lithuania + keeper: Actor, + logist: Actor, + teenth: 'Value' + }, { + //7-letter + opoulos: Last, + //greek + borough: Place, + //Hillsborough + sdottir: Last //swedish female + + }]; + const endsWith = endsWith$1; + const suffixMap = suffixMap$1; + + const endRegexs = function (term, world) { + let str = term.clean; + let char = str[str.length - 1]; + + if (endsWith.hasOwnProperty(char) === true) { + let regs = endsWith[char]; + + for (let r = 0; r < regs.length; r += 1) { + if (regs[r][0].test(str) === true) { + term.tagSafe(regs[r][1], "endReg ".concat(char, " #").concat(r), world); + break; + } + } + } + }; //sweep-through all suffixes + + + const knownSuffixes = function (term, world) { + const len = term.clean.length; + let max = 7; + + if (len <= max) { + max = len - 1; + } + + for (let i = max; i > 1; i -= 1) { + let str = term.clean.substr(len - i, len); + + if (suffixMap[str.length].hasOwnProperty(str) === true) { + let tag = suffixMap[str.length][str]; + term.tagSafe(tag, 'suffix -' + str, world); + break; + } + } + }; //all-the-way-down! + + + const checkRegex = function (term, world) { + knownSuffixes(term, world); + endRegexs(term, world); + }; + + var _04Suffixes = checkRegex; //faster than + //http://stackoverflow.com/questions/28077049/regex-matching-emoticons + + var emoticons = { + ':(': true, + ':)': true, + ':P': true, + ':p': true, + ':O': true, + ':3': true, + ':|': true, + ':/': true, + ':\\': true, + ':$': true, + ':*': true, + ':@': true, + ':-(': true, + ':-)': true, + ':-P': true, + ':-p': true, + ':-O': true, + ':-3': true, + ':-|': true, + ':-/': true, + ':-\\': true, + ':-$': true, + ':-*': true, + ':-@': true, + ':^(': true, + ':^)': true, + ':^P': true, + ':^p': true, + ':^O': true, + ':^3': true, + ':^|': true, + ':^/': true, + ':^\\': true, + ':^$': true, + ':^*': true, + ':^@': true, + '):': true, + '(:': true, + '$:': true, + '*:': true, + ')-:': true, + '(-:': true, + '$-:': true, + '*-:': true, + ')^:': true, + '(^:': true, + '$^:': true, + '*^:': true, + '<3': true, + ' { + if (raw.charAt(0) === ':') { + //end comma can be last or second-last ':haircut_tone3:‍♀️' + if (raw.match(/:.?$/) === null) { + return false; + } //ensure no spaces + + + if (raw.match(' ')) { + return false; + } //reasonably sized + + + if (raw.length > 35) { + return false; + } + + return true; + } + + return false; + }; //check against emoticon whitelist + + + const isEmoticon = str => { + str = str.replace(/^[:;]/, ':'); //normalize the 'eyes' + + return emoticon.hasOwnProperty(str); + }; + + const tagEmoji = (term, world) => { + let raw = term.pre + term.text + term.post; + raw = raw.trim(); //dont double-up on ending periods + + raw = raw.replace(/[.!?,]$/, ''); //test for :keyword: emojis + + if (isCommaEmoji(raw) === true) { + term.tag('Emoji', 'comma-emoji', world); + term.text = raw; + term.pre = term.pre.replace(':', ''); + term.post = term.post.replace(':', ''); + } //test for unicode emojis + + + if (term.text.match(emojiReg)) { + term.tag('Emoji', 'unicode-emoji', world); + term.text = raw; + } //test for emoticon ':)' emojis + + + if (isEmoticon(raw) === true) { + term.tag('Emoticon', 'emoticon-emoji', world); + term.text = raw; + } + }; + + var _05Emoji = tagEmoji; + const steps = { + lexicon: _01Lexicon, + punctuation: _02Punctuation, + regex: _03Prefixes, + suffix: _04Suffixes, + emoji: _05Emoji + }; //'lookups' look at a term by itself + + const lookups = function (doc, terms) { + let world = doc.world; //our list of known-words + + steps.lexicon(terms, world); //try these other methods + + for (let i = 0; i < terms.length; i += 1) { + let term = terms[i]; //or maybe some helpful punctuation + + steps.punctuation(terms, i, world); //mostly prefix checks + + steps.regex(term, world); //maybe we can guess + + steps.suffix(term, world); //emoji and emoticons + + steps.emoji(term, world); + } + + return doc; + }; + + var _01Init = lookups; //basically, a little-bit better than the noun-fallback + //just top n-grams from nlp tags, generated from nlp-corpus + //after this word, here's what happens usually + + let afterThisWord = { + i: 'Verb', + //44% //i walk.. + first: 'Noun', + //50% //first principles.. + it: 'Verb', + //33% + there: 'Verb', + //35% + not: 'Verb', + //33% + because: 'Noun', + //31% + if: 'Noun', + //32% + but: 'Noun', + //26% + who: 'Verb', + //40% + this: 'Noun', + //37% + his: 'Noun', + //48% + when: 'Noun', + //33% + you: 'Verb', + //35% + very: 'Adjective', + // 39% + old: 'Noun', + //51% + never: 'Verb', + //42% + before: 'Noun' //28% + + }; //in advance of this word, this is what happens usually + + let beforeThisWord = { + there: 'Verb', + //23% // be there + me: 'Verb', + //31% //see me + man: 'Adjective', + // 80% //quiet man + only: 'Verb', + //27% //sees only + him: 'Verb', + //32% //show him + were: 'Noun', + //48% //we were + took: 'Noun', + //38% //he took + himself: 'Verb', + //31% //see himself + went: 'Noun', + //43% //he went + who: 'Noun', + //47% //person who + jr: 'Person' + }; //following this POS, this is likely + + let afterThisPOS = { + Adjective: 'Noun', + //36% //blue dress + Possessive: 'Noun', + //41% //his song + Determiner: 'Noun', + //47% + Adverb: 'Verb', + //20% + Pronoun: 'Verb', + //40% + Value: 'Noun', + //47% + Ordinal: 'Noun', + //53% + Modal: 'Verb', + //35% + Superlative: 'Noun', + //43% + Demonym: 'Noun', + //38% + Honorific: 'Person' // + + }; //in advance of this POS, this is likely + + let beforeThisPOS = { + Copula: 'Noun', + //44% //spencer is + PastTense: 'Noun', + //33% //spencer walked + Conjunction: 'Noun', + //36% + Modal: 'Noun', + //38% + Pluperfect: 'Noun', + //40% + PerfectTense: 'Verb' //32% + + }; + var markov$1 = { + beforeThisWord: beforeThisWord, + afterThisWord: afterThisWord, + beforeThisPos: beforeThisPOS, + afterThisPos: afterThisPOS + }; + const markov = markov$1; + const afterKeys = Object.keys(markov.afterThisPos); + const beforeKeys = Object.keys(markov.beforeThisPos); + + const checkNeighbours = function (terms, world) { + for (let i = 0; i < terms.length; i += 1) { + let term = terms[i]; //do we still need a tag? + + if (term.isKnown() === true) { + continue; + } //ok, this term needs a tag. + //look at previous word for clues.. + + + let lastTerm = terms[i - 1]; + + if (lastTerm) { + // 'foobar term' + if (markov.afterThisWord.hasOwnProperty(lastTerm.clean) === true) { + let tag = markov.afterThisWord[lastTerm.clean]; + term.tag(tag, 'after-' + lastTerm.clean, world); + continue; + } // 'Tag term' + // (look at previous POS tags for clues..) + + + let foundTag = afterKeys.find(tag => lastTerm.tags[tag]); + + if (foundTag !== undefined) { + let tag = markov.afterThisPos[foundTag]; + term.tag(tag, 'after-' + foundTag, world); + continue; + } + } //look at next word for clues.. + + + let nextTerm = terms[i + 1]; + + if (nextTerm) { + // 'term foobar' + if (markov.beforeThisWord.hasOwnProperty(nextTerm.clean) === true) { + let tag = markov.beforeThisWord[nextTerm.clean]; + term.tag(tag, 'before-' + nextTerm.clean, world); + continue; + } // 'term Tag' + // (look at next POS tags for clues..) + + + let foundTag = beforeKeys.find(tag => nextTerm.tags[tag]); + + if (foundTag !== undefined) { + let tag = markov.beforeThisPos[foundTag]; + term.tag(tag, 'before-' + foundTag, world); + continue; + } + } + } + }; + + var _01Neighbours = checkNeighbours; + const titleCase = /^[A-Z][a-z'\u00C0-\u00FF]/; + const hasNumber = /[0-9]/; + /** look for any grammar signals based on capital/lowercase */ + + const checkCase = function (doc) { + let world = doc.world; + doc.list.forEach(p => { + let terms = p.terms(); + + for (let i = 1; i < terms.length; i++) { + const term = terms[i]; + + if (titleCase.test(term.text) === true && hasNumber.test(term.text) === false && term.tags.Date === undefined) { + term.tag('ProperNoun', 'titlecase-noun', world); + } + } + }); + }; + + var _02Case = checkCase; + const hasPrefix = /^(re|un)-?[a-z\u00C0-\u00FF]/; + const prefix = /^(re|un)-?/; + /** check 'rewatch' in lexicon as 'watch' */ + + const checkPrefix = function (terms, world) { + let lex = world.words; + terms.forEach(term => { + // skip if we have a good tag already + if (term.isKnown() === true) { + return; + } //does it start with 'un|re' + + + if (hasPrefix.test(term.clean) === true) { + // look for the root word in the lexicon: + let stem = term.clean.replace(prefix, ''); + + if (stem && stem.length > 3 && lex[stem] !== undefined && lex.hasOwnProperty(stem) === true) { + term.tag(lex[stem], 'stem-' + stem, world); + } + } + }); + }; + var _03Stem = checkPrefix; + const isPlural$8 = [/(^v)ies$/i, /ises$/i, /ives$/i, /(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /(buffal|tomat|tornad)oes$/i, /(analy|ba|diagno|parenthe|progno|synop|the)ses$/i, /(vert|ind|cort)ices$/i, /(matr|append)ices$/i, /(x|ch|ss|sh|s|z|o)es$/i, /is$/i, /men$/i, /news$/i, /.tia$/i, /(^f)ves$/i, /(lr)ves$/i, /(^aeiouy|qu)ies$/i, /(m|l)ice$/i, /(cris|ax|test)es$/i, /(alias|status)es$/i, /ics$/i]; //similar to plural/singularize rules, but not the same - methods$3.money = function (n) { - var m = this.match('#Money #Currency?'); + const isSingular$1 = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /s[aeiou]+ns$/i, // sans, siens + /(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i]; + var isPlural_1$2 = { + isSingular: isSingular$1, + isPlural: isPlural$8 + }; + const noPlurals = ['Uncountable', 'Pronoun', 'Place', 'Value', 'Person', 'Month', 'WeekDay', 'Holiday']; + const rules$1 = isPlural_1$2; + const notPlural = [/ss$/, /sis$/, /[^aeiou][uo]s$/, /'s$/]; + const notSingular = [/i$/, /ae$/]; + /** turn nouns into singular/plural */ - if (typeof n === 'number') { - m = m.get(n); - } + const checkPlural = function (t, world) { + if (t.tags.Noun && !t.tags.Acronym) { + let str = t.clean; //skip existing tags, fast + + if (t.tags.Singular || t.tags.Plural) { + return; + } //too short + + + if (str.length <= 3) { + t.tag('Singular', 'short-singular', world); + return; + } //is it impossible to be plural? + + + if (noPlurals.find(tag => t.tags[tag])) { + return; + } // isPlural suffix rules + + + if (rules$1.isPlural.find(reg => reg.test(str))) { + t.tag('Plural', 'plural-rules', world); + return; + } // isSingular suffix rules + + + if (rules$1.isSingular.find(reg => reg.test(str))) { + t.tag('Singular', 'singular-rules', world); + return; + } // finally, fallback 'looks plural' rules.. + + + if (/s$/.test(str) === true) { + //avoid anything too sketchy to be plural + if (notPlural.find(reg => reg.test(str))) { + return; + } + + t.tag('Plural', 'plural-fallback', world); + return; + } //avoid anything too sketchy to be singular - return m; - }; - /** return all cities, countries, addresses, and regions */ + if (notSingular.find(reg => reg.test(str))) { + return; + } + + t.tag('Singular', 'singular-fallback', world); + } + }; - methods$3.places = function (n) { - // don't split 'paris, france' - var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas + var _04Plurals = checkPlural; //todo remove/normalize plural forms - var m = this.not(keep).splitAfter('@hasComma'); // combine them back together + const orgWords$1 = ['academy', 'administration', 'agence', 'agences', 'agencies', 'agency', 'airlines', 'airways', 'army', 'assoc', 'associates', 'association', 'assurance', 'authority', 'autorite', 'aviation', 'bank', 'banque', 'board', 'boys', 'brands', 'brewery', 'brotherhood', 'brothers', 'building society', 'bureau', 'cafe', 'caisse', 'capital', 'care', 'cathedral', 'center', 'central bank', 'centre', 'chemicals', 'choir', 'chronicle', 'church', 'circus', 'clinic', 'clinique', 'club', 'co', 'coalition', 'coffee', 'collective', 'college', 'commission', 'committee', 'communications', 'community', 'company', 'comprehensive', 'computers', 'confederation', 'conference', 'conseil', 'consulting', 'containers', 'corporation', 'corps', 'corp', 'council', 'crew', 'daily news', 'data', 'departement', 'department', 'department store', 'departments', 'design', 'development', 'directorate', 'division', 'drilling', 'education', 'eglise', 'electric', 'electricity', 'energy', 'ensemble', 'enterprise', 'enterprises', 'entertainment', 'estate', 'etat', 'evening news', 'faculty', 'federation', 'financial', 'fm', 'foundation', 'fund', 'gas', 'gazette', 'girls', 'government', 'group', 'guild', 'health authority', 'herald', 'holdings', 'hospital', 'hotel', 'hotels', 'inc', 'industries', 'institut', 'institute', 'institute of technology', 'institutes', 'insurance', 'international', 'interstate', 'investment', 'investments', 'investors', 'journal', 'laboratory', 'labs', // 'law', + 'liberation army', 'limited', 'local authority', 'local health authority', 'machines', 'magazine', 'management', 'marine', 'marketing', 'markets', 'media', 'memorial', 'mercantile exchange', 'ministere', 'ministry', 'military', 'mobile', 'motor', 'motors', 'musee', 'museum', // 'network', + 'news', 'news service', 'observatory', 'office', 'oil', 'optical', 'orchestra', 'organization', 'partners', 'partnership', // 'party', + "people's party", 'petrol', 'petroleum', 'pharmacare', 'pharmaceutical', 'pharmaceuticals', 'pizza', 'plc', 'police', 'polytechnic', 'post', 'power', 'press', 'productions', 'quartet', 'radio', 'regional authority', 'regional health authority', 'reserve', 'resources', 'restaurant', 'restaurants', 'savings', 'school', 'securities', 'service', 'services', 'social club', 'societe', 'society', 'sons', 'standard', 'state police', 'state university', 'stock exchange', 'subcommittee', 'syndicat', 'systems', 'telecommunications', 'telegraph', 'television', 'times', 'tribunal', 'tv', 'union', 'university', 'utilities', 'workers']; + var organizations = orgWords$1.reduce(function (h, str) { + h[str] = 'Noun'; + return h; + }, {}); + let orgWords = organizations; //could this word be an organization - m = m.concat(keep); - m.sort('index'); - m = m.match('#Place+'); + const maybeOrg = function (t) { + //must be a noun + if (!t.tags.Noun) { + return false; + } //can't be these things - if (typeof n === 'number') { - m = m.get(n); - } - return m; - }; - /** return all schools, businesses and institutions */ + if (t.tags.Pronoun || t.tags.Comma || t.tags.Possessive) { + return false; + } //must be one of these - methods$3.organizations = function (n) { - var m = this.clauses(); - m = m.match('#Organization+'); + if (t.tags.Organization || t.tags.Acronym || t.tags.Place || t.titleCase()) { + return true; + } - if (typeof n === 'number') { - m = m.get(n); - } + return false; + }; - return m; - }; //combine them with .topics() method + const tagOrgs = function (terms, world) { + for (let i = 0; i < terms.length; i += 1) { + let t = terms[i]; + if (orgWords[t.clean] !== undefined && orgWords.hasOwnProperty(t.clean) === true) { + // look-backward - eg. 'Toronto University' + let lastTerm = terms[i - 1]; - methods$3.entities = function (n) { - var r = this.clauses(); // Find people, places, and organizations + if (lastTerm !== undefined && maybeOrg(lastTerm) === true) { + lastTerm.tagSafe('Organization', 'org-word-1', world); + t.tagSafe('Organization', 'org-word-2', world); + continue; + } //look-forward - eg. University of Toronto - var yup = r.people(); - yup = yup.concat(r.places()); - yup = yup.concat(r.organizations()); - var ignore = ['someone', 'man', 'woman', 'mother', 'brother', 'sister', 'father']; - yup = yup.not(ignore); //return them to normal ordering - yup.sort('sequence'); // yup.unique() //? not sure + let nextTerm = terms[i + 1]; - if (typeof n === 'number') { - yup = yup.get(n); - } + if (nextTerm !== undefined && nextTerm.clean === 'of') { + if (terms[i + 2] && maybeOrg(terms[i + 2])) { + t.tagSafe('Organization', 'org-of-word-1', world); + nextTerm.tagSafe('Organization', 'org-of-word-2', world); + terms[i + 2].tagSafe('Organization', 'org-of-word-3', world); + continue; + } + } + } + } + }; - return yup; - }; //aliases + var _05Organizations = tagOrgs; + const oneLetterAcronym = /^[A-Z]('s|,)?$/; + const periodSeperated = /([A-Z]\.){2}[A-Z]?/i; + const oneLetterWord = { + I: true, + A: true + }; + const isAcronym = function (term, world) { + let str = term.reduced; // a known acronym like fbi - methods$3.things = methods$3.entities; - methods$3.topics = methods$3.entities; - var _simple = methods$3; - var underOver = /^(under|over)-?/; - /** match a word-sequence, like 'super bowl' in the lexicon */ + if (term.tags.Acronym) { + return true; + } // if (term.tags.Adverb || term.tags.Verb || term.tags.Value || term.tags.Plural) { + // return false + // } + // known-words, like 'PIZZA' is not an acronym. - var tryMultiple = function tryMultiple(terms, t, world) { - var lex = world.words; //try a two-word version - var txt = terms[t].reduced + ' ' + terms[t + 1].reduced; + if (world.words[str]) { + return false; + } // long capitalized words are not usually either + + + if (str.length > 5) { + return false; + } + + return term.isAcronym(); + }; // F.B.I., NBC, - but not 'NO COLLUSION' + + + const checkAcronym = function (terms, world) { + terms.forEach(term => { + //these are not acronyms + if (term.tags.RomanNumeral === true) { + return; + } //period-ones F.D.B. - if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) { - terms[t].tag(lex[txt], 'lexicon-two', world); - terms[t + 1].tag(lex[txt], 'lexicon-two', world); - return 1; - } //try a three-word version? + if (periodSeperated.test(term.text) === true) { + term.tag('Acronym', 'period-acronym', world); + } //non-period ones are harder + + + if (term.isUpperCase() && isAcronym(term, world)) { + term.tag('Acronym', 'acronym-step', world); + term.tag('Noun', 'acronym-infer', world); + } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) { + term.tag('Acronym', 'one-letter-acronym', world); + term.tag('Noun', 'one-letter-infer', world); + } //if it's a organization, - if (t + 2 < terms.length) { - txt += ' ' + terms[t + 2].reduced; - if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) { - terms[t].tag(lex[txt], 'lexicon-three', world); - terms[t + 1].tag(lex[txt], 'lexicon-three', world); - terms[t + 2].tag(lex[txt], 'lexicon-three', world); - return 2; - } - } //try a four-word version? + if (term.tags.Organization && term.text.length <= 3) { + term.tag('Acronym', 'acronym-org', world); + } + if (term.tags.Organization && term.isUpperCase() && term.text.length <= 6) { + term.tag('Acronym', 'acronym-org-case', world); + } + }); + }; - if (t + 3 < terms.length) { - txt += ' ' + terms[t + 3].reduced; + var _06Acronyms = checkAcronym; + const step = { + neighbours: _01Neighbours, + case: _02Case, + stem: _03Stem, + plural: _04Plurals, + organizations: _05Organizations, + acronyms: _06Acronyms + }; // - if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) { - terms[t].tag(lex[txt], 'lexicon-four', world); - terms[t + 1].tag(lex[txt], 'lexicon-four', world); - terms[t + 2].tag(lex[txt], 'lexicon-four', world); - terms[t + 3].tag(lex[txt], 'lexicon-four', world); - return 3; - } - } + const fallbacks$1 = function (doc, terms) { + let world = doc.world; // if it's empty, consult it's neighbours, first + + step.neighbours(terms, world); // is there a case-sensitive clue? + + step.case(doc); // check 'rewatch' as 'watch' + + step.stem(terms, world); // ... fallback to a noun! + + terms.forEach(t => { + if (t.isKnown() === false) { + t.tag('Noun', 'noun-fallback', doc.world); + } + }); // turn 'Foo University' into an Org + + step.organizations(terms, world); //turn 'FBD' into an acronym + + step.acronyms(terms, world); //are the nouns singular or plural? + + terms.forEach(t => { + step.plural(t, doc.world); + }); + return doc; + }; + + var _02Fallbacks = fallbacks$1; + const hasNegative = /n't$/; + const irregulars$2 = { + "won't": ['will', 'not'], + wont: ['will', 'not'], + "can't": ['can', 'not'], + cant: ['can', 'not'], + cannot: ['can', 'not'], + "shan't": ['should', 'not'], + dont: ['do', 'not'], + dun: ['do', 'not'] // "ain't" is ambiguous for is/was + + }; // either 'is not' or 'are not' + + const doAint = function (term, phrase) { + let terms = phrase.terms(); + let index = terms.indexOf(term); + let before = terms.slice(0, index); //look for the preceding noun + + let noun = before.find(t => { + return t.tags.Noun; + }); + + if (noun && noun.tags.Plural) { + return ['are', 'not']; + } + + return ['is', 'not']; + }; + + const checkNegative$1 = function (term, phrase) { + //check named-ones + if (irregulars$2.hasOwnProperty(term.clean) === true) { + return irregulars$2[term.clean]; + } //this word needs it's own logic: + + + if (term.clean === "ain't" || term.clean === 'aint') { + return doAint(term, phrase); + } //try it normally + + + if (hasNegative.test(term.clean) === true) { + let main = term.clean.replace(hasNegative, ''); + return [main, 'not']; + } + + return null; + }; + + var _01Negative = checkNegative$1; + const contraction$1 = /([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z]{1,2})$/i; //these ones don't seem to be ambiguous + + const easy = { + ll: 'will', + ve: 'have', + re: 'are', + m: 'am', + "n't": 'not' + }; // + + const checkApostrophe$1 = function (term) { + let parts = term.text.match(contraction$1); + + if (parts === null) { + return null; + } + + if (easy.hasOwnProperty(parts[2])) { + return [parts[1], easy[parts[2]]]; + } + + return null; + }; + + var _02Simple = checkApostrophe$1; + const irregulars$1 = { + wanna: ['want', 'to'], + gonna: ['going', 'to'], + im: ['i', 'am'], + alot: ['a', 'lot'], + ive: ['i', 'have'], + imma: ['I', 'will'], + "where'd": ['where', 'did'], + whered: ['where', 'did'], + "when'd": ['when', 'did'], + whend: ['when', 'did'], + // "how'd": ['how', 'did'], //'how would?' + // "what'd": ['what', 'did'], //'what would?' + howd: ['how', 'did'], + whatd: ['what', 'did'], + // "let's": ['let', 'us'], //too weird + //multiple word contractions + dunno: ['do', 'not', 'know'], + brb: ['be', 'right', 'back'], + gtg: ['got', 'to', 'go'], + irl: ['in', 'real', 'life'], + tbh: ['to', 'be', 'honest'], + imo: ['in', 'my', 'opinion'], + til: ['today', 'i', 'learned'], + rn: ['right', 'now'], + twas: ['it', 'was'], + '@': ['at'] + }; // + + const checkIrregulars$1 = function (term) { + //check white-list + if (irregulars$1.hasOwnProperty(term.clean)) { + return irregulars$1[term.clean]; + } + + return null; + }; + + var _03Irregulars = checkIrregulars$1; + const hasApostropheS = /([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]s$/i; + const banList = { + that: true, + there: true + }; + const hereThere = { + here: true, + there: true, + everywhere: true + }; + + const isPossessive = (term, pool) => { + // if we already know it + if (term.tags.Possessive) { + return true; + } //a pronoun can't be possessive - "he's house" + + + if (term.tags.Pronoun || term.tags.QuestionWord) { + return false; + } + + if (banList.hasOwnProperty(term.reduced)) { + return false; + } //if end of sentence, it is possessive - "was spencer's" + + + let nextTerm = pool.get(term.next); + + if (!nextTerm) { + return true; + } //a gerund suggests 'is walking' + + + if (nextTerm.tags.Verb) { + //fix 'jamie's bite' + if (nextTerm.tags.Infinitive) { + return true; + } //fix 'spencer's runs' + + + if (nextTerm.tags.PresentTense) { + return true; + } + + return false; + } //spencer's house + + + if (nextTerm.tags.Noun) { + // 'spencer's here' + if (hereThere.hasOwnProperty(nextTerm.reduced) === true) { + return false; + } + + return true; + } //rocket's red glare + + + let twoTerm = pool.get(nextTerm.next); + + if (twoTerm && twoTerm.tags.Noun && !twoTerm.tags.Pronoun) { + return true; + } //othwerwise, an adjective suggests 'is good' + + + if (nextTerm.tags.Adjective || nextTerm.tags.Adverb || nextTerm.tags.Verb) { + return false; + } + + return false; + }; - return 0; - }; - /** look at each word in our list of known-words */ + const isHas = (term, phrase) => { + let terms = phrase.terms(); + let index = terms.indexOf(term); + let after = terms.slice(index + 1, index + 3); //look for a past-tense verb + return after.find(t => { + return t.tags.PastTense; + }); + }; - var checkLexicon = function checkLexicon(terms, world) { - var lex = world.words; - var hasCompound = world.hasCompound; // use reduced? - //go through each term, and check the lexicon + const checkPossessive$1 = function (term, phrase, world) { + //the rest of 's + let found = term.text.match(hasApostropheS); - for (var t = 0; t < terms.length; t += 1) { - var str = terms[t].clean; //is it the start of a compound word, like 'super bowl'? + if (found !== null) { + //spencer's thing vs spencer-is + if (isPossessive(term, phrase.pool) === true) { + term.tag('#Possessive', 'isPossessive', world); + return null; + } //'spencer is' - if (hasCompound[str] === true && t + 1 < terms.length) { - var foundWords = tryMultiple(terms, t, world); - - if (foundWords > 0) { - t += foundWords; //skip any already-found words - - continue; - } - } //try one-word lexicon - - - if (lex[str] !== undefined && lex.hasOwnProperty(str) === true) { - terms[t].tag(lex[str], 'lexicon', world); - continue; - } // look at reduced version of term, too - - - if (str !== terms[t].reduced && lex.hasOwnProperty(terms[t].reduced) === true) { - terms[t].tag(lex[terms[t].reduced], 'lexicon', world); - continue; - } // prefix strip: try to match 'take' for 'undertake' - - - if (underOver.test(str) === true) { - var noPrefix = str.replace(underOver, ''); - - if (lex.hasOwnProperty(noPrefix) === true) { - terms[t].tag(lex[noPrefix], 'noprefix-lexicon', world); - } - } - } - - return terms; - }; - - var _01Lexicon = checkLexicon; - var apostrophes = /[\'‘’‛‵′`´]$/; - var perSec = /^(m|k|cm|km|m)\/(s|h|hr)$/; // '5 k/m' - // - - var checkPunctuation = function checkPunctuation(terms, i, world) { - var term = terms[i]; //check hyphenation - // if (term.post.indexOf('-') !== -1 && terms[i + 1] && terms[i + 1].pre === '') { - // term.tag('Hyphenated', 'has-hyphen', world) - // } - // support 'head-over' - // if (term.hasHyphen() === true) { - // console.log(term.tags) - // } - // console.log(term.hasHyphen(), term.text) - //an end-tick (trailing apostrophe) - flanders', or Carlos' - - if (apostrophes.test(term.text)) { - if (!apostrophes.test(term.pre) && !apostrophes.test(term.post) && term.clean.length > 2) { - var endChar = term.clean[term.clean.length - 2]; //flanders' - - if (endChar === 's') { - term.tag(['Possessive', 'Noun'], 'end-tick', world); - return; - } //chillin' - - - if (endChar === 'n') { - term.tag(['Gerund'], 'chillin', world); - } - } - } // '5 km/s' - - - if (perSec.test(term.text)) { - term.tag('Unit', 'per-sec', world); - } // 'NASA' is, but not 'i REALLY love it.' - // if (term.tags.Noun === true && isAcronym(term, world)) { - // term.tag('Acronym', 'acronym-step', world) - // term.tag('Noun', 'acronym-infer', world) - // } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) { - // term.tag('Acronym', 'one-letter-acronym', world) - // term.tag('Noun', 'one-letter-infer', world) - // } - - }; - - var _02Punctuation = checkPunctuation; //these are regexes applied to t.text, instead of t.clean - // order matters. - - var startsWith = [//web tags - [/^[\w\.]+@[\w\.]+\.[a-z]{2,3}$/, 'Email'], //not fancy - [/^#[a-z0-9_\u00C0-\u00FF]{2,}$/, 'HashTag'], [/^@1?[0-9](am|pm)$/i, 'Time'], // @6pm - [/^@1?[0-9]:[0-9]{2}(am|pm)?$/i, 'Time'], // @6:30 - [/^@\w{2,}$/, 'AtMention'], //@spencermountain - [/^(https?:\/\/|www\.)\w+\.[a-z]{2,3}/, 'Url'], //with http/www - [/^[\w./]+\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/, 'Url'], //http://mostpopularwebsites.net/top-level-domain - //dates/times - [/^'[0-9]{2}$/, 'Year'], //like '97 - [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/, 'Time'], //4:32:32 - [/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i, 'Time'], //4pm - [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i, 'Time'], //4:00pm - [/^[PMCE]ST$/, 'Time'], //PST, time zone abbrevs - [/^utc ?[+-]?[0-9]+?$/, 'Time'], //UTC 8+ - [/^[a-z0-9]*? o\'?clock$/, 'Time'], //3 oclock - [/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i, 'Date'], // 2020-03-02T00:00:00.000Z - [/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/, 'Date'], // 03-02-89 - [/^[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,4}$/, 'Date'], // 03/02/89 - [/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i, 'Date'], // 03-March-89 - [/^gmt[+-][0-9][0-9]?$/i, 'Timezone'], // gmt-3 - [/^utc[+-][0-9][0-9]?$/i, 'Timezone'], // utc-3 - //names - [/^ma?c\'.*/, 'LastName'], //mc'adams - [/^o\'[drlkn].*/, 'LastName'], //o'douggan - [/^ma?cd[aeiou]/, 'LastName'], //macdonell - Last patterns https://en.wikipedia.org/wiki/List_of_family_name_affixes - //slang things - [/^(lol)+[sz]$/, 'Expression'], //lol - [/^woo+a*?h?$/, 'Expression'], //whoaa, wooo - [/^(un|de|re)\\-[a-z\u00C0-\u00FF]{2}/, 'Verb'], // [/^(over|under)[a-z]{2,}/, 'Adjective'], - [/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/, 'Date'], // 03-02-89 - //phone numbers - [/^[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //589-3809 - [/^(\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //632-589-3809 - //money - // currency regex - // /[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6] - //like $5.30 - [/^[-+]?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(k|m|b|bn)?\+?$/, ['Money', 'Value']], //like 5.30$ - [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]\+?$/, ['Money', 'Value']], //like $400usd - [/^[-+]?[\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value']], //numbers - // 50 | -50 | 3.23 | 5,999.0 | 10+ - [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/, ['Cardinal', 'NumericValue']], [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|r?th)$/, ['Ordinal', 'NumericValue']], // .73th - [/^\.[0-9]+\+?$/, ['Cardinal', 'NumericValue']], //percent - [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?%\+?$/, ['Percent', 'Cardinal', 'NumericValue']], //7% .. - [/^\.[0-9]+%$/, ['Percent', 'Cardinal', 'NumericValue']], //.7% .. - //fraction - [/^[0-9]{1,4}\/[0-9]{1,4}(st|nd|rd|th)?s?$/, ['Fraction', 'NumericValue']], //3/2ths - //range - [/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/, ['Value', 'NumberRange']], //7th-8th - //time-range - [/^[0-9][0-9]?(:[0-9][0-9])?(am|pm)?[-–—][0-9][0-9]?(:[0-9][0-9])?(am|pm)?$/, ['Time', 'NumberRange']], //7pm-8:30 - //with unit - [/^[0-9.]+([a-z]{1,4})$/, 'Value'] //like 5tbsp - //ordinal - // [/^[0-9][0-9,.]*(st|nd|rd|r?th)$/, ['NumericValue', 'Ordinal']], //like 5th - // [/^[0-9]+(st|nd|rd|th)$/, 'Ordinal'], //like 5th - ]; - var romanNumeral = /^[IVXLCDM]{2,}$/; - var romanNumValid = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/; // https://stackoverflow.com/a/267405/168877 - //try each of the ^regexes in our list - - var checkRegex$1 = function checkRegex(term, world) { - var str = term.text; // do them all! - - for (var r = 0; r < startsWith.length; r += 1) { - if (startsWith[r][0].test(str) === true) { - term.tagSafe(startsWith[r][1], 'prefix #' + r, world); - break; - } - } // do some more! - //roman numberals - XVII - - - if (term.text.length >= 2 && romanNumeral.test(str) && romanNumValid.test(str)) { - term.tag('RomanNumeral', 'xvii', world); - } - }; - - var _03Prefixes = checkRegex$1; //regex suffix patterns and their most common parts of speech, - //built using wordnet, by spencer kelly. - //this mapping shrinks-down the uglified build - - var Adj$1 = 'Adjective'; - var Inf$1 = 'Infinitive'; - var Pres$1 = 'PresentTense'; - var Sing$1 = 'Singular'; - var Past$1 = 'PastTense'; - var Adverb = 'Adverb'; - var Exp = 'Expression'; - var Actor$1 = 'Actor'; - var Verb = 'Verb'; - var Noun$1 = 'Noun'; - var Last$1 = 'LastName'; //the order here matters. - //regexes indexed by mandated last-character - - var endsWith = { - a: [[/.[aeiou]na$/, Noun$1], [/.[oau][wvl]ska$/, Last$1], //polish (female) - [/.[^aeiou]ica$/, Sing$1], [/^([hyj]a)+$/, Exp] //hahah - ], - c: [[/.[^aeiou]ic$/, Adj$1]], - d: [//==-ed== - //double-consonant - [/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/, Past$1], //popped, planned - //double-vowel - [/.[aeo]{2}[bdgmnprvz]ed$/, Past$1], //beeped, mooned, veered - //-hed - [/.[aeiou][sg]hed$/, Past$1], //stashed, sighed - //-rd - [/.[aeiou]red$/, Past$1], //stored - [/.[aeiou]r?ried$/, Past$1], //buried - //-led - [/.[bcdgtr]led$/, Past$1], //startled, rumbled - [/.[aoui]f?led$/, Past$1], //impaled, stifled - //-sed - [/.[iao]sed$/, Past$1], //franchised - [/[aeiou]n?[cs]ed$/, Past$1], //laced, lanced - //-med - [/[aeiou][rl]?[mnf]ed$/, Past$1], //warmed, attained, engulfed - //-ked - [/[aeiou][ns]?c?ked$/, Past$1], //hooked, masked - //-ged - [/[aeiou][nl]?ged$/, Past$1], //engaged - //-ted - [/.[tdbwxz]ed$/, Past$1], //bribed, boxed - [/[^aeiou][aeiou][tvx]ed$/, Past$1], //boxed - //-ied - [/.[cdlmnprstv]ied$/, Past$1], //rallied - [/[^aeiou]ard$/, Sing$1], //card - [/[aeiou][^aeiou]id$/, Adj$1], [/.[vrl]id$/, Adj$1]], - e: [[/.[lnr]ize$/, Inf$1], [/.[^aeiou]ise$/, Inf$1], [/.[aeiou]te$/, Inf$1], [/.[^aeiou][ai]ble$/, Adj$1], [/.[^aeiou]eable$/, Adj$1], [/.[ts]ive$/, Adj$1]], - h: [[/.[^aeiouf]ish$/, Adj$1], [/.v[iy]ch$/, Last$1], //east-europe - [/^ug?h+$/, Exp], //uhh - [/^uh[ -]?oh$/, Exp] //uhoh - ], - i: [[/.[oau][wvl]ski$/, Last$1] //polish (male) - ], - k: [[/^(k){2}$/, Exp] //kkkk - ], - l: [[/.[gl]ial$/, Adj$1], [/.[^aeiou]ful$/, Adj$1], [/.[nrtumcd]al$/, Adj$1], [/.[^aeiou][ei]al$/, Adj$1]], - m: [[/.[^aeiou]ium$/, Sing$1], [/[^aeiou]ism$/, Sing$1], [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm - [/^\d+ ?[ap]m$/, 'Date']], - n: [[/.[lsrnpb]ian$/, Adj$1], [/[^aeiou]ician$/, Actor$1], [/[aeiou][ktrp]in$/, 'Gerund'] // 'cookin', 'hootin' - ], - o: [[/^no+$/, Exp], //noooo - [/^(yo)+$/, Exp], //yoyo - [/^woo+[pt]?$/, Exp] //woo - ], - r: [[/.[bdfklmst]ler$/, 'Noun'], [/[aeiou][pns]er$/, Sing$1], [/[^i]fer$/, Inf$1], [/.[^aeiou][ao]pher$/, Actor$1], [/.[lk]er$/, 'Noun'], [/.ier$/, 'Comparative']], - t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj$1], [/[aeiou].*ist$/, Adj$1], [/^[a-z]et$/, Verb]], - s: [[/.[^aeiou]ises$/, Pres$1], [/.[rln]ates$/, Pres$1], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing$1], [/.[aeiou]sks$/, Pres$1], //masks - [/.[aeiou]kes$/, Pres$1], //bakes - [/[aeiou][^aeiou]is$/, Sing$1], [/[a-z]\'s$/, Noun$1], [/^yes+$/, Exp] //yessss - ], - v: [[/.[^aeiou][ai][kln]ov$/, Last$1] //east-europe - ], - y: [[/.[cts]hy$/, Adj$1], [/.[st]ty$/, Adj$1], [/.[gk]y$/, Adj$1], [/.[tnl]ary$/, Adj$1], [/.[oe]ry$/, Sing$1], [/[rdntkbhs]ly$/, Adverb], [/...lly$/, Adverb], [/[bszmp]{2}y$/, Adj$1], [/.(gg|bb|zz)ly$/, Adj$1], [/.[ai]my$/, Adj$1], [/[ea]{2}zy$/, Adj$1], [/.[^aeiou]ity$/, Sing$1]] - }; //just a foolish lookup of known suffixes - - var Adj = 'Adjective'; - var Inf = 'Infinitive'; - var Pres = 'PresentTense'; - var Sing = 'Singular'; - var Past = 'PastTense'; - var Avb = 'Adverb'; - var Plrl = 'Plural'; - var Actor = 'Actor'; - var Vb = 'Verb'; - var Noun = 'Noun'; - var Last = 'LastName'; - var Modal = 'Modal'; - var Place = 'Place'; // find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup - - var suffixMap = [null, //0 - null, //1 - { - //2-letter - ea: Sing, - ia: Noun, - ic: Adj, - ly: Avb, - "'n": Vb, - "'t": Vb - }, { - //3-letter - oed: Past, - ued: Past, - xed: Past, - ' so': Avb, - "'ll": Modal, - "'re": 'Copula', - azy: Adj, - eer: Noun, - end: Vb, - ped: Past, - ffy: Adj, - ify: Inf, - ing: 'Gerund', - //likely to be converted to Adj after lexicon pass - ize: Inf, - lar: Adj, - mum: Adj, - nes: Pres, - nny: Adj, - oid: Adj, - ous: Adj, - que: Adj, - rol: Sing, - sis: Sing, - zes: Pres - }, { - //4-letter - amed: Past, - aped: Past, - ched: Past, - lked: Past, - nded: Past, - cted: Past, - dged: Past, - akis: Last, - //greek - cede: Inf, - chuk: Last, - //east-europe - czyk: Last, - //polish (male) - ects: Pres, - ends: Vb, - enko: Last, - //east-europe - ette: Sing, - fies: Pres, - fore: Avb, - gate: Inf, - gone: Adj, - ices: Plrl, - ints: Plrl, - ines: Plrl, - ions: Plrl, - less: Avb, - llen: Adj, - made: Adj, - nsen: Last, - //norway - oses: Pres, - ould: Modal, - some: Adj, - sson: Last, - //swedish male - tage: Inf, - teen: 'Value', - tion: Sing, - tive: Adj, - tors: Noun, - vice: Sing - }, { - //5-letter - tized: Past, - urned: Past, - eased: Past, - ances: Plrl, - bound: Adj, - ettes: Plrl, - fully: Avb, - ishes: Pres, - ities: Plrl, - marek: Last, - //polish (male) - nssen: Last, - //norway - ology: Noun, - ports: Plrl, - rough: Adj, - tches: Pres, - tieth: 'Ordinal', - tures: Plrl, - wards: Avb, - where: Avb - }, { - //6-letter - auskas: Last, - //lithuania - keeper: Actor, - logist: Actor, - teenth: 'Value' - }, { - //7-letter - opoulos: Last, - //greek - borough: Place, - //Hillsborough - sdottir: Last //swedish female - - }]; - - var endRegexs = function endRegexs(term, world) { - var str = term.clean; - var _char = str[str.length - 1]; - - if (endsWith.hasOwnProperty(_char) === true) { - var regs = endsWith[_char]; - - for (var r = 0; r < regs.length; r += 1) { - if (regs[r][0].test(str) === true) { - term.tagSafe(regs[r][1], "endReg ".concat(_char, " #").concat(r), world); - break; - } - } - } - }; //sweep-through all suffixes - - - var knownSuffixes = function knownSuffixes(term, world) { - var len = term.clean.length; - var max = 7; - - if (len <= max) { - max = len - 1; - } - - for (var i = max; i > 1; i -= 1) { - var str = term.clean.substr(len - i, len); - - if (suffixMap[str.length].hasOwnProperty(str) === true) { - var tag = suffixMap[str.length][str]; - term.tagSafe(tag, 'suffix -' + str, world); - break; - } - } - }; //all-the-way-down! - - - var checkRegex = function checkRegex(term, world) { - knownSuffixes(term, world); - endRegexs(term, world); - }; - - var _04Suffixes = checkRegex; //just some of the most common emoticons - //faster than - //http://stackoverflow.com/questions/28077049/regex-matching-emoticons - - var emoticons = { - ':(': true, - ':)': true, - ':P': true, - ':p': true, - ':O': true, - ':3': true, - ':|': true, - ':/': true, - ':\\': true, - ':$': true, - ':*': true, - ':@': true, - ':-(': true, - ':-)': true, - ':-P': true, - ':-p': true, - ':-O': true, - ':-3': true, - ':-|': true, - ':-/': true, - ':-\\': true, - ':-$': true, - ':-*': true, - ':-@': true, - ':^(': true, - ':^)': true, - ':^P': true, - ':^p': true, - ':^O': true, - ':^3': true, - ':^|': true, - ':^/': true, - ':^\\': true, - ':^$': true, - ':^*': true, - ':^@': true, - '):': true, - '(:': true, - '$:': true, - '*:': true, - ')-:': true, - '(-:': true, - '$-:': true, - '*-:': true, - ')^:': true, - '(^:': true, - '$^:': true, - '*^:': true, - '<3': true, - ' 35) { - return false; - } - - return true; - } - - return false; - }; //check against emoticon whitelist - - - var isEmoticon = function isEmoticon(str) { - str = str.replace(/^[:;]/, ':'); //normalize the 'eyes' - - return emoticons.hasOwnProperty(str); - }; - - var tagEmoji = function tagEmoji(term, world) { - var raw = term.pre + term.text + term.post; - raw = raw.trim(); //dont double-up on ending periods - - raw = raw.replace(/[.!?,]$/, ''); //test for :keyword: emojis - - if (isCommaEmoji(raw) === true) { - term.tag('Emoji', 'comma-emoji', world); - term.text = raw; - term.pre = term.pre.replace(':', ''); - term.post = term.post.replace(':', ''); - } //test for unicode emojis - - - if (term.text.match(emojiReg)) { - term.tag('Emoji', 'unicode-emoji', world); - term.text = raw; - } //test for emoticon ':)' emojis - - - if (isEmoticon(raw) === true) { - term.tag('Emoticon', 'emoticon-emoji', world); - term.text = raw; - } - }; - - var _05Emoji = tagEmoji; - var steps = { - lexicon: _01Lexicon, - punctuation: _02Punctuation, - regex: _03Prefixes, - suffix: _04Suffixes, - emoji: _05Emoji - }; //'lookups' look at a term by itself - - var lookups = function lookups(doc, terms) { - var world = doc.world; //our list of known-words - - steps.lexicon(terms, world); //try these other methods - - for (var i = 0; i < terms.length; i += 1) { - var term = terms[i]; //or maybe some helpful punctuation - - steps.punctuation(terms, i, world); //mostly prefix checks - - steps.regex(term, world); //maybe we can guess - - steps.suffix(term, world); //emoji and emoticons - - steps.emoji(term, world); - } - - return doc; - }; - - var _01Init = lookups; //markov-like stats about co-occurance, for hints about unknown terms - //basically, a little-bit better than the noun-fallback - //just top n-grams from nlp tags, generated from nlp-corpus - //after this word, here's what happens usually - - var afterThisWord = { - i: 'Verb', - //44% //i walk.. - first: 'Noun', - //50% //first principles.. - it: 'Verb', - //33% - there: 'Verb', - //35% - not: 'Verb', - //33% - because: 'Noun', - //31% - "if": 'Noun', - //32% - but: 'Noun', - //26% - who: 'Verb', - //40% - "this": 'Noun', - //37% - his: 'Noun', - //48% - when: 'Noun', - //33% - you: 'Verb', - //35% - very: 'Adjective', - // 39% - old: 'Noun', - //51% - never: 'Verb', - //42% - before: 'Noun' //28% - - }; //in advance of this word, this is what happens usually - - var beforeThisWord = { - there: 'Verb', - //23% // be there - me: 'Verb', - //31% //see me - man: 'Adjective', - // 80% //quiet man - only: 'Verb', - //27% //sees only - him: 'Verb', - //32% //show him - were: 'Noun', - //48% //we were - took: 'Noun', - //38% //he took - himself: 'Verb', - //31% //see himself - went: 'Noun', - //43% //he went - who: 'Noun', - //47% //person who - jr: 'Person' - }; //following this POS, this is likely - - var afterThisPOS = { - Adjective: 'Noun', - //36% //blue dress - Possessive: 'Noun', - //41% //his song - Determiner: 'Noun', - //47% - Adverb: 'Verb', - //20% - Pronoun: 'Verb', - //40% - Value: 'Noun', - //47% - Ordinal: 'Noun', - //53% - Modal: 'Verb', - //35% - Superlative: 'Noun', - //43% - Demonym: 'Noun', - //38% - Honorific: 'Person' // - - }; //in advance of this POS, this is likely - - var beforeThisPOS = { - Copula: 'Noun', - //44% //spencer is - PastTense: 'Noun', - //33% //spencer walked - Conjunction: 'Noun', - //36% - Modal: 'Noun', - //38% - Pluperfect: 'Noun', - //40% - PerfectTense: 'Verb' //32% - - }; - var markov = { - beforeThisWord: beforeThisWord, - afterThisWord: afterThisWord, - beforeThisPos: beforeThisPOS, - afterThisPos: afterThisPOS - }; - var afterKeys = Object.keys(markov.afterThisPos); - var beforeKeys = Object.keys(markov.beforeThisPos); - - var checkNeighbours = function checkNeighbours(terms, world) { - var _loop = function _loop(i) { - var term = terms[i]; //do we still need a tag? - - if (term.isKnown() === true) { - return "continue"; - } //ok, this term needs a tag. - //look at previous word for clues.. - - - var lastTerm = terms[i - 1]; - - if (lastTerm) { - // 'foobar term' - if (markov.afterThisWord.hasOwnProperty(lastTerm.clean) === true) { - var tag = markov.afterThisWord[lastTerm.clean]; - term.tag(tag, 'after-' + lastTerm.clean, world); - return "continue"; - } // 'Tag term' - // (look at previous POS tags for clues..) - - - var foundTag = afterKeys.find(function (tag) { - return lastTerm.tags[tag]; - }); - - if (foundTag !== undefined) { - var _tag = markov.afterThisPos[foundTag]; - term.tag(_tag, 'after-' + foundTag, world); - return "continue"; - } - } //look at next word for clues.. - - - var nextTerm = terms[i + 1]; - - if (nextTerm) { - // 'term foobar' - if (markov.beforeThisWord.hasOwnProperty(nextTerm.clean) === true) { - var _tag2 = markov.beforeThisWord[nextTerm.clean]; - term.tag(_tag2, 'before-' + nextTerm.clean, world); - return "continue"; - } // 'term Tag' - // (look at next POS tags for clues..) - - - var _foundTag = beforeKeys.find(function (tag) { - return nextTerm.tags[tag]; - }); - - if (_foundTag !== undefined) { - var _tag3 = markov.beforeThisPos[_foundTag]; - term.tag(_tag3, 'before-' + _foundTag, world); - return "continue"; - } - } - }; - - for (var i = 0; i < terms.length; i += 1) { - var _ret = _loop(i); - - if (_ret === "continue") continue; - } - }; - - var _01Neighbours = checkNeighbours; - var titleCase = /^[A-Z][a-z'\u00C0-\u00FF]/; - var hasNumber = /[0-9]/; - /** look for any grammar signals based on capital/lowercase */ - - var checkCase = function checkCase(doc) { - var world = doc.world; - doc.list.forEach(function (p) { - var terms = p.terms(); - - for (var i = 1; i < terms.length; i++) { - var term = terms[i]; - - if (titleCase.test(term.text) === true && hasNumber.test(term.text) === false && term.tags.Date === undefined) { - term.tag('ProperNoun', 'titlecase-noun', world); - } - } - }); - }; - - var _02Case = checkCase; - var hasPrefix = /^(re|un)-?[a-z\u00C0-\u00FF]/; - var prefix = /^(re|un)-?/; - /** check 'rewatch' in lexicon as 'watch' */ - - var checkPrefix = function checkPrefix(terms, world) { - var lex = world.words; - terms.forEach(function (term) { - // skip if we have a good tag already - if (term.isKnown() === true) { - return; - } //does it start with 'un|re' - - - if (hasPrefix.test(term.clean) === true) { - // look for the root word in the lexicon: - var stem = term.clean.replace(prefix, ''); - - if (stem && stem.length > 3 && lex[stem] !== undefined && lex.hasOwnProperty(stem) === true) { - term.tag(lex[stem], 'stem-' + stem, world); - } - } - }); - }; - - var _03Stem = checkPrefix; //similar to plural/singularize rules, but not the same - - var isPlural$3 = [/(^v)ies$/i, /ises$/i, /ives$/i, /(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /(buffal|tomat|tornad)oes$/i, /(analy|ba|diagno|parenthe|progno|synop|the)ses$/i, /(vert|ind|cort)ices$/i, /(matr|append)ices$/i, /(x|ch|ss|sh|s|z|o)es$/i, /is$/i, /men$/i, /news$/i, /.tia$/i, /(^f)ves$/i, /(lr)ves$/i, /(^aeiouy|qu)ies$/i, /(m|l)ice$/i, /(cris|ax|test)es$/i, /(alias|status)es$/i, /ics$/i]; //similar to plural/singularize rules, but not the same - - var isSingular$1 = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /s[aeiou]+ns$/i, // sans, siens - /(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i]; - var isPlural_1$2 = { - isSingular: isSingular$1, - isPlural: isPlural$3 - }; - var noPlurals = ['Uncountable', 'Pronoun', 'Place', 'Value', 'Person', 'Month', 'WeekDay', 'Holiday']; - var notPlural = [/ss$/, /sis$/, /[^aeiou][uo]s$/, /'s$/]; - var notSingular = [/i$/, /ae$/]; - /** turn nouns into singular/plural */ - - var checkPlural = function checkPlural(t, world) { - if (t.tags.Noun && !t.tags.Acronym) { - var str = t.clean; //skip existing tags, fast - - if (t.tags.Singular || t.tags.Plural) { - return; - } //too short - - - if (str.length <= 3) { - t.tag('Singular', 'short-singular', world); - return; - } //is it impossible to be plural? - - - if (noPlurals.find(function (tag) { - return t.tags[tag]; - })) { - return; - } // isPlural suffix rules - - - if (isPlural_1$2.isPlural.find(function (reg) { - return reg.test(str); - })) { - t.tag('Plural', 'plural-rules', world); - return; - } // isSingular suffix rules - - - if (isPlural_1$2.isSingular.find(function (reg) { - return reg.test(str); - })) { - t.tag('Singular', 'singular-rules', world); - return; - } // finally, fallback 'looks plural' rules.. - - - if (/s$/.test(str) === true) { - //avoid anything too sketchy to be plural - if (notPlural.find(function (reg) { - return reg.test(str); - })) { - return; - } - - t.tag('Plural', 'plural-fallback', world); - return; - } //avoid anything too sketchy to be singular - - - if (notSingular.find(function (reg) { - return reg.test(str); - })) { - return; - } - - t.tag('Singular', 'singular-fallback', world); - } - }; - - var _04Plurals = checkPlural; //nouns that also signal the title of an unknown organization - //todo remove/normalize plural forms - - var orgWords = ['academy', 'administration', 'agence', 'agences', 'agencies', 'agency', 'airlines', 'airways', 'army', 'assoc', 'associates', 'association', 'assurance', 'authority', 'autorite', 'aviation', 'bank', 'banque', 'board', 'boys', 'brands', 'brewery', 'brotherhood', 'brothers', 'building society', 'bureau', 'cafe', 'caisse', 'capital', 'care', 'cathedral', 'center', 'central bank', 'centre', 'chemicals', 'choir', 'chronicle', 'church', 'circus', 'clinic', 'clinique', 'club', 'co', 'coalition', 'coffee', 'collective', 'college', 'commission', 'committee', 'communications', 'community', 'company', 'comprehensive', 'computers', 'confederation', 'conference', 'conseil', 'consulting', 'containers', 'corporation', 'corps', 'corp', 'council', 'crew', 'daily news', 'data', 'departement', 'department', 'department store', 'departments', 'design', 'development', 'directorate', 'division', 'drilling', 'education', 'eglise', 'electric', 'electricity', 'energy', 'ensemble', 'enterprise', 'enterprises', 'entertainment', 'estate', 'etat', 'evening news', 'faculty', 'federation', 'financial', 'fm', 'foundation', 'fund', 'gas', 'gazette', 'girls', 'government', 'group', 'guild', 'health authority', 'herald', 'holdings', 'hospital', 'hotel', 'hotels', 'inc', 'industries', 'institut', 'institute', 'institute of technology', 'institutes', 'insurance', 'international', 'interstate', 'investment', 'investments', 'investors', 'journal', 'laboratory', 'labs', // 'law', - 'liberation army', 'limited', 'local authority', 'local health authority', 'machines', 'magazine', 'management', 'marine', 'marketing', 'markets', 'media', 'memorial', 'mercantile exchange', 'ministere', 'ministry', 'military', 'mobile', 'motor', 'motors', 'musee', 'museum', // 'network', - 'news', 'news service', 'observatory', 'office', 'oil', 'optical', 'orchestra', 'organization', 'partners', 'partnership', // 'party', - "people's party", 'petrol', 'petroleum', 'pharmacare', 'pharmaceutical', 'pharmaceuticals', 'pizza', 'plc', 'police', 'polytechnic', 'post', 'power', 'press', 'productions', 'quartet', 'radio', 'regional authority', 'regional health authority', 'reserve', 'resources', 'restaurant', 'restaurants', 'savings', 'school', 'securities', 'service', 'services', 'social club', 'societe', 'society', 'sons', 'standard', 'state police', 'state university', 'stock exchange', 'subcommittee', 'syndicat', 'systems', 'telecommunications', 'telegraph', 'television', 'times', 'tribunal', 'tv', 'union', 'university', 'utilities', 'workers']; - var organizations = orgWords.reduce(function (h, str) { - h[str] = 'Noun'; - return h; - }, {}); - var maybeOrg = function maybeOrg(t) { - //must be a noun - if (!t.tags.Noun) { - return false; - } //can't be these things + if (found !== null) { + if (isHas(term, phrase)) { + return [found[1], 'has']; + } + return [found[1], 'is']; + } + } - if (t.tags.Pronoun || t.tags.Comma || t.tags.Possessive) { - return false; - } //must be one of these + return null; + }; + var _04Possessive = checkPossessive$1; + const hasPerfect = /[a-z\u00C0-\u00FF]'d$/; + const useDid = { + how: true, + what: true + }; + /** split `i'd` into 'i had', or 'i would' */ - if (t.tags.Organization || t.tags.Acronym || t.tags.Place || t.titleCase()) { - return true; - } - - return false; - }; - - var tagOrgs = function tagOrgs(terms, world) { - for (var i = 0; i < terms.length; i += 1) { - var t = terms[i]; - - if (organizations[t.clean] !== undefined && organizations.hasOwnProperty(t.clean) === true) { - // look-backward - eg. 'Toronto University' - var lastTerm = terms[i - 1]; + const checkPerfect$1 = function (term, phrase) { + if (hasPerfect.test(term.clean)) { + let root = term.clean.replace(/'d$/, ''); //look at the next few words - if (lastTerm !== undefined && maybeOrg(lastTerm) === true) { - lastTerm.tagSafe('Organization', 'org-word-1', world); - t.tagSafe('Organization', 'org-word-2', world); - continue; - } //look-forward - eg. University of Toronto + let terms = phrase.terms(); + let index = terms.indexOf(term); + let after = terms.slice(index + 1, index + 4); //is it before a past-tense verb? - 'i'd walked' + for (let i = 0; i < after.length; i++) { + let t = after[i]; - var nextTerm = terms[i + 1]; + if (t.tags.Verb) { + if (t.tags.PastTense) { + return [root, 'had']; + } //what'd you see - if (nextTerm !== undefined && nextTerm.clean === 'of') { - if (terms[i + 2] && maybeOrg(terms[i + 2])) { - t.tagSafe('Organization', 'org-of-word-1', world); - nextTerm.tagSafe('Organization', 'org-of-word-2', world); - terms[i + 2].tagSafe('Organization', 'org-of-word-3', world); - continue; - } - } - } - } - }; - - var _05Organizations = tagOrgs; - var oneLetterAcronym = /^[A-Z]('s|,)?$/; - var periodSeperated = /([A-Z]\.){2}[A-Z]?/i; - var oneLetterWord = { - I: true, - A: true - }; - - var isAcronym = function isAcronym(term, world) { - var str = term.reduced; // a known acronym like fbi - - if (term.tags.Acronym) { - return true; - } // if (term.tags.Adverb || term.tags.Verb || term.tags.Value || term.tags.Plural) { - // return false - // } - // known-words, like 'PIZZA' is not an acronym. - - - if (world.words[str]) { - return false; - } // long capitalized words are not usually either - - - if (str.length > 5) { - return false; - } - - return term.isAcronym(); - }; // F.B.I., NBC, - but not 'NO COLLUSION' - - - var checkAcronym = function checkAcronym(terms, world) { - terms.forEach(function (term) { - //these are not acronyms - if (term.tags.RomanNumeral === true) { - return; - } //period-ones F.D.B. + if (useDid[root] === true) { + return [root, 'did']; + } + + return [root, 'would']; + } + } //otherwise, 'i'd walk' + + + return [root, 'would']; + } + + return null; + }; + + var _05PerfectTense = checkPerfect$1; + const isRange = /^([0-9.]{1,3}[a-z]{0,2}) ?[-–—] ?([0-9]{1,3}[a-z]{0,2})$/i; + const timeRange = /^([0-9][0-9]?(:[0-9][0-9])?(am|pm)?) ?[-–—] ?([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)$/i; //split '2-4' into '2 to 4' + + const checkRange$1 = function (term) { + if (term.tags.PhoneNumber === true) { + return null; + } + + let parts = term.text.match(isRange); + + if (parts !== null) { + return [parts[1], 'to', parts[2]]; + } else { + parts = term.text.match(timeRange); + + if (parts !== null) { + return [parts[1], 'to', parts[4]]; + } + } + + return null; + }; + + var _06Ranges = checkRange$1; + const contraction = /^(l|c|d|j|m|n|qu|s|t)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z\u00C0-\u00FF]+)$/i; // basic support for ungendered french contractions + // not perfect, but better than nothing, to support matching on french text. + + const french = { + l: 'le', + // l'amour + c: 'ce', + // c'est + d: 'de', + // d'amerique + j: 'je', + // j'aime + m: 'me', + // m'appelle + n: 'ne', + // n'est + qu: 'que', + // qu'il + s: 'se', + // s'appelle + t: 'tu' // t'aime + + }; + + const checkFrench$1 = function (term) { + let parts = term.text.match(contraction); + + if (parts === null || french.hasOwnProperty(parts[1]) === false) { + return null; + } + + let arr = [french[parts[1]], parts[2]]; + + if (arr[0] && arr[1]) { + return arr; + } + + return null; + }; + + var _07French = checkFrench$1; + const checkLexicon = _01Lexicon; + const tokenize$2 = _01Tokenizer; + const checkNegative = _01Negative; + const checkApostrophe = _02Simple; + const checkIrregulars = _03Irregulars; + const checkPossessive = _04Possessive; + const checkPerfect = _05PerfectTense; + const checkRange = _06Ranges; + const checkFrench = _07French; + const isNumber = /^[0-9]+$/; + const isOrdinal = /^[0-9]+(st|nd|rd|th)$/; + const isTime = /^[0-9:]+(am|pm)?$/; + + const createPhrase = function (found, doc) { + //create phrase from ['would', 'not'] + let phrase = tokenize$2(found.join(' '), doc.world, doc.pool())[0]; //tag it + + let terms = phrase.terms(); + checkLexicon(terms, doc.world); + let term = terms[0]; // tag number-ranges + + if (isOrdinal.test(term.text) && terms[2]) { + terms[0].tag('Ordinal', 'ord-range', doc.world); + terms[2].tag('Ordinal', 'ord-range', doc.world); + } else if (isNumber.test(term.text) && terms[2]) { + terms[0].tag('Cardinal', 'num-range', doc.world); + terms[2].tag('Cardinal', 'num-range', doc.world); + } else if (isTime.test(term.text) && terms[1] && terms[2]) { + terms[0].tag('Time', 'time-range', doc.world); + terms[1].tag('Date', 'time-range', doc.world); + terms[2].tag('Time', 'time-range', doc.world); + } //make these terms implicit + + + terms.forEach(t => { + t.implicit = t.text; + t.text = ''; + t.clean = ''; // remove whitespace for implicit terms + + t.pre = ''; + t.post = ''; + + if (Object.keys(t.tags).length === 0) { + t.tags.Noun = true; // if no tag, give it a noun + } + }); + return phrase; + }; + + const contractions$1 = function (doc) { + let world = doc.world; + doc.list.forEach(p => { + let terms = p.terms(); + + for (let i = 0; i < terms.length; i += 1) { + let term = terms[i]; + let found = checkNegative(term, p); + found = found || checkApostrophe(term); + found = found || checkIrregulars(term); + found = found || checkPossessive(term, p, world); + found = found || checkPerfect(term, p); + found = found || checkRange(term); + found = found || checkFrench(term); //add them in + + if (found !== null) { + let newPhrase = createPhrase(found, doc); // keep tag NumberRange, if we had it - if (periodSeperated.test(term.text) === true) { - term.tag('Acronym', 'period-acronym', world); - } //non-period ones are harder - - - if (term.isUpperCase() && isAcronym(term, world)) { - term.tag('Acronym', 'acronym-step', world); - term.tag('Noun', 'acronym-infer', world); - } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) { - term.tag('Acronym', 'one-letter-acronym', world); - term.tag('Noun', 'one-letter-infer', world); - } //if it's a organization, + if (p.has('#NumberRange') === true) { + doc.buildFrom([newPhrase]).tag('NumberRange'); + } //set text as contraction - if (term.tags.Organization && term.text.length <= 3) { - term.tag('Acronym', 'acronym-org', world); - } + let firstTerm = newPhrase.terms(0); + firstTerm.text = term.text; //grab sub-phrase to remove - if (term.tags.Organization && term.isUpperCase() && term.text.length <= 6) { - term.tag('Acronym', 'acronym-org-case', world); - } - }); - }; + let match = p.buildFrom(term.id, 1, doc.pool()); + match.replace(newPhrase, doc, true); + } + } + }); + return doc; + }; - var _06Acronyms = checkAcronym; - var step = { - neighbours: _01Neighbours, - "case": _02Case, - stem: _03Stem, - plural: _04Plurals, - organizations: _05Organizations, - acronyms: _06Acronyms - }; // + var _03Contractions = contractions$1; - var fallbacks = function fallbacks(doc, terms) { - var world = doc.world; // if it's empty, consult it's neighbours, first - - step.neighbours(terms, world); // is there a case-sensitive clue? - - step["case"](doc); // check 'rewatch' as 'watch' - - step.stem(terms, world); // ... fallback to a noun! - - terms.forEach(function (t) { - if (t.isKnown() === false) { - t.tag('Noun', 'noun-fallback', doc.world); - } - }); // turn 'Foo University' into an Org - - step.organizations(terms, world); //turn 'FBD' into an acronym - - step.acronyms(terms, world); //are the nouns singular or plural? - - terms.forEach(function (t) { - step.plural(t, doc.world); - }); - return doc; - }; - - var _02Fallbacks = fallbacks; - var hasNegative = /n't$/; - var irregulars$2 = { - "won't": ['will', 'not'], - wont: ['will', 'not'], - "can't": ['can', 'not'], - cant: ['can', 'not'], - cannot: ['can', 'not'], - "shan't": ['should', 'not'], - dont: ['do', 'not'], - dun: ['do', 'not'] // "ain't" is ambiguous for is/was - - }; // either 'is not' or 'are not' - - var doAint = function doAint(term, phrase) { - var terms = phrase.terms(); - var index = terms.indexOf(term); - var before = terms.slice(0, index); //look for the preceding noun - - var noun = before.find(function (t) { - return t.tags.Noun; - }); - - if (noun && noun.tags.Plural) { - return ['are', 'not']; - } - - return ['is', 'not']; - }; - - var checkNegative = function checkNegative(term, phrase) { - //check named-ones - if (irregulars$2.hasOwnProperty(term.clean) === true) { - return irregulars$2[term.clean]; - } //this word needs it's own logic: - - - if (term.clean === "ain't" || term.clean === 'aint') { - return doAint(term, phrase); - } //try it normally - - - if (hasNegative.test(term.clean) === true) { - var main = term.clean.replace(hasNegative, ''); - return [main, 'not']; - } - - return null; - }; - - var _01Negative = checkNegative; - var contraction$1 = /([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z]{1,2})$/i; //these ones don't seem to be ambiguous - - var easy = { - ll: 'will', - ve: 'have', - re: 'are', - m: 'am', - "n't": 'not' - }; // - - var checkApostrophe = function checkApostrophe(term) { - var parts = term.text.match(contraction$1); - - if (parts === null) { - return null; - } - - if (easy.hasOwnProperty(parts[2])) { - return [parts[1], easy[parts[2]]]; - } - - return null; - }; - - var _02Simple = checkApostrophe; - var irregulars$1 = { - wanna: ['want', 'to'], - gonna: ['going', 'to'], - im: ['i', 'am'], - alot: ['a', 'lot'], - ive: ['i', 'have'], - imma: ['I', 'will'], - "where'd": ['where', 'did'], - whered: ['where', 'did'], - "when'd": ['when', 'did'], - whend: ['when', 'did'], - // "how'd": ['how', 'did'], //'how would?' - // "what'd": ['what', 'did'], //'what would?' - howd: ['how', 'did'], - whatd: ['what', 'did'], - // "let's": ['let', 'us'], //too weird - //multiple word contractions - dunno: ['do', 'not', 'know'], - brb: ['be', 'right', 'back'], - gtg: ['got', 'to', 'go'], - irl: ['in', 'real', 'life'], - tbh: ['to', 'be', 'honest'], - imo: ['in', 'my', 'opinion'], - til: ['today', 'i', 'learned'], - rn: ['right', 'now'], - twas: ['it', 'was'], - '@': ['at'] - }; // - - var checkIrregulars = function checkIrregulars(term) { - //check white-list - if (irregulars$1.hasOwnProperty(term.clean)) { - return irregulars$1[term.clean]; - } - - return null; - }; - - var _03Irregulars = checkIrregulars; - var hasApostropheS = /([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]s$/i; - var banList = { - that: true, - there: true - }; - var hereThere = { - here: true, - there: true, - everywhere: true - }; - - var isPossessive = function isPossessive(term, pool) { - // if we already know it - if (term.tags.Possessive) { - return true; - } //a pronoun can't be possessive - "he's house" - - - if (term.tags.Pronoun || term.tags.QuestionWord) { - return false; - } - - if (banList.hasOwnProperty(term.reduced)) { - return false; - } //if end of sentence, it is possessive - "was spencer's" - - - var nextTerm = pool.get(term.next); - - if (!nextTerm) { - return true; - } //a gerund suggests 'is walking' - - - if (nextTerm.tags.Verb) { - //fix 'jamie's bite' - if (nextTerm.tags.Infinitive) { - return true; - } //fix 'spencer's runs' - - - if (nextTerm.tags.PresentTense) { - return true; - } - - return false; - } //spencer's house - - - if (nextTerm.tags.Noun) { - // 'spencer's here' - if (hereThere.hasOwnProperty(nextTerm.reduced) === true) { - return false; - } - - return true; - } //rocket's red glare - - - var twoTerm = pool.get(nextTerm.next); - - if (twoTerm && twoTerm.tags.Noun && !twoTerm.tags.Pronoun) { - return true; - } //othwerwise, an adjective suggests 'is good' - - - if (nextTerm.tags.Adjective || nextTerm.tags.Adverb || nextTerm.tags.Verb) { - return false; - } - - return false; - }; + const hasWord = function (doc, word) { + let arr = doc._cache.words[word] || []; + arr = arr.map(i => doc.list[i]); + return doc.buildFrom(arr); + }; + + const hasTag = function (doc, tag) { + let arr = doc._cache.tags[tag] || []; + arr = arr.map(i => doc.list[i]); + return doc.buildFrom(arr); + }; //mostly pos-corections here + + + const miscCorrection = function (doc) { + // imperative-form + let m = hasTag(doc, 'Infinitive'); + + if (m.found) { + // you eat? + m = m.ifNo('@hasQuestionMark'); // i speak + + m = m.ifNo('(i|we|they)'); // shut the door! + + m.not('will be').match('[#Infinitive] (#Determiner|#Possessive) #Noun').notIf('(our|their)').match('#Infinitive').tag('Imperative', 'shut-the'); // go-fast + + m.match('^[#Infinitive] #Adverb?$', 0).tag('Imperative', 'go-fast'); // do not go + + m.match('[(do && #Infinitive)] not? #Verb', 0).tag('Imperative', 'do-not'); // do it + + m.match('[#Infinitive] (it|some) (#Comparative|#Preposition|please|now|again)', 0).tag('Imperative', 'do-it'); + } //exactly like + + + m = hasWord(doc, 'like'); + m.match('#Adverb like').notIf('(really|generally|typically|usually|sometimes|often|just) [like]').tag('Adverb', 'adverb-like'); //the orange. + + m = hasTag(doc, 'Adjective'); + m.match('#Determiner #Adjective$').notIf('(#Comparative|#Superlative)').terms(1).tag('Noun', 'the-adj-1'); // Firstname x (dangerous) + + m = hasTag(doc, 'FirstName'); + m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('(#Pronoun|#Plural)').ifNo('@hasComma .').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train + + m = hasTag(doc, 'Value'); + m = m.match('#Value #PresentTense').ifNo('#Copula'); + + if (m.found) { + if (m.has('(one|1)') === true) { + m.terms(1).tag('Singular', 'one-presentTense'); + } else { + m.terms(1).tag('Plural', 'value-presentTense'); + } + } // well i've been... + + + doc.match('^(well|so|okay)').tag('Expression', 'well-'); // 10th of a second + + doc.match('#Value [of a second]', 0).unTag('Value', 'of-a-second'); // 30 seconds + + doc.match('#Value [seconds]', 0).unTag('Value', '30-seconds').tag(['Unit', 'Plural']); //been walking + + m = hasTag(doc, 'Gerund'); + m.match("(be|been) (#Adverb|not)+? #Gerund").not('#Verb$').tag('Auxiliary', 'be-walking'); // directive verb - 'use reverse' + + doc.match('(try|use|attempt|build|make) #Verb').ifNo('(@hasComma|#Negative|#PhrasalVerb|#Copula|will|be)').lastTerm().tag('#Noun', 'do-verb'); //possessives + //'her match' vs 'let her match' + + m = hasTag(doc, 'Possessive'); + m = m.match('#Possessive [#Infinitive]', 0); + + if (!m.lookBehind('(let|made|make|force|ask)').found) { + m.tag('Noun', 'her-match'); + } + + return doc; + }; + + var fixMisc$1 = miscCorrection; + + const unique$2 = function (arr) { + let obj = {}; + + for (let i = 0; i < arr.length; i++) { + obj[arr[i]] = true; + } + + return Object.keys(obj); + }; + + var _unique = unique$2; + const list$5 = [// ==== Mutliple tags ==== + { + match: 'too much', + tag: 'Adverb Adjective', + reason: 'bit-4' + }, // u r cool + { + match: 'u r', + tag: 'Pronoun Copula', + reason: 'u r' + }, //sometimes adverbs - 'pretty good','well above' + { + match: '#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)', + tag: '#Copula #Adverb #Adjective', + reason: 'sometimes-adverb' + }, //i better .. + { + match: '(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense', + group: 0, + tag: 'Modal', + reason: 'i-better' + }, //walking is cool + { + match: '[#Gerund] #Adverb? not? #Copula', + group: 0, + tag: 'Activity', + reason: 'gerund-copula' + }, //walking should be fun + { + match: '[#Gerund] #Modal', + group: 0, + tag: 'Activity', + reason: 'gerund-modal' + }, //swear-words as non-expression POS + { + match: 'holy (shit|fuck|hell)', + tag: 'Expression', + reason: 'swears-expression' + }, //Aircraft designer + { + match: '#Noun #Actor', + tag: 'Actor', + reason: 'thing-doer' + }, { + match: '#Conjunction [u]', + group: 0, + tag: 'Pronoun', + reason: 'u-pronoun-2' + }, //'u' as pronoun + { + match: '[u] #Verb', + group: 0, + tag: 'Pronoun', + reason: 'u-pronoun-1' + }, // ==== Determiners ==== + { + match: '#Noun [(who|whom)]', + group: 0, + tag: 'Determiner', + reason: 'captain-who' + }, //that car goes + // { match: 'that #Noun [#PresentTense]', group: 0, tag: 'Determiner', reason: 'that-determiner' }, + { + match: 'a bit much', + tag: 'Determiner Adverb Adjective', + reason: 'bit-3' + }, // ==== Propositions ==== + //all students + { + match: '#Verb #Adverb? #Noun [(that|which)]', + group: 0, + tag: 'Preposition', + reason: 'that-prep' + }, //work, which has been done. + { + match: '@hasComma [which] (#Pronoun|#Verb)', + group: 0, + tag: 'Preposition', + reason: 'which-copula' + }, { + match: '#Copula just [like]', + group: 0, + tag: 'Preposition', + reason: 'like-preposition' + }, //folks like her + { + match: '#Noun [like] #Noun', + group: 0, + tag: 'Preposition', + reason: 'noun-like' + }, //fix for busted-up phrasalVerbs + // { match: '#Noun [#Particle]', group: 0, tag: 'Preposition', reason: 'repair-noPhrasal' }, + // ==== Conditions ==== + // had he survived, + { + match: '[had] #Noun+ #PastTense', + group: 0, + tag: 'Condition', + reason: 'had-he' + }, // were he to survive + { + match: '[were] #Noun+ to #Infinitive', + group: 0, + tag: 'Condition', + reason: 'were-he' + }, // ==== Questions ==== + //the word 'how' + { + match: '^how', + tag: 'QuestionWord', + reason: 'how-question' + }, { + match: '[how] (#Determiner|#Copula|#Modal|#PastTense)', + group: 0, + tag: 'QuestionWord', + reason: 'how-is' + }, // //the word 'which' + { + match: '^which', + tag: 'QuestionWord', + reason: 'which-question' + }, // { match: '[which] . (#Noun)+ #Pronoun', group: 0, tag: 'QuestionWord', reason: 'which-question2' }, + // { match: 'which', tag: 'QuestionWord', reason: 'which-question3' }, + // ==== Conjunctions ==== + { + match: '[so] #Noun', + group: 0, + tag: 'Conjunction', + reason: 'so-conj' + }, //how he is driving + { + match: '[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)', + group: 0, + tag: 'Conjunction', + reason: 'how-he-is-x' + } // { + // match: '[(who|what|where|why|how|when)] #Noun #Adverb? #Infinitive not? #Gerund', + // group: 0, + // tag: 'Conjunction', + // reason: 'when-i-go-fishing', + // }, + ]; + var _01Misc = list$5; + var _ambig = { + // adverbs than can be adjectives + adverbAdjective: ['dark', 'bright', 'flat', 'light', 'soft', 'pale', 'dead', 'dim', 'faux', 'little', 'wee', 'sheer', 'most', 'near', 'good', 'extra', 'all'], + // names that are dates + personDate: ['april', 'june', 'may', 'jan', 'august', 'eve'], + // names that may be months + personMonth: ['january', 'april', 'may', 'june', 'jan', 'sep'], + // names that are adjectives + personAdjective: ['misty', 'rusty', 'dusty', 'rich', 'randy', 'young'], + // names that are verbs + personVerb: ['pat', 'wade', 'ollie', 'will', 'rob', 'buck', 'bob', 'mark', 'jack'], + // names that are verbs + personPlace: ['darwin', 'hamilton', 'paris', 'alexandria', 'houston', 'kobe', 'santiago', 'salvador', 'sydney', 'victoria'], + // names that are nouns + personNoun: ['art', 'baker', 'berg', 'bill', 'brown', 'charity', 'chin', 'christian', 'cliff', 'daisy', 'dawn', 'dick', 'dolly', 'faith', 'franco', 'gene', 'green', 'hall', 'hill', 'holly', 'hope', 'jean', 'jewel', 'joy', 'kelvin', 'king', 'kitty', 'lane', 'lily', 'melody', 'mercedes', 'miles', 'olive', 'penny', 'ray', 'reed', 'robin', 'rod', 'rose', 'sky', 'summer', 'trinity', 'van', 'viola', 'violet', 'wang', 'white'] + }; + const ambig$4 = _ambig; + const dates = "(".concat(ambig$4.personDate.join('|'), ")"); + let list$4 = [// ==== Holiday ==== + { + match: '#Holiday (day|eve)', + tag: 'Holiday', + reason: 'holiday-day' + }, // the captain who + // ==== WeekDay ==== + // sun the 5th + { + match: '[sun] the #Ordinal', + tag: 'WeekDay', + reason: 'sun-the-5th' + }, //sun feb 2 + { + match: '[sun] #Date', + group: 0, + tag: 'WeekDay', + reason: 'sun-feb' + }, //1pm next sun + { + match: '#Date (on|this|next|last|during)? [sun]', + group: 0, + tag: 'WeekDay', + reason: '1pm-sun' + }, //this sat + { + match: "(in|by|before|during|on|until|after|of|within|all) [sat]", + group: 0, + tag: 'WeekDay', + reason: 'sat' + }, { + match: "(in|by|before|during|on|until|after|of|within|all) [wed]", + group: 0, + tag: 'WeekDay', + reason: 'wed' + }, { + match: "(in|by|before|during|on|until|after|of|within|all) [march]", + group: 0, + tag: 'Month', + reason: 'march' + }, //sat november + { + match: '[sat] #Date', + group: 0, + tag: 'WeekDay', + reason: 'sat-feb' + }, // ==== Month ==== + //all march + { + match: "#Preposition [(march|may)]", + group: 0, + tag: 'Month', + reason: 'in-month' + }, //this march + { + match: "this [(march|may)]", + group: 0, + tag: 'Month', + reason: 'this-month' + }, { + match: "next [(march|may)]", + group: 0, + tag: 'Month', + reason: 'this-month' + }, { + match: "last [(march|may)]", + group: 0, + tag: 'Month', + reason: 'this-month' + }, // march 5th + { + match: "[(march|may)] the? #Value", + group: 0, + tag: 'Month', + reason: 'march-5th' + }, // 5th of march + { + match: "#Value of? [(march|may)]", + group: 0, + tag: 'Month', + reason: '5th-of-march' + }, // march and feb + { + match: "[(march|may)] .? #Date", + group: 0, + tag: 'Month', + reason: 'march-and-feb' + }, // feb to march + { + match: "#Date .? [(march|may)]", + group: 0, + tag: 'Month', + reason: 'feb-and-march' + }, //quickly march + { + match: "#Adverb [(march|may)]", + group: 0, + tag: 'Verb', + reason: 'quickly-march' + }, //march quickly + { + match: "[(march|may)] #Adverb", + group: 0, + tag: 'Verb', + reason: 'march-quickly' + }, //5th of March + { + match: '#Value of #Month', + tag: 'Date', + reason: 'value-of-month' + }, //5 March + { + match: '#Cardinal #Month', + tag: 'Date', + reason: 'cardinal-month' + }, //march 5 to 7 + { + match: '#Month #Value to #Value', + tag: 'Date', + reason: 'value-to-value' + }, //march the 12th + { + match: '#Month the #Value', + tag: 'Date', + reason: 'month-the-value' + }, //june 7 + { + match: '(#WeekDay|#Month) #Value', + tag: 'Date', + reason: 'date-value' + }, //7 june + { + match: '#Value (#WeekDay|#Month)', + tag: 'Date', + reason: 'value-date' + }, //may twenty five + { + match: '(#TextValue && #Date) #TextValue', + tag: 'Date', + reason: 'textvalue-date' + }, // in june + { + match: "in [".concat(dates, "]"), + group: 0, + tag: 'Date', + reason: 'in-june' + }, { + match: "during [".concat(dates, "]"), + group: 0, + tag: 'Date', + reason: 'in-june' + }, { + match: "on [".concat(dates, "]"), + group: 0, + tag: 'Date', + reason: 'in-june' + }, { + match: "by [".concat(dates, "]"), + group: 0, + tag: 'Date', + reason: 'by-june' + }, { + match: "after [".concat(dates, "]"), + group: 0, + tag: 'Date', + reason: 'after-june' + }, { + match: "#Date [".concat(dates, "]"), + group: 0, + tag: 'Date', + reason: 'in-june' + }, // june 1992 + { + match: "".concat(dates, " #Value"), + tag: 'Date', + reason: 'june-5th' + }, { + match: "".concat(dates, " #Date"), + tag: 'Date', + reason: 'june-5th' + }, // June Smith + { + match: "".concat(dates, " #ProperNoun"), + tag: 'Person', + reason: 'june-smith', + safe: true + }, // june m. Cooper + { + match: "".concat(dates, " #Acronym? (#ProperNoun && !#Month)"), + tag: 'Person', + reason: 'june-smith-jr' + }, // 'second' + { + match: "#Cardinal [second]", + tag: 'Unit', + reason: 'one-second' + }, // second quarter + // { match: `#Ordinal quarter`, tag: 'Date', reason: 'second-quarter' }, + // 'aug 20-21' + { + match: "#Month #NumberRange", + tag: 'Date', + reason: 'aug 20-21' + }, // timezones + // china standard time + { + match: "(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time", + tag: 'Timezone', + reason: 'std-time' + }, // eastern time + { + match: "(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time", + tag: 'Timezone', + reason: 'eastern-time' + }, // 5pm central + { + match: "#Time [(eastern|mountain|pacific|central|est|pst|gmt)]", + group: 0, + tag: 'Timezone', + reason: '5pm-central' + }, // central european time + { + match: "(central|western|eastern) european time", + tag: 'Timezone', + reason: 'cet' + }]; + var _02Dates = list$4; + const ambig$3 = _ambig; + const adjectives$1 = "(".concat(ambig$3.personAdjective.join('|'), ")"); + let list$3 = [// all fell apart + { + match: '[all] #Determiner? #Noun', + group: 0, + tag: 'Adjective', + reason: 'all-noun' + }, // very rusty + { + match: "#Adverb [".concat(adjectives$1, "]"), + group: 0, + tag: 'Adjective', + reason: 'really-rich' + }, // rusty smith + { + match: "".concat(adjectives$1, " #Person"), + tag: 'Person', + reason: 'randy-smith' + }, // rusty a. smith + { + match: "".concat(adjectives$1, " #Acronym? #ProperNoun"), + tag: 'Person', + reason: 'rusty-smith' + }, //sometimes not-adverbs + { + match: '#Copula [(just|alone)]$', + group: 0, + tag: 'Adjective', + reason: 'not-adverb' + }, //jack is guarded + { + match: '#Singular is #Adverb? [#PastTense$]', + group: 0, + tag: 'Adjective', + reason: 'is-filled' + }, // smoked poutine is + { + match: '[#PastTense] #Singular is', + group: 0, + tag: 'Adjective', + reason: 'smoked-poutine' + }, // baked onions are + { + match: '[#PastTense] #Plural are', + group: 0, + tag: 'Adjective', + reason: 'baked-onions' + }, // well made + { + match: 'well [#PastTense]', + group: 0, + tag: 'Adjective', + reason: 'well-made' + }, // is f*ed up + { + match: '#Copula [fucked up?]', + tag: 'Adjective', + reason: 'swears-adjective' + }, //jack seems guarded + { + match: '#Singular (seems|appears) #Adverb? [#PastTense$]', + group: 0, + tag: 'Adjective', + reason: 'seems-filled' + }, // Gerund-Adjectives - 'amusing, annoying' + //a staggering cost + { + match: '(a|an) [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'a|an' + }, //as amusing as + { + match: 'as [#Gerund] as', + group: 0, + tag: 'Adjective', + reason: 'as-gerund-as' + }, // more amusing than + { + match: 'more [#Gerund] than', + group: 0, + tag: 'Adjective', + reason: 'more-gerund-than' + }, // very amusing + { + match: '(so|very|extremely) [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'so-gerund' + }, // it was amusing + { + match: '(it|he|she|everything|something) #Adverb? was #Adverb? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'it-was-gerund' + }, // found it amusing + { + match: '(found|found) it #Adverb? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'found-it-gerund' + }, // a bit amusing + { + match: 'a (little|bit|wee) bit? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'a-bit-gerund' + }, // jury is out - preposition ➔ adjective + { + match: '#Copula #Adjective? [(out|in|through)]$', + group: 0, + tag: 'Adjective', + reason: 'still-out' + }, // shut the door + { + match: '^[#Adjective] (the|your) #Noun', + group: 0, + tag: 'Infinitive', + reason: 'shut-the' + }, // the said card + { + match: 'the [said] #Noun', + group: 0, + tag: 'Adjective', + reason: 'the-said-card' + }, // a myth that uncovered wounds heal + { + match: '#Noun (that|which|whose) [#PastTense && !#Copula] #Noun', + group: 0, + tag: 'Adjective', + reason: 'that-past-noun' + } // the very fed character + // { match: `#Determiner #Adverb [#PastTense] #Noun`, group: 0, tag: 'Adjective', reason: 'very-x-noun' }, + ]; + var _03Adjective = list$3; + var _04Noun = [// ==== Plural ==== + //there are reasons + { + match: 'there (are|were) #Adjective? [#PresentTense]', + group: 0, + tag: 'Plural', + reason: 'there-are' + }, // ==== Singular ==== + //the sun + { + match: '#Determiner [sun]', + group: 0, + tag: 'Singular', + reason: 'the-sun' + }, //did a 900, paid a 20 + { + match: '#Verb (a|an) [#Value]', + group: 0, + tag: 'Singular', + reason: 'did-a-value' + }, //'the can' + { + match: 'the [(can|will|may)]', + group: 0, + tag: 'Singular', + reason: 'the can' + }, // ==== Possessive ==== + //spencer kelly's + { + match: '#FirstName #Acronym? (#Possessive && #LastName)', + tag: 'Possessive', + reason: 'name-poss' + }, //Super Corp's fundraiser + { + match: '#Organization+ #Possessive', + tag: 'Possessive', + reason: 'org-possessive' + }, //Los Angeles's fundraiser + { + match: '#Place+ #Possessive', + tag: 'Possessive', + reason: 'place-possessive' + }, // assign all tasks + { + match: '(#Verb && !#Modal) (all|every|each|most|some|no) [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'all-presentTense' + }, //the above is clear + { + match: '#Determiner [#Adjective] #Copula', + group: 0, + tag: 'Noun', + reason: 'the-adj-is' + }, //real evil is + { + match: '#Adjective [#Adjective] #Copula', + group: 0, + tag: 'Noun', + reason: 'adj-adj-is' + }, // PresentTense/Noun ambiguities + // big dreams, critical thinking + // have big dreams + { + match: '(had|have|#PastTense) #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'adj-presentTense' + }, // excellent answer spencer + { + match: '^#Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'start adj-presentTense' + }, // one big reason + { + match: '#Value #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'one-big-reason' + }, // won widespread support + { + match: '#PastTense #Adjective+ [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'won-wide-support' + }, // many poses + { + match: '(many|few|several|couple) [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'many-poses' + }, // very big dreams + { + match: '#Adverb #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'very-big-dream' + }, // good wait staff + { + match: '#Adjective [#Infinitive] #Noun', + group: 0, + tag: 'Noun', + reason: 'good-wait-staff' + }, // adorable little store + { + match: '#Adjective #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'adorable-little-store' + }, // of basic training + { + match: '#Preposition #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'of-basic-training' + }, // early warning + { + match: '#Adjective [#Gerund]', + group: 0, + tag: 'Noun', + reason: 'early-warning' + }, // justifiying higher costs + { + match: '#Gerund #Adverb? #Comparative [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'higher-costs' + }, // do the dance + { + match: '#Infinitive (this|that|the) [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'do-this-dance' + }, //his fine + { + match: '(his|her|its) [#Adjective]', + group: 0, + tag: 'Noun', + reason: 'his-fine' + }, //some pressing issues + { + match: 'some [#Verb] #Plural', + group: 0, + tag: 'Noun', + reason: 'determiner6' + }, //'more' is not always an adverb + { + match: 'more #Noun', + tag: 'Noun', + reason: 'more-noun' + }, { + match: '(#Noun && @hasComma) #Noun (and|or) [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'noun-list' + }, //3 feet + { + match: '(right|rights) of .', + tag: 'Noun', + reason: 'right-of' + }, // a bit + { + match: 'a [bit]', + group: 0, + tag: 'Noun', + reason: 'bit-2' + }, // my first thought + { + match: '#Possessive #Ordinal [#PastTense]', + group: 0, + tag: 'Noun', + reason: 'first-thought' + }, //running-a-show + { + match: '#Gerund #Determiner [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'running-a-show' + }, //the-only-reason + { + match: '#Determiner #Adverb [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'the-reason' + }, //the nice swim + { + match: '(the|this|those|these) #Adjective [#Verb]', + group: 0, + tag: 'Noun', + reason: 'the-adj-verb' + }, // the truly nice swim + { + match: '(the|this|those|these) #Adverb #Adjective [#Verb]', + group: 0, + tag: 'Noun', + reason: 'determiner4' + }, //the orange is + { + match: '#Determiner [#Adjective] (#Copula|#PastTense|#Auxiliary)', + group: 0, + tag: 'Noun', + reason: 'the-adj-2' + }, // a stream runs + { + match: '(the|this|a|an) [#Infinitive] #Adverb? #Verb', + group: 0, + tag: 'Noun', + reason: 'determiner5' + }, //the test string + { + match: '#Determiner [#Infinitive] #Noun', + group: 0, + tag: 'Noun', + reason: 'determiner7' + }, //a nice deal + { + match: '#Determiner #Adjective #Adjective? [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'a-nice-inf' + }, //the wait to vote + { + match: 'the [#Verb] #Preposition .', + group: 0, + tag: 'Noun', + reason: 'determiner1' + }, //a sense of + { + match: '#Determiner [#Verb] of', + group: 0, + tag: 'Noun', + reason: 'the-verb-of' + }, //next career move + { + match: '#Adjective #Noun+ [#Infinitive] #Copula', + group: 0, + tag: 'Noun', + reason: 'career-move' + }, //the threat of force + { + match: '#Determiner #Noun of [#Verb]', + group: 0, + tag: 'Noun', + reason: 'noun-of-noun' + }, //the western line + { + match: '#Determiner [(western|eastern|northern|southern|central)] #Noun', + group: 0, + tag: 'Noun', + reason: 'western-line' + }, //her polling + { + match: '#Possessive [#Gerund]', + group: 0, + tag: 'Noun', + reason: 'her-polling' + }, //her fines + { + match: '(his|her|its) [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'its-polling' + }, //linear algebra + { + match: '(#Determiner|#Value) [(linear|binary|mobile|lexical|technical|computer|scientific|formal)] #Noun', + group: 0, + tag: 'Noun', + reason: 'technical-noun' + }, // a blown motor + { + match: '(the|those|these|a|an) [#Participle] #Noun', + group: 0, + tag: 'Adjective', + reason: 'blown-motor' + }, // walk the walk + { + match: '(the|those|these|a|an) #Adjective? [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'det-inf' + }, { + match: '(the|those|these|a|an) #Adjective? [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'det-pres' + }, { + match: '(the|those|these|a|an) #Adjective? [#PastTense]', + group: 0, + tag: 'Noun', + reason: 'det-past' + }, // this swimming + { + match: '(this|that) [#Gerund]', + group: 0, + tag: 'Noun', + reason: 'this-gerund' + }, // at some point + { + match: 'at some [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'at-some-inf' + }, //air-flow + { + match: '(#Noun && @hasHyphen) #Verb', + tag: 'Noun', + reason: 'hyphen-verb' + }, //is no walk + { + match: 'is no [#Verb]', + group: 0, + tag: 'Noun', + reason: 'is-no-verb' + }, //different views than + { + match: '[#Verb] than', + group: 0, + tag: 'Noun', + reason: 'correction' + }, // goes to sleep + { + match: '(go|goes|went) to [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'goes-to-verb' + }, //a close watch on + { + match: '(a|an) #Noun [#Infinitive] (#Preposition|#Noun)', + group: 0, + tag: 'Noun', + reason: 'a-noun-inf' + }, //a tv show + { + match: '(a|an) #Noun [#Infinitive]$', + group: 0, + tag: 'Noun', + reason: 'a-noun-inf2' + }, //do so + { + match: 'do [so]', + group: 0, + tag: 'Noun', + reason: 'so-noun' + }, //is mark hughes + { + match: '#Copula [#Infinitive] #Noun', + group: 0, + tag: 'Noun', + reason: 'is-pres-noun' + }, //a close + { + match: '#Determiner #Adverb? [close]', + group: 0, + tag: 'Adjective', + reason: 'a-close' + }, // what the hell + { + match: '#Determiner [(shit|damn|hell)]', + group: 0, + tag: 'Noun', + reason: 'swears-noun' + }, // the staff were + { + match: '(the|these) [#Singular] (were|are)', + group: 0, + tag: 'Plural', + reason: 'singular-were' + }, // running for congress + { + match: '#Gerund #Adjective? for [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'running-for' + }, // running to work + { + match: '#Gerund #Adjective to [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'running-to' + }, // any questions for + { + match: '(many|any|some|several) [#PresentTense] for', + group: 0, + tag: 'Noun', + reason: 'any-verbs-for' + }, // have fun + { + match: "(have|had) [#Adjective] #Preposition .", + group: 0, + tag: 'Noun', + reason: 'have-fun' + }, // co-founder + { + match: "co #Noun", + tag: 'Actor', + reason: 'co-noun' + }, // to facilitate gas exchange with + { + match: "to #PresentTense #Noun [#PresentTense] #Preposition", + group: 0, + tag: 'Noun', + reason: 'gas-exchange' + }, // a comdominium, or simply condo + { + match: "a #Noun+ or #Adverb+? [#Verb]", + group: 0, + tag: 'Noun', + reason: 'noun-or-noun' + }, // operating system + { + match: "[#Gerund] system", + group: 0, + tag: 'Noun', + reason: 'operating-system' + }, // waited until release + { + match: "#PastTense (until|as|through|without) [#PresentTense]", + group: 0, + tag: 'Noun', + reason: 'waited-until-release' + }, // selling like hot cakes + { + match: "#Gerund like #Adjective? [#PresentTense]", + group: 0, + tag: 'Plural', + reason: 'like-hot-cakes' + }, // some valid reason + { + match: "some #Adjective [#PresentTense]", + group: 0, + tag: 'Noun', + reason: 'some-reason' + }, // for some reason + { + match: "for some [#PresentTense]", + group: 0, + tag: 'Noun', + reason: 'for-some-reason' + }, // same kind of shouts + { + match: "(same|some|the|that|a) kind of [#PresentTense]", + group: 0, + tag: 'Noun', + reason: 'some-kind-of' + }, // a type of shout + { + match: "(same|some|the|that|a) type of [#PresentTense]", + group: 0, + tag: 'Noun', + reason: 'some-type-of' + }, // doing better for fights + { + match: "#Gerund #Adjective #Preposition [#PresentTense]", + group: 0, + tag: 'Noun', + reason: 'doing-better-for-x' + }, // get better aim + { + match: "(get|got|have|had) #Comparative [#PresentTense]", + group: 0, + tag: 'Noun', + reason: 'got-better-aim' + }, // i think tipping sucks + { + match: "#Pronoun #Infinitive [#Gerund] #PresentTense", + group: 0, + tag: 'Noun', + reason: 'tipping-sucks' + } // in various sensory functions + // { + // match: `#Preposition #Determiner #Singular [#PresentTense]`, + // group: 0, + // tag: 'Noun', + // reason: 'various-word-functions', + // }, + ]; + const ambig$2 = _ambig; + const adjectives = "(".concat(ambig$2.adverbAdjective.join('|'), ")"); + var _05Adverb = [//still good + { + match: '[still] #Adjective', + group: 0, + tag: 'Adverb', + reason: 'still-advb' + }, //still make + { + match: '[still] #Verb', + group: 0, + tag: 'Adverb', + reason: 'still-verb' + }, // so hot + { + match: '[so] #Adjective', + group: 0, + tag: 'Adverb', + reason: 'so-adv' + }, // way hotter + { + match: '[way] #Comparative', + group: 0, + tag: 'Adverb', + reason: 'way-adj' + }, // way too hot + { + match: '[way] #Adverb #Adjective', + group: 0, + tag: 'Adverb', + reason: 'way-too-adj' + }, // all singing + { + match: '[all] #Verb', + group: 0, + tag: 'Adverb', + reason: 'all-verb' + }, // sing like an angel + { + match: '(#Verb && !#Modal) [like]', + group: 0, + tag: 'Adverb', + reason: 'verb-like' + }, //barely even walk + { + match: '(barely|hardly) even', + tag: 'Adverb', + reason: 'barely-even' + }, //even held + { + match: '[even] #Verb', + group: 0, + tag: 'Adverb', + reason: 'even-walk' + }, // even left + { + match: 'even left', + tag: '#Adverb #Verb', + reason: 'even-left' + }, //cheering hard - dropped -ly's + { + match: '(#PresentTense && !#Copula) [(hard|quick|long|bright|slow|fast|backwards|forwards)]', + group: 0, + tag: 'Adverb', + reason: 'lazy-ly' + }, // much appreciated + { + match: '[much] #Adjective', + group: 0, + tag: 'Adverb', + reason: 'bit-1' + }, // is well + { + match: '#Copula [#Adverb]$', + group: 0, + tag: 'Adjective', + reason: 'is-well' + }, // a bit cold + { + match: 'a [(little|bit|wee) bit?] #Adjective', + group: 0, + tag: 'Adverb', + reason: 'a-bit-cold' + }, // dark green + { + match: "[".concat(adjectives, "] #Adjective"), + group: 0, + tag: 'Adverb', + reason: 'dark-green' + }, // kinda sparkly + { + match: "#Adverb [#Adverb]$", + group: 0, + tag: 'Adjective', + reason: 'kinda-sparkly' + }, { + match: "#Adverb [#Adverb] (and|or|then)", + group: 0, + tag: 'Adjective', + reason: 'kinda-sparkly-and' + }, // super strong + { + match: "[super] #Adjective #Noun", + group: 0, + tag: 'Adverb', + reason: 'super-strong' + }]; + var _06Value = [// ==== PhoneNumber ==== + //1 800 ... + { + match: '1 #Value #PhoneNumber', + tag: 'PhoneNumber', + reason: '1-800-Value' + }, //(454) 232-9873 + { + match: '#NumericValue #PhoneNumber', + tag: 'PhoneNumber', + reason: '(800) PhoneNumber' + }, // ==== Currency ==== + // chinese yuan + { + match: '#Demonym #Currency', + tag: 'Currency', + reason: 'demonym-currency' + }, // ==== Ordinal ==== + { + match: '[second] #Noun', + group: 0, + tag: 'Ordinal', + reason: 'second-noun' + }, // ==== Unit ==== + //5 yan + { + match: '#Value+ [#Currency]', + group: 0, + tag: 'Unit', + reason: '5-yan' + }, { + match: '#Value [(foot|feet)]', + group: 0, + tag: 'Unit', + reason: 'foot-unit' + }, //minus 7 + { + match: '(minus|negative) #Value', + tag: 'Value', + reason: 'minus-value' + }, //5 kg. + { + match: '#Value [#Abbreviation]', + group: 0, + tag: 'Unit', + reason: 'value-abbr' + }, { + match: '#Value [k]', + group: 0, + tag: 'Unit', + reason: 'value-k' + }, { + match: '#Unit an hour', + tag: 'Unit', + reason: 'unit-an-hour' + }, //seven point five + { + match: '#Value (point|decimal) #Value', + tag: 'Value', + reason: 'value-point-value' + }, // ten bucks + { + match: '(#Value|a) [(buck|bucks|grand)]', + group: 0, + tag: 'Currency', + reason: 'value-bucks' + }, //quarter million + { + match: '#Determiner [(half|quarter)] #Ordinal', + group: 0, + tag: 'Value', + reason: 'half-ordinal' + }, { + match: 'a #Value', + tag: 'Value', + reason: 'a-value' + }, // ==== Money ==== + { + match: '[#Value+] #Currency', + group: 0, + tag: 'Money', + reason: '15 usd' + }, // thousand and two + { + match: "(hundred|thousand|million|billion|trillion|quadrillion)+ and #Value", + tag: 'Value', + reason: 'magnitude-and-value' + }, //'a/an' can mean 1 - "a hour" + { + match: '!once [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)', + group: 0, + tag: 'Value', + reason: 'a-is-one' + }]; + const ambig$1 = _ambig; + const verbs = "(".concat(ambig$1.personVerb.join('|'), ")"); + let list$2 = [// adj -> gerund + // amusing his aunt + { + match: '[#Adjective] #Possessive #Noun', + group: 0, + tag: 'Verb', + reason: 'gerund-his-noun' + }, // loving you + { + match: '[#Adjective] (us|you)', + group: 0, + tag: 'Gerund', + reason: 'loving-you' + }, // slowly stunning + { + match: '(slowly|quickly) [#Adjective]', + group: 0, + tag: 'Gerund', + reason: 'slowly-adj' + }, // like + { + match: '(#Modal|i|they|we|do) not? [like]', + group: 0, + tag: 'PresentTense', + reason: 'modal-like' + }, // do not simply like + { + match: 'do (simply|just|really|not)+ [(#Adjective|like)]', + group: 0, + tag: 'Verb', + reason: 'do-simply-like' + }, // does mean + { + match: 'does (#Adverb|not)? [#Adjective]', + group: 0, + tag: 'PresentTense', + reason: 'does-mean' + }, // i mean + { + match: 'i (#Adverb|do)? not? [mean]', + group: 0, + tag: 'PresentTense', + reason: 'i-mean' + }, // { match: '!are (i|you|we) (#Adverb|do)? [#Adjective]', group: 0, tag: 'PresentTense', reason: 'i-mean' }, + // ==== Tense ==== + //he left + { + match: '#Noun #Adverb? [left]', + group: 0, + tag: 'PastTense', + reason: 'left-verb' + }, //this rocks + { + match: '(this|that) [#Plural]', + group: 0, + tag: 'PresentTense', + reason: 'this-verbs' + }, // ==== Auxiliary ==== + //was walking + { + match: "[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)", + group: 0, + tag: 'Auxiliary', + reason: 'copula-walking' + }, //support a splattering of auxillaries before a verb + { + match: "[(has|had) (#Adverb|not)+?] #PastTense", + group: 0, + tag: 'Auxiliary', + reason: 'had-walked' + }, //would walk + { + match: "#Adverb+? [(#Modal|did)+ (#Adverb|not)+?] #Verb", + group: 0, + tag: 'Auxiliary', + reason: 'modal-verb' + }, //would have had + { + match: "[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb", + group: 0, + tag: 'Auxiliary', + reason: 'would-have' + }, //would be walking + // { match: `#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'would-be' }, + //had been walking + // { + // match: `(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb`, + // group: 0, + // tag: 'Auxiliary', + // reason: 'had-been', + // }, + //support a splattering of auxillaries before a verb + { + match: "[(has|had) (#Adverb|not)+?] #PastTense", + group: 0, + tag: 'Auxiliary', + reason: 'had-walked' + }, // will walk + { + match: '[(do|does|will|have|had)] (not|#Adverb)+? #Verb', + group: 0, + tag: 'Auxiliary', + reason: 'have-had' + }, // about to go + { + match: '[about to] #Adverb? #Verb', + group: 0, + tag: ['Auxiliary', 'Verb'], + reason: 'about-to' + }, //would be walking + { + match: "#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb", + group: 0, + tag: 'Auxiliary', + reason: 'would-be' + }, //were being run + { + match: "(were|was) being [#PresentTense]", + group: 0, + tag: 'PastTense', + reason: 'was-being' + }, //have run + // { match: `have #PresentTense`, group: 0, tag: 'PastTense', reason: 'have-vb' }, + //would have had + { + match: "[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb", + group: 0, + tag: 'Auxiliary', + reason: 'would-have' + }, //had been walking + { + match: "(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb", + group: 0, + tag: 'Auxiliary', + reason: 'had-been' + }, // was being driven + { + match: '[(be|being|been)] #Participle', + group: 0, + tag: 'Auxiliary', + reason: 'being-foo' + }, // ==== Phrasal ==== + //'foo-up' + { + match: '(#Verb && @hasHyphen) up', + tag: 'PhrasalVerb', + reason: 'foo-up' + }, { + match: '(#Verb && @hasHyphen) off', + tag: 'PhrasalVerb', + reason: 'foo-off' + }, { + match: '(#Verb && @hasHyphen) over', + tag: 'PhrasalVerb', + reason: 'foo-over' + }, { + match: '(#Verb && @hasHyphen) out', + tag: 'PhrasalVerb', + reason: 'foo-out' + }, //fall over + { + match: '#PhrasalVerb [#PhrasalVerb]', + group: 0, + tag: 'Particle', + reason: 'phrasal-particle' + }, // went on for + { + match: '(lived|went|crept|go) [on] for', + group: 0, + tag: 'PhrasalVerb', + reason: 'went-on' + }, //back it up + { + match: '#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]', + group: 0, + tag: 'Adverb', + reason: 'phrasal-pronoun-advb' + }, // ==== Copula ==== + //will be running (not copula) + { + match: '[will #Adverb? not? #Adverb? be] #Gerund', + group: 0, + tag: 'Copula', + reason: 'will-be-copula' + }, //for more complex forms, just tag 'be' + { + match: 'will #Adverb? not? #Adverb? [be] #Adjective', + group: 0, + tag: 'Copula', + reason: 'be-copula' + }, // ==== Infinitive ==== + //march to + { + match: '[march] (up|down|back|to|toward)', + group: 0, + tag: 'Infinitive', + reason: 'march-to' + }, //must march + { + match: '#Modal [march]', + group: 0, + tag: 'Infinitive', + reason: 'must-march' + }, //let him glue + { + match: '(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)', + group: 0, + tag: 'Infinitive', + reason: 'let-him-glue' + }, //he quickly foo + // { match: '#Noun #Adverb [#Noun]', group: 0, tag: 'Verb', reason: 'quickly-foo' }, + //will secure our + { + match: 'will [#Adjective]', + group: 0, + tag: 'Verb', + reason: 'will-adj' + }, //he disguised the thing + { + match: '#Pronoun [#Adjective] #Determiner #Adjective? #Noun', + group: 0, + tag: 'Verb', + reason: 'he-adj-the' + }, //is eager to go + { + match: '#Copula [#Adjective] to #Verb', + group: 0, + tag: 'Verb', + reason: 'adj-to' + }, // open the door + { + match: '[open] #Determiner', + group: 0, + tag: 'Infinitive', + reason: 'open-the' + }, // compromises are possible + { + match: '[#PresentTense] (are|were|was) #Adjective', + group: 0, + tag: 'Plural', + reason: 'compromises-are-possible' + }, // would wade + { + match: "#Modal [".concat(verbs, "]"), + group: 0, + tag: 'Verb', + reason: 'would-mark' + }, { + match: "#Adverb [".concat(verbs, "]"), + group: 0, + tag: 'Verb', + reason: 'really-mark' + }, //to mark + { + match: '(to|#Modal) [mark]', + group: 0, + tag: 'PresentTense', + reason: 'to-mark' + }, // checkmate is + { + match: '^[#Infinitive] (is|was)', + group: 0, + tag: 'Noun', + reason: 'checkmate-is' + }, // wade smith + { + match: "".concat(verbs, " #Person"), + tag: 'Person', + reason: 'rob-smith' + }, // wade m. Cooper + { + match: "".concat(verbs, " #Acronym #ProperNoun"), + tag: 'Person', + reason: 'rob-a-smith' + }, // damn them + { + match: '[shit] (#Determiner|#Possessive|them)', + group: 0, + tag: 'Verb', + reason: 'swear1-verb' + }, { + match: '[damn] (#Determiner|#Possessive|them)', + group: 0, + tag: 'Verb', + reason: 'swear2-verb' + }, { + match: '[fuck] (#Determiner|#Possessive|them)', + group: 0, + tag: 'Verb', + reason: 'swear3-verb' + }, // become overly weakened + { + match: '(become|fall|grow) #Adverb? [#PastTense]', + group: 0, + tag: 'Adjective', + reason: 'overly-weakened' + }, // a completely beaten man + { + match: '(a|an) #Adverb [#Participle] #Noun', + group: 0, + tag: 'Adjective', + reason: 'completely-beaten' + }, // whose name was + { + match: 'whose [#PresentTense] #Copula', + group: 0, + tag: 'Noun', + reason: 'whos-name-was' + }, // give up on reason + { + match: "#PhrasalVerb #PhrasalVerb #Preposition [#PresentTense]", + group: 0, + tag: 'Noun', + reason: 'given-up-on-x' + } // wants to be #Particle + ]; + var _07Verbs = list$2; + let list$1 = [// ==== Region ==== + //West Norforlk + { + match: '(west|north|south|east|western|northern|southern|eastern)+ #Place', + tag: 'Region', + reason: 'west-norfolk' + }, //some us-state acronyms (exlude: al, in, la, mo, hi, me, md, ok..) + { + match: '#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]', + group: 0, + tag: 'Region', + reason: 'us-state' + }, // portland oregon + { + match: 'portland [or]', + group: 0, + tag: 'Region', + reason: 'portland-or' + }, //Foo District + { + match: '#ProperNoun+ (district|region|province|county|prefecture|municipality|territory|burough|reservation)', + tag: 'Region', + reason: 'foo-district' + }, //District of Foo + { + match: '(district|region|province|municipality|territory|burough|state) of #ProperNoun', + tag: 'Region', + reason: 'district-of-Foo' + }, // in Foo California + { + match: 'in [#ProperNoun] #Place', + group: 0, + tag: 'Place', + reason: 'propernoun-place' + }, // ==== Address ==== + { + match: '#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)', + tag: 'Address', + reason: 'address-st' + } // in houston + // { match: `in [${places}]`, group: 0, tag: 'Place', reason: 'in-paris' }, + // { match: `near [${places}]`, group: 0, tag: 'Place', reason: 'near-paris' }, + // { match: `at [${places}]`, group: 0, tag: 'Place', reason: 'at-paris' }, + // { match: `from [${places}]`, group: 0, tag: 'Place', reason: 'from-paris' }, + // { match: `to [${places}]`, group: 0, tag: 'Place', reason: 'to-paris' }, + // { match: `#Place [${places}]`, group: 0, tag: 'Place', reason: 'tokyo-paris' }, + // // houston texas + // { match: `[${places}] #Place`, group: 0, tag: 'Place', reason: 'paris-france' }, + ]; + var _08Place = list$1; + var _09Org = [//John & Joe's + { + match: '#Noun (&|n) #Noun', + tag: 'Organization', + reason: 'Noun-&-Noun' + }, // teachers union of Ontario + { + match: '#Organization of the? #ProperNoun', + tag: 'Organization', + reason: 'org-of-place', + safe: true + }, //walmart USA + { + match: '#Organization #Country', + tag: 'Organization', + reason: 'org-country' + }, //organization + { + match: '#ProperNoun #Organization', + tag: 'Organization', + reason: 'titlecase-org' + }, //FitBit Inc + { + match: '#ProperNoun (ltd|co|inc|dept|assn|bros)', + tag: 'Organization', + reason: 'org-abbrv' + }, // the OCED + { + match: 'the [#Acronym]', + group: 0, + tag: 'Organization', + reason: 'the-acronym', + safe: true + }, // global trade union + { + match: '(world|global|international|national|#Demonym) #Organization', + tag: 'Organization', + reason: 'global-org' + }, // schools + { + match: '#Noun+ (public|private) school', + tag: 'School', + reason: 'noun-public-school' + }]; + const ambig = _ambig; + const nouns = "(".concat(ambig.personNoun.join('|'), ")"); + const months = "(".concat(ambig.personMonth.join('|'), ")"); + const places = "(".concat(ambig.personPlace.join('|'), ")"); + let list = [// ==== Honorific ==== + { + match: '[(1st|2nd|first|second)] #Honorific', + group: 0, + tag: 'Honorific', + reason: 'ordinal-honorific' + }, { + match: '[(private|general|major|corporal|lord|lady|secretary|premier)] #Honorific? #Person', + group: 0, + tag: 'Honorific', + reason: 'ambg-honorifics' + }, // ==== FirstNames ==== + //is foo Smith + { + match: '#Copula [(#Noun|#PresentTense)] #LastName', + group: 0, + tag: 'FirstName', + reason: 'copula-noun-lastname' + }, //pope francis + { + match: '(lady|queen|sister) #ProperNoun', + tag: 'FemaleName', + reason: 'lady-titlecase', + safe: true + }, { + match: '(king|pope|father) #ProperNoun', + tag: 'MaleName', + reason: 'pope-titlecase', + safe: true + }, //ambiguous-but-common firstnames + { + match: '[(will|may|april|june|said|rob|wade|ray|rusty|drew|miles|jack|chuck|randy|jan|pat|cliff|bill)] #LastName', + group: 0, + tag: 'FirstName', + reason: 'maybe-lastname' + }, // ==== Nickname ==== + // Dwayne 'the rock' Johnson + { + match: '#FirstName [#Determiner #Noun] #LastName', + group: 0, + tag: 'NickName', + reason: 'first-noun-last' + }, //my buddy + { + match: '#Possessive [#FirstName]', + group: 0, + tag: 'Person', + reason: 'possessive-name' + }, { + match: '#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun', + tag: 'Person', + reason: 'titlecase-acronym-titlecase', + safe: true + }, //ludwig van beethovan + { + match: '#Acronym #LastName', + tag: 'Person', + reason: 'acronym-latname', + safe: true + }, //jk rowling + { + match: '#Person (jr|sr|md)', + tag: 'Person', + reason: 'person-honorific' + }, //peter II + { + match: '#Person #Person the? #RomanNumeral', + tag: 'Person', + reason: 'roman-numeral' + }, //'Professor Fink', 'General McCarthy' + { + match: '#FirstName [/^[^aiurck]$/]', + group: 0, + tag: ['Acronym', 'Person'], + reason: 'john-e' + }, //Doctor john smith jr + //general pearson + { + match: '#Honorific #Person', + tag: 'Person', + reason: 'honorific-person' + }, //remove single 'mr' + { + match: '#Honorific #Acronym', + tag: 'Person', + reason: 'Honorific-TitleCase' + }, //j.k Rowling + { + match: '#Noun van der? #Noun', + tag: 'Person', + reason: 'van der noun', + safe: true + }, //king of spain + { + match: '(king|queen|prince|saint|lady) of #Noun', + tag: 'Person', + reason: 'king-of-noun', + safe: true + }, //lady Florence + { + match: '(prince|lady) #Place', + tag: 'Person', + reason: 'lady-place' + }, //saint Foo + { + match: '(king|queen|prince|saint) #ProperNoun', + tag: 'Person', + reason: 'saint-foo' + }, //Foo U Ford + { + match: '[#ProperNoun] #Person', + group: 0, + tag: 'Person', + reason: 'proper-person', + safe: true + }, // al sharpton + { + match: 'al (#Person|#ProperNoun)', + tag: 'Person', + reason: 'al-borlen', + safe: true + }, //ferdinand de almar + { + match: '#FirstName de #Noun', + tag: 'Person', + reason: 'bill-de-noun' + }, //Osama bin Laden + { + match: '#FirstName (bin|al) #Noun', + tag: 'Person', + reason: 'bill-al-noun' + }, //John L. Foo + { + match: '#FirstName #Acronym #ProperNoun', + tag: 'Person', + reason: 'bill-acronym-title' + }, //Andrew Lloyd Webber + { + match: '#FirstName #FirstName #ProperNoun', + tag: 'Person', + reason: 'bill-firstname-title' + }, //Mr Foo + { + match: '#Honorific #FirstName? #ProperNoun', + tag: 'Person', + reason: 'dr-john-Title' + }, //peter the great + { + match: '#FirstName the #Adjective', + tag: 'Person', + reason: 'name-the-great' + }, //very common-but-ambiguous lastnames + { + match: '#FirstName (green|white|brown|hall|young|king|hill|cook|gray|price)', + tag: 'Person', + reason: 'bill-green' + }, // faith smith + { + match: "".concat(nouns, " #Person"), + tag: 'Person', + reason: 'ray-smith', + safe: true + }, // faith m. Smith + { + match: "".concat(nouns, " #Acronym? #ProperNoun"), + tag: 'Person', + reason: 'ray-a-smith', + safe: true + }, //give to april + { + match: "#Infinitive #Determiner? #Adjective? #Noun? (to|for) [".concat(months, "]"), + group: 0, + tag: 'Person', + reason: 'ambig-person' + }, // remind june + { + match: "#Infinitive [".concat(months, "]"), + group: 0, + tag: 'Person', + reason: 'infinitive-person' + }, // may waits for + // { match: `[${months}] #PresentTense for`, group: 0, tag: 'Person', reason: 'ambig-active-for' }, + // may waits to + // { match: `[${months}] #PresentTense to`, group: 0, tag: 'Person', reason: 'ambig-active-to' }, + // april will + { + match: "[".concat(months, "] #Modal"), + group: 0, + tag: 'Person', + reason: 'ambig-modal' + }, // may be + { + match: "[may] be", + group: 0, + tag: 'Verb', + reason: 'may-be' + }, // would april + { + match: "#Modal [".concat(months, "]"), + group: 0, + tag: 'Person', + reason: 'modal-ambig' + }, // it is may + { + match: "#Copula [".concat(months, "]"), + group: 0, + tag: 'Person', + reason: 'is-may' + }, // may is + { + match: "[".concat(months, "] #Copula"), + group: 0, + tag: 'Person', + reason: 'may-is' + }, // with april + { + match: "that [".concat(months, "]"), + group: 0, + tag: 'Person', + reason: 'that-month' + }, // with april + { + match: "with [".concat(months, "]"), + group: 0, + tag: 'Person', + reason: 'with-month' + }, // for april + { + match: "for [".concat(months, "]"), + group: 0, + tag: 'Person', + reason: 'for-month' + }, // this april + { + match: "this [".concat(months, "]"), + group: 0, + tag: 'Month', + reason: 'this-may' + }, //maybe not 'this' + // next april + { + match: "next [".concat(months, "]"), + group: 0, + tag: 'Month', + reason: 'next-may' + }, // last april + { + match: "last [".concat(months, "]"), + group: 0, + tag: 'Month', + reason: 'last-may' + }, // wednesday april + { + match: "#Date [".concat(months, "]"), + group: 0, + tag: 'Month', + reason: 'date-may' + }, // may 5th + { + match: "[".concat(months, "] the? #Value"), + group: 0, + tag: 'Month', + reason: 'may-5th' + }, // 5th of may + { + match: "#Value of [".concat(months, "]"), + group: 0, + tag: 'Month', + reason: '5th-of-may' + }, // dick van dyke + { + match: '#ProperNoun (van|al|bin) #ProperNoun', + tag: 'Person', + reason: 'title-van-title', + safe: true + }, //jose de Sucre + { + match: '#ProperNoun (de|du) la? #ProperNoun', + tag: 'Person', + reason: 'title-de-title', + safe: true + }, //Jani K. Smith + { + match: '#Singular #Acronym #LastName', + tag: '#Person', + reason: 'title-acro-noun', + safe: true + }, //John Foo + { + match: '#FirstName (#Noun && #ProperNoun) #ProperNoun?', + tag: 'Person', + reason: 'firstname-titlecase' + }, //Joe K. Sombrero + { + match: '#FirstName #Acronym #Noun', + tag: 'Person', + reason: 'n-acro-noun', + safe: true + }, //Anthony de Marco + { + match: '#FirstName [(de|di|du|van|von) #Person]', + group: 0, + tag: 'LastName', + reason: 'de-firstname' + }, // Paris Berelc + { + match: "[".concat(places, "] (#ProperNoun && !#Place)"), + group: 0, + tag: 'FirstName', + reason: 'place-firstname' + }]; + var _10People = list; + const parseSyntax = matchSyntax; + const unique$1 = _unique; + let matches$1 = []; + matches$1 = matches$1.concat(_01Misc); + matches$1 = matches$1.concat(_02Dates); + matches$1 = matches$1.concat(_03Adjective); + matches$1 = matches$1.concat(_04Noun); + matches$1 = matches$1.concat(_05Adverb); + matches$1 = matches$1.concat(_06Value); + matches$1 = matches$1.concat(_07Verbs); + matches$1 = matches$1.concat(_08Place); + matches$1 = matches$1.concat(_09Org); + matches$1 = matches$1.concat(_10People); // cache the easier conditions up-front + + const cacheRequired = function (reg) { + let needTags = []; + let needWords = []; + reg.forEach(obj => { + if (obj.optional === true || obj.negative === true) { + return; + } + + if (obj.tag !== undefined) { + needTags.push(obj.tag); + } + + if (obj.word !== undefined) { + needWords.push(obj.word); + } + }); + return { + tags: unique$1(needTags), + words: unique$1(needWords) + }; + }; // for speed, enumerate (a|b|c) to three matches + + + const allLists = function (m) { + let more = []; + let lists = m.reg.filter(r => r.fastOr !== undefined); + + if (lists.length === 1) { + let i = m.reg.findIndex(r => r.fastOr !== undefined); + Object.keys(m.reg[i].fastOr).forEach(w => { + let newM = Object.assign({}, m); + newM.reg = newM.reg.slice(0); + newM.reg[i] = Object.assign({}, newM.reg[i]); + newM.reg[i].word = w; + delete newM.reg[i].operator; + delete newM.reg[i].fastOr; // newM.reason += '-' + w + + more.push(newM); + }); + } + + return more; + }; // parse them + + + let all = []; + matches$1.forEach(m => { + m.reg = parseSyntax(m.match); + let enumerated = allLists(m); + + if (enumerated.length > 0) { + all = all.concat(enumerated); + } else { + all.push(m); // console.log(m) + } + }); + all.forEach(m => { + m.required = cacheRequired(m.reg); + return m; + }); // console.log(all.length) + // console.log(all[all.length - 1]) + + var matches_1 = all; + const matches = matches_1; + const unique = _unique; // return intersection of array-of-arrays + + const hasEvery = function (chances) { + if (chances.length === 0) { + return []; + } + + let obj = {}; + chances.forEach(arr => { + arr = unique(arr); + + for (let i = 0; i < arr.length; i++) { + obj[arr[i]] = obj[arr[i]] || 0; + obj[arr[i]] += 1; + } + }); + let res = Object.keys(obj); + res = res.filter(k => obj[k] === chances.length); + res = res.map(num => Number(num)); + return res; + }; + + const runner$1 = function (doc) { + //find phrases to try for each match + matches.forEach(m => { + let allChances = []; + m.required.words.forEach(w => { + allChances.push(doc._cache.words[w] || []); + }); + m.required.tags.forEach(tag => { + allChances.push(doc._cache.tags[tag] || []); + }); + let worthIt = hasEvery(allChances); + + if (worthIt.length === 0) { + return; + } + + let phrases = worthIt.map(index => doc.list[index]); + let tryDoc = doc.buildFrom(phrases); // phrases getting tagged + + let match = tryDoc.match(m.reg, m.group); + + if (match.found) { + if (m.safe === true) { + match.tagSafe(m.tag, m.reason); + } else { + match.tag(m.tag, m.reason); + } + } + }); + }; + + var runner_1 = runner$1; // console.log(hasEvery([[1, 2, 2, 3], [2, 3], []])) + + const fixMisc = fixMisc$1; + const runner = runner_1; // runner: 250ms + // misc: 40ms + //sequence of match-tag statements to correct mis-tags + + const corrections$1 = function (doc) { + runner(doc); + fixMisc(doc); + return doc; + }; + + var _04Correction = corrections$1; + const init = _01Init; + const fallbacks = _02Fallbacks; + const contractions = _03Contractions; + const corrections = _04Correction; + /** POS-tag all terms in this document */ + + const tagger$1 = function (doc) { + let terms = doc.termList(); // check against any known-words + + doc = init(doc, terms); // everything has gotta be something. ¯\_(:/)_/¯ + + doc = fallbacks(doc, terms); // support "didn't" & "spencer's" + + doc = contractions(doc); //set our cache, to speed things up + + doc.cache(); // wiggle-around the results, so they make more sense + + doc = corrections(doc); // remove our cache, as it's invalidated now + + doc.uncache(); // run any user-given tagger functions + + doc.world.taggers.forEach(fn => { + fn(doc); + }); + return doc; + }; + + var _02Tagger = tagger$1; + + const addMethod$a = function (Doc) { + /** */ + class Abbreviations extends Doc { + stripPeriods() { + this.termList().forEach(t => { + if (t.tags.Abbreviation === true && t.next) { + t.post = t.post.replace(/^\./, ''); + } + + let str = t.text.replace(/\./, ''); + t.set(str); + }); + return this; + } + + addPeriods() { + this.termList().forEach(t => { + t.post = t.post.replace(/^\./, ''); + t.post = '.' + t.post; + }); + return this; + } + + } + + Abbreviations.prototype.unwrap = Abbreviations.prototype.stripPeriods; + + Doc.prototype.abbreviations = function (n) { + let match = this.match('#Abbreviation'); + + if (typeof n === 'number') { + match = match.get(n); + } + + return new Abbreviations(match.list, this, this.world); + }; + + return Doc; + }; + + var Abbreviations = addMethod$a; + const hasPeriod = /\./; + + const addMethod$9 = function (Doc) { + /** */ + class Acronyms extends Doc { + stripPeriods() { + this.termList().forEach(t => { + let str = t.text.replace(/\./g, ''); + t.set(str); + }); + return this; + } + + addPeriods() { + this.termList().forEach(t => { + let str = t.text.replace(/\./g, ''); + str = str.split('').join('.'); // don't add a end-period if there's a sentence-end one + + if (hasPeriod.test(t.post) === false) { + str += '.'; + } + + t.set(str); + }); + return this; + } + + } + + Acronyms.prototype.unwrap = Acronyms.prototype.stripPeriods; + Acronyms.prototype.strip = Acronyms.prototype.stripPeriods; + + Doc.prototype.acronyms = function (n) { + let match = this.match('#Acronym'); + + if (typeof n === 'number') { + match = match.get(n); + } + + return new Acronyms(match.list, this, this.world); + }; + + return Doc; + }; + + var Acronyms = addMethod$9; + + const addMethod$8 = function (Doc) { + /** split into approximate sub-sentence phrases */ + Doc.prototype.clauses = function (n) { + // an awkward way to disambiguate a comma use + let commas = this.if('@hasComma').notIf('@hasComma @hasComma') //fun, cool... + .notIf('@hasComma . .? (and|or) .') //cool, and fun + .notIf('(#City && @hasComma) #Country') //'toronto, canada' + .notIf('(#WeekDay && @hasComma) #Date') //'tuesday, march 2nd' + .notIf('(#Date && @hasComma) #Year') //'july 6, 1992' + .notIf('@hasComma (too|also)$') //at end of sentence + .match('@hasComma'); + let found = this.splitAfter(commas); + let quotes = found.quotations(); + found = found.splitOn(quotes); + let parentheses = found.parentheses(); + found = found.splitOn(parentheses); // it is cool and it is .. + + let conjunctions = found.if('#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb').match('#Conjunction'); + found = found.splitBefore(conjunctions); // if it is this then that + + let condition = found.if('if .{2,9} then .').match('then'); + found = found.splitBefore(condition); // misc clause partitions + + found = found.splitBefore('as well as .'); + found = found.splitBefore('such as .'); + found = found.splitBefore('in addition to .'); // semicolons, dashes + + found = found.splitAfter('@hasSemicolon'); + found = found.splitAfter('@hasDash'); // passive voice verb - '.. which was robbed is empty' + // let passive = found.match('#Noun (which|that) (was|is) #Adverb? #PastTense #Adverb?') + // if (passive.found) { + // found = found.splitAfter(passive) + // } + // //which the boy robbed + // passive = found.match('#Noun (which|that) the? #Noun+ #Adverb? #PastTense #Adverb?') + // if (passive.found) { + // found = found.splitAfter(passive) + // } + // does there appear to have relative/subordinate clause still? + + let tooLong = found.filter(d => d.wordCount() > 5 && d.match('#Verb+').length >= 2); + + if (tooLong.found) { + let m = tooLong.splitAfter('#Noun .* #Verb .* #Noun+'); + found = found.splitOn(m.eq(0)); + } + + if (typeof n === 'number') { + found = found.get(n); + } + + return new Doc(found.list, this, this.world); + }; + + return Doc; + }; + + var Clauses = addMethod$8; + + const addMethod$7 = function (Doc) { + /** */ + class Contractions extends Doc { + constructor(list, from, world) { + super(list, from, world); + this.contracted = null; + } + /** turn didn't into 'did not' */ + + + expand() { + this.list.forEach(p => { + let terms = p.terms(); //change the case? + + let isTitlecase = terms[0].isTitleCase(); + terms.forEach((t, i) => { + //use the implicit text + t.set(t.implicit || t.text); + t.implicit = undefined; //add whitespace + + if (i < terms.length - 1 && t.post === '') { + t.post += ' '; + } + }); //set titlecase + + if (isTitlecase) { + terms[0].toTitleCase(); + } + }); + return this; + } + + } //find contractable, expanded-contractions + // const findExpanded = r => { + // let remain = r.not('#Contraction') + // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)') + // m.concat(remain.match('(they|we|you|i) have')) + // m.concat(remain.match('i am')) + // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not')) + // return m + // } + + + Doc.prototype.contractions = function (n) { + //find currently-contracted + let found = this.match('@hasContraction+'); //(may want to split these up) + //todo: split consecutive contractions + + if (typeof n === 'number') { + found = found.get(n); + } + + return new Contractions(found.list, this, this.world); + }; //aliases + + + Doc.prototype.expanded = Doc.prototype.isExpanded; + Doc.prototype.contracted = Doc.prototype.isContracted; + return Doc; + }; - var isHas = function isHas(term, phrase) { - var terms = phrase.terms(); - var index = terms.indexOf(term); - var after = terms.slice(index + 1, index + 3); //look for a past-tense verb + var Contractions = addMethod$7; + + const addMethod$6 = function (Doc) { + //pull it apart.. + const parse = function (doc) { + let things = doc.splitAfter('@hasComma').splitOn('(and|or) not?').not('(and|or) not?'); + let beforeLast = doc.match('[.] (and|or)', 0); + return { + things: things, + conjunction: doc.match('(and|or) not?'), + beforeLast: beforeLast, + hasOxford: beforeLast.has('@hasComma') + }; + }; + /** cool, fun, and nice */ - return after.find(function (t) { - return t.tags.PastTense; - }); - }; - var checkPossessive = function checkPossessive(term, phrase, world) { - //the rest of 's - var found = term.text.match(hasApostropheS); + class Lists extends Doc { + /** coordinating conjunction */ + conjunctions() { + return this.match('(and|or)'); + } + /** split-up by list object */ - if (found !== null) { - //spencer's thing vs spencer-is - if (isPossessive(term, phrase.pool) === true) { - term.tag('#Possessive', 'isPossessive', world); - return null; - } //'spencer is' + parts() { + return this.splitAfter('@hasComma').splitOn('(and|or) not?'); + } + /** remove the conjunction */ - if (found !== null) { - if (isHas(term, phrase)) { - return [found[1], 'has']; - } - return [found[1], 'is']; - } - } + items() { + return parse(this).things; + } + /** add a new unit to the list */ - return null; - }; - var _04Possessive = checkPossessive; - var hasPerfect = /[a-z\u00C0-\u00FF]'d$/; - var useDid = { - how: true, - what: true - }; - /** split `i'd` into 'i had', or 'i would' */ + add(str) { + this.forEach(p => { + let beforeLast = parse(p).beforeLast; + beforeLast.append(str); //add a comma to it + + beforeLast.termList(0).addPunctuation(','); + }); + return this; + } + /** remove any matching unit from the list */ + + + remove(match) { + return this.items().if(match).remove(); + } + /** return only lists that use a serial comma */ + + + hasOxfordComma() { + return this.filter(doc => parse(doc).hasOxford); + } + + addOxfordComma() { + let items = this.items(); + let needsComma = items.eq(items.length - 2); + + if (needsComma.found && needsComma.has('@hasComma') === false) { + needsComma.post(', '); + } - var checkPerfect = function checkPerfect(term, phrase) { - if (hasPerfect.test(term.clean)) { - var root = term.clean.replace(/'d$/, ''); //look at the next few words + return this; + } - var terms = phrase.terms(); - var index = terms.indexOf(term); - var after = terms.slice(index + 1, index + 4); //is it before a past-tense verb? - 'i'd walked' + removeOxfordComma() { + let items = this.items(); + let needsComma = items.eq(items.length - 2); - for (var i = 0; i < after.length; i++) { - var t = after[i]; + if (needsComma.found && needsComma.has('@hasComma') === true) { + needsComma.post(' '); + } - if (t.tags.Verb) { - if (t.tags.PastTense) { - return [root, 'had']; - } //what'd you see + return this; + } + } // aliases - if (useDid[root] === true) { - return [root, 'did']; - } - return [root, 'would']; - } - } //otherwise, 'i'd walk' + Lists.prototype.things = Lists.prototype.items; + Doc.prototype.lists = function (n) { + let m = this.if('@hasComma+ .? (and|or) not? .'); // person-list - return [root, 'would']; - } + let nounList = m.match('(#Noun|#Adjective|#Determiner|#Article)+ #Conjunction not? (#Article|#Determiner)? #Adjective? #Noun+').if('#Noun'); + let adjList = m.match('(#Adjective|#Adverb)+ #Conjunction not? #Adverb? #Adjective+'); + let verbList = m.match('(#Verb|#Adverb)+ #Conjunction not? #Adverb? #Verb+'); + let result = nounList.concat(adjList); + result = result.concat(verbList); + result = result.if('@hasComma'); - return null; - }; + if (typeof n === 'number') { + result = m.get(n); + } - var _05PerfectTense = checkPerfect; - var isRange = /^([0-9.]{1,3}[a-z]{0,2})[-–—]([0-9]{1,3}[a-z]{0,2})$/i; - var timeRange = /^([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)[-–—]([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)$/i; //split '2-4' into '2 to 4' + return new Lists(result.list, this, this.world); + }; - var checkRange = function checkRange(term) { - if (term.tags.PhoneNumber === true) { - return null; - } + return Doc; + }; - var parts = term.text.match(isRange); + var Lists = addMethod$6; + const noPlural = '(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)'; //certain words can't be plural, like 'peace' - if (parts !== null) { - return [parts[1], 'to', parts[2]]; - } else { - parts = term.text.match(timeRange); - - if (parts !== null) { - return [parts[1], 'to', parts[4]]; - } - } - - return null; - }; - - var _06Ranges = checkRange; - var contraction = /^(l|c|d|j|m|n|qu|s|t)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z\u00C0-\u00FF]+)$/i; // basic support for ungendered french contractions - // not perfect, but better than nothing, to support matching on french text. - - var french = { - l: 'le', - // l'amour - c: 'ce', - // c'est - d: 'de', - // d'amerique - j: 'je', - // j'aime - m: 'me', - // m'appelle - n: 'ne', - // n'est - qu: 'que', - // qu'il - s: 'se', - // s'appelle - t: 'tu' // t'aime + const hasPlural$1 = function (doc) { + if (doc.has('#Plural') === true) { + return true; + } // these can't be plural - }; - - var checkFrench = function checkFrench(term) { - var parts = term.text.match(contraction); - - if (parts === null || french.hasOwnProperty(parts[1]) === false) { - return null; - } - - var arr = [french[parts[1]], parts[2]]; - - if (arr[0] && arr[1]) { - return arr; - } - - return null; - }; - - var _07French = checkFrench; - var isNumber = /^[0-9]+$/; - var isOrdinal = /^[0-9]+(st|nd|rd|th)$/; - var isTime = /^[0-9:]+(am|pm)$/; - var createPhrase = function createPhrase(found, doc) { - //create phrase from ['would', 'not'] - var phrase = _01Tokenizer(found.join(' '), doc.world, doc.pool())[0]; //tag it + if (doc.has(noPlural) === true) { + return false; + } + return true; + }; - var terms = phrase.terms(); + var hasPlural_1 = hasPlural$1; + const irregulars = { + hour: 'an', + heir: 'an', + heirloom: 'an', + honest: 'an', + honour: 'an', + honor: 'an', + uber: 'an' //german u - _01Lexicon(terms, doc.world); //make these terms implicit + }; //pronounced letters of acronyms that get a 'an' + const an_acronyms = { + a: true, + e: true, + f: true, + h: true, + i: true, + l: true, + m: true, + n: true, + o: true, + r: true, + s: true, + x: true + }; //'a' regexes - terms.forEach(function (t) { - t.implicit = t.text; - t.text = ''; - t.clean = ''; // remove whitespace for implicit terms + const a_regexs = [/^onc?e/i, //'wu' sound of 'o' + /^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u' + /^eul/i]; - t.pre = ''; - t.post = ''; // tag number-ranges + const makeArticle = function (doc) { + //no 'the john smith', but 'a london hotel' + if (doc.has('#Person') || doc.has('#Place')) { + return ''; + } //no a/an if it's plural - if (isNumber.test(t.implicit)) { - t.tag('Cardinal', 'num-range', doc.world); - } else if (isOrdinal.test(t.implicit)) { - t.tag('Ordinal', 'ord-range', doc.world); - } else if (isTime.test(t.implicit)) { - t.tag('Time', 'time-range', doc.world); - } else if (Object.keys(t.tags).length === 0) { - t.tags.Noun = true; // if no tag, give it a noun - } - }); - return phrase; - }; - var contractions = function contractions(doc) { - var world = doc.world; - doc.list.forEach(function (p) { - var terms = p.terms(); + if (doc.has('#Plural')) { + return 'the'; + } - for (var i = 0; i < terms.length; i += 1) { - var term = terms[i]; + let str = doc.text('normal').trim(); //explicit irregular forms - var found = _01Negative(term, p); + if (irregulars.hasOwnProperty(str)) { + return irregulars[str]; + } //spelled-out acronyms - found = found || _02Simple(term); - found = found || _03Irregulars(term); - found = found || _04Possessive(term, p, world); - found = found || _05PerfectTense(term, p); - found = found || _06Ranges(term); - found = found || _07French(term); //add them in - if (found !== null) { - var newPhrase = createPhrase(found, doc); // keep tag NumberRange, if we had it + let firstLetter = str.substr(0, 1); - if (p.has('#NumberRange') === true) { - doc.buildFrom([newPhrase]).tag('NumberRange'); - } //set text as contraction + if (doc.has('^@isAcronym') && an_acronyms.hasOwnProperty(firstLetter)) { + return 'an'; + } //'a' regexes - var firstTerm = newPhrase.terms(0); - firstTerm.text = term.text; //grab sub-phrase to remove + for (let i = 0; i < a_regexs.length; i++) { + if (a_regexs[i].test(str)) { + return 'a'; + } + } //basic vowel-startings + + + if (/^[aeiou]/i.test(str)) { + return 'an'; + } + + return 'a'; + }; + + var getArticle$1 = makeArticle; + const isPlural$7 = [/(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /men$/i, /.tia$/i, /(m|l)ice$/i]; //similar to plural/singularize rules, but not the same + + const isSingular = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i]; + var _rules = { + isSingular: isSingular, + isPlural: isPlural$7 + }; + const rules = _rules; + const endS = /s$/; // double-check this term, if it is not plural, or singular. + // (this is a partial copy of ./tagger/fallbacks/plural) + // fallback plural if it ends in an 's'. + + const isPlural$6 = function (str) { + // isSingular suffix rules + if (rules.isSingular.find(reg => reg.test(str))) { + return false; + } // does it end in an s? + + + if (endS.test(str) === true) { + return true; + } // is it a plural like 'fungi'? + + + if (rules.isPlural.find(reg => reg.test(str))) { + return true; + } + + return null; + }; + + var isPlural_1$1 = isPlural$6; + const exceptions = { + he: 'his', + she: 'hers', + they: 'theirs', + we: 'ours', + i: 'mine', + you: 'yours', + her: 'hers', + their: 'theirs', + our: 'ours', + my: 'mine', + your: 'yours' + }; // turn "David" to "David's" + + const toPossessive$1 = function (doc) { + let str = doc.text('text').trim(); // exceptions + + if (exceptions.hasOwnProperty(str)) { + doc.replaceWith(exceptions[str], true); + doc.tag('Possessive', 'toPossessive'); + return; + } // flanders' + + + if (/s$/.test(str)) { + str += "'"; + doc.replaceWith(str, true); + doc.tag('Possessive', 'toPossessive'); + return; + } //normal form: + + + str += "'s"; + doc.replaceWith(str, true); + doc.tag('Possessive', 'toPossessive'); + return; + }; + + var toPossessive_1 = toPossessive$1; // pull these apart, if necessary + + const parse$2 = function (doc) { + let res = { + main: doc + }; //support 'mayor of chicago' as one noun-phrase + + if (doc.has('#Noun (of|by|for) .')) { + let m = doc.splitAfter('[#Noun+]', 0); + res.main = m.eq(0); + res.post = m.eq(1); + } + + return res; + }; + + var parse_1 = parse$2; + const hasPlural = hasPlural_1; + const getArticle = getArticle$1; + const isPlural$5 = isPlural_1$1; + const toPossessive = toPossessive_1; + const parse$1 = parse_1; + const methods$4 = { + /** overload the original json with noun information */ + json: function (options) { + let n = null; + + if (typeof options === 'number') { + n = options; + options = null; + } + + options = options || { + text: true, + normal: true, + trim: true, + terms: true + }; + let res = []; + this.forEach(doc => { + let json = doc.json(options)[0]; + json.article = getArticle(doc); + res.push(json); + }); + + if (n !== null) { + return res[n]; + } + + return res; + }, + + /** get all adjectives describing this noun*/ + adjectives: function () { + let list = this.lookAhead('^(that|who|which)? (was|is|will)? be? #Adverb? #Adjective+'); + list = list.concat(this.lookBehind('#Adjective+ #Adverb?$')); + list = list.match('#Adjective'); + return list.sort('index'); + }, + isPlural: function () { + return this.if('#Plural'); //assume tagger has run? + }, + hasPlural: function () { + return this.filter(d => hasPlural(d)); + }, + toPlural: function (agree) { + let toPlural = this.world.transforms.toPlural; + this.forEach(doc => { + if (doc.has('#Plural') || hasPlural(doc) === false) { + return; + } // double-check it isn't an un-tagged plural + + + let main = parse$1(doc).main; + let str = main.text('reduced'); + + if (!main.has('#Singular') && isPlural$5(str) === true) { + return; + } + + str = toPlural(str, this.world); + main.replace(str).tag('#Plural'); // 'an apple' -> 'apples' + + if (agree) { + let an = main.lookBefore('(an|a) #Adjective?$').not('#Adjective'); + + if (an.found === true) { + an.remove(); + } + } + }); + return this; + }, + toSingular: function (agree) { + let toSingular = this.world.transforms.toSingular; + this.forEach(doc => { + if (doc.has('^#Singular+$') || hasPlural(doc) === false) { + return; + } // double-check it isn't an un-tagged plural + + + let main = parse$1(doc).main; + let str = main.text('reduced'); + + if (!main.has('#Plural') && isPlural$5(str) !== true) { + return; + } + + str = toSingular(str, this.world); + main.replace(str).tag('#Singular'); // add an article + + if (agree) { + // 'apples' -> 'an apple' + let start = doc; + let adj = doc.lookBefore('#Adjective'); + + if (adj.found) { + start = adj; + } + + let article = getArticle(start); + start.insertBefore(article); + } + }); + return this; + }, + toPossessive: function () { + this.forEach(d => { + toPossessive(d); + }); + return this; + } + }; + var methods_1 = methods$4; + const methods$3 = methods_1; + + const addMethod$5 = function (Doc) { + /** */ + class Nouns extends Doc {} // add-in our methods + + + Object.assign(Nouns.prototype, methods$3); + + Doc.prototype.nouns = function (n) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + // don't split 'paris, france' + let keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas + + let m = this.not(keep).splitAfter('@hasComma'); // combine them back together + + m = m.concat(keep); // don't combine over scare-quotes + + let quotes = m.quotations(); + + if (quotes.found) { + m = m.splitOn(quotes.eq(0)); + } + + m = m.match('#Noun+ (of|by)? the? #Noun+?'); //nouns that we don't want in these results, for weird reasons + + if (opts.keep_anaphora !== true) { + m = m.not('#Pronoun'); + m = m.not('(there|these)'); + m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays + // //allow possessives like "spencer's", but not generic ones like, + + m = m.not('(my|our|your|their|her|his)'); + } + + m = m.not('(of|for|by|the)$'); + + if (typeof n === 'number') { + m = m.get(n); + } + + return new Nouns(m.list, this, this.world); + }; + + return Doc; + }; + + var Nouns = addMethod$5; + const open = /\(/; + const close = /\)/; + + const addMethod$4 = function (Doc) { + /** anything between (these things) */ + class Parentheses extends Doc { + /** remove the parentheses characters */ + unwrap() { + this.list.forEach(p => { + let first = p.terms(0); + first.pre = first.pre.replace(open, ''); + let last = p.lastTerm(); + last.post = last.post.replace(close, ''); + }); + return this; + } + + } + + Doc.prototype.parentheses = function (n) { + let list = []; + this.list.forEach(p => { + let terms = p.terms(); //look for opening brackets + + for (let i = 0; i < terms.length; i += 1) { + const t = terms[i]; + + if (open.test(t.pre)) { + //look for the closing bracket.. + for (let o = i; o < terms.length; o += 1) { + if (close.test(terms[o].post)) { + let len = o - i + 1; + list.push(p.buildFrom(t.id, len)); + i = o; + break; + } + } + } + } + }); //support nth result + + if (typeof n === 'number') { + if (list[n]) { + list = [list[n]]; + } else { + list = []; + } + + return new Parentheses(list, this, this.world); + } + + return new Parentheses(list, this, this.world); + }; + + return Doc; + }; + + var Parentheses = addMethod$4; + + const addMethod$3 = function (Doc) { + /** */ + class Possessives extends Doc { + constructor(list, from, world) { + super(list, from, world); + this.contracted = null; + } + /** turn didn't into 'did not' */ + + + strip() { + this.list.forEach(p => { + let terms = p.terms(); + terms.forEach(t => { + let str = t.text.replace(/'s$/, ''); + t.set(str || t.text); + }); + }); + return this; + } + + } //find contractable, expanded-contractions + // const findExpanded = r => { + // let remain = r.not('#Contraction') + // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)') + // m.concat(remain.match('(they|we|you|i) have')) + // m.concat(remain.match('i am')) + // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not')) + // return m + // } + + + Doc.prototype.possessives = function (n) { + //find currently-contracted + let found = this.match('#Noun+? #Possessive'); //todo: split consecutive contractions + + if (typeof n === 'number') { + found = found.get(n); + } + + return new Possessives(found.list, this, this.world); + }; + + return Doc; + }; + + var Possessives = addMethod$3; + const pairs = { + '\u0022': '\u0022', + // 'StraightDoubleQuotes' + '\uFF02': '\uFF02', + // 'StraightDoubleQuotesWide' + '\u0027': '\u0027', + // 'StraightSingleQuotes' + '\u201C': '\u201D', + // 'CommaDoubleQuotes' + '\u2018': '\u2019', + // 'CommaSingleQuotes' + '\u201F': '\u201D', + // 'CurlyDoubleQuotesReversed' + '\u201B': '\u2019', + // 'CurlySingleQuotesReversed' + '\u201E': '\u201D', + // 'LowCurlyDoubleQuotes' + '\u2E42': '\u201D', + // 'LowCurlyDoubleQuotesReversed' + '\u201A': '\u2019', + // 'LowCurlySingleQuotes' + '\u00AB': '\u00BB', + // 'AngleDoubleQuotes' + '\u2039': '\u203A', + // 'AngleSingleQuotes' + // Prime 'non quotation' + '\u2035': '\u2032', + // 'PrimeSingleQuotes' + '\u2036': '\u2033', + // 'PrimeDoubleQuotes' + '\u2037': '\u2034', + // 'PrimeTripleQuotes' + // Prime 'quotation' variation + '\u301D': '\u301E', + // 'PrimeDoubleQuotes' + '\u0060': '\u00B4', + // 'PrimeSingleQuotes' + '\u301F': '\u301E' // 'LowPrimeDoubleQuotesReversed' + + }; + const hasOpen = RegExp('(' + Object.keys(pairs).join('|') + ')'); + + const addMethod$2 = function (Doc) { + /** "these things" */ + class Quotations extends Doc { + /** remove the quote characters */ + unwrap() { + return this; + } + + } + + Doc.prototype.quotations = function (n) { + let list = []; + this.list.forEach(p => { + let terms = p.terms(); //look for opening quotes + + for (let i = 0; i < terms.length; i += 1) { + const t = terms[i]; + + if (hasOpen.test(t.pre)) { + let char = (t.pre.match(hasOpen) || [])[0]; + let want = pairs[char]; // if (!want) { + // console.warn('missing quote char ' + char) + // } + //look for the closing bracket.. + + for (let o = i; o < terms.length; o += 1) { + if (terms[o].post.indexOf(want) !== -1) { + let len = o - i + 1; + list.push(p.buildFrom(t.id, len)); + i = o; + break; + } + } + } + } + }); //support nth result + + if (typeof n === 'number') { + if (list[n]) { + list = [list[n]]; + } else { + list = []; + } + + return new Quotations(list, this, this.world); + } + + return new Quotations(list, this, this.world); + }; // alias + + + Doc.prototype.quotes = Doc.prototype.quotations; + return Doc; + }; + + var Quotations = addMethod$2; + + const toInfinitive$2 = function (parsed, world) { + let verb = parsed.verb; //1. if it's already infinitive + + let str = verb.text('reduced'); + + if (verb.has('#Infinitive')) { + return str; + } // 2. world transform does the heavy-lifting + + + let tense = null; + + if (verb.has('#PastTense')) { + tense = 'PastTense'; + } else if (verb.has('#Gerund')) { + tense = 'Gerund'; + } else if (verb.has('#PresentTense')) { + tense = 'PresentTense'; + } else if (verb.has('#Participle')) { + tense = 'Participle'; + } else if (verb.has('#Actor')) { + tense = 'Actor'; + } + + return world.transforms.toInfinitive(str, world, tense); + }; + + var toInfinitive_1 = toInfinitive$2; // we walk -> plural + // the most-recent noun-phrase, before this verb. + + const findNoun = function (vb) { + let noun = vb.lookBehind('#Noun+').last(); + return noun; + }; //sometimes you can tell if a verb is plural/singular, just by the verb + // i am / we were + // othertimes you need its subject 'we walk' vs 'i walk' - var match = p.buildFrom(term.id, 1, doc.pool()); - match.replace(newPhrase, doc, true); - } - } - }); - return doc; - }; - var _03Contractions = contractions; + const isPlural$4 = function (parsed) { + let vb = parsed.verb; - var hasWord = function hasWord(doc, word) { - var arr = doc._cache.words[word] || []; - arr = arr.map(function (i) { - return doc.list[i]; - }); - return doc.buildFrom(arr); - }; + if (vb.has('(are|were|does)') || parsed.auxiliary.has('(are|were|does)')) { + return true; + } //consider its prior noun - var hasTag = function hasTag(doc, tag) { - var arr = doc._cache.tags[tag] || []; - arr = arr.map(function (i) { - return doc.list[i]; - }); - return doc.buildFrom(arr); - }; //mostly pos-corections here + let noun = findNoun(vb); - var miscCorrection = function miscCorrection(doc) { - // imperative-form - var m = hasTag(doc, 'Infinitive'); + if (noun.has('(he|she|many|both)')) { + return false; + } - if (m.found) { - // you eat? - m = m.ifNo('@hasQuestionMark'); // i speak + if (noun.has('(we|they|you|i)')) { + return true; + } - m = m.ifNo('(i|we|they)'); // shut the door! - - m.match('[#Infinitive] (#Determiner|#Possessive) #Noun', 0).tag('Imperative', 'shut-the'); // go-fast - - m.match('^[#Infinitive] #Adverb?$', 0).tag('Imperative', 'go-fast'); // do not go - - m.match('[(do && #Infinitive)] not? #Verb', 0).tag('Imperative', 'do-not'); // do it - - m.match('[#Infinitive] (it|some)', 0).tag('Imperative', 'do-it'); - } //exactly like - - - m = hasWord(doc, 'like'); - m.match('#Adverb like').notIf('(really|generally|typically|usually|sometimes|often|just) [like]').tag('Adverb', 'adverb-like'); //the orange. - - m = hasTag(doc, 'Adjective'); - m.match('#Determiner #Adjective$').notIf('(#Comparative|#Superlative)').terms(1).tag('Noun', 'the-adj-1'); // Firstname x (dangerous) - - m = hasTag(doc, 'FirstName'); - m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('(#Pronoun|#Plural)').ifNo('@hasComma .').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train - - m = hasTag(doc, 'Value'); - m = m.match('#Value #PresentTense').ifNo('#Copula'); - - if (m.found) { - if (m.has('(one|1)') === true) { - m.terms(1).tag('Singular', 'one-presentTense'); - } else { - m.terms(1).tag('Plural', 'value-presentTense'); - } - } // well i've been... - - - doc.match('^(well|so|okay)').tag('Expression', 'well-'); // 10th of a second - - doc.match('#Value [of a second]', 0).unTag('Value', 'of-a-second'); // 30 seconds - - doc.match('#Value [seconds]', 0).unTag('Value', '30-seconds').tag(['Unit', 'Plural']); //been walking - - m = hasTag(doc, 'Gerund'); - m.match("(be|been) (#Adverb|not)+? #Gerund").not('#Verb$').tag('Auxiliary', 'be-walking'); // directive verb - 'use reverse' - - doc.match('(try|use|attempt|build|make) #Verb').ifNo('(@hasComma|#Negative|#PhrasalVerb|#Copula|will|be)').lastTerm().tag('#Noun', 'do-verb'); //possessives - //'her match' vs 'let her match' - - m = hasTag(doc, 'Possessive'); - m = m.match('#Possessive [#Infinitive]', 0); - - if (!m.lookBehind('(let|made|make|force|ask)').found) { - m.tag('Noun', 'her-match'); - } - - return doc; - }; - - var fixMisc = miscCorrection; - - var unique = function unique(arr) { - var obj = {}; - - for (var i = 0; i < arr.length; i++) { - obj[arr[i]] = true; - } - - return Object.keys(obj); - }; - - var _unique = unique; // order matters - - var list$5 = [// ==== Mutliple tags ==== - { - match: 'too much', - tag: 'Adverb Adjective', - reason: 'bit-4' - }, // u r cool - { - match: 'u r', - tag: 'Pronoun Copula', - reason: 'u r' - }, //sometimes adverbs - 'pretty good','well above' - { - match: '#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)', - tag: '#Copula #Adverb #Adjective', - reason: 'sometimes-adverb' - }, //i better .. - { - match: '(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense', - group: 0, - tag: 'Modal', - reason: 'i-better' - }, //walking is cool - { - match: '[#Gerund] #Adverb? not? #Copula', - group: 0, - tag: 'Activity', - reason: 'gerund-copula' - }, //walking should be fun - { - match: '[#Gerund] #Modal', - group: 0, - tag: 'Activity', - reason: 'gerund-modal' - }, //swear-words as non-expression POS - { - match: 'holy (shit|fuck|hell)', - tag: 'Expression', - reason: 'swears-expression' - }, //Aircraft designer - { - match: '#Noun #Actor', - tag: 'Actor', - reason: 'thing-doer' - }, { - match: '#Conjunction [u]', - group: 0, - tag: 'Pronoun', - reason: 'u-pronoun-2' - }, //'u' as pronoun - { - match: '[u] #Verb', - group: 0, - tag: 'Pronoun', - reason: 'u-pronoun-1' - }, // ==== Determiners ==== - { - match: '#Noun [(who|whom)]', - group: 0, - tag: 'Determiner', - reason: 'captain-who' - }, //that car goes - // { match: 'that #Noun [#PresentTense]', group: 0, tag: 'Determiner', reason: 'that-determiner' }, - { - match: 'a bit much', - tag: 'Determiner Adverb Adjective', - reason: 'bit-3' - }, // ==== Propositions ==== - //all students - { - match: '#Verb #Adverb? #Noun [(that|which)]', - group: 0, - tag: 'Preposition', - reason: 'that-prep' - }, //work, which has been done. - { - match: '@hasComma [which] (#Pronoun|#Verb)', - group: 0, - tag: 'Preposition', - reason: 'which-copula' - }, { - match: '#Copula just [like]', - group: 0, - tag: 'Preposition', - reason: 'like-preposition' - }, //folks like her - { - match: '#Noun [like] #Noun', - group: 0, - tag: 'Preposition', - reason: 'noun-like' - }, //fix for busted-up phrasalVerbs - // { match: '#Noun [#Particle]', group: 0, tag: 'Preposition', reason: 'repair-noPhrasal' }, - // ==== Conditions ==== - // had he survived, - { - match: '[had] #Noun+ #PastTense', - group: 0, - tag: 'Condition', - reason: 'had-he' - }, // were he to survive - { - match: '[were] #Noun+ to #Infinitive', - group: 0, - tag: 'Condition', - reason: 'were-he' - }, // ==== Questions ==== - //the word 'how' - { - match: '^how', - tag: 'QuestionWord', - reason: 'how-question' - }, { - match: '[how] (#Determiner|#Copula|#Modal|#PastTense)', - group: 0, - tag: 'QuestionWord', - reason: 'how-is' - }, // //the word 'which' - { - match: '^which', - tag: 'QuestionWord', - reason: 'which-question' - }, // { match: '[which] . (#Noun)+ #Pronoun', group: 0, tag: 'QuestionWord', reason: 'which-question2' }, - // { match: 'which', tag: 'QuestionWord', reason: 'which-question3' }, - // ==== Conjunctions ==== - { - match: '[so] #Noun', - group: 0, - tag: 'Conjunction', - reason: 'so-conj' - }, //how he is driving - { - match: '[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)', - group: 0, - tag: 'Conjunction', - reason: 'how-he-is-x' - } // { - // match: '[(who|what|where|why|how|when)] #Noun #Adverb? #Infinitive not? #Gerund', - // group: 0, - // tag: 'Conjunction', - // reason: 'when-i-go-fishing', - // }, - ]; - var _01Misc = list$5; - var _ambig = { - // adverbs than can be adjectives - adverbAdjective: ['dark', 'bright', 'flat', 'light', 'soft', 'pale', 'dead', 'dim', 'faux', 'little', 'wee', 'sheer', 'most', 'near', 'good', 'extra', 'all'], - // names that are dates - personDate: ['april', 'june', 'may', 'jan', 'august', 'eve'], - // names that may be months - personMonth: ['january', 'april', 'may', 'june', 'jan', 'sep'], - // names that are adjectives - personAdjective: ['misty', 'rusty', 'dusty', 'rich', 'randy', 'young'], - // names that are verbs - personVerb: ['pat', 'wade', 'ollie', 'will', 'rob', 'buck', 'bob', 'mark', 'jack'], - // names that are verbs - personPlace: ['darwin', 'hamilton', 'paris', 'alexandria', 'houston', 'kobe', 'santiago', 'salvador', 'sydney', 'victoria'], - // names that are nouns - personNoun: ['art', 'baker', 'berg', 'bill', 'brown', 'charity', 'chin', 'christian', 'cliff', 'daisy', 'dawn', 'dick', 'dolly', 'faith', 'franco', 'gene', 'green', 'hall', 'hill', 'holly', 'hope', 'jean', 'jewel', 'joy', 'kelvin', 'king', 'kitty', 'lane', 'lily', 'melody', 'mercedes', 'miles', 'olive', 'penny', 'ray', 'reed', 'robin', 'rod', 'rose', 'sky', 'summer', 'trinity', 'van', 'viola', 'violet', 'wang', 'white'] - }; - var dates = "(".concat(_ambig.personDate.join('|'), ")"); - var list$4 = [// ==== Holiday ==== - { - match: '#Holiday (day|eve)', - tag: 'Holiday', - reason: 'holiday-day' - }, // the captain who - // ==== WeekDay ==== - // sun the 5th - { - match: '[sun] the #Ordinal', - tag: 'WeekDay', - reason: 'sun-the-5th' - }, //sun feb 2 - { - match: '[sun] #Date', - group: 0, - tag: 'WeekDay', - reason: 'sun-feb' - }, //1pm next sun - { - match: '#Date (on|this|next|last|during)? [sun]', - group: 0, - tag: 'WeekDay', - reason: '1pm-sun' - }, //this sat - { - match: "(in|by|before|during|on|until|after|of|within|all) [sat]", - group: 0, - tag: 'WeekDay', - reason: 'sat' - }, { - match: "(in|by|before|during|on|until|after|of|within|all) [wed]", - group: 0, - tag: 'WeekDay', - reason: 'wed' - }, { - match: "(in|by|before|during|on|until|after|of|within|all) [march]", - group: 0, - tag: 'Month', - reason: 'march' - }, //sat november - { - match: '[sat] #Date', - group: 0, - tag: 'WeekDay', - reason: 'sat-feb' - }, // ==== Month ==== - //all march - { - match: "#Preposition [(march|may)]", - group: 0, - tag: 'Month', - reason: 'in-month' - }, //this march - { - match: "this [(march|may)]", - group: 0, - tag: 'Month', - reason: 'this-month' - }, { - match: "next [(march|may)]", - group: 0, - tag: 'Month', - reason: 'this-month' - }, { - match: "last [(march|may)]", - group: 0, - tag: 'Month', - reason: 'this-month' - }, // march 5th - { - match: "[(march|may)] the? #Value", - group: 0, - tag: 'Month', - reason: 'march-5th' - }, // 5th of march - { - match: "#Value of? [(march|may)]", - group: 0, - tag: 'Month', - reason: '5th-of-march' - }, // march and feb - { - match: "[(march|may)] .? #Date", - group: 0, - tag: 'Month', - reason: 'march-and-feb' - }, // feb to march - { - match: "#Date .? [(march|may)]", - group: 0, - tag: 'Month', - reason: 'feb-and-march' - }, //quickly march - { - match: "#Adverb [(march|may)]", - group: 0, - tag: 'Verb', - reason: 'quickly-march' - }, //march quickly - { - match: "[(march|may)] #Adverb", - group: 0, - tag: 'Verb', - reason: 'march-quickly' - }, //5th of March - { - match: '#Value of #Month', - tag: 'Date', - reason: 'value-of-month' - }, //5 March - { - match: '#Cardinal #Month', - tag: 'Date', - reason: 'cardinal-month' - }, //march 5 to 7 - { - match: '#Month #Value to #Value', - tag: 'Date', - reason: 'value-to-value' - }, //march the 12th - { - match: '#Month the #Value', - tag: 'Date', - reason: 'month-the-value' - }, //june 7 - { - match: '(#WeekDay|#Month) #Value', - tag: 'Date', - reason: 'date-value' - }, //7 june - { - match: '#Value (#WeekDay|#Month)', - tag: 'Date', - reason: 'value-date' - }, //may twenty five - { - match: '(#TextValue && #Date) #TextValue', - tag: 'Date', - reason: 'textvalue-date' - }, // in june - { - match: "in [".concat(dates, "]"), - group: 0, - tag: 'Date', - reason: 'in-june' - }, { - match: "during [".concat(dates, "]"), - group: 0, - tag: 'Date', - reason: 'in-june' - }, { - match: "on [".concat(dates, "]"), - group: 0, - tag: 'Date', - reason: 'in-june' - }, { - match: "by [".concat(dates, "]"), - group: 0, - tag: 'Date', - reason: 'by-june' - }, { - match: "after [".concat(dates, "]"), - group: 0, - tag: 'Date', - reason: 'after-june' - }, { - match: "#Date [".concat(dates, "]"), - group: 0, - tag: 'Date', - reason: 'in-june' - }, // june 1992 - { - match: "".concat(dates, " #Value"), - tag: 'Date', - reason: 'june-5th' - }, { - match: "".concat(dates, " #Date"), - tag: 'Date', - reason: 'june-5th' - }, // June Smith - { - match: "".concat(dates, " #ProperNoun"), - tag: 'Person', - reason: 'june-smith', - safe: true - }, // june m. Cooper - { - match: "".concat(dates, " #Acronym? (#ProperNoun && !#Month)"), - tag: 'Person', - reason: 'june-smith-jr' - }, // 'second' - { - match: "#Cardinal [second]", - tag: 'Unit', - reason: 'one-second' - }, // second quarter - // { match: `#Ordinal quarter`, tag: 'Date', reason: 'second-quarter' }, - // 'aug 20-21' - { - match: "#Month #NumberRange", - tag: 'Date', - reason: 'aug 20-21' - }, // timezones - // china standard time - { - match: "(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time", - tag: 'Timezone', - reason: 'std-time' - }, // eastern time - { - match: "(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time", - tag: 'Timezone', - reason: 'eastern-time' - }, // 5pm central - { - match: "#Time [(eastern|mountain|pacific|central|est|pst|gmt)]", - group: 0, - tag: 'Timezone', - reason: '5pm-central' - }, // central european time - { - match: "(central|western|eastern) european time", - tag: 'Timezone', - reason: 'cet' - }]; - var _02Dates = list$4; - var adjectives$1 = "(".concat(_ambig.personAdjective.join('|'), ")"); - var list$3 = [// all fell apart - { - match: '[all] #Determiner? #Noun', - group: 0, - tag: 'Adjective', - reason: 'all-noun' - }, // very rusty - { - match: "#Adverb [".concat(adjectives$1, "]"), - group: 0, - tag: 'Adjective', - reason: 'really-rich' - }, // rusty smith - { - match: "".concat(adjectives$1, " #Person"), - tag: 'Person', - reason: 'randy-smith' - }, // rusty a. smith - { - match: "".concat(adjectives$1, " #Acronym? #ProperNoun"), - tag: 'Person', - reason: 'rusty-smith' - }, //sometimes not-adverbs - { - match: '#Copula [(just|alone)]$', - group: 0, - tag: 'Adjective', - reason: 'not-adverb' - }, //jack is guarded - { - match: '#Singular is #Adverb? [#PastTense$]', - group: 0, - tag: 'Adjective', - reason: 'is-filled' - }, // smoked poutine is - { - match: '[#PastTense] #Singular is', - group: 0, - tag: 'Adjective', - reason: 'smoked-poutine' - }, // baked onions are - { - match: '[#PastTense] #Plural are', - group: 0, - tag: 'Adjective', - reason: 'baked-onions' - }, // well made - { - match: 'well [#PastTense]', - group: 0, - tag: 'Adjective', - reason: 'well-made' - }, // is f*ed up - { - match: '#Copula [fucked up?]', - tag: 'Adjective', - reason: 'swears-adjective' - }, //jack seems guarded - { - match: '#Singular (seems|appears) #Adverb? [#PastTense$]', - group: 0, - tag: 'Adjective', - reason: 'seems-filled' - }, // Gerund-Adjectives - 'amusing, annoying' - //a staggering cost - { - match: '(a|an) [#Gerund]', - group: 0, - tag: 'Adjective', - reason: 'a|an' - }, //as amusing as - { - match: 'as [#Gerund] as', - group: 0, - tag: 'Adjective', - reason: 'as-gerund-as' - }, // more amusing than - { - match: 'more [#Gerund] than', - group: 0, - tag: 'Adjective', - reason: 'more-gerund-than' - }, // very amusing - { - match: '(so|very|extremely) [#Gerund]', - group: 0, - tag: 'Adjective', - reason: 'so-gerund' - }, // it was amusing - { - match: '(it|he|she|everything|something) #Adverb? was #Adverb? [#Gerund]', - group: 0, - tag: 'Adjective', - reason: 'it-was-gerund' - }, // found it amusing - { - match: '(found|found) it #Adverb? [#Gerund]', - group: 0, - tag: 'Adjective', - reason: 'found-it-gerund' - }, // a bit amusing - { - match: 'a (little|bit|wee) bit? [#Gerund]', - group: 0, - tag: 'Adjective', - reason: 'a-bit-gerund' - }, // jury is out - preposition ➔ adjective - { - match: '#Copula #Adjective? [(out|in|through)]$', - group: 0, - tag: 'Adjective', - reason: 'still-out' - }, // shut the door - { - match: '^[#Adjective] (the|your) #Noun', - group: 0, - tag: 'Infinitive', - reason: 'shut-the' - }]; - var _03Adjective = list$3; - var _04Noun = [// ==== Plural ==== - //there are reasons - { - match: 'there (are|were) #Adjective? [#PresentTense]', - group: 0, - tag: 'Plural', - reason: 'there-are' - }, // ==== Singular ==== - //the sun - { - match: '#Determiner [sun]', - group: 0, - tag: 'Singular', - reason: 'the-sun' - }, //did a 900, paid a 20 - { - match: '#Verb (a|an) [#Value]', - group: 0, - tag: 'Singular', - reason: 'did-a-value' - }, //'the can' - { - match: 'the [(can|will|may)]', - group: 0, - tag: 'Singular', - reason: 'the can' - }, // ==== Possessive ==== - //spencer kelly's - { - match: '#FirstName #Acronym? (#Possessive && #LastName)', - tag: 'Possessive', - reason: 'name-poss' - }, //Super Corp's fundraiser - { - match: '#Organization+ #Possessive', - tag: 'Possessive', - reason: 'org-possessive' - }, //Los Angeles's fundraiser - { - match: '#Place+ #Possessive', - tag: 'Possessive', - reason: 'place-possessive' - }, // assign all tasks - { - match: '(#Verb && !#Modal) (all|every|each|most|some|no) [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'all-presentTense' - }, //the above is clear - { - match: '#Determiner [#Adjective] #Copula', - group: 0, - tag: 'Noun', - reason: 'the-adj-is' - }, //real evil is - { - match: '#Adjective [#Adjective] #Copula', - group: 0, - tag: 'Noun', - reason: 'adj-adj-is' - }, // PresentTense/Noun ambiguities - // big dreams, critical thinking - // have big dreams - { - match: '(had|have|#PastTense) #Adjective [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'adj-presentTense' - }, // excellent answer spencer - { - match: '^#Adjective [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'start adj-presentTense' - }, // one big reason - { - match: '#Value #Adjective [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'one-big-reason' - }, // won widespread support - { - match: '#PastTense #Adjective+ [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'won-wide-support' - }, // many poses - { - match: '(many|few|several|couple) [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'many-poses' - }, // very big dreams - { - match: '#Adverb #Adjective [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'very-big-dream' - }, // good wait staff - { - match: '#Adjective [#Infinitive] #Noun', - group: 0, - tag: 'Noun', - reason: 'good-wait-staff' - }, // adorable little store - { - match: '#Adjective #Adjective [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'adorable-little-store' - }, // of basic training - { - match: '#Preposition #Adjective [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'of-basic-training' - }, // early warning - { - match: '#Adjective [#Gerund]', - group: 0, - tag: 'Noun', - reason: 'early-warning' - }, // justifiying higher costs - { - match: '#Gerund #Adverb? #Comparative [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'higher-costs' - }, // do the dance - { - match: '#Infinitive (this|that|the) [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'do-this-dance' - }, //his fine - { - match: '(his|her|its) [#Adjective]', - group: 0, - tag: 'Noun', - reason: 'his-fine' - }, //some pressing issues - { - match: 'some [#Verb] #Plural', - group: 0, - tag: 'Noun', - reason: 'determiner6' - }, //'more' is not always an adverb - { - match: 'more #Noun', - tag: 'Noun', - reason: 'more-noun' - }, { - match: '(#Noun && @hasComma) #Noun (and|or) [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'noun-list' - }, //3 feet - { - match: '(right|rights) of .', - tag: 'Noun', - reason: 'right-of' - }, // a bit - { - match: 'a [bit]', - group: 0, - tag: 'Noun', - reason: 'bit-2' - }, // my first thought - { - match: '#Possessive #Ordinal [#PastTense]', - group: 0, - tag: 'Noun', - reason: 'first-thought' - }, //running-a-show - { - match: '#Gerund #Determiner [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'running-a-show' - }, //the-only-reason - { - match: '#Determiner #Adverb [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'the-reason' - }, //the nice swim - { - match: '(the|this|those|these) #Adjective [#Verb]', - group: 0, - tag: 'Noun', - reason: 'the-adj-verb' - }, // the truly nice swim - { - match: '(the|this|those|these) #Adverb #Adjective [#Verb]', - group: 0, - tag: 'Noun', - reason: 'determiner4' - }, //the orange is - { - match: '#Determiner [#Adjective] (#Copula|#PastTense|#Auxiliary)', - group: 0, - tag: 'Noun', - reason: 'the-adj-2' - }, // a stream runs - { - match: '(the|this|a|an) [#Infinitive] #Adverb? #Verb', - group: 0, - tag: 'Noun', - reason: 'determiner5' - }, //the test string - { - match: '#Determiner [#Infinitive] #Noun', - group: 0, - tag: 'Noun', - reason: 'determiner7' - }, //a nice deal - { - match: '#Determiner #Adjective #Adjective? [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'a-nice-inf' - }, //the wait to vote - { - match: 'the [#Verb] #Preposition .', - group: 0, - tag: 'Noun', - reason: 'determiner1' - }, //a sense of - { - match: '#Determiner [#Verb] of', - group: 0, - tag: 'Noun', - reason: 'the-verb-of' - }, //next career move - { - match: '#Adjective #Noun+ [#Infinitive] #Copula', - group: 0, - tag: 'Noun', - reason: 'career-move' - }, //the threat of force - { - match: '#Determiner #Noun of [#Verb]', - group: 0, - tag: 'Noun', - reason: 'noun-of-noun' - }, //the western line - { - match: '#Determiner [(western|eastern|northern|southern|central)] #Noun', - group: 0, - tag: 'Noun', - reason: 'western-line' - }, //her polling - { - match: '#Possessive [#Gerund]', - group: 0, - tag: 'Noun', - reason: 'her-polling' - }, //her fines - { - match: '(his|her|its) [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'its-polling' - }, //linear algebra - { - match: '(#Determiner|#Value) [(linear|binary|mobile|lexical|technical|computer|scientific|formal)] #Noun', - group: 0, - tag: 'Noun', - reason: 'technical-noun' - }, // a blown motor - { - match: '(the|those|these|a|an) [#Participle] #Noun', - group: 0, - tag: 'Adjective', - reason: 'blown-motor' - }, // walk the walk - { - match: '(the|those|these|a|an) #Adjective? [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'det-inf' - }, { - match: '(the|those|these|a|an) #Adjective? [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'det-pres' - }, { - match: '(the|those|these|a|an) #Adjective? [#PastTense]', - group: 0, - tag: 'Noun', - reason: 'det-past' - }, // this swimming - { - match: '(this|that) [#Gerund]', - group: 0, - tag: 'Noun', - reason: 'this-gerund' - }, // at some point - { - match: 'at some [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'at-some-inf' - }, //air-flow - { - match: '(#Noun && @hasHyphen) #Verb', - tag: 'Noun', - reason: 'hyphen-verb' - }, //is no walk - { - match: 'is no [#Verb]', - group: 0, - tag: 'Noun', - reason: 'is-no-verb' - }, //different views than - { - match: '[#Verb] than', - group: 0, - tag: 'Noun', - reason: 'correction' - }, // goes to sleep - { - match: '(go|goes|went) to [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'goes-to-verb' - }, //a close watch on - { - match: '(a|an) #Noun [#Infinitive] (#Preposition|#Noun)', - group: 0, - tag: 'Noun', - reason: 'a-noun-inf' - }, //a tv show - { - match: '(a|an) #Noun [#Infinitive]$', - group: 0, - tag: 'Noun', - reason: 'a-noun-inf2' - }, //do so - { - match: 'do [so]', - group: 0, - tag: 'Noun', - reason: 'so-noun' - }, //is mark hughes - { - match: '#Copula [#Infinitive] #Noun', - group: 0, - tag: 'Noun', - reason: 'is-pres-noun' - }, //a close - { - match: '#Determiner #Adverb? [close]', - group: 0, - tag: 'Adjective', - reason: 'a-close' - }, // what the hell - { - match: '#Determiner [(shit|damn|hell)]', - group: 0, - tag: 'Noun', - reason: 'swears-noun' - }, // the staff were - { - match: '(the|these) [#Singular] (were|are)', - group: 0, - tag: 'Plural', - reason: 'singular-were' - }, // running for congress - { - match: '#Gerund #Adjective? for [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'running-for' - }, // running to work - { - match: '#Gerund #Adjective to [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'running-to' - }, // any questions for - { - match: '(many|any|some|several) [#PresentTense] for', - group: 0, - tag: 'Noun', - reason: 'any-verbs-for' - }, // have fun - { - match: "(have|had) [#Adjective] #Preposition .", - group: 0, - tag: 'Noun', - reason: 'have-fun' - }, // co-founder - { - match: "co #Noun", - tag: 'Actor', - reason: 'co-noun' - }]; - var adjectives = "(".concat(_ambig.adverbAdjective.join('|'), ")"); - var _05Adverb = [//still good - { - match: '[still] #Adjective', - group: 0, - tag: 'Adverb', - reason: 'still-advb' - }, //still make - { - match: '[still] #Verb', - group: 0, - tag: 'Adverb', - reason: 'still-verb' - }, // so hot - { - match: '[so] #Adjective', - group: 0, - tag: 'Adverb', - reason: 'so-adv' - }, // way hotter - { - match: '[way] #Comparative', - group: 0, - tag: 'Adverb', - reason: 'way-adj' - }, // way too hot - { - match: '[way] #Adverb #Adjective', - group: 0, - tag: 'Adverb', - reason: 'way-too-adj' - }, // all singing - { - match: '[all] #Verb', - group: 0, - tag: 'Adverb', - reason: 'all-verb' - }, // sing like an angel - { - match: '(#Verb && !#Modal) [like]', - group: 0, - tag: 'Adverb', - reason: 'verb-like' - }, //barely even walk - { - match: '(barely|hardly) even', - tag: 'Adverb', - reason: 'barely-even' - }, //even held - { - match: '[even] #Verb', - group: 0, - tag: 'Adverb', - reason: 'even-walk' - }, // even left - { - match: 'even left', - tag: '#Adverb #Verb', - reason: 'even-left' - }, //cheering hard - dropped -ly's - { - match: '(#PresentTense && !#Copula) [(hard|quick|long|bright|slow|fast|backwards|forwards)]', - group: 0, - tag: 'Adverb', - reason: 'lazy-ly' - }, // much appreciated - { - match: '[much] #Adjective', - group: 0, - tag: 'Adverb', - reason: 'bit-1' - }, // is well - { - match: '#Copula [#Adverb]$', - group: 0, - tag: 'Adjective', - reason: 'is-well' - }, // a bit cold - { - match: 'a [(little|bit|wee) bit?] #Adjective', - group: 0, - tag: 'Adverb', - reason: 'a-bit-cold' - }, // dark green - { - match: "[".concat(adjectives, "] #Adjective"), - group: 0, - tag: 'Adverb', - reason: 'dark-green' - }, // kinda sparkly - { - match: "#Adverb [#Adverb]$", - group: 0, - tag: 'Adjective', - reason: 'kinda-sparkly' - }, { - match: "#Adverb [#Adverb] (and|or|then)", - group: 0, - tag: 'Adjective', - reason: 'kinda-sparkly-and' - }]; - var _06Value = [// ==== PhoneNumber ==== - //1 800 ... - { - match: '1 #Value #PhoneNumber', - tag: 'PhoneNumber', - reason: '1-800-Value' - }, //(454) 232-9873 - { - match: '#NumericValue #PhoneNumber', - tag: 'PhoneNumber', - reason: '(800) PhoneNumber' - }, // ==== Currency ==== - // chinese yuan - { - match: '#Demonym #Currency', - tag: 'Currency', - reason: 'demonym-currency' - }, // ==== Ordinal ==== - { - match: '[second] #Noun', - group: 0, - tag: 'Ordinal', - reason: 'second-noun' - }, // ==== Unit ==== - //5 yan - { - match: '#Value+ [#Currency]', - group: 0, - tag: 'Unit', - reason: '5-yan' - }, { - match: '#Value [(foot|feet)]', - group: 0, - tag: 'Unit', - reason: 'foot-unit' - }, //minus 7 - { - match: '(minus|negative) #Value', - tag: 'Value', - reason: 'minus-value' - }, //5 kg. - { - match: '#Value [#Abbreviation]', - group: 0, - tag: 'Unit', - reason: 'value-abbr' - }, { - match: '#Value [k]', - group: 0, - tag: 'Unit', - reason: 'value-k' - }, { - match: '#Unit an hour', - tag: 'Unit', - reason: 'unit-an-hour' - }, //seven point five - { - match: '#Value (point|decimal) #Value', - tag: 'Value', - reason: 'value-point-value' - }, // ten bucks - { - match: '(#Value|a) [(buck|bucks|grand)]', - group: 0, - tag: 'Currency', - reason: 'value-bucks' - }, //quarter million - { - match: '#Determiner [(half|quarter)] #Ordinal', - group: 0, - tag: 'Value', - reason: 'half-ordinal' - }, { - match: 'a #Value', - tag: 'Value', - reason: 'a-value' - }, // ==== Money ==== - { - match: '[#Value+] #Currency', - group: 0, - tag: 'Money', - reason: '15 usd' - }, // thousand and two - { - match: "(hundred|thousand|million|billion|trillion|quadrillion)+ and #Value", - tag: 'Value', - reason: 'magnitude-and-value' - }, //'a/an' can mean 1 - "a hour" - { - match: '!once [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)', - group: 0, - tag: 'Value', - reason: 'a-is-one' - }]; - var verbs = "(".concat(_ambig.personVerb.join('|'), ")"); - var list$2 = [// adj -> gerund - // amusing his aunt - { - match: '[#Adjective] #Possessive #Noun', - group: 0, - tag: 'Verb', - reason: 'gerund-his-noun' - }, // loving you - { - match: '[#Adjective] (us|you)', - group: 0, - tag: 'Gerund', - reason: 'loving-you' - }, // slowly stunning - { - match: '(slowly|quickly) [#Adjective]', - group: 0, - tag: 'Gerund', - reason: 'slowly-adj' - }, // like - { - match: '(#Modal|i|they|we|do) not? [like]', - group: 0, - tag: 'PresentTense', - reason: 'modal-like' - }, // do not simply like - { - match: 'do (simply|just|really|not)+ [(#Adjective|like)]', - group: 0, - tag: 'Verb', - reason: 'do-simply-like' - }, // does mean - { - match: 'does (#Adverb|not)? [#Adjective]', - group: 0, - tag: 'PresentTense', - reason: 'does-mean' - }, // i mean - { - match: 'i (#Adverb|do)? not? [mean]', - group: 0, - tag: 'PresentTense', - reason: 'i-mean' - }, // { match: '!are (i|you|we) (#Adverb|do)? [#Adjective]', group: 0, tag: 'PresentTense', reason: 'i-mean' }, - // ==== Tense ==== - //he left - { - match: '#Noun #Adverb? [left]', - group: 0, - tag: 'PastTense', - reason: 'left-verb' - }, //this rocks - { - match: '(this|that) [#Plural]', - group: 0, - tag: 'PresentTense', - reason: 'this-verbs' - }, // ==== Auxiliary ==== - //was walking - { - match: "[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)", - group: 0, - tag: 'Auxiliary', - reason: 'copula-walking' - }, //support a splattering of auxillaries before a verb - { - match: "[(has|had) (#Adverb|not)+?] #PastTense", - group: 0, - tag: 'Auxiliary', - reason: 'had-walked' - }, //would walk - { - match: "[#Adverb+? (#Modal|did)+ (#Adverb|not)+?] #Verb", - group: 0, - tag: 'Auxiliary', - reason: 'modal-verb' - }, //would have had - { - match: "[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb", - group: 0, - tag: 'Auxiliary', - reason: 'would-have' - }, //would be walking - // { match: `#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'would-be' }, - //had been walking - // { - // match: `(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb`, - // group: 0, - // tag: 'Auxiliary', - // reason: 'had-been', - // }, - //support a splattering of auxillaries before a verb - { - match: "[(has|had) (#Adverb|not)+?] #PastTense", - group: 0, - tag: 'Auxiliary', - reason: 'had-walked' - }, // will walk - { - match: '[(do|does|will|have|had)] (not|#Adverb)? #Verb', - group: 0, - tag: 'Auxiliary', - reason: 'have-had' - }, // about to go - { - match: '[about to] #Adverb? #Verb', - group: 0, - tag: ['Auxiliary', 'Verb'], - reason: 'about-to' - }, //would be walking - { - match: "#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb", - group: 0, - tag: 'Auxiliary', - reason: 'would-be' - }, //were being run - { - match: "(were|was) being [#PresentTense]", - group: 0, - tag: 'PastTense', - reason: 'was-being' - }, //have run - // { match: `have #PresentTense`, group: 0, tag: 'PastTense', reason: 'have-vb' }, - //would have had - { - match: "[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb", - group: 0, - tag: 'Auxiliary', - reason: 'would-have' - }, //had been walking - { - match: "(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb", - group: 0, - tag: 'Auxiliary', - reason: 'had-been' - }, // was being driven - { - match: '[(be|being|been)] #Participle', - group: 0, - tag: 'Auxiliary', - reason: 'being-foo' - }, // ==== Phrasal ==== - //'foo-up' - { - match: '(#Verb && @hasHyphen) up', - tag: 'PhrasalVerb', - reason: 'foo-up' - }, { - match: '(#Verb && @hasHyphen) off', - tag: 'PhrasalVerb', - reason: 'foo-off' - }, { - match: '(#Verb && @hasHyphen) over', - tag: 'PhrasalVerb', - reason: 'foo-over' - }, { - match: '(#Verb && @hasHyphen) out', - tag: 'PhrasalVerb', - reason: 'foo-out' - }, //fall over - { - match: '#PhrasalVerb [#PhrasalVerb]', - group: 0, - tag: 'Particle', - reason: 'phrasal-particle' - }, //back it up - { - match: '#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]', - group: 0, - tag: 'Adverb', - reason: 'phrasal-pronoun-advb' - }, // ==== Copula ==== - //will be running (not copula) - { - match: '[will #Adverb? not? #Adverb? be] #Gerund', - group: 0, - tag: 'Copula', - reason: 'will-be-copula' - }, //for more complex forms, just tag 'be' - { - match: 'will #Adverb? not? #Adverb? [be] #Adjective', - group: 0, - tag: 'Copula', - reason: 'be-copula' - }, // ==== Infinitive ==== - //march to - { - match: '[march] (up|down|back|to|toward)', - group: 0, - tag: 'Infinitive', - reason: 'march-to' - }, //must march - { - match: '#Modal [march]', - group: 0, - tag: 'Infinitive', - reason: 'must-march' - }, //let him glue - { - match: '(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)', - group: 0, - tag: 'Infinitive', - reason: 'let-him-glue' - }, //he quickly foo - // { match: '#Noun #Adverb [#Noun]', group: 0, tag: 'Verb', reason: 'quickly-foo' }, - //will secure our - { - match: 'will [#Adjective]', - group: 0, - tag: 'Verb', - reason: 'will-adj' - }, //he disguised the thing - { - match: '#Pronoun [#Adjective] #Determiner #Adjective? #Noun', - group: 0, - tag: 'Verb', - reason: 'he-adj-the' - }, //is eager to go - { - match: '#Copula [#Adjective to] #Verb', - group: 0, - tag: 'Verb', - reason: 'adj-to' - }, // open the door - { - match: '[open] #Determiner', - group: 0, - tag: 'Infinitive', - reason: 'open-the' - }, // compromises are possible - { - match: '[#PresentTense] (are|were|was) #Adjective', - group: 0, - tag: 'Plural', - reason: 'compromises-are-possible' - }, // would wade - { - match: "#Modal [".concat(verbs, "]"), - group: 0, - tag: 'Verb', - reason: 'would-mark' - }, { - match: "#Adverb [".concat(verbs, "]"), - group: 0, - tag: 'Verb', - reason: 'really-mark' - }, //to mark - { - match: '(to|#Modal) [mark]', - group: 0, - tag: 'PresentTense', - reason: 'to-mark' - }, // wade smith - { - match: "".concat(verbs, " #Person"), - tag: 'Person', - reason: 'rob-smith' - }, // wade m. Cooper - { - match: "".concat(verbs, " #Acronym #ProperNoun"), - tag: 'Person', - reason: 'rob-a-smith' - }, // damn them - { - match: '[shit] (#Determiner|#Possessive|them)', - group: 0, - tag: 'Verb', - reason: 'swear1-verb' - }, { - match: '[damn] (#Determiner|#Possessive|them)', - group: 0, - tag: 'Verb', - reason: 'swear2-verb' - }, { - match: '[fuck] (#Determiner|#Possessive|them)', - group: 0, - tag: 'Verb', - reason: 'swear3-verb' - }]; - var _07Verbs = list$2; - var list$1 = [// ==== Region ==== - //West Norforlk - { - match: '(west|north|south|east|western|northern|southern|eastern)+ #Place', - tag: 'Region', - reason: 'west-norfolk' - }, //some us-state acronyms (exlude: al, in, la, mo, hi, me, md, ok..) - { - match: '#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]', - group: 0, - tag: 'Region', - reason: 'us-state' - }, // portland oregon - { - match: 'portland [or]', - group: 0, - tag: 'Region', - reason: 'portland-or' - }, //Foo District - { - match: '#ProperNoun+ (district|region|province|county|prefecture|municipality|territory|burough|reservation)', - tag: 'Region', - reason: 'foo-district' - }, //District of Foo - { - match: '(district|region|province|municipality|territory|burough|state) of #ProperNoun', - tag: 'Region', - reason: 'district-of-Foo' - }, // in Foo California - { - match: 'in [#ProperNoun] #Place', - group: 0, - tag: 'Place', - reason: 'propernoun-place' - }, // ==== Address ==== - { - match: '#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)', - tag: 'Address', - reason: 'address-st' - } // in houston - // { match: `in [${places}]`, group: 0, tag: 'Place', reason: 'in-paris' }, - // { match: `near [${places}]`, group: 0, tag: 'Place', reason: 'near-paris' }, - // { match: `at [${places}]`, group: 0, tag: 'Place', reason: 'at-paris' }, - // { match: `from [${places}]`, group: 0, tag: 'Place', reason: 'from-paris' }, - // { match: `to [${places}]`, group: 0, tag: 'Place', reason: 'to-paris' }, - // { match: `#Place [${places}]`, group: 0, tag: 'Place', reason: 'tokyo-paris' }, - // // houston texas - // { match: `[${places}] #Place`, group: 0, tag: 'Place', reason: 'paris-france' }, - ]; - var _08Place = list$1; - var _09Org = [//John & Joe's - { - match: '#Noun (&|n) #Noun', - tag: 'Organization', - reason: 'Noun-&-Noun' - }, // teachers union of Ontario - { - match: '#Organization of the? #ProperNoun', - tag: 'Organization', - reason: 'org-of-place', - safe: true - }, //walmart USA - { - match: '#Organization #Country', - tag: 'Organization', - reason: 'org-country' - }, //organization - { - match: '#ProperNoun #Organization', - tag: 'Organization', - reason: 'titlecase-org' - }, //FitBit Inc - { - match: '#ProperNoun (ltd|co|inc|dept|assn|bros)', - tag: 'Organization', - reason: 'org-abbrv' - }, // the OCED - { - match: 'the [#Acronym]', - group: 0, - tag: 'Organization', - reason: 'the-acronym', - safe: true - }, // global trade union - { - match: '(world|global|international|national|#Demonym) #Organization', - tag: 'Organization', - reason: 'global-org' - }, // schools - { - match: '#Noun+ (public|private) school', - tag: 'School', - reason: 'noun-public-school' - }]; - var nouns = "(".concat(_ambig.personNoun.join('|'), ")"); - var months = "(".concat(_ambig.personMonth.join('|'), ")"); - var places = "(".concat(_ambig.personPlace.join('|'), ")"); - var list = [// ==== Honorific ==== - { - match: '[(1st|2nd|first|second)] #Honorific', - group: 0, - tag: 'Honorific', - reason: 'ordinal-honorific' - }, { - match: '[(private|general|major|corporal|lord|lady|secretary|premier)] #Honorific? #Person', - group: 0, - tag: 'Honorific', - reason: 'ambg-honorifics' - }, // ==== FirstNames ==== - //is foo Smith - { - match: '#Copula [(#Noun|#PresentTense)] #LastName', - group: 0, - tag: 'FirstName', - reason: 'copula-noun-lastname' - }, //pope francis - { - match: '(lady|queen|sister) #ProperNoun', - tag: 'FemaleName', - reason: 'lady-titlecase', - safe: true - }, { - match: '(king|pope|father) #ProperNoun', - tag: 'MaleName', - reason: 'pope-titlecase', - safe: true - }, //ambiguous-but-common firstnames - { - match: '[(will|may|april|june|said|rob|wade|ray|rusty|drew|miles|jack|chuck|randy|jan|pat|cliff|bill)] #LastName', - group: 0, - tag: 'FirstName', - reason: 'maybe-lastname' - }, // ==== Nickname ==== - // Dwayne 'the rock' Johnson - { - match: '#FirstName [#Determiner #Noun] #LastName', - group: 0, - tag: 'NickName', - reason: 'first-noun-last' - }, //my buddy - { - match: '#Possessive [#FirstName]', - group: 0, - tag: 'Person', - reason: 'possessive-name' - }, { - match: '#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun', - tag: 'Person', - reason: 'titlecase-acronym-titlecase', - safe: true - }, //ludwig van beethovan - { - match: '#Acronym #LastName', - tag: 'Person', - reason: 'acronym-latname', - safe: true - }, //jk rowling - { - match: '#Person (jr|sr|md)', - tag: 'Person', - reason: 'person-honorific' - }, //peter II - { - match: '#Person #Person the? #RomanNumeral', - tag: 'Person', - reason: 'roman-numeral' - }, //'Professor Fink', 'General McCarthy' - { - match: '#FirstName [/^[^aiurck]$/]', - group: 0, - tag: ['Acronym', 'Person'], - reason: 'john-e' - }, //Doctor john smith jr - //general pearson - { - match: '#Honorific #Person', - tag: 'Person', - reason: 'honorific-person' - }, //remove single 'mr' - { - match: '#Honorific #Acronym', - tag: 'Person', - reason: 'Honorific-TitleCase' - }, //j.k Rowling - { - match: '#Noun van der? #Noun', - tag: 'Person', - reason: 'van der noun', - safe: true - }, //king of spain - { - match: '(king|queen|prince|saint|lady) of #Noun', - tag: 'Person', - reason: 'king-of-noun', - safe: true - }, //lady Florence - { - match: '(prince|lady) #Place', - tag: 'Person', - reason: 'lady-place' - }, //saint Foo - { - match: '(king|queen|prince|saint) #ProperNoun', - tag: 'Person', - reason: 'saint-foo' - }, //Foo U Ford - { - match: '[#ProperNoun] #Person', - group: 0, - tag: 'Person', - reason: 'proper-person', - safe: true - }, // al sharpton - { - match: 'al (#Person|#ProperNoun)', - tag: 'Person', - reason: 'al-borlen', - safe: true - }, //ferdinand de almar - { - match: '#FirstName de #Noun', - tag: 'Person', - reason: 'bill-de-noun' - }, //Osama bin Laden - { - match: '#FirstName (bin|al) #Noun', - tag: 'Person', - reason: 'bill-al-noun' - }, //John L. Foo - { - match: '#FirstName #Acronym #ProperNoun', - tag: 'Person', - reason: 'bill-acronym-title' - }, //Andrew Lloyd Webber - { - match: '#FirstName #FirstName #ProperNoun', - tag: 'Person', - reason: 'bill-firstname-title' - }, //Mr Foo - { - match: '#Honorific #FirstName? #ProperNoun', - tag: 'Person', - reason: 'dr-john-Title' - }, //peter the great - { - match: '#FirstName the #Adjective', - tag: 'Person', - reason: 'name-the-great' - }, //very common-but-ambiguous lastnames - { - match: '#FirstName (green|white|brown|hall|young|king|hill|cook|gray|price)', - tag: 'Person', - reason: 'bill-green' - }, // faith smith - { - match: "".concat(nouns, " #Person"), - tag: 'Person', - reason: 'ray-smith', - safe: true - }, // faith m. Smith - { - match: "".concat(nouns, " #Acronym? #ProperNoun"), - tag: 'Person', - reason: 'ray-a-smith', - safe: true - }, //give to april - { - match: "#Infinitive #Determiner? #Adjective? #Noun? (to|for) [".concat(months, "]"), - group: 0, - tag: 'Person', - reason: 'ambig-person' - }, // remind june - { - match: "#Infinitive [".concat(months, "]"), - group: 0, - tag: 'Person', - reason: 'infinitive-person' - }, // may waits for - // { match: `[${months}] #PresentTense for`, group: 0, tag: 'Person', reason: 'ambig-active-for' }, - // may waits to - // { match: `[${months}] #PresentTense to`, group: 0, tag: 'Person', reason: 'ambig-active-to' }, - // april will - { - match: "[".concat(months, "] #Modal"), - group: 0, - tag: 'Person', - reason: 'ambig-modal' - }, // may be - { - match: "[may] be", - group: 0, - tag: 'Verb', - reason: 'may-be' - }, // would april - { - match: "#Modal [".concat(months, "]"), - group: 0, - tag: 'Person', - reason: 'modal-ambig' - }, // it is may - { - match: "#Copula [".concat(months, "]"), - group: 0, - tag: 'Person', - reason: 'is-may' - }, // may is - { - match: "[".concat(months, "] #Copula"), - group: 0, - tag: 'Person', - reason: 'may-is' - }, // with april - { - match: "that [".concat(months, "]"), - group: 0, - tag: 'Person', - reason: 'that-month' - }, // with april - { - match: "with [".concat(months, "]"), - group: 0, - tag: 'Person', - reason: 'with-month' - }, // for april - { - match: "for [".concat(months, "]"), - group: 0, - tag: 'Person', - reason: 'for-month' - }, // this april - { - match: "this [".concat(months, "]"), - group: 0, - tag: 'Month', - reason: 'this-may' - }, //maybe not 'this' - // next april - { - match: "next [".concat(months, "]"), - group: 0, - tag: 'Month', - reason: 'next-may' - }, // last april - { - match: "last [".concat(months, "]"), - group: 0, - tag: 'Month', - reason: 'last-may' - }, // wednesday april - { - match: "#Date [".concat(months, "]"), - group: 0, - tag: 'Month', - reason: 'date-may' - }, // may 5th - { - match: "[".concat(months, "] the? #Value"), - group: 0, - tag: 'Month', - reason: 'may-5th' - }, // 5th of may - { - match: "#Value of [".concat(months, "]"), - group: 0, - tag: 'Month', - reason: '5th-of-may' - }, // dick van dyke - { - match: '#ProperNoun (van|al|bin) #ProperNoun', - tag: 'Person', - reason: 'title-van-title', - safe: true - }, //jose de Sucre - { - match: '#ProperNoun (de|du) la? #ProperNoun', - tag: 'Person', - reason: 'title-de-title', - safe: true - }, //Jani K. Smith - { - match: '#Singular #Acronym #LastName', - tag: '#Person', - reason: 'title-acro-noun', - safe: true - }, //John Foo - { - match: '#FirstName (#Noun && #ProperNoun) #ProperNoun?', - tag: 'Person', - reason: 'firstname-titlecase' - }, //Joe K. Sombrero - { - match: '#FirstName #Acronym #Noun', - tag: 'Person', - reason: 'n-acro-noun', - safe: true - }, //Anthony de Marco - { - match: '#FirstName [(de|di|du|van|von) #Person]', - group: 0, - tag: 'LastName', - reason: 'de-firstname' - }, // Paris Berelc - { - match: "[".concat(places, "] (#ProperNoun && !#Place)"), - group: 0, - tag: 'FirstName', - reason: 'place-firstname' - }]; - var _10People = list; - var matches = []; - matches = matches.concat(_01Misc); - matches = matches.concat(_02Dates); - matches = matches.concat(_03Adjective); - matches = matches.concat(_04Noun); - matches = matches.concat(_05Adverb); - matches = matches.concat(_06Value); - matches = matches.concat(_07Verbs); - matches = matches.concat(_08Place); - matches = matches.concat(_09Org); - matches = matches.concat(_10People); // cache the easier conditions up-front - - var cacheRequired = function cacheRequired(reg) { - var needTags = []; - var needWords = []; - reg.forEach(function (obj) { - if (obj.optional === true || obj.negative === true) { - return; - } - - if (obj.tag !== undefined) { - needTags.push(obj.tag); - } - - if (obj.word !== undefined) { - needWords.push(obj.word); - } - }); - return { - tags: _unique(needTags), - words: _unique(needWords) - }; - }; // for speed, enumerate (a|b|c) to three matches - - - var allLists = function allLists(m) { - var more = []; - var lists = m.reg.filter(function (r) { - return r.fastOr !== undefined; - }); - - if (lists.length === 1) { - var i = m.reg.findIndex(function (r) { - return r.fastOr !== undefined; - }); - Object.keys(m.reg[i].fastOr).forEach(function (w) { - var newM = Object.assign({}, m); - newM.reg = newM.reg.slice(0); - newM.reg[i] = Object.assign({}, newM.reg[i]); - newM.reg[i].word = w; - delete newM.reg[i].operator; - delete newM.reg[i].fastOr; // newM.reason += '-' + w - - more.push(newM); - }); - } - - return more; - }; // parse them - - - var all = []; - matches.forEach(function (m) { - m.reg = matchSyntax(m.match); - var enumerated = allLists(m); - - if (enumerated.length > 0) { - all = all.concat(enumerated); - } else { - all.push(m); // console.log(m) - } - }); - all.forEach(function (m) { - m.required = cacheRequired(m.reg); - return m; - }); // console.log(all.length) - // console.log(all[all.length - 1]) - - var matches_1 = all; - - var hasEvery = function hasEvery(chances) { - if (chances.length === 0) { - return []; - } - - var obj = {}; - chances.forEach(function (arr) { - arr = _unique(arr); - - for (var i = 0; i < arr.length; i++) { - obj[arr[i]] = obj[arr[i]] || 0; - obj[arr[i]] += 1; - } - }); - var res = Object.keys(obj); - res = res.filter(function (k) { - return obj[k] === chances.length; - }); - res = res.map(function (num) { - return Number(num); - }); - return res; - }; - - var runner = function runner(doc) { - //find phrases to try for each match - matches_1.forEach(function (m) { - var allChances = []; - m.required.words.forEach(function (w) { - allChances.push(doc._cache.words[w] || []); - }); - m.required.tags.forEach(function (tag) { - allChances.push(doc._cache.tags[tag] || []); - }); - var worthIt = hasEvery(allChances); - - if (worthIt.length === 0) { - return; - } - - var phrases = worthIt.map(function (index) { - return doc.list[index]; - }); - var tryDoc = doc.buildFrom(phrases); // phrases getting tagged - - var match = tryDoc.match(m.reg, m.group); - - if (match.found) { - if (m.safe === true) { - match.tagSafe(m.tag, m.reason); - } else { - match.tag(m.tag, m.reason); - } - } - }); - }; - - var runner_1 = runner; // console.log(hasEvery([[1, 2, 2, 3], [2, 3], []])) - // misc: 40ms - //sequence of match-tag statements to correct mis-tags - - var corrections = function corrections(doc) { - runner_1(doc); - fixMisc(doc); - return doc; - }; - - var _04Correction = corrections; - /** POS-tag all terms in this document */ - - var tagger = function tagger(doc) { - var terms = doc.termList(); // check against any known-words - - doc = _01Init(doc, terms); // everything has gotta be something. ¯\_(:/)_/¯ - - doc = _02Fallbacks(doc, terms); // support "didn't" & "spencer's" - - doc = _03Contractions(doc); //set our cache, to speed things up - - doc.cache(); // wiggle-around the results, so they make more sense - - doc = _04Correction(doc); // remove our cache, as it's invalidated now - - doc.uncache(); // run any user-given tagger functions - - doc.world.taggers.forEach(function (fn) { - fn(doc); - }); - return doc; - }; - - var _02Tagger = tagger; - - var addMethod$a = function addMethod(Doc) { - /** */ - var Abbreviations = /*#__PURE__*/function (_Doc) { - _inherits(Abbreviations, _Doc); - - var _super = _createSuper(Abbreviations); - - function Abbreviations() { - _classCallCheck(this, Abbreviations); - - return _super.apply(this, arguments); - } - - _createClass(Abbreviations, [{ - key: "stripPeriods", - value: function stripPeriods() { - this.termList().forEach(function (t) { - if (t.tags.Abbreviation === true && t.next) { - t.post = t.post.replace(/^\./, ''); - } - - var str = t.text.replace(/\./, ''); - t.set(str); - }); - return this; - } - }, { - key: "addPeriods", - value: function addPeriods() { - this.termList().forEach(function (t) { - t.post = t.post.replace(/^\./, ''); - t.post = '.' + t.post; - }); - return this; - } - }]); - - return Abbreviations; - }(Doc); - - Abbreviations.prototype.unwrap = Abbreviations.prototype.stripPeriods; - - Doc.prototype.abbreviations = function (n) { - var match = this.match('#Abbreviation'); - - if (typeof n === 'number') { - match = match.get(n); - } - - return new Abbreviations(match.list, this, this.world); - }; - - return Doc; - }; - - var Abbreviations = addMethod$a; - var hasPeriod = /\./; - - var addMethod$9 = function addMethod(Doc) { - /** */ - var Acronyms = /*#__PURE__*/function (_Doc) { - _inherits(Acronyms, _Doc); - - var _super = _createSuper(Acronyms); - - function Acronyms() { - _classCallCheck(this, Acronyms); - - return _super.apply(this, arguments); - } - - _createClass(Acronyms, [{ - key: "stripPeriods", - value: function stripPeriods() { - this.termList().forEach(function (t) { - var str = t.text.replace(/\./g, ''); - t.set(str); - }); - return this; - } - }, { - key: "addPeriods", - value: function addPeriods() { - this.termList().forEach(function (t) { - var str = t.text.replace(/\./g, ''); - str = str.split('').join('.'); // don't add a end-period if there's a sentence-end one - - if (hasPeriod.test(t.post) === false) { - str += '.'; - } - - t.set(str); - }); - return this; - } - }]); - - return Acronyms; - }(Doc); - - Acronyms.prototype.unwrap = Acronyms.prototype.stripPeriods; - Acronyms.prototype.strip = Acronyms.prototype.stripPeriods; - - Doc.prototype.acronyms = function (n) { - var match = this.match('#Acronym'); - - if (typeof n === 'number') { - match = match.get(n); - } - - return new Acronyms(match.list, this, this.world); - }; - - return Doc; - }; - - var Acronyms = addMethod$9; - - var addMethod$8 = function addMethod(Doc) { - /** split into approximate sub-sentence phrases */ - Doc.prototype.clauses = function (n) { - // an awkward way to disambiguate a comma use - var commas = this["if"]('@hasComma').notIf('@hasComma @hasComma') //fun, cool... - .notIf('@hasComma . .? (and|or) .') //cool, and fun - .notIf('(#City && @hasComma) #Country') //'toronto, canada' - .notIf('(#WeekDay && @hasComma) #Date') //'tuesday, march 2nd' - .notIf('(#Date && @hasComma) #Year') //'july 6, 1992' - .notIf('@hasComma (too|also)$') //at end of sentence - .match('@hasComma'); - var found = this.splitAfter(commas); - var quotes = found.quotations(); - found = found.splitOn(quotes); - var parentheses = found.parentheses(); - found = found.splitOn(parentheses); // it is cool and it is .. - - var conjunctions = found["if"]('#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb').match('#Conjunction'); - found = found.splitBefore(conjunctions); // if it is this then that - - var condition = found["if"]('if .{2,9} then .').match('then'); - found = found.splitBefore(condition); // misc clause partitions - - found = found.splitBefore('as well as .'); - found = found.splitBefore('such as .'); - found = found.splitBefore('in addition to .'); // semicolons, dashes - - found = found.splitAfter('@hasSemicolon'); - found = found.splitAfter('@hasDash'); // passive voice verb - '.. which was robbed is empty' - // let passive = found.match('#Noun (which|that) (was|is) #Adverb? #PastTense #Adverb?') - // if (passive.found) { - // found = found.splitAfter(passive) - // } - // //which the boy robbed - // passive = found.match('#Noun (which|that) the? #Noun+ #Adverb? #PastTense #Adverb?') - // if (passive.found) { - // found = found.splitAfter(passive) - // } - // does there appear to have relative/subordinate clause still? - - var tooLong = found.filter(function (d) { - return d.wordCount() > 5 && d.match('#Verb+').length >= 2; - }); - - if (tooLong.found) { - var m = tooLong.splitAfter('#Noun .* #Verb .* #Noun+'); - found = found.splitOn(m.eq(0)); - } - - if (typeof n === 'number') { - found = found.get(n); - } - - return new Doc(found.list, this, this.world); - }; - - return Doc; - }; - - var Clauses = addMethod$8; - - var addMethod$7 = function addMethod(Doc) { - /** */ - var Contractions = /*#__PURE__*/function (_Doc) { - _inherits(Contractions, _Doc); - - var _super = _createSuper(Contractions); - - function Contractions(list, from, world) { - var _this; - - _classCallCheck(this, Contractions); - - _this = _super.call(this, list, from, world); - _this.contracted = null; - return _this; - } - /** turn didn't into 'did not' */ - - - _createClass(Contractions, [{ - key: "expand", - value: function expand() { - this.list.forEach(function (p) { - var terms = p.terms(); //change the case? - - var isTitlecase = terms[0].isTitleCase(); - terms.forEach(function (t, i) { - //use the implicit text - t.set(t.implicit || t.text); - t.implicit = undefined; //add whitespace - - if (i < terms.length - 1 && t.post === '') { - t.post += ' '; - } - }); //set titlecase - - if (isTitlecase) { - terms[0].toTitleCase(); - } - }); - return this; - } - }]); - - return Contractions; - }(Doc); //find contractable, expanded-contractions - // const findExpanded = r => { - // let remain = r.not('#Contraction') - // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)') - // m.concat(remain.match('(they|we|you|i) have')) - // m.concat(remain.match('i am')) - // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not')) - // return m - // } - - - Doc.prototype.contractions = function (n) { - //find currently-contracted - var found = this.match('@hasContraction+'); //(may want to split these up) - //todo: split consecutive contractions - - if (typeof n === 'number') { - found = found.get(n); - } - - return new Contractions(found.list, this, this.world); - }; //aliases - - - Doc.prototype.expanded = Doc.prototype.isExpanded; - Doc.prototype.contracted = Doc.prototype.isContracted; - return Doc; - }; - - var Contractions = addMethod$7; - - var addMethod$6 = function addMethod(Doc) { - //pull it apart.. - var parse = function parse(doc) { - var things = doc.splitAfter('@hasComma').splitOn('(and|or) not?').not('(and|or) not?'); - var beforeLast = doc.match('[.] (and|or)', 0); - return { - things: things, - conjunction: doc.match('(and|or) not?'), - beforeLast: beforeLast, - hasOxford: beforeLast.has('@hasComma') - }; - }; - /** cool, fun, and nice */ - - - var Lists = /*#__PURE__*/function (_Doc) { - _inherits(Lists, _Doc); - - var _super = _createSuper(Lists); - - function Lists() { - _classCallCheck(this, Lists); - - return _super.apply(this, arguments); - } - - _createClass(Lists, [{ - key: "conjunctions", - value: - /** coordinating conjunction */ - function conjunctions() { - return this.match('(and|or)'); - } - /** split-up by list object */ - - }, { - key: "parts", - value: function parts() { - return this.splitAfter('@hasComma').splitOn('(and|or) not?'); - } - /** remove the conjunction */ - - }, { - key: "items", - value: function items() { - return parse(this).things; - } - /** add a new unit to the list */ - - }, { - key: "add", - value: function add(str) { - this.forEach(function (p) { - var beforeLast = parse(p).beforeLast; - beforeLast.append(str); //add a comma to it - - beforeLast.termList(0).addPunctuation(','); - }); - return this; - } - /** remove any matching unit from the list */ - - }, { - key: "remove", - value: function remove(match) { - return this.items()["if"](match).remove(); - } - /** return only lists that use a serial comma */ - - }, { - key: "hasOxfordComma", - value: function hasOxfordComma() { - return this.filter(function (doc) { - return parse(doc).hasOxford; - }); - } - }, { - key: "addOxfordComma", - value: function addOxfordComma() { - var items = this.items(); - var needsComma = items.eq(items.length - 2); - - if (needsComma.found && needsComma.has('@hasComma') === false) { - needsComma.post(', '); - } - - return this; - } - }, { - key: "removeOxfordComma", - value: function removeOxfordComma() { - var items = this.items(); - var needsComma = items.eq(items.length - 2); - - if (needsComma.found && needsComma.has('@hasComma') === true) { - needsComma.post(' '); - } - - return this; - } - }]); - - return Lists; - }(Doc); // aliases - - - Lists.prototype.things = Lists.prototype.items; - - Doc.prototype.lists = function (n) { - var m = this["if"]('@hasComma+ .? (and|or) not? .'); // person-list - - var nounList = m.match('(#Noun|#Adjective|#Determiner|#Article)+ #Conjunction not? (#Article|#Determiner)? #Adjective? #Noun+')["if"]('#Noun'); - var adjList = m.match('(#Adjective|#Adverb)+ #Conjunction not? #Adverb? #Adjective+'); - var verbList = m.match('(#Verb|#Adverb)+ #Conjunction not? #Adverb? #Verb+'); - var result = nounList.concat(adjList); - result = result.concat(verbList); - result = result["if"]('@hasComma'); - - if (typeof n === 'number') { - result = m.get(n); - } - - return new Lists(result.list, this, this.world); - }; - - return Doc; - }; - - var Lists = addMethod$6; - var noPlural = '(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)'; //certain words can't be plural, like 'peace' - - var hasPlural = function hasPlural(doc) { - if (doc.has('#Plural') === true) { - return true; - } // these can't be plural - - - if (doc.has(noPlural) === true) { - return false; - } - - return true; - }; - - var hasPlural_1 = hasPlural; - var irregulars = { - hour: 'an', - heir: 'an', - heirloom: 'an', - honest: 'an', - honour: 'an', - honor: 'an', - uber: 'an' //german u - - }; //pronounced letters of acronyms that get a 'an' - - var an_acronyms = { - a: true, - e: true, - f: true, - h: true, - i: true, - l: true, - m: true, - n: true, - o: true, - r: true, - s: true, - x: true - }; //'a' regexes - - var a_regexs = [/^onc?e/i, //'wu' sound of 'o' - /^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u' - /^eul/i]; - - var makeArticle = function makeArticle(doc) { - //no 'the john smith', but 'a london hotel' - if (doc.has('#Person') || doc.has('#Place')) { - return ''; - } //no a/an if it's plural - - - if (doc.has('#Plural')) { - return 'the'; - } - - var str = doc.text('normal').trim(); //explicit irregular forms - - if (irregulars.hasOwnProperty(str)) { - return irregulars[str]; - } //spelled-out acronyms + if (noun.has('#Person')) { + return false; + } + if (noun.has('#Plural')) { + return true; + } - var firstLetter = str.substr(0, 1); - - if (doc.has('^@isAcronym') && an_acronyms.hasOwnProperty(firstLetter)) { - return 'an'; - } //'a' regexes - - - for (var i = 0; i < a_regexs.length; i++) { - if (a_regexs[i].test(str)) { - return 'a'; - } - } //basic vowel-startings - - - if (/^[aeiou]/i.test(str)) { - return 'an'; - } - - return 'a'; - }; - - var getArticle = makeArticle; //similar to plural/singularize rules, but not the same - - var isPlural$2 = [/(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /men$/i, /.tia$/i, /(m|l)ice$/i]; //similar to plural/singularize rules, but not the same - - var isSingular = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i]; - var _rules = { - isSingular: isSingular, - isPlural: isPlural$2 - }; - var endS = /s$/; // double-check this term, if it is not plural, or singular. - // (this is a partial copy of ./tagger/fallbacks/plural) - // fallback plural if it ends in an 's'. - - var isPlural$1 = function isPlural(str) { - // isSingular suffix rules - if (_rules.isSingular.find(function (reg) { - return reg.test(str); - })) { - return false; - } // does it end in an s? - - - if (endS.test(str) === true) { - return true; - } // is it a plural like 'fungi'? - - - if (_rules.isPlural.find(function (reg) { - return reg.test(str); - })) { - return true; - } - - return null; - }; - - var isPlural_1$1 = isPlural$1; - var exceptions = { - he: 'his', - she: 'hers', - they: 'theirs', - we: 'ours', - i: 'mine', - you: 'yours', - her: 'hers', - their: 'theirs', - our: 'ours', - my: 'mine', - your: 'yours' - }; // turn "David" to "David's" - - var toPossessive = function toPossessive(doc) { - var str = doc.text('text').trim(); // exceptions - - if (exceptions.hasOwnProperty(str)) { - doc.replaceWith(exceptions[str], true); - doc.tag('Possessive', 'toPossessive'); - return; - } // flanders' - - - if (/s$/.test(str)) { - str += "'"; - doc.replaceWith(str, true); - doc.tag('Possessive', 'toPossessive'); - return; - } //normal form: - - - str += "'s"; - doc.replaceWith(str, true); - doc.tag('Possessive', 'toPossessive'); - return; - }; - - var toPossessive_1 = toPossessive; // .nouns() supports some noun-phrase-ish groupings - // pull these apart, if necessary - - var parse$1 = function parse(doc) { - var res = { - main: doc - }; //support 'mayor of chicago' as one noun-phrase - - if (doc.has('#Noun (of|by|for) .')) { - var m = doc.splitAfter('[#Noun+]', 0); - res.main = m.eq(0); - res.post = m.eq(1); - } - - return res; - }; - - var parse_1 = parse$1; - var methods$2 = { - /** overload the original json with noun information */ - json: function json(options) { - var n = null; - - if (typeof options === 'number') { - n = options; - options = null; - } - - options = options || { - text: true, - normal: true, - trim: true, - terms: true - }; - var res = []; - this.forEach(function (doc) { - var json = doc.json(options)[0]; - json.article = getArticle(doc); - res.push(json); - }); - - if (n !== null) { - return res[n]; - } - - return res; - }, - - /** get all adjectives describing this noun*/ - adjectives: function adjectives() { - var list = this.lookAhead('^(that|who|which)? (was|is|will)? be? #Adverb? #Adjective+'); - list = list.concat(this.lookBehind('#Adjective+ #Adverb?$')); - list = list.match('#Adjective'); - return list.sort('index'); - }, - isPlural: function isPlural() { - return this["if"]('#Plural'); //assume tagger has run? - }, - hasPlural: function hasPlural() { - return this.filter(function (d) { - return hasPlural_1(d); - }); - }, - toPlural: function toPlural(agree) { - var _this = this; - - var toPlural = this.world.transforms.toPlural; - this.forEach(function (doc) { - if (doc.has('#Plural') || hasPlural_1(doc) === false) { - return; - } // double-check it isn't an un-tagged plural - - - var main = parse_1(doc).main; - var str = main.text('reduced'); - - if (!main.has('#Singular') && isPlural_1$1(str) === true) { - return; - } - - str = toPlural(str, _this.world); - main.replace(str).tag('#Plural'); // 'an apple' -> 'apples' - - if (agree) { - var an = main.lookBefore('(an|a) #Adjective?$').not('#Adjective'); - - if (an.found === true) { - an.remove(); - } - } - }); - return this; - }, - toSingular: function toSingular(agree) { - var _this2 = this; - - var toSingular = this.world.transforms.toSingular; - this.forEach(function (doc) { - if (doc.has('^#Singular+$') || hasPlural_1(doc) === false) { - return; - } // double-check it isn't an un-tagged plural - - - var main = parse_1(doc).main; - var str = main.text('reduced'); - - if (!main.has('#Plural') && isPlural_1$1(str) !== true) { - return; - } - - str = toSingular(str, _this2.world); - main.replace(str).tag('#Singular'); // add an article - - if (agree) { - // 'apples' -> 'an apple' - var start = doc; - var adj = doc.lookBefore('#Adjective'); - - if (adj.found) { - start = adj; - } - - var article = getArticle(start); - start.insertBefore(article); - } - }); - return this; - }, - toPossessive: function toPossessive() { - this.forEach(function (d) { - toPossessive_1(d); - }); - return this; - } - }; - var methods_1 = methods$2; - - var addMethod$5 = function addMethod(Doc) { - /** */ - var Nouns = /*#__PURE__*/function (_Doc) { - _inherits(Nouns, _Doc); - - var _super = _createSuper(Nouns); - - function Nouns() { - _classCallCheck(this, Nouns); - - return _super.apply(this, arguments); - } - - return Nouns; - }(Doc); // add-in our methods - - - Object.assign(Nouns.prototype, methods_1); - - Doc.prototype.nouns = function (n) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // don't split 'paris, france' - - var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas - - var m = this.not(keep).splitAfter('@hasComma'); // combine them back together - - m = m.concat(keep); // don't combine over scare-quotes - - var quotes = m.quotations(); - - if (quotes.found) { - m = m.splitOn(quotes.eq(0)); - } + if (noun.has('#Singular')) { + return false; + } - m = m.match('#Noun+ (of|by)? the? #Noun+?'); //nouns that we don't want in these results, for weird reasons - - if (opts.keep_anaphora !== true) { - m = m.not('#Pronoun'); - m = m.not('(there|these)'); - m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays - // //allow possessives like "spencer's", but not generic ones like, + if (vb.has('(is|am|do|was)')) { + return false; + } - m = m.not('(my|our|your|their|her|his)'); - } + if (parsed.auxiliary.has('(is|am|do|was)') && !parsed.negative.found) { + return false; + } - m = m.not('(of|for|by|the)$'); - - if (typeof n === 'number') { - m = m.get(n); - } + return null; + }; - return new Nouns(m.list, this, this.world); - }; + var isPlural_1 = isPlural$4; + const toInfinitive$1 = toInfinitive_1; + const isPlural$3 = isPlural_1; // #Modal : would walk -> 'would not walk' + // #Copula : is -> 'is not' + // #PastTense : walked -> did not walk + // #PresentTense : walks -> does not walk + // #Gerund : walking: -> not walking + // #Infinitive : walk -> do not walk - return Doc; - }; - - var Nouns = addMethod$5; - var open = /\(/; - var close = /\)/; - - var addMethod$4 = function addMethod(Doc) { - /** anything between (these things) */ - var Parentheses = /*#__PURE__*/function (_Doc) { - _inherits(Parentheses, _Doc); - - var _super = _createSuper(Parentheses); - - function Parentheses() { - _classCallCheck(this, Parentheses); - - return _super.apply(this, arguments); - } - - _createClass(Parentheses, [{ - key: "unwrap", - value: - /** remove the parentheses characters */ - function unwrap() { - this.list.forEach(function (p) { - var first = p.terms(0); - first.pre = first.pre.replace(open, ''); - var last = p.lastTerm(); - last.post = last.post.replace(close, ''); - }); - return this; - } - }]); - - return Parentheses; - }(Doc); - - Doc.prototype.parentheses = function (n) { - var list = []; - this.list.forEach(function (p) { - var terms = p.terms(); //look for opening brackets - - for (var i = 0; i < terms.length; i += 1) { - var t = terms[i]; - - if (open.test(t.pre)) { - //look for the closing bracket.. - for (var o = i; o < terms.length; o += 1) { - if (close.test(terms[o].post)) { - var len = o - i + 1; - list.push(p.buildFrom(t.id, len)); - i = o; - break; - } - } - } - } - }); //support nth result - - if (typeof n === 'number') { - if (list[n]) { - list = [list[n]]; - } else { - list = []; - } - - return new Parentheses(list, this, this.world); - } - - return new Parentheses(list, this, this.world); - }; - - return Doc; - }; - - var Parentheses = addMethod$4; - - var addMethod$3 = function addMethod(Doc) { - /** */ - var Possessives = /*#__PURE__*/function (_Doc) { - _inherits(Possessives, _Doc); - - var _super = _createSuper(Possessives); - - function Possessives(list, from, world) { - var _this; - - _classCallCheck(this, Possessives); - - _this = _super.call(this, list, from, world); - _this.contracted = null; - return _this; - } - /** turn didn't into 'did not' */ - - - _createClass(Possessives, [{ - key: "strip", - value: function strip() { - this.list.forEach(function (p) { - var terms = p.terms(); - terms.forEach(function (t) { - var str = t.text.replace(/'s$/, ''); - t.set(str || t.text); - }); - }); - return this; - } - }]); - - return Possessives; - }(Doc); //find contractable, expanded-contractions - // const findExpanded = r => { - // let remain = r.not('#Contraction') - // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)') - // m.concat(remain.match('(they|we|you|i) have')) - // m.concat(remain.match('i am')) - // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not')) - // return m - // } - - - Doc.prototype.possessives = function (n) { - //find currently-contracted - var found = this.match('#Noun+? #Possessive'); //todo: split consecutive contractions - - if (typeof n === 'number') { - found = found.get(n); - } - - return new Possessives(found.list, this, this.world); - }; - - return Doc; - }; - - var Possessives = addMethod$3; - var pairs = { - "\"": "\"", - // 'StraightDoubleQuotes' - "\uFF02": "\uFF02", - // 'StraightDoubleQuotesWide' - "'": "'", - // 'StraightSingleQuotes' - "\u201C": "\u201D", - // 'CommaDoubleQuotes' - "\u2018": "\u2019", - // 'CommaSingleQuotes' - "\u201F": "\u201D", - // 'CurlyDoubleQuotesReversed' - "\u201B": "\u2019", - // 'CurlySingleQuotesReversed' - "\u201E": "\u201D", - // 'LowCurlyDoubleQuotes' - "\u2E42": "\u201D", - // 'LowCurlyDoubleQuotesReversed' - "\u201A": "\u2019", - // 'LowCurlySingleQuotes' - "\xAB": "\xBB", - // 'AngleDoubleQuotes' - "\u2039": "\u203A", - // 'AngleSingleQuotes' - // Prime 'non quotation' - "\u2035": "\u2032", - // 'PrimeSingleQuotes' - "\u2036": "\u2033", - // 'PrimeDoubleQuotes' - "\u2037": "\u2034", - // 'PrimeTripleQuotes' - // Prime 'quotation' variation - "\u301D": "\u301E", - // 'PrimeDoubleQuotes' - "`": "\xB4", - // 'PrimeSingleQuotes' - "\u301F": "\u301E" // 'LowPrimeDoubleQuotesReversed' - - }; - var hasOpen = RegExp('(' + Object.keys(pairs).join('|') + ')'); - - var addMethod$2 = function addMethod(Doc) { - /** "these things" */ - var Quotations = /*#__PURE__*/function (_Doc) { - _inherits(Quotations, _Doc); - - var _super = _createSuper(Quotations); - - function Quotations() { - _classCallCheck(this, Quotations); - - return _super.apply(this, arguments); - } - - _createClass(Quotations, [{ - key: "unwrap", - value: - /** remove the quote characters */ - function unwrap() { - return this; - } - }]); - - return Quotations; - }(Doc); - - Doc.prototype.quotations = function (n) { - var list = []; - this.list.forEach(function (p) { - var terms = p.terms(); //look for opening quotes - - for (var i = 0; i < terms.length; i += 1) { - var t = terms[i]; - - if (hasOpen.test(t.pre)) { - var _char = (t.pre.match(hasOpen) || [])[0]; - var want = pairs[_char]; // if (!want) { - // console.warn('missing quote char ' + char) - // } - //look for the closing bracket.. - - for (var o = i; o < terms.length; o += 1) { - if (terms[o].post.indexOf(want) !== -1) { - var len = o - i + 1; - list.push(p.buildFrom(t.id, len)); - i = o; - break; - } - } - } - } - }); //support nth result - - if (typeof n === 'number') { - if (list[n]) { - list = [list[n]]; - } else { - list = []; - } - - return new Quotations(list, this, this.world); - } - - return new Quotations(list, this, this.world); - }; // alias - - - Doc.prototype.quotes = Doc.prototype.quotations; - return Doc; - }; - - var Quotations = addMethod$2; // walked => walk - turn a verb into it's root form - - var toInfinitive = function toInfinitive(parsed, world) { - var verb = parsed.verb; // console.log(parsed) - // verb.debug() - //1. if it's already infinitive - - var str = verb.text('reduced'); - - if (verb.has('#Infinitive')) { - return str; - } // 2. world transform does the heavy-lifting + const toNegative$1 = function (parsed, world) { + let vb = parsed.verb; // if it's already negative... + if (parsed.negative.found) { + return; + } // would walk -> would not walk - var tense = null; - if (verb.has('#PastTense')) { - tense = 'PastTense'; - } else if (verb.has('#Gerund')) { - tense = 'Gerund'; - } else if (verb.has('#PresentTense')) { - tense = 'PresentTense'; - } else if (verb.has('#Participle')) { - tense = 'Participle'; - } else if (verb.has('#Actor')) { - tense = 'Actor'; - } + if (parsed.auxiliary.found) { + parsed.auxiliary.eq(0).append('not'); // 'would not have' ➔ 'would not have' - return world.transforms.toInfinitive(str, world, tense); - }; + if (parsed.auxiliary.has('#Modal have not')) { + parsed.auxiliary.replace('have not', 'not have'); + } - var toInfinitive_1 = toInfinitive; // spencer walks -> singular - // we walk -> plural - // the most-recent noun-phrase, before this verb. + return; + } // is walking -> is not walking - var findNoun = function findNoun(vb) { - var noun = vb.lookBehind('#Noun+').last(); - return noun; - }; //sometimes you can tell if a verb is plural/singular, just by the verb - // i am / we were - // othertimes you need its subject 'we walk' vs 'i walk' + if (vb.has('(#Copula|will|has|had|do)')) { + vb.append('not'); + return; + } // walked -> did not walk - var isPlural$4 = function isPlural(parsed) { - var vb = parsed.verb; - if (vb.has('(are|were|does)') || parsed.auxiliary.has('(are|were|does)')) { - return true; - } + if (vb.has('#PastTense')) { + let inf = toInfinitive$1(parsed, world); + vb.replaceWith(inf, true); + vb.prepend('did not'); + return; + } // walks -> does not walk - if (vb.has('(is|am|do|was)') || parsed.auxiliary.has('(is|am|do|was)')) { - return false; - } //consider its prior noun + if (vb.has('#PresentTense')) { + let inf = toInfinitive$1(parsed, world); + vb.replaceWith(inf, true); - var noun = findNoun(vb); + if (isPlural$3(parsed)) { + vb.prepend('do not'); + } else { + vb.prepend('does not'); + } - if (noun.has('(we|they|you)')) { - return true; - } + return; + } //walking -> not walking - if (noun.has('#Plural')) { - return true; - } - if (noun.has('#Singular')) { - return false; - } + if (vb.has('#Gerund')) { + let inf = toInfinitive$1(parsed, world); + vb.replaceWith(inf, true); + vb.prepend('not'); + return; + } //fallback 1: walk -> does not walk + + + if (isPlural$3(parsed)) { + vb.prepend('does not'); + return; + } //fallback 2: walk -> do not walk + + + vb.prepend('do not'); + return; + }; + + var toNegative_1 = toNegative$1; // get the prior verb most-likely doing this action + // (it can not-exist - 'close the door') + + const getSubject$2 = function (vb) { + let behind = vb.lookBehind(); + let lastNoun = behind.nouns(null, { + keep_anaphora: true + }).last(); // support 'that' and 'this' + + if (!lastNoun.found) { + lastNoun = behind.match('(that|this|each)').last(); + lastNoun = lastNoun.tag('#Noun').nouns(); + } + + return lastNoun; + }; + + var getSubject_1 = getSubject$2; + const getSubject$1 = getSubject_1; // turn 'would not really walk up' into parts + + const parseVerb$1 = function (vb) { + let parsed = { + adverb: vb.match('#Adverb+'), + // 'really' + negative: vb.match('#Negative'), + // 'not' + auxiliary: vb.match('#Auxiliary+').not('(#Negative|#Adverb)'), + // 'will' of 'will go' + particle: vb.match('#Particle'), + // 'up' of 'pull up' + verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)'), + original: vb, + subject: getSubject$1(vb) + }; // parsed.subject.debug() + // for conjugation purposes, + // 'should start looking' -> 'should start' + + if (parsed.verb.has('(#PresentTense|#PastTense|#Infinitive) #Gerund$')) { + parsed.verb = parsed.verb.not('#Gerund$'); + } // fallback, if no verb found + + + if (!parsed.verb.found) { + // blank-everything + Object.keys(parsed).forEach(k => { + parsed[k] = parsed[k].not('.'); + }); // it's all the verb + + parsed.verb = vb; + return parsed; + } // + + + if (parsed.adverb && parsed.adverb.found) { + let match = parsed.adverb.text('reduced') + '$'; + + if (vb.has(match)) { + parsed.adverbAfter = true; + } + } + + return parsed; + }; + + var parse = parseVerb$1; + const isPlural$2 = isPlural_1; + /** too many special cases for is/was/will be*/ + + const toBe$1 = parsed => { + let isI = false; + let plural = isPlural$2(parsed); + let isNegative = parsed.negative.found; //account for 'i is' -> 'i am' irregular + // if (vb.parent && vb.parent.has('i #Adverb? #Copula')) { + // isI = true; + // } + // 'i look', not 'i looks' + + if (parsed.verb.lookBehind('i (#Adverb|#Verb)?$').found) { + isI = true; + } + + let obj = { + PastTense: 'was', + PresentTense: 'is', + FutureTense: 'will be', + Infinitive: 'is', + Gerund: 'being', + Actor: '', + PerfectTense: 'been', + Pluperfect: 'been' + }; + + if (plural) { + obj.PastTense = 'were'; + obj.PresentTense = 'are'; + obj.Infinitive = 'are'; + } //"i is" -> "i am" + + + if (isI === true) { + obj.PastTense = 'was'; + obj.PresentTense = 'am'; + obj.Infinitive = 'am'; + } + + if (isNegative) { + obj.PastTense += ' not'; + obj.PresentTense += ' not'; + obj.FutureTense = 'will not be'; + obj.Infinitive += ' not'; + obj.PerfectTense = 'not ' + obj.PerfectTense; + obj.Pluperfect = 'not ' + obj.Pluperfect; + obj.Gerund = 'not ' + obj.Gerund; + } + + return obj; + }; + + var toBe_1 = toBe$1; + + const doModal$1 = function (parsed) { + let str = parsed.verb.text(); + let res = { + PastTense: str + ' have', + PresentTense: str, + FutureTense: str, + Infinitive: str // Gerund: , + // Actor: '', + // PerfectTense: '', + // Pluperfect: '', + + }; + return res; + }; + + var doModal_1 = doModal$1; + const toInfinitive = toInfinitive_1; + const toBe = toBe_1; + const doModal = doModal_1; + const isPlural$1 = isPlural_1; + + const conjugate$2 = function (parsed, world) { + let verb = parsed.verb; //special handling of 'is', 'will be', etc. + + if (verb.has('#Copula') || verb.out('normal') === 'be' && parsed.auxiliary.has('will')) { + return toBe(parsed); + } // special handling of 'are walking' + + + if (parsed.auxiliary.has('are') && verb.has('#Gerund')) { + let og = parsed.original.clone(); + let past = og.clone().replace('are', 'were'); + let fut = og.clone().replace('are', 'will be'); + let infinitive = toInfinitive(parsed, world); + let res = { + PastTense: past.text(), + PresentTense: og.text(), + FutureTense: fut.text(), + Infinitive: infinitive + }; + return res; + } // special handling of 'he could.' + - return null; - }; + if (verb.has('#Modal')) { + return doModal(parsed); + } // get the root form - var isPlural_1 = isPlural$4; // #Copula : is -> 'is not' - // #PastTense : walked -> did not walk - // #PresentTense : walks -> does not walk - // #Gerund : walking: -> not walking - // #Infinitive : walk -> do not walk - var toNegative = function toNegative(parsed, world) { - var vb = parsed.verb; // if it's already negative... + let infinitive = toInfinitive(parsed, world); - if (parsed.negative.found) { - return; - } // would walk -> would not walk + if (!infinitive) { + return {}; + } + let forms = world.transforms.conjugate(infinitive, world); + forms.Infinitive = infinitive; // Singular: the dog chases + // Plural: the dogs chase - if (parsed.auxiliary.found) { - parsed.auxiliary.eq(0).append('not'); // 'would not have' ➔ 'would not have' + let bePlural = isPlural$1(parsed); - if (parsed.auxiliary.has('#Modal have not')) { - parsed.auxiliary.replace('have not', 'not have'); - } + if (bePlural === true) { + forms.PresentTense = forms.Infinitive; // the dogs chase + } // add particle to phrasal verbs ('fall over') - return; - } // is walking -> is not walking + let hasHyphen = parsed.verb.termList(0).hasHyphen(); - if (vb.has('(#Copula|will|has|had|do)')) { - vb.append('not'); - return; - } // walked -> did not walk + if (parsed.particle.found) { + let particle = parsed.particle.text(); + let space = hasHyphen === true ? '-' : ' '; + Object.keys(forms).forEach(k => forms[k] += space + particle); + } //apply negative - if (vb.has('#PastTense')) { - var inf = toInfinitive_1(parsed, world); - vb.replaceWith(inf, true); - vb.prepend('did not'); - return; - } // walks -> does not walk + const isNegative = parsed.negative.found; + forms.FutureTense = forms.FutureTense || 'will ' + forms.Infinitive; + if (isNegative) { + forms.PastTense = 'did not ' + forms.Infinitive; + forms.FutureTense = 'will not ' + forms.Infinitive; - if (vb.has('#PresentTense')) { - var _inf = toInfinitive_1(parsed, world); + if (bePlural) { + forms.PresentTense = 'do not ' + forms.Infinitive; + forms.Infinitive = 'do not ' + forms.Infinitive; + } else { + forms.PresentTense = 'does not ' + forms.Infinitive; + forms.Infinitive = 'does not ' + forms.Infinitive; + } - vb.replaceWith(_inf, true); + forms.Gerund = 'not ' + forms.Gerund; + } - if (isPlural_1(parsed)) { - vb.prepend('do not'); - } else { - vb.prepend('does not'); - } + return forms; + }; - return; - } //walking -> not walking + var conjugate_1 = conjugate$2; + const conjugate$1 = conjugate_1; // 'i could drive' -> 'i could have driven' + // if something is 'modal-ish' we are forced to use past-participle + // ('i could drove' is wrong) + + const useParticiple$1 = function (parsed) { + if (parsed.auxiliary.has('(could|should|would|may|can|must)')) { + return true; + } + + if (parsed.auxiliary.has('am .+? being')) { + return true; + } + + if (parsed.auxiliary.has('had .+? been')) { + return true; + } + + return false; + }; // conjugate 'drive' ➔ 'have driven' + + + const toParticiple$1 = function (parsed, world) { + //is it already a participle? + if (parsed.auxiliary.has('(have|had)') && parsed.verb.has('#Participle')) { + return; + } // try to swap the main verb to its participle form - if (vb.has('#Gerund')) { - var _inf2 = toInfinitive_1(parsed, world); + let obj = conjugate$1(parsed, world); + let str = obj.Participle || obj.PastTense; + + if (str) { + parsed.verb.replaceWith(str, false); + } // 'am being driven' ➔ 'have been driven' + + + if (parsed.auxiliary.has('am .+? being')) { + parsed.auxiliary.remove('am'); + parsed.auxiliary.replace('being', 'have been'); + } // add a 'have' - vb.replaceWith(_inf2, true); - vb.prepend('not'); - return; - } //fallback 1: walk -> does not walk + if (!parsed.auxiliary.has('have')) { + parsed.auxiliary.append('have'); + } // tag it as a participle - if (isPlural_1(parsed)) { - vb.prepend('does not'); - return; - } //fallback 2: walk -> do not walk + parsed.verb.tag('Participle', 'toParticiple'); // turn 'i can swim' to -> 'i could swim' - vb.prepend('do not'); - return; - }; + parsed.auxiliary.replace('can', 'could'); //'must be' ➔ 'must have been' - var toNegative_1 = toNegative; // who/what is doing this verb? - // get the prior verb most-likely doing this action - // (it can not-exist - 'close the door') - - var getSubject = function getSubject(vb) { - var behind = vb.lookBehind(); - var lastNoun = behind.nouns(null, { - keep_anaphora: true - }).last(); // support 'that' and 'this' + parsed.auxiliary.replace('be have', 'have been'); //'not have' ➔ 'have not' - if (!lastNoun.found) { - lastNoun = behind.match('(that|this|each)').last(); - lastNoun = lastNoun.tag('#Noun').nouns(); - } - - return lastNoun; - }; - - var getSubject_1 = getSubject; - - var parseVerb = function parseVerb(vb) { - var parsed = { - adverb: vb.match('#Adverb+'), - // 'really' - negative: vb.match('#Negative'), - // 'not' - auxiliary: vb.match('#Auxiliary+').not('(#Negative|#Adverb)'), - // 'will' of 'will go' - particle: vb.match('#Particle'), - // 'up' of 'pull up' - verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)'), - original: vb, - subject: getSubject_1(vb) - }; // fallback, if no verb found - - if (!parsed.verb.found) { - // blank-everything - Object.keys(parsed).forEach(function (k) { - parsed[k] = parsed[k].not('.'); - }); // it's all the verb - - parsed.verb = vb; - return parsed; - } // - - - if (parsed.adverb && parsed.adverb.found) { - var match = parsed.adverb.text('reduced') + '$'; - - if (vb.has(match)) { - parsed.adverbAfter = true; - } - } - - return parsed; - }; - - var parse = parseVerb; - /** too many special cases for is/was/will be*/ - - var toBe = function toBe(parsed) { - var isI = false; - var plural = isPlural_1(parsed); - var isNegative = parsed.negative.found; //account for 'i is' -> 'i am' irregular - // if (vb.parent && vb.parent.has('i #Adverb? #Copula')) { - // isI = true; - // } - // 'i look', not 'i looks' - - if (parsed.verb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) { - isI = true; - } - - var obj = { - PastTense: 'was', - PresentTense: 'is', - FutureTense: 'will be', - Infinitive: 'is', - Gerund: 'being', - Actor: '', - PerfectTense: 'been', - Pluperfect: 'been' - }; //"i is" -> "i am" - - if (isI === true) { - obj.PresentTense = 'am'; - obj.Infinitive = 'am'; - } - - if (plural) { - obj.PastTense = 'were'; - obj.PresentTense = 'are'; - obj.Infinitive = 'are'; - } - - if (isNegative) { - obj.PastTense += ' not'; - obj.PresentTense += ' not'; - obj.FutureTense = 'will not be'; - obj.Infinitive += ' not'; - obj.PerfectTense = 'not ' + obj.PerfectTense; - obj.Pluperfect = 'not ' + obj.Pluperfect; - obj.Gerund = 'not ' + obj.Gerund; - } - - return obj; - }; - - var toBe_1 = toBe; // 'may/could/should' -> 'may/could/should have' - - var doModal = function doModal(parsed) { - var str = parsed.verb.text(); - var res = { - PastTense: str + ' have', - PresentTense: str, - FutureTense: str, - Infinitive: str // Gerund: , - // Actor: '', - // PerfectTense: '', - // Pluperfect: '', - - }; - return res; - }; - - var doModal_1 = doModal; - - var conjugate = function conjugate(parsed, world) { - var verb = parsed.verb; //special handling of 'is', 'will be', etc. - - if (verb.has('#Copula') || verb.out('normal') === 'be' && parsed.auxiliary.has('will')) { - return toBe_1(parsed); - } // special handling of 'are walking' - - - if (parsed.auxiliary.has('are') && verb.has('#Gerund')) { - var og = parsed.original.clone(); - var past = og.clone().replace('are', 'were'); - var fut = og.clone().replace('are', 'will be'); - - var _infinitive = toInfinitive_1(parsed, world); - - var res = { - PastTense: past.text(), - PresentTense: og.text(), - FutureTense: fut.text(), - Infinitive: _infinitive - }; - return res; - } // special handling of 'he could.' - - - if (verb.has('#Modal')) { - return doModal_1(parsed); - } // dont conjugate imperative form - 'close the door' - // if (parsed.auxiliary.has('do')) { - // let str = parsed.original.text() - // let res = { - // PastTense: str, - // PresentTense: str, - // FutureTense: str, - // Infinitive: str, - // } - // return res - // } - - - var hasHyphen = parsed.verb.termList(0).hasHyphen(); - var infinitive = toInfinitive_1(parsed, world); - - if (!infinitive) { - return {}; - } - - var forms = world.transforms.conjugate(infinitive, world); - forms.Infinitive = infinitive; // add particle to phrasal verbs ('fall over') - - if (parsed.particle.found) { - var particle = parsed.particle.text(); - var space = hasHyphen === true ? '-' : ' '; - Object.keys(forms).forEach(function (k) { - return forms[k] += space + particle; - }); - } //put the adverb at the end? - // if (parsed.adverb.found) { - // let adverb = parsed.adverb.text() - // let space = hasHyphen === true ? '-' : ' ' - // if (parsed.adverbAfter === true) { - // Object.keys(forms).forEach(k => (forms[k] += space + adverb)) - // } else { - // Object.keys(forms).forEach(k => (forms[k] = adverb + space + forms[k])) - // } - // } - //apply negative + parsed.auxiliary.replace('not have', 'have not'); // ensure all new words are tagged right + parsed.auxiliary.tag('Auxiliary'); + }; - var isNegative = parsed.negative.found; - - if (isNegative) { - forms.PastTense = 'did not ' + forms.Infinitive; - forms.PresentTense = 'does not ' + forms.Infinitive; - forms.Gerund = 'not ' + forms.Gerund; - } //future Tense is pretty straightforward - + var participle = { + useParticiple: useParticiple$1, + toParticiple: toParticiple$1 + }; + const toNegative = toNegative_1; + const parseVerb = parse; + const isPlural = isPlural_1; + const getSubject = getSubject_1; + const conjugate = conjugate_1; + const { + toParticiple, + useParticiple + } = participle; // remove any tense-information in auxiliary verbs + + const makeNeutral = function (parsed) { + //remove tense-info from auxiliaries + parsed.auxiliary.remove('(will|are|am|being)'); + parsed.auxiliary.remove('(did|does)'); + parsed.auxiliary.remove('(had|has|have)'); //our conjugation includes the 'not' and the phrasal-verb particle + + parsed.particle.remove(); + parsed.negative.remove(); + return parsed; + }; + + var methods$2 = { + /** overload the original json with verb information */ + json: function (options) { + let n = null; + + if (typeof options === 'number') { + n = options; + options = null; + } + + options = options || { + text: true, + normal: true, + trim: true, + terms: true + }; + let res = []; + this.forEach(p => { + let json = p.json(options)[0]; + let parsed = parseVerb(p); + json.parts = {}; + Object.keys(parsed).forEach(k => { + if (parsed[k] && parsed[k].isA === 'Doc') { + json.parts[k] = parsed[k].text('normal'); + } else { + json.parts[k] = parsed[k]; + } + }); + json.isNegative = p.has('#Negative'); + json.conjugations = conjugate(parsed, this.world); + res.push(json); + }); + + if (n !== null) { + return res[n]; + } + + return res; + }, + + /** grab the adverbs describing these verbs */ + adverbs: function () { + let list = []; // look at internal adverbs + + this.forEach(vb => { + let advb = parseVerb(vb).adverb; + + if (advb.found) { + list = list.concat(advb.list); + } + }); // look for leading adverbs + + let m = this.lookBehind('#Adverb+$'); + + if (m.found) { + list = m.list.concat(list); + } // look for trailing adverbs + + + m = this.lookAhead('^#Adverb+'); + + if (m.found) { + list = list.concat(m.list); + } + + return this.buildFrom(list); + }, + /// Verb Inflection + + /**return verbs like 'we walk' and not 'spencer walks' */ + isPlural: function () { + let list = []; + this.forEach(vb => { + let parsed = parseVerb(vb); + + if (isPlural(parsed, this.world) === true) { + list.push(vb.list[0]); + } + }); + return this.buildFrom(list); + }, + + /** return verbs like 'spencer walks' and not 'we walk' */ + isSingular: function () { + let list = []; + this.forEach(vb => { + let parsed = parseVerb(vb); + + if (isPlural(parsed, this.world) === false) { + list.push(vb.list[0]); + } + }); + return this.buildFrom(list); + }, + /// Conjugation + + /** return all forms of this verb */ + conjugate: function () { + let result = []; + this.forEach(vb => { + let parsed = parseVerb(vb); + let forms = conjugate(parsed, this.world); + result.push(forms); + }); + return result; + }, + + /** walk ➔ walked*/ + toPastTense: function () { + this.forEach(vb => { + let parsed = parseVerb(vb); // should we support 'would swim' ➔ 'would have swam' + + if (useParticiple(parsed)) { + toParticiple(parsed, this.world); + return; + } // don't conjugate 'go away'. + + + if (vb.has('#Imperative')) { + return; + } // don't conjugate 'to be' + + + if (vb.has('be') && vb.lookBehind('to$').found) { + return; + } // handle 'is raining' -> 'was raining' + + + if (parsed.verb.has('#Gerund') && parsed.auxiliary.has('(is|will|was)')) { + vb.replace('is', 'was'); + return; + } + + let str = conjugate(parsed, this.world).PastTense; + + if (str) { + parsed = makeNeutral(parsed); + parsed.verb.replaceWith(str, false); + parsed.auxiliary.remove('(do|did|will)'); //?? + } + }); + return this; + }, + + /** walk ➔ walks */ + toPresentTense: function () { + this.forEach(vb => { + // don't conjugate 'go away'. + if (vb.has('#Imperative')) { + return; + } + + let parsed = parseVerb(vb); + let obj = conjugate(parsed, this.world); + let str = obj.PresentTense; // 'i look', not 'i looks' + + if (vb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) { + str = obj.Infinitive; + } + + if (str) { + //awkward support for present-participle form + // -- should we support 'have been swimming' ➔ 'am swimming' + if (parsed.auxiliary.has('(have|had) been')) { + parsed.auxiliary.replace('(have|had) been', 'am being'); + + if (obj.Particle) { + str = obj.Particle || obj.PastTense; + } + + return; + } + + parsed.verb.replaceWith(str, false); + parsed.verb.tag('PresentTense'); + parsed = makeNeutral(parsed); // avoid 'he would walks' + + parsed.auxiliary.remove('#Modal'); + parsed.auxiliary.remove('(do|did|will)'); //?? + } + }); + return this; + }, + + /** walk ➔ will walk*/ + toFutureTense: function () { + this.forEach(vb => { + let parsed = parseVerb(vb); // 'i should drive' is already future-enough + + if (useParticiple(parsed)) { + return; + } // don't conjugate 'go away'. + + + if (vb.has('#Imperative')) { + return; + } + + let str = conjugate(parsed, this.world).FutureTense; + + if (str) { + parsed = makeNeutral(parsed); // avoid 'he would will go' + + parsed.auxiliary.remove('#Modal'); + parsed.verb.replaceWith(str, false); + parsed.verb.tag('FutureTense'); + parsed.auxiliary.remove('(do|did|will)'); //?? + // parsed.auxiliary.remove('(do|did|will)') //?? + } + }); + return this; + }, + + /** walks ➔ walk */ + toInfinitive: function () { + this.forEach(vb => { + let parsed = parseVerb(vb); + let str = conjugate(parsed, this.world).Infinitive; + + if (str) { + vb.replaceWith(str, false); + vb.tag('Infinitive'); + } + }); + return this; + }, + + /** walk ➔ walking */ + toGerund: function () { + this.forEach(vb => { + let parsed = parseVerb(vb); + let str = conjugate(parsed, this.world).Gerund; + + if (str) { + vb.replaceWith(str, false); + vb.tag('Gerund'); + } + }); + return this; + }, + + /** drive ➔ driven - naked past-participle if it exists, otherwise past-tense */ + toParticiple: function () { + this.forEach(vb => { + let parsed = parseVerb(vb); + let noAux = !parsed.auxiliary.found; + toParticiple(parsed, this.world); // dirty trick to ensure our new auxiliary is found + + if (noAux) { + parsed.verb.prepend(parsed.auxiliary.text()); + parsed.auxiliary.remove(); + } + }); + return this; + }, + /// Negation + + /** return only verbs with 'not'*/ + isNegative: function () { + return this.if('#Negative'); + }, + + /** return only verbs without 'not'*/ + isPositive: function () { + return this.ifNo('#Negative'); + }, + + /** return only commands - verbs in imperative mood */ + isImperative: function () { + return this.if('#Imperative'); + }, + + /** add a 'not' to these verbs */ + toNegative: function () { + this.list.forEach(p => { + let doc = this.buildFrom([p]); + let parsed = parseVerb(doc); + toNegative(parsed, doc.world); + }); + return this; + }, + + /** remove 'not' from these verbs */ + toPositive: function () { + let m = this.match('do not #Verb'); + + if (m.found) { + m.remove('do not'); + } + + return this.remove('#Negative'); + }, + + /** who, or what is doing this action? */ + subject: function () { + let list = []; + this.forEach(p => { + let found = getSubject(p); + + if (found.list[0]) { + list.push(found.list[0]); + } + }); + return this.buildFrom(list); + } + }; + const methods$1 = methods$2; + + const addMethod$1 = function (Doc) { + /** */ + class Verbs extends Doc {} // add-in our methods + + + Object.assign(Verbs.prototype, methods$1); // aliases + + Verbs.prototype.negate = Verbs.prototype.toNegative; + + Doc.prototype.verbs = function (n) { + let match = this.match('(#Adverb|#Auxiliary|#Verb|#Negative|#Particle)+'); // try to ignore leading and trailing adverbs + + match = match.not('^#Adverb+'); + match = match.not('#Adverb+$'); // handle commas: + // don't split 'really, really' + + let keep = match.match('(#Adverb && @hasComma) #Adverb'); // // but split the other commas + + let m = match.not(keep).splitAfter('@hasComma'); // i was shocked looking at... + // let gerund = m.match('#PastTense #Gerund') + // if (!gerund.has('(been|am|#Auxiliary) #Gerund')) { + // m = m.splitBefore(gerund.match('#Gerund')) + // } + // combine them back together + + m = m.concat(keep); + m.sort('index'); //handle slashes? + //ensure there's actually a verb + + m = m.if('#Verb'); // the reason he will is ... + + if (m.has('(is|was)$')) { + m = m.splitBefore('(is|was)$'); + } //ensure it's not two verbs + + + if (m.has('#PresentTense #Adverb #PresentTense')) { + m = m.splitBefore('#Adverb #PresentTense'); + } //grab (n)th result + + + if (typeof n === 'number') { + m = m.get(n); + } + + let vb = new Verbs(m.list, this, this.world); + return vb; + }; + + return Doc; + }; + + var Verbs = addMethod$1; + + const addMethod = function (Doc) { + /** */ + class People extends Doc {// honorifics(){} + // firstNames(){} + // lastNames(){} + // pronouns(){} + // toPronoun(){} + // fromPronoun(){} + } - if (!forms.FutureTense) { - if (isNegative) { - forms.FutureTense = 'will not ' + forms.Infinitive; - } else { - forms.FutureTense = 'will ' + forms.Infinitive; - } - } - - if (isNegative) { - forms.Infinitive = 'not ' + forms.Infinitive; - } - - return forms; - }; - - var conjugate_1 = conjugate; // if something is 'modal-ish' we are forced to use past-participle - // ('i could drove' is wrong) - - var useParticiple$1 = function useParticiple(parsed) { - if (parsed.auxiliary.has('(could|should|would|may|can|must)')) { - return true; - } - - if (parsed.auxiliary.has('am .+? being')) { - return true; - } - - if (parsed.auxiliary.has('had .+? been')) { - return true; - } - - return false; - }; // conjugate 'drive' ➔ 'have driven' - - - var toParticiple = function toParticiple(parsed, world) { - //is it already a participle? - if (parsed.auxiliary.has('(have|had)') && parsed.verb.has('#Participle')) { - return; - } // try to swap the main verb to its participle form - - - var obj = conjugate_1(parsed, world); - var str = obj.Participle || obj.PastTense; - - if (str) { - parsed.verb.replaceWith(str, false); - } // 'am being driven' ➔ 'have been driven' - - - if (parsed.auxiliary.has('am .+? being')) { - parsed.auxiliary.remove('am'); - parsed.auxiliary.replace('being', 'have been'); - } // add a 'have' - - - if (!parsed.auxiliary.has('have')) { - parsed.auxiliary.append('have'); - } // tag it as a participle + Doc.prototype.people = function (n) { + let match = this.splitAfter('@hasComma'); + match = match.match('#Person+'); //grab (n)th result + if (typeof n === 'number') { + match = match.get(n); + } - parsed.verb.tag('Participle', 'toParticiple'); // turn 'i can swim' to -> 'i could swim' - - parsed.auxiliary.replace('can', 'could'); //'must be' ➔ 'must have been' + return new People(match.list, this, this.world); + }; - parsed.auxiliary.replace('be have', 'have been'); //'not have' ➔ 'have not' - - parsed.auxiliary.replace('not have', 'have not'); // ensure all new words are tagged right + return Doc; + }; - parsed.auxiliary.tag('Auxiliary'); - }; - - var participle = { - useParticiple: useParticiple$1, - toParticiple: toParticiple - }; - var _toParticiple = participle.toParticiple, - useParticiple = participle.useParticiple; // remove any tense-information in auxiliary verbs - - var makeNeutral = function makeNeutral(parsed) { - //remove tense-info from auxiliaries - parsed.auxiliary.remove('(will|are|am|being)'); - parsed.auxiliary.remove('(did|does)'); - parsed.auxiliary.remove('(had|has|have)'); //our conjugation includes the 'not' and the phrasal-verb particle + var People = addMethod; + const subsets = _simple; + const subclass = [Abbreviations, Acronyms, Clauses, Contractions, Lists, Nouns, Parentheses, Possessives, Quotations, Verbs, People]; - parsed.particle.remove(); - parsed.negative.remove(); - return parsed; - }; + const extend$1 = function (Doc) { + // add basic methods + Object.keys(subsets).forEach(k => Doc.prototype[k] = subsets[k]); // add subclassed methods - var methods$1 = { - /** overload the original json with verb information */ - json: function json(options) { - var _this = this; - - var n = null; + subclass.forEach(addFn => addFn(Doc)); + return Doc; + }; - if (typeof options === 'number') { - n = options; - options = null; - } - - options = options || { - text: true, - normal: true, - trim: true, - terms: true - }; - var res = []; - this.forEach(function (p) { - var json = p.json(options)[0]; - var parsed = parse(p); - json.parts = {}; - Object.keys(parsed).forEach(function (k) { - if (parsed[k] && parsed[k].isA === 'Doc') { - json.parts[k] = parsed[k].text('normal'); - } else { - json.parts[k] = parsed[k]; - } - }); - json.isNegative = p.has('#Negative'); - json.conjugations = conjugate_1(parsed, _this.world); - res.push(json); - }); + var Subset = extend$1; + const methods = { + misc: methods$6, + selections: _simple + }; + const tagger = _02Tagger; + const tokenize$1 = _01Tokenizer; + const extend = Subset; + /** a parsed text object */ - if (n !== null) { - return res[n]; - } + class Doc$1 { + constructor(list, from, world) { + this.list = list; // this.reasons = [] + //quiet these properties in console.logs - return res; - }, + Object.defineProperty(this, 'from', { + enumerable: false, + value: from, + writable: true + }); //borrow some missing data from parent + + if (world === undefined && from !== undefined) { + world = from.world; + } //'world' getter + + + Object.defineProperty(this, 'world', { + enumerable: false, + value: world, + writable: true + }); //fast-scans for our data + + Object.defineProperty(this, '_cache', { + enumerable: false, + writable: true, + value: {} + }); //'found' getter + + Object.defineProperty(this, 'found', { + get: () => this.list.length > 0 + }); //'length' getter + + Object.defineProperty(this, 'length', { + get: () => this.list.length + }); // this is way easier than .constructor.name... + + Object.defineProperty(this, 'isA', { + get: () => 'Doc' + }); + } + /** run part-of-speech tagger on all results*/ + + + tagger() { + return tagger(this); + } + /** pool is stored on phrase objects */ + + + pool() { + if (this.list.length > 0) { + return this.list[0].pool; + } + + return this.all().list[0].pool; + } + + } + /** create a new Document object */ + + + Doc$1.prototype.buildFrom = function (list) { + list = list.map(p => p.clone(true)); // new this.constructor() + + let doc = new Doc$1(list, this, this.world); + return doc; + }; + /** create a new Document from plaintext. */ + + + Doc$1.prototype.fromText = function (str) { + let list = tokenize$1(str, this.world, this.pool()); + return this.buildFrom(list); + }; + + Object.assign(Doc$1.prototype, methods.misc); + Object.assign(Doc$1.prototype, methods.selections); //add sub-classes + + extend(Doc$1); //aliases + + const aliases = { + untag: 'unTag', + and: 'match', + notIf: 'ifNo', + only: 'if', + onlyIf: 'if' + }; + Object.keys(aliases).forEach(k => Doc$1.prototype[k] = Doc$1.prototype[aliases[k]]); + var Doc_1 = Doc$1; + const lexiconStep = _01Lexicon; //for the tokenize-only build, we want to keep + + const smallTagger = function (doc) { + let terms = doc.termList(); + lexiconStep(terms, doc.world); // run any user-given tagger functions + + doc.world.taggers.forEach(fn => { + fn(doc); + }); + return doc; + }; - /** grab the adverbs describing these verbs */ - adverbs: function adverbs() { - var list = []; // look at internal adverbs + var tiny = smallTagger; + const tokenize = _01Tokenizer; + const fromJSON = fromJSON_1; + const version = _version; + const World = World_1; + const Doc = Doc_1; + const Phrase = Phrase_1; + const Term = Term_1; + const Pool = Pool_1; + const tinyTagger = tiny; + const parseMatch = matchSyntax; - this.forEach(function (vb) { - var advb = parse(vb).adverb; + function instance(worldInstance) { + //blast-out our word-lists, just once + let world = worldInstance; + /** parse and tag text into a compromise object */ - if (advb.found) { - list = list.concat(advb.list); - } - }); // look for leading adverbs - - var m = this.lookBehind('#Adverb+$'); - - if (m.found) { - list = m.list.concat(list); - } // look for trailing adverbs - - - m = this.lookAhead('^#Adverb+'); - - if (m.found) { - list = list.concat(m.list); - } - - return this.buildFrom(list); - }, - /// Verb Inflection - - /**return verbs like 'we walk' and not 'spencer walks' */ - isPlural: function isPlural() { - var _this2 = this; - - var list = []; - this.forEach(function (vb) { - var parsed = parse(vb); - - if (isPlural_1(parsed, _this2.world) === true) { - list.push(vb.list[0]); - } - }); - return this.buildFrom(list); - }, - - /** return verbs like 'spencer walks' and not 'we walk' */ - isSingular: function isSingular() { - var _this3 = this; - - var list = []; - this.forEach(function (vb) { - var parsed = parse(vb); - - if (isPlural_1(parsed, _this3.world) === false) { - list.push(vb.list[0]); - } - }); - return this.buildFrom(list); - }, - /// Conjugation - - /** return all forms of this verb */ - conjugate: function conjugate() { - var _this4 = this; - - var result = []; - this.forEach(function (vb) { - var parsed = parse(vb); - var forms = conjugate_1(parsed, _this4.world); - result.push(forms); - }); - return result; - }, - - /** walk ➔ walked*/ - toPastTense: function toPastTense() { - var _this5 = this; - - this.forEach(function (vb) { - var parsed = parse(vb); // should we support 'would swim' ➔ 'would have swam' - - if (useParticiple(parsed)) { - _toParticiple(parsed, _this5.world); - - return; - } - - if (vb.has('#Imperative')) { - return; - } // don't conjugate 'to be' - - - if (vb.has('be') && vb.lookBehind('to$').found) { - return; - } // handle 'is raining' -> 'was raining' - - - if (parsed.verb.has('#Gerund') && parsed.auxiliary.has('(is|will|was)')) { - vb.replace('is', 'was'); - return; - } - - var str = conjugate_1(parsed, _this5.world).PastTense; - - if (str) { - parsed = makeNeutral(parsed); - parsed.verb.replaceWith(str, false); // vb.tag('PastTense') - } - }); - return this; - }, - - /** walk ➔ walks */ - toPresentTense: function toPresentTense() { - var _this6 = this; - - this.forEach(function (vb) { - var parsed = parse(vb); - var obj = conjugate_1(parsed, _this6.world); - var str = obj.PresentTense; // 'i look', not 'i looks' - - if (vb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) { - str = obj.Infinitive; - } - - if (str) { - //awkward support for present-participle form - // -- should we support 'have been swimming' ➔ 'am swimming' - if (parsed.auxiliary.has('(have|had) been')) { - parsed.auxiliary.replace('(have|had) been', 'am being'); - - if (obj.Particle) { - str = obj.Particle || obj.PastTense; - } - - return; - } - - parsed.verb.replaceWith(str, false); - parsed.verb.tag('PresentTense'); - parsed = makeNeutral(parsed); // avoid 'he would walks' - - parsed.auxiliary.remove('#Modal'); - } - }); - return this; - }, - - /** walk ➔ will walk*/ - toFutureTense: function toFutureTense() { - var _this7 = this; - - this.forEach(function (vb) { - var parsed = parse(vb); // 'i should drive' is already future-enough - - if (useParticiple(parsed)) { - return; - } - - var str = conjugate_1(parsed, _this7.world).FutureTense; - - if (str) { - parsed = makeNeutral(parsed); // avoid 'he would will go' - - parsed.auxiliary.remove('#Modal'); - parsed.verb.replaceWith(str, false); - parsed.verb.tag('FutureTense'); - } - }); - return this; - }, - - /** walks ➔ walk */ - toInfinitive: function toInfinitive() { - var _this8 = this; - - this.forEach(function (vb) { - var parsed = parse(vb); - var str = conjugate_1(parsed, _this8.world).Infinitive; - - if (str) { - vb.replaceWith(str, false); - vb.tag('Infinitive'); - } - }); - return this; - }, - - /** walk ➔ walking */ - toGerund: function toGerund() { - var _this9 = this; - - this.forEach(function (vb) { - var parsed = parse(vb); - var str = conjugate_1(parsed, _this9.world).Gerund; - - if (str) { - vb.replaceWith(str, false); - vb.tag('Gerund'); - } - }); - return this; - }, - - /** drive ➔ driven - naked past-participle if it exists, otherwise past-tense */ - toParticiple: function toParticiple() { - var _this10 = this; - - this.forEach(function (vb) { - var parsed = parse(vb); - var noAux = !parsed.auxiliary.found; - - _toParticiple(parsed, _this10.world); // dirty trick to ensure our new auxiliary is found + const nlp = function () { + let text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let lexicon = arguments.length > 1 ? arguments[1] : undefined; + if (lexicon) { + world.addWords(lexicon); + } - if (noAux) { - parsed.verb.prepend(parsed.auxiliary.text()); - parsed.auxiliary.remove(); - } - }); - return this; - }, - /// Negation + let list = tokenize(text, world); + let doc = new Doc(list, null, world); + doc.tagger(); + return doc; + }; + /** parse text into a compromise object, without running POS-tagging */ - /** return only verbs with 'not'*/ - isNegative: function isNegative() { - return this["if"]('#Negative'); - }, - /** return only verbs without 'not'*/ - isPositive: function isPositive() { - return this.ifNo('#Negative'); - }, + nlp.tokenize = function () { + let text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let lexicon = arguments.length > 1 ? arguments[1] : undefined; + let w = world; - /** return only commands - verbs in imperative mood */ - isImperative: function isImperative() { - return this["if"]('#Imperative'); - }, + if (lexicon) { + w = w.clone(); + w.words = {}; + w.addWords(lexicon); + } - /** add a 'not' to these verbs */ - toNegative: function toNegative() { - var _this11 = this; + let list = tokenize(text, w); + let doc = new Doc(list, null, w); - this.list.forEach(function (p) { - var doc = _this11.buildFrom([p]); + if (lexicon || doc.world.taggers.length > 0) { + tinyTagger(doc); + } - var parsed = parse(doc); - toNegative_1(parsed, doc.world); - }); - return this; - }, + return doc; + }; + /** mix in a compromise-plugin */ - /** remove 'not' from these verbs */ - toPositive: function toPositive() { - var m = this.match('do not #Verb'); - if (m.found) { - m.remove('do not'); - } + nlp.extend = function (fn) { + fn(Doc, world, this, Phrase, Term, Pool); + return this; + }; + /** create a compromise Doc object from .json() results */ + + + nlp.fromJSON = function (json) { + let list = fromJSON(json, world); + return new Doc(list, null, world); + }; + /** make a deep-copy of the library state */ + + + nlp.clone = function () { + return instance(world.clone()); + }; + /** log our decision-making for debugging */ + - return this.remove('#Negative'); - }, + nlp.verbose = function () { + let bool = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + world.verbose(bool); + return this; + }; + /** grab currently-used World object */ - /** who, or what is doing this action? */ - subject: function subject() { - var list = []; - this.forEach(function (p) { - var found = getSubject_1(p); - if (found.list[0]) { - list.push(found.list[0]); - } - }); - return this.buildFrom(list); - } - }; + nlp.world = function () { + return world; + }; + /** pre-parse any match statements */ - var addMethod$1 = function addMethod(Doc) { - /** */ - var Verbs = /*#__PURE__*/function (_Doc) { - _inherits(Verbs, _Doc); - var _super = _createSuper(Verbs); + nlp.parseMatch = function (str, opts) { + return parseMatch(str, opts); + }; + /** current version of the library */ - function Verbs() { - _classCallCheck(this, Verbs); - return _super.apply(this, arguments); - } + nlp.version = version; // aliases - return Verbs; - }(Doc); // add-in our methods + nlp.import = nlp.load; + nlp.plugin = nlp.extend; + return nlp; + } + var src = instance(new World()); + return src; + }); + })(compromise); - Object.assign(Verbs.prototype, methods$1); // aliases + const fromTemplate$1 = function (doc) { + let tmpl = doc.template('short description'); - Verbs.prototype.negate = Verbs.prototype.toNegative; + if (tmpl) { + let json = tmpl.json() || {}; + return json.description || ''; + } - Doc.prototype.verbs = function (n) { - var match = this.match('(#Adverb|#Auxiliary|#Verb|#Negative|#Particle)+'); // try to ignore leading and trailing adverbs + return null; + }; - match = match.not('^#Adverb+'); - match = match.not('#Adverb+$'); // handle commas: - // don't split 'really, really' + var template = fromTemplate$1; - var keep = match.match('(#Adverb && @hasComma) #Adverb'); // // but split the other commas + const preProcess$1 = function (doc) { + doc.parentheses().remove(); + return doc; + }; - var m = match.not(keep).splitAfter('@hasComma'); // i was shocked looking at... + var _00PreProcess = preProcess$1; - var gerund = m.match('#PastTense #Gerund'); + const cleanUp = function (s) { + // 'an actor and was a politician' + s.remove('and #Copula .*'); + return s; + }; // founded in 1952 as the flagship .. - if (!gerund.has('(been|am|#Auxiliary) #Gerund')) { - m = m.splitBefore(gerund.match('#Gerund')); - } // combine them back together + const findPivot$1 = function (s) { + let m = s.matchOne('#Copula+ (a|an|the|any|one) of?'); - m = m.concat(keep); - m.sort('index'); //handle slashes? - //ensure there's actually a verb + if (!m.found) { + m = s.matchOne('#Copula+'); + } - m = m["if"]('#Verb'); // the reason he will is ... + if (!m.found) { + m = s.matchOne('refers to (a|an|the|any)? of?'); + } - if (m.has('(is|was)$')) { - m = m.splitBefore('(is|was)$'); - } //ensure it's not two verbs + if (!m.found) { + m = s.matchOne('(constitutes|describes) (a|an|the|any)? of?'); + } + if (!m.found) { + return null; + } - if (m.has('#PresentTense #Adverb #PresentTense')) { - m = m.splitBefore('#Adverb #PresentTense'); - } //grab (n)th result + let f = s.splitOn(m); + let verb = f.eq(1); + let article = verb.match("(a|an|the|any)? of?"); + verb.remove("(a|an|the|any)? of?"); + return { + before: f.eq(0), + verb: f.eq(1), + article: article, + after: cleanUp(f.eq(2)) + }; + }; + var _01Pivot = findPivot$1; - if (typeof n === 'number') { - m = m.get(n); - } + const byClause$1 = function (s) { + // 'an actor and also a politician' + s.remove('and (also|eventually) (a|an|the|#Possessive) .*'); // 'an actor who was a politician' - var vb = new Verbs(m.list, this, this.world); - return vb; - }; + s.remove('!of (who|that|which) #Adverb? (#Copula|form|comprise|forms|comprises) .*'); // past-tense verbs 'located in spain' - return Doc; - }; + s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*'); // - var Verbs = addMethod$1; + s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*'); + return s; + }; - var addMethod = function addMethod(Doc) { - /** */ - var People = /*#__PURE__*/function (_Doc) { - _inherits(People, _Doc); + var _02ByClause = byClause$1; - var _super = _createSuper(People); + const safeCuts = function (s) { + // 'in hamilton, Canada' + if (s.has('(#Place && @hasComma) #Country+$')) { + s.remove('#Country+$'); + } // 'which spans the ' - function People() { - _classCallCheck(this, People); - return _super.apply(this, arguments); - } + if (s.has('#Noun (that|which|who) #PresentTense the .*')) { + s.remove(' that #PresentTense the .*'); + } // 'owned by the ...' - return People; - }(Doc); - Doc.prototype.people = function (n) { - var match = this.splitAfter('@hasComma'); - match = match.match('#Person+'); //grab (n)th result + if (s.has('#Noun #PastTense by the .*')) { + s.remove('#PastTense by the .*'); + } // 'an american actress' - if (typeof n === 'number') { - match = match.get(n); - } - return new People(match.list, this, this.world); - }; + s.remove('#Demonym'); // professional hockey player - return Doc; - }; + s.remove('(professional|former)'); //event-templates - var People = addMethod; - var subclass = [Abbreviations, Acronyms, Clauses, Contractions, Lists, Nouns, Parentheses, Possessives, Quotations, Verbs, People]; + s.remove('and? held annually .*'); + s.remove('taking place each .*'); // ordinal templates - the fifth fastest .. - var extend = function extend(Doc) { - // add basic methods - Object.keys(_simple).forEach(function (k) { - return Doc.prototype[k] = _simple[k]; - }); // add subclassed methods + s.remove('^one of (the|many|several|#Value)+'); + s.remove('^(a|an|the)? #Ordinal? #Superlative'); + s.remove('^(a|an|the)? #Ordinal? most #Adjective'); // - subclass.forEach(function (addFn) { - return addFn(Doc); - }); - return Doc; - }; + s.remove('born in .*'); + s.remove('born #Date+ in? #Place+?'); + s.remove('(first|initially|originally)? (located|founded|started|based|formed) in .*'); + s.remove('(which|who|that) (is|was) .*'); + s.remove('^the name of'); + return s; + }; - var Subset = extend; - var methods = { - misc: methods$4, - selections: _simple - }; - /** a parsed text object */ + var _03SafeCuts = safeCuts; - var Doc = /*#__PURE__*/function () { - function Doc(list, from, world) { - var _this = this; + const isIndependent = function (c) { + if (c.has('^(and|the|which|who|whom|also|a|an|the)')) { + return true; + } // 'part of abu dabi' - _classCallCheck(this, Doc); - this.list = list; // this.reasons = [] - //quiet these properties in console.logs + if (c.has('^(west|north|south|east|part) of')) { + return true; + } // 'written by .' - Object.defineProperty(this, 'from', { - enumerable: false, - value: from, - writable: true - }); //borrow some missing data from parent - if (world === undefined && from !== undefined) { - world = from.world; - } //'world' getter + if (c.has('^#PastTense by .')) { + return true; + } // 'sometimes called ..' - Object.defineProperty(this, 'world', { - enumerable: false, - value: world, - writable: true - }); //fast-scans for our data + if (c.has('^(occasionally|sometimes|frequently)')) { + return true; + } // 'such as ..' - Object.defineProperty(this, '_cache', { - enumerable: false, - writable: true, - value: {} - }); //'found' getter - Object.defineProperty(this, 'found', { - get: function get() { - return _this.list.length > 0; - } - }); //'length' getter + if (c.has('^such as')) { + return true; + } // 'featuring gold feathers ..' - Object.defineProperty(this, 'length', { - get: function get() { - return _this.list.length; - } - }); // this is way easier than .constructor.name... - - Object.defineProperty(this, 'isA', { - get: function get() { - return 'Doc'; - } - }); - } - /** run part-of-speech tagger on all results*/ + if (c.has('^(including|featuring|depicting)')) { + return true; + } - _createClass(Doc, [{ - key: "tagger", - value: function tagger() { - return _02Tagger(this); - } - /** pool is stored on phrase objects */ - - }, { - key: "pool", - value: function pool() { - if (this.list.length > 0) { - return this.list[0].pool; - } - - return this.all().list[0].pool; - } - }]); + return false; + }; - return Doc; - }(); - /** create a new Document object */ - - - Doc.prototype.buildFrom = function (list) { - list = list.map(function (p) { - return p.clone(true); - }); // new this.constructor() - - var doc = new Doc(list, this, this.world); - return doc; - }; - /** create a new Document from plaintext. */ + const hardCuts = function (s) { + // .. in san fransisco + if (s.has('#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$')) { + s.remove('(located|based) in #Place+$'); + } else if (s.has('(#Noun|#Value) (in|on) the #Adjective? (region|province|district|coast|city) of #Place+$')) { + s.remove('(in|on) the #Adjective? (region|province|district|coast|city) of #Place+$'); + } else if (s.has('(#Noun|#Value) in #Place+$')) { + s.remove('in #Place+$'); + } else { + s.remove('and? part of #Place+$'); + s.remove('and? near #Place+$'); + } // by clause - Doc.prototype.fromText = function (str) { - var list = _01Tokenizer(str, this.world, this.pool()); + let clauses = s.clauses(); - return this.buildFrom(list); - }; + if (clauses.length > 1) { + let first = clauses.eq(0); + let second = clauses.eq(1); //can we just choose the first clause? - Object.assign(Doc.prototype, methods.misc); - Object.assign(Doc.prototype, methods.selections); //add sub-classes + if (isIndependent(second)) { + s = clauses.eq(0); + } else if (second.has('^(#PastTense)') && first.has('(#Noun|#Value)$')) { + // 'produced by...' + s = clauses.eq(0); + } else if (second.has('^(#Gerund)') && first.has('#Noun$')) { + // 'featuring a ...' + s = clauses.eq(0); + } else { + // can we remove the last clause, atleast? + let last = clauses.last(); - Subset(Doc); //aliases + if (isIndependent(last)) { + clauses.list.pop(); + s = clauses.join(); + } + } + } //.. writen by sandro leonardo - var aliases = { - untag: 'unTag', - and: 'match', - notIf: 'ifNo', - only: 'if', - onlyIf: 'if' - }; - Object.keys(aliases).forEach(function (k) { - return Doc.prototype[k] = Doc.prototype[aliases[k]]; - }); - var Doc_1 = Doc; - var smallTagger = function smallTagger(doc) { - var terms = doc.termList(); + if (s.has('(#Noun|and) #PastTense by')) { + s.remove('#PastTense by .*'); + } // - _01Lexicon(terms, doc.world); // run any user-given tagger functions + s.remove('and? designed to .*'); + s.remove('and? owned by .*'); + s.remove('and? consisting of .*'); // , which collapsed - doc.world.taggers.forEach(function (fn) { - fn(doc); - }); - return doc; - }; + if (s.has('@hasComma (which|who) #Verb')) { + s.remove('(which|who) .*'); + } // , then + // if (s.has('@hasComma (then)')) { + // s.remove('(which|who) .*') + // } - var tiny = smallTagger; - function instance(worldInstance) { - //blast-out our word-lists, just once - var world = worldInstance; - /** parse and tag text into a compromise object */ + return s; + }; - var nlp = function nlp() { - var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var lexicon = arguments.length > 1 ? arguments[1] : undefined; + var _04HardCuts = hardCuts; - if (lexicon) { - world.addWords(lexicon); - } + const lastTry$1 = function (s) { + s.remove('(small|large|minor|major)'); + s.remove('(extinct|retired|annual|biweekly|monthly|daily)'); + s.remove('(female|male)'); + s.remove('(private|independent|official|unofficial|officially)'); + s.remove('(southern|northern|eastern|western|northeastern|northwestern)'); // - var list = _01Tokenizer(text, world); + s.remove('^(family|clade|genus|species|order) of'); + return s; + }; - var doc = new Doc_1(list, null, world); - doc.tagger(); - return doc; - }; - /** parse text into a compromise object, without running POS-tagging */ + var _05LastTry = lastTry$1; + const isGood$1 = function (doc, options) { + if (doc && typeof doc.text === 'function') { + let text = doc.text(); - nlp.tokenize = function () { - var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var lexicon = arguments.length > 1 ? arguments[1] : undefined; - var w = world; + if (text && text.length > options.min && text.length < options.max) { + return true; + } + } - if (lexicon) { - w = w.clone(); - w.words = {}; - w.addWords(lexicon); - } + return false; + }; - var list = _01Tokenizer(text, w); + var _isGood = isGood$1; - var doc = new Doc_1(list, null, w); + const nlp$2 = compromise.exports; + const preProcess = _00PreProcess; + const findPivot = _01Pivot; + const byClause = _02ByClause; + const safeCut = _03SafeCuts; + const hardCut = _04HardCuts; + const lastTry = _05LastTry; + const isGood = _isGood; - if (lexicon || doc.world.taggers.length > 0) { - tiny(doc); - } + const post = function (s) { + s.remove('^(and|or|but)'); + s.remove('(and|or|but)$'); + s.post(''); // remove trailing comma - return doc; - }; - /** mix in a compromise-plugin */ + return s.text(); + }; // let count = 0 - nlp.extend = function (fn) { - fn(Doc_1, world, this, Phrase_1, Term_1, Pool_1); - return this; - }; - /** create a compromise Doc object from .json() results */ + const doSentence = function (doc, options) { + let sentence = doc.sentence(0); + if (!sentence) { + return ''; + } - nlp.fromJSON = function (json) { - var list = fromJSON_1(json, world); - return new Doc_1(list, null, world); - }; - /** make a deep-copy of the library state */ + let txt = sentence.text(); + let s = nlp$2(txt); + preProcess(s); + let pivot = findPivot(s); // if we can't pivot it properly, don't bother + if (!pivot || !pivot.verb || !pivot.verb.found) { + return ''; + } - nlp.clone = function () { - return instance(world.clone()); - }; - /** log our decision-making for debugging */ + let after = pivot.after; + if (options.article && pivot.article && pivot.article.found) { + after.prepend(pivot.article.text()); + } // maybe it's good already - nlp.verbose = function () { - var bool = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - world.verbose(bool); - return this; - }; - /** grab currently-used World object */ + if (isGood(after, options)) { + return post(after); + } // parse major chunks - nlp.world = function () { - return world; - }; - /** pre-parse any match statements */ + after = byClause(after); - nlp.parseMatch = function (str, opts) { - return matchSyntax(str, opts); - }; - /** current version of the library */ + if (isGood(after, options)) { + return post(after); + } // perform some modifications - nlp.version = _version; // aliases + after = safeCut(after); - nlp["import"] = nlp.load; - nlp.plugin = nlp.extend; - return nlp; - } + if (isGood(after, options)) { + return post(after); + } // really give it a go - var src$1 = instance(new World_1()); - var compromise = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': src$1 - }); + after = hardCut(after); - const fromTemplate = function (doc) { - let tmpl = doc.template('short description'); + if (isGood(after, options)) { + return post(after); + } // atleast we tried - if (tmpl) { - let json = tmpl.json() || {}; - return json.description || ''; - } - return null; - }; + after = lastTry(after); - var template = fromTemplate; + if (isGood(after, options)) { + return post(after); + } // console.log(after.text()) + // count += 1 + // console.log(count) + // console.log(after.match('#PastTense').text()) + // console.log(after.text()) + // console.log('\n') - const preProcess = function (doc) { - doc.parentheses().remove(); - return doc; - }; - var _00PreProcess = preProcess; + return ''; + }; - const cleanUp = function (s) { - // 'an actor and was a politician' - s.remove('and #Copula .*'); - return s; - }; // founded in 1952 as the flagship .. + var sentence = doSentence; + const bad$1 = ['living', 'births', 'former', 'deceased', 'missing', 'with', 'descent', 'award', 'winners', 'nominees', 'alumni', 'other'].map(str => new RegExp("\\b".concat(str, "\\b"), 'i')); + const good$1 = ['male', 'female'].map(str => new RegExp("\\b".concat(str, "\\b"), 'i')); + const like$1 = ['male', 'female', 'century'].map(str => new RegExp("\\b".concat(str, "\\b"), 'i')); + const dislike$1 = ['people', 'place', 'from', 'in', 'people from'].map(str => new RegExp("\\b".concat(str, "\\b")), 'i'); + var regs = { + good: good$1, + bad: bad$1, + like: like$1, + dislike: dislike$1 + }; - const findPivot = function (s) { - let m = s.matchOne('#Copula+ (a|an|the|any|one) of?'); + const { + like, + dislike, + good, + bad + } = regs; + const hasYear = /[0-9]{4}/; + const isPlural = /s$/; - if (!m.found) { - m = s.matchOne('#Copula+'); - } + const fromCategory$1 = function (doc) { + let cats = doc.categories(); // try to focus on the best ones, first - if (!m.found) { - m = s.matchOne('refers to (a|an|the|any)? of?'); - } + let tmp = cats.filter(cat => { + return good.find(reg => reg.test(cat)); + }); - if (!m.found) { - m = s.matchOne('(constitutes|describes) (a|an|the|any)? of?'); - } + if (tmp.length > 0) { + cats = tmp; + } // remove bad ones - if (!m.found) { - return null; - } - let f = s.splitOn(m); - let verb = f.eq(1); - let article = verb.match(`(a|an|the|any)? of?`); - verb.remove(`(a|an|the|any)? of?`); - return { - before: f.eq(0), - verb: f.eq(1), - article: article, - after: cleanUp(f.eq(2)) - }; - }; + cats = cats.filter(cat => { + if (bad.find(reg => reg.test(cat))) { + return false; + } - var _01Pivot = findPivot; + if (hasYear.test(cat)) { + return false; + } - const byClause = function (s) { - // 'an actor and also a politician' - s.remove('and (also|eventually) (a|an|the|#Possessive) .*'); // 'an actor who was a politician' + return true; + }); - s.remove('!of (who|that|which) #Adverb? (#Copula|form|comprise|forms|comprises) .*'); // past-tense verbs 'located in spain' + if (cats.length === 0) { + return ''; + } // look at sorting by preferences - s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*'); // - s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*'); - return s; - }; + tmp = cats.filter(cat => { + return like.find(reg => reg.test(cat)); + }); - var _02ByClause = byClause; + if (tmp.length > 0) { + cats = tmp; + } // remove disliked ones - const safeCuts = function (s) { - // 'in hamilton, Canada' - if (s.has('(#Place && @hasComma) #Country+$')) { - s.remove('#Country+$'); - } // 'which spans the ' + tmp = cats.filter(cat => { + // not a plural ending + if (isPlural.test(cat) === false) { + return false; + } // just one word - if (s.has('#Noun (that|which|who) #PresentTense the .*')) { - s.remove(' that #PresentTense the .*'); - } // 'owned by the ...' + if (cat.slice(' ').length === 1) { + return false; + } - if (s.has('#Noun #PastTense by the .*')) { - s.remove('#PastTense by the .*'); - } // 'an american actress' + return dislike.find(reg => reg.test(cat)) === undefined; + }); + if (tmp.length > 0) { + cats = tmp; + } // sort them by most words - s.remove('#Demonym'); // professional hockey player - s.remove('(professional|former)'); //event-templates + cats = cats.sort((a, b) => { + let aWords = a.split(' ').length; + let bWords = b.split(' ').length; - s.remove('and? held annually .*'); - s.remove('taking place each .*'); // ordinal templates - the fifth fastest .. + if (aWords > bWords) { + return -1; + } else if (aWords < bWords) { + return 1; + } - s.remove('^one of (the|many|several|#Value)+'); - s.remove('^(a|an|the)? #Ordinal? #Superlative'); - s.remove('^(a|an|the)? #Ordinal? most #Adjective'); // + return 0; + }); // console.log(cats) - s.remove('born in .*'); - s.remove('born #Date+ in? #Place+?'); - s.remove('(first|initially|originally)? (located|founded|started|based|formed) in .*'); - s.remove('(which|who|that) (is|was) .*'); - s.remove('^the name of'); - return s; - }; + return cats[0]; + }; - var _03SafeCuts = safeCuts; + var _01Choose = fromCategory$1; - const isIndependent = function (c) { - if (c.has('^(and|the|which|who|whom|also|a|an|the)')) { - return true; - } // 'part of abu dabi' + const nlp$1 = compromise.exports; + const useAn = function (str) { + const a_regexs = [/^onc?e/i, //'wu' sound of 'o' + /^u[bcfhjknq-t][aeiou]/i, // 'yu' sound for hard 'u' + /^eul/i]; - if (c.has('^(west|north|south|east|part) of')) { - return true; - } // 'written by .' + for (let i = 0; i < a_regexs.length; i++) { + if (a_regexs[i].test(str)) { + return false; + } + } //basic vowel-startings - if (c.has('^#PastTense by .')) { - return true; - } // 'sometimes called ..' + if (/^[aeiou]/i.test(str)) { + return true; + } + return false; + }; // 'American songwriters' to 'an American songwriter' - if (c.has('^(occasionally|sometimes|frequently)')) { - return true; - } // 'such as ..' + const changeCat = function (cat, options) { + let c = nlp$1(cat); + c.nouns().toSingular(); // add article to the front - if (c.has('^such as')) { - return true; - } // 'featuring gold feathers ..' + if (options.article) { + let article = 'A'; // let noun = c.nouns(0) + if (useAn(cat) === true) { + // console.log(c.nouns(0)) + // article = c.nouns(0).json({ terms: false })[0].article || article + article = 'An'; + } - if (c.has('^(including|featuring|depicting)')) { - return true; - } + let first = c.terms(0); - return false; - }; + if (first.has('#ProperNoun') === false) { + first.toLowerCase(); + } - const hardCuts = function (s) { - // .. in san fransisco - if (s.has('#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$')) { - s.remove('(located|based) in #Place+$'); - } else if (s.has('(#Noun|#Value) (in|on) the #Adjective? (region|province|district|coast|city) of #Place+$')) { - s.remove('(in|on) the #Adjective? (region|province|district|coast|city) of #Place+$'); - } else if (s.has('(#Noun|#Value) in #Place+$')) { - s.remove('in #Place+$'); - } else { - s.remove('and? part of #Place+$'); - s.remove('and? near #Place+$'); - } // by clause + c.prepend(article); + } // remove any parentheses - let clauses = s.clauses(); + c.parentheses().remove(); + return c.text(); + }; - if (clauses.length > 1) { - let first = clauses.eq(0); - let second = clauses.eq(1); //can we just choose the first clause? + var _02Change = changeCat; - if (isIndependent(second)) { - s = clauses.eq(0); - } else if (second.has('^(#PastTense)') && first.has('(#Noun|#Value)$')) { - // 'produced by...' - s = clauses.eq(0); - } else if (second.has('^(#Gerund)') && first.has('#Noun$')) { - // 'featuring a ...' - s = clauses.eq(0); - } else { - // can we remove the last clause, atleast? - let last = clauses.last(); + const chooseCat = _01Choose; + const change = _02Change; - if (isIndependent(last)) { - clauses.list.pop(); - s = clauses.join(); - } - } - } //.. writen by sandro leonardo + const byCategory = function (doc, options) { + let cat = chooseCat(doc); + if (!cat) { + return ''; + } - if (s.has('(#Noun|and) #PastTense by')) { - s.remove('#PastTense by .*'); - } // + return change(cat, options); + }; + var category = byCategory; - s.remove('and? designed to .*'); - s.remove('and? owned by .*'); - s.remove('and? consisting of .*'); // , which collapsed + const nlp = compromise.exports; + const fromTemplate = template; + const fromSentence = sentence; + const fromCategory = category; + const defaults = { + article: true, + template: true, + sentence: true, + category: true, + max: 80, + min: 3 + }; - if (s.has('@hasComma (which|who) #Verb')) { - s.remove('(which|who) .*'); - } // , then - // if (s.has('@hasComma (then)')) { - // s.remove('(which|who) .*') - // } + const seemsGood = function (txt, options) { + return txt && txt.length > 5 && txt.length < options.max; + }; + const plugin = function (models) { + // add a new method to main class + models.Doc.prototype.summary = function (options) { + let doc = this; + options = options || {}; + options = Object.assign({}, defaults, options); // generate from {{short description}} template - return s; - }; + let txt = ''; - var _04HardCuts = hardCuts; + if (options.template) { + txt = fromTemplate(doc); - const lastTry = function (s) { - s.remove('(small|large|minor|major)'); - s.remove('(extinct|retired|annual|biweekly|monthly|daily)'); - s.remove('(female|male)'); - s.remove('(private|independent|official|unofficial|officially)'); - s.remove('(southern|northern|eastern|western|northeastern|northwestern)'); // + if (seemsGood(txt, options)) { + return txt.trim(); + } + } // generate from first-sentence - s.remove('^(family|clade|genus|species|order) of'); - return s; - }; - var _05LastTry = lastTry; + if (options.sentence) { + txt = fromSentence(doc, options); - //check text is appropriate length - const isGood = function (doc, options) { - if (doc && typeof doc.text === 'function') { - let text = doc.text(); + if (seemsGood(txt, options)) { + return txt.trim(); + } + } - if (text && text.length > options.min && text.length < options.max) { - return true; - } - } + if (options.category) { + return fromCategory(doc, options); + } - return false; - }; + return ''; + }; // should we use 'it', 'he', 'they'... - var _isGood = isGood; - function getCjsExportFromNamespace (n) { - return n && n['default'] || n; - } + models.Doc.prototype.article = function () { + let txt = ''; // prefer the 2nd sentence - var nlp = getCjsExportFromNamespace(compromise); + if (this.sentence(1)) { + txt = this.sentence(1).text(); + } else { + txt = this.sentence(0).text(); + } - const post = function (s) { - s.remove('^(and|or|but)'); - s.remove('(and|or|but)$'); - s.post(''); // remove trailing comma + let doc = nlp(txt); + let found = doc.match('(#Pronoun|#Article)').eq(0).text().toLowerCase(); + return found || 'it'; + }; // was event in past? is person dead? - return s.text(); - }; // let count = 0 + models.Doc.prototype.tense = function () { + let txt = this.sentence().text(); + let doc = nlp(txt); + let copula = doc.match('#Copula+').first(); - const doSentence = function (doc, options) { - let sentence = doc.sentence(0); + if (copula.has('was')) { + return 'Past'; + } - if (!sentence) { - return ''; - } + let vb = doc.verbs(0); - let txt = sentence.text(); - let s = nlp(txt); - _00PreProcess(s); - let pivot = _01Pivot(s); // if we can't pivot it properly, don't bother + if (vb.has('#PastTense')) { + return 'Past'; + } - if (!pivot || !pivot.verb || !pivot.verb.found) { - return ''; - } + if (doc.has('will #Adverb? be') || doc.has('(a|an) (upcoming|planned)')) { + return 'Future'; + } - let after = pivot.after; + return 'Present'; + }; + }; - if (options.article && pivot.article && pivot.article.found) { - after.prepend(pivot.article.text()); - } // maybe it's good already + var src = plugin; + return src; - if (_isGood(after, options)) { - return post(after); - } // parse major chunks - - - after = _02ByClause(after); - - if (_isGood(after, options)) { - return post(after); - } // perform some modifications - - - after = _03SafeCuts(after); - - if (_isGood(after, options)) { - return post(after); - } // really give it a go - - - after = _04HardCuts(after); - - if (_isGood(after, options)) { - return post(after); - } // atleast we tried - - - after = _05LastTry(after); - - if (_isGood(after, options)) { - return post(after); - } // console.log(after.text()) - // count += 1 - // console.log(count) - // console.log(after.match('#PastTense').text()) - // console.log(after.text()) - // console.log('\n') - - - return ''; - }; - - var sentence = doSentence; - - const bad$1 = ['living', 'births', 'former', 'deceased', 'missing', 'with', 'descent', 'award', 'winners', 'nominees', 'alumni', 'other'].map(str => new RegExp(`\\b${str}\\b`, 'i')); - const good$1 = ['male', 'female'].map(str => new RegExp(`\\b${str}\\b`, 'i')); - const like$1 = ['male', 'female', 'century'].map(str => new RegExp(`\\b${str}\\b`, 'i')); - const dislike$1 = ['people', 'place', 'from', 'in', 'people from'].map(str => new RegExp(`\\b${str}\\b`), 'i'); - var regs = { - good: good$1, - bad: bad$1, - like: like$1, - dislike: dislike$1 - }; - - const { - like, - dislike, - good, - bad - } = regs; - const hasYear = /[0-9]{4}/; - const isPlural = /s$/; - - const fromCategory = function (doc) { - let cats = doc.categories(); // try to focus on the best ones, first - - let tmp = cats.filter(cat => { - return good.find(reg => reg.test(cat)); - }); - - if (tmp.length > 0) { - cats = tmp; - } // remove bad ones - - - cats = cats.filter(cat => { - if (bad.find(reg => reg.test(cat))) { - return false; - } - - if (hasYear.test(cat)) { - return false; - } - - return true; - }); - - if (cats.length === 0) { - return ''; - } // look at sorting by preferences - - - tmp = cats.filter(cat => { - return like.find(reg => reg.test(cat)); - }); - - if (tmp.length > 0) { - cats = tmp; - } // remove disliked ones - - - tmp = cats.filter(cat => { - // not a plural ending - if (isPlural.test(cat) === false) { - return false; - } // just one word - - - if (cat.slice(' ').length === 1) { - return false; - } - - return dislike.find(reg => reg.test(cat)) === undefined; - }); - - if (tmp.length > 0) { - cats = tmp; - } // sort them by most words - - - cats = cats.sort((a, b) => { - let aWords = a.split(' ').length; - let bWords = b.split(' ').length; - - if (aWords > bWords) { - return -1; - } else if (aWords < bWords) { - return 1; - } - - return 0; - }); // console.log(cats) - - return cats[0]; - }; - - var _01Choose = fromCategory; - - const useAn = function (str) { - const a_regexs = [/^onc?e/i, //'wu' sound of 'o' - /^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u' - /^eul/i]; - - for (let i = 0; i < a_regexs.length; i++) { - if (a_regexs[i].test(str)) { - return false; - } - } //basic vowel-startings - - - if (/^[aeiou]/i.test(str)) { - return true; - } - - return false; - }; // 'American songwriters' to 'an American songwriter' - - - const changeCat = function (cat, options) { - let c = nlp(cat); - c.nouns().toSingular(); // add article to the front - - if (options.article) { - let article = 'A'; // let noun = c.nouns(0) - - if (useAn(cat) === true) { - // console.log(c.nouns(0)) - // article = c.nouns(0).json({ terms: false })[0].article || article - article = 'An'; - } - - let first = c.terms(0); - - if (first.has('#ProperNoun') === false) { - first.toLowerCase(); - } - - c.prepend(article); - } // remove any parentheses - - - c.parentheses().remove(); - return c.text(); - }; - - var _02Change = changeCat; - - const byCategory = function (doc, options) { - let cat = _01Choose(doc); - - if (!cat) { - return ''; - } - - return _02Change(cat, options); - }; - - var category = byCategory; - - const defaults = { - article: true, - template: true, - sentence: true, - category: true, - max: 80, - min: 3 - }; - - const seemsGood = function (txt, options) { - return txt && txt.length > 5 && txt.length < options.max; - }; - - const plugin = function (models) { - // add a new method to main class - models.Doc.prototype.summary = function (options) { - let doc = this; - options = options || {}; - options = Object.assign({}, defaults, options); // generate from {{short description}} template - - let txt = ''; - - if (options.template) { - txt = template(doc); - - if (seemsGood(txt, options)) { - return txt.trim(); - } - } // generate from first-sentence - - - if (options.sentence) { - txt = sentence(doc, options); - - if (seemsGood(txt, options)) { - return txt.trim(); - } - } - - if (options.category) { - return category(doc, options); - } - - return ''; - }; // should we use 'it', 'he', 'they'... - - - models.Doc.prototype.article = function () { - let txt = ''; // prefer the 2nd sentence - - if (this.sentence(1)) { - txt = this.sentence(1).text(); - } else { - txt = this.sentence(0).text(); - } - - let doc = nlp(txt); - let found = doc.match('(#Pronoun|#Article)').eq(0).text().toLowerCase(); - return found || 'it'; - }; // was event in past? is person dead? - - - models.Doc.prototype.tense = function () { - let txt = this.sentence().text(); - let doc = nlp(txt); - let copula = doc.match('#Copula+').first(); - - if (copula.has('was')) { - return 'Past'; - } - - let vb = doc.verbs(0); - - if (vb.has('#PastTense')) { - return 'Past'; - } - - if (doc.has('will #Adverb? be') || doc.has('(a|an) (upcoming|planned)')) { - return 'Future'; - } - - return 'Present'; - }; - }; - - var src = plugin; - - return src; - -}))); +})); //# sourceMappingURL=wtf-plugin-summary.js.map diff --git a/plugins/summary/builds/wtf-plugin-summary.js.map b/plugins/summary/builds/wtf-plugin-summary.js.map index ad213369..e1aa9e4b 100644 --- a/plugins/summary/builds/wtf-plugin-summary.js.map +++ b/plugins/summary/builds/wtf-plugin-summary.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-summary.js","sources":["../node_modules/compromise/builds/compromise.mjs","../src/template/index.js","../src/sentence/00-preProcess.js","../src/sentence/01-pivot.js","../src/sentence/02-byClause.js","../src/sentence/03-safeCuts.js","../src/sentence/04-hardCuts.js","../src/sentence/05-lastTry.js","../src/sentence/_isGood.js","../src/sentence/index.js","../src/category/regs.js","../src/category/01-choose.js","../src/category/02-change.js","../src/category/index.js","../src/index.js"],"sourcesContent":["/* compromise 13.10.5 MIT */\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\n//this is a not-well-thought-out way to reduce our dependence on `object===object` stuff\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.split(''); //generates a unique id for this term\n\nfunction makeId(str) {\n str = str || '_';\n var text = str + '-';\n\n for (var i = 0; i < 7; i++) {\n text += chars[Math.floor(Math.random() * chars.length)];\n }\n\n return text;\n}\n\nvar _id = makeId;\n\n//a hugely-ignorant, and widely subjective transliteration of latin, cryllic, greek unicode characters to english ascii.\n//approximate visual (not semantic or phonetic) relationship between unicode and ascii characters\n//http://en.wikipedia.org/wiki/List_of_Unicode_characters\n//https://docs.google.com/spreadsheet/ccc?key=0Ah46z755j7cVdFRDM1A2YVpwa1ZYWlpJM2pQZ003M0E\nvar compact = {\n '!': '¡',\n '?': '¿Ɂ',\n '\"': '“”\"❝❞',\n \"'\": '‘‛❛❜',\n '-': '—–',\n a: 'ªÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАадѦѧӐӑӒӓƛɅæ',\n b: 'ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ',\n c: '¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼͽϲϹϽϾСсєҀҁҪҫ',\n d: 'ÐĎďĐđƉƊȡƋƌǷ',\n e: 'ÈÉÊËèéêëĒēĔĕĖėĘęĚěƎƏƐǝȄȅȆȇȨȩɆɇΈΕΞΣέεξϱϵ϶ЀЁЕЭеѐёҼҽҾҿӖӗӘәӚӛӬӭ',\n f: 'ƑƒϜϝӺӻҒғſ',\n g: 'ĜĝĞğĠġĢģƓǤǥǦǧǴǵ',\n h: 'ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ',\n I: 'ÌÍÎÏ',\n i: 'ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇії',\n j: 'ĴĵǰȷɈɉϳЈј',\n k: 'ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ',\n l: 'ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ',\n m: 'ΜϺϻМмӍӎ',\n n: 'ÑñŃńŅņŇňʼnŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ',\n o: 'ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϭϴОФоѲѳӦӧӨөӪӫ',\n p: 'ƤƿΡρϷϸϼРрҎҏÞ',\n q: 'Ɋɋ',\n r: 'ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ',\n s: 'ŚśŜŝŞşŠšƧƨȘșȿЅѕ',\n t: 'ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт',\n u: 'µÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰμυϋύ',\n v: 'νѴѵѶѷ',\n w: 'ŴŵƜωώϖϢϣШЩшщѡѿ',\n x: '×ΧχϗϰХхҲҳӼӽӾӿ',\n y: 'ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ',\n z: 'ŹźŻżŽžƩƵƶȤȥɀΖζ'\n}; //decompress data into two hashes\n\nvar unicode = {};\nObject.keys(compact).forEach(function (k) {\n compact[k].split('').forEach(function (s) {\n unicode[s] = k;\n });\n});\n\nvar killUnicode = function killUnicode(str) {\n var chars = str.split('');\n chars.forEach(function (s, i) {\n if (unicode[s]) {\n chars[i] = unicode[s];\n }\n });\n return chars.join('');\n};\n\nvar unicode_1 = killUnicode; // console.log(killUnicode('bjŏȒk—Ɏó'));\n\nvar periodAcronym = /([A-Z]\\.)+[A-Z]?,?$/;\nvar oneLetterAcronym$1 = /^[A-Z]\\.,?$/;\nvar noPeriodAcronym = /[A-Z]{2,}('s|,)?$/;\nvar lowerCaseAcronym = /([a-z]\\.)+[a-z]\\.?$/;\n\nvar isAcronym$2 = function isAcronym(str) {\n //like N.D.A\n if (periodAcronym.test(str) === true) {\n return true;\n } //like c.e.o\n\n\n if (lowerCaseAcronym.test(str) === true) {\n return true;\n } //like 'F.'\n\n\n if (oneLetterAcronym$1.test(str) === true) {\n return true;\n } //like NDA\n\n\n if (noPeriodAcronym.test(str) === true) {\n return true;\n }\n\n return false;\n};\n\nvar isAcronym_1$1 = isAcronym$2;\n\nvar hasSlash$1 = /[a-z\\u00C0-\\u00FF] ?\\/ ?[a-z\\u00C0-\\u00FF]/;\n/** some basic operations on a string to reduce noise */\n\nvar clean = function clean(str) {\n str = str || '';\n str = str.toLowerCase();\n str = str.trim();\n var original = str; //(very) rough ASCII transliteration - bjŏrk -> bjork\n\n str = unicode_1(str); //rough handling of slashes - 'see/saw'\n\n if (hasSlash$1.test(str) === true) {\n str = str.replace(/\\/.*/, '');\n } //#tags, @mentions\n\n\n str = str.replace(/^[#@]/, ''); //punctuation\n\n str = str.replace(/[,;.!?]+$/, ''); // coerce single curly quotes\n\n str = str.replace(/[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]+/g, \"'\"); // coerce double curly quotes\n\n str = str.replace(/[\\u0022\\u00AB\\u00BB\\u201C\\u201D\\u201E\\u201F\\u2033\\u2034\\u2036\\u2037\\u2E42\\u301D\\u301E\\u301F\\uFF02]+/g, '\"'); //coerce Unicode ellipses\n\n str = str.replace(/\\u2026/g, '...'); //en-dash\n\n str = str.replace(/\\u2013/g, '-'); //lookin'->looking (make it easier for conjugation)\n\n str = str.replace(/([aeiou][ktrp])in$/, '$1ing'); //turn re-enactment to reenactment\n\n if (/^(re|un)-?[^aeiou]./.test(str) === true) {\n str = str.replace('-', '');\n } //compact acronyms\n\n\n if (isAcronym_1$1(str)) {\n str = str.replace(/\\./g, '');\n } //strip leading & trailing grammatical punctuation\n\n\n if (/^[:;]/.test(str) === false) {\n str = str.replace(/\\.{3,}$/g, '');\n str = str.replace(/[\",\\.!:;\\?\\)]+$/g, '');\n str = str.replace(/^['\"\\(]+/g, '');\n } // remove zero-width characters\n\n\n str = str.replace(/[\\u200B-\\u200D\\uFEFF]/g, ''); //do this again..\n\n str = str.trim(); //oh shucks,\n\n if (str === '') {\n str = original;\n } //nice-numbers\n\n\n str = str.replace(/([0-9]),([0-9])/g, '$1$2');\n return str;\n};\n\nvar clean_1 = clean; // console.log(normalize('Dr. V Cooper'));\n\n/** reduced is one step further than clean */\nvar reduced = function reduced(str) {\n // remove apostrophes\n str = str.replace(/['’]s$/, '');\n str = str.replace(/s['’]$/, 's');\n return str;\n};\n\nvar reduce = reduced;\n\n//all punctuation marks, from https://en.wikipedia.org/wiki/Punctuation\n//we have slightly different rules for start/end - like #hashtags.\n\nvar startings = /^[ \\n\\t\\.\\[\\](){}⟨⟩:,،、‒–—―…!‹›«»‐\\-?‘’;\\/⁄·&*•^†‡°¡¿※№÷׺ª%‰+−=‱¶′″‴§~\\|‖¦©℗®℠™¤₳฿\\u0022\\uFF02\\u0027\\u201C\\u201F\\u201B\\u201E\\u2E42\\u201A\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F]+/;\nvar endings = /[ \\n\\t\\.'\\[\\](){}⟨⟩:,،、‒–—―…!‹›«»‐\\-?‘’;\\/⁄·&*@•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~\\|‖¦©℗®℠™¤₳฿\\u0022\\uFF02\\u201D\\u00B4\\u301E]+$/; //money = ₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥\n\nvar hasSlash = /\\//;\nvar hasApostrophe = /['’]/;\nvar hasAcronym = /^[a-z]\\.([a-z]\\.)+/i;\nvar minusNumber = /^[-+\\.][0-9]/;\nvar shortYear = /^'[0-9]{2}/;\n/** turn given text into a parsed-up object\n * seperate the 'meat' of the word from the whitespace+punctuation\n */\n\nvar parseTerm = function parseTerm(str) {\n var original = str;\n var pre = '';\n var post = '';\n str = str.replace(startings, function (found) {\n pre = found; // support '-40'\n\n if ((pre === '-' || pre === '+' || pre === '.') && minusNumber.test(str)) {\n pre = '';\n return found;\n } // support years like '97\n\n\n if (pre === \"'\" && shortYear.test(str)) {\n pre = '';\n return found;\n }\n\n return '';\n });\n str = str.replace(endings, function (found) {\n post = found; // keep s-apostrophe - \"flanders'\" or \"chillin'\"\n\n if (hasApostrophe.test(found) && /[sn]['’]$/.test(original) && hasApostrophe.test(pre) === false) {\n post = post.replace(hasApostrophe, '');\n return \"'\";\n } //keep end-period in acronym\n\n\n if (hasAcronym.test(str) === true) {\n post = post.replace(/\\./, '');\n return '.';\n }\n\n return '';\n }); //we went too far..\n\n if (str === '') {\n // do a very mild parse, and hope for the best.\n original = original.replace(/ *$/, function (after) {\n post = after || '';\n return '';\n });\n str = original;\n pre = '';\n post = post;\n } // create the various forms of our text,\n\n\n var clean = clean_1(str);\n var parsed = {\n text: str,\n clean: clean,\n reduced: reduce(clean),\n pre: pre,\n post: post\n }; // support aliases for slashes\n\n if (hasSlash.test(str)) {\n str.split(hasSlash).forEach(function (word) {\n parsed.alias = parsed.alias || {};\n parsed.alias[word.trim()] = true;\n });\n }\n\n return parsed;\n};\n\nvar parse$2 = parseTerm;\n\nfunction createCommonjsModule(fn) {\n var module = { exports: {} };\n\treturn fn(module, module.exports), module.exports;\n}\n\nvar _01Case = createCommonjsModule(function (module, exports) {\n var titleCase = /^[A-Z][a-z'\\u00C0-\\u00FF]/;\n var upperCase = /^[A-Z]+s?$/;\n /** convert all text to uppercase */\n\n exports.toUpperCase = function () {\n this.text = this.text.toUpperCase();\n return this;\n };\n /** convert all text to lowercase */\n\n\n exports.toLowerCase = function () {\n this.text = this.text.toLowerCase();\n return this;\n };\n /** only set the first letter to uppercase\n * leave any existing uppercase alone\n */\n\n\n exports.toTitleCase = function () {\n this.text = this.text.replace(/^ *[a-z\\u00C0-\\u00FF]/, function (x) {\n return x.toUpperCase();\n }); //support unicode?\n\n return this;\n };\n /** if all letters are uppercase */\n\n\n exports.isUpperCase = function () {\n return upperCase.test(this.text);\n };\n /** if the first letter is uppercase, and the rest are lowercase */\n\n\n exports.isTitleCase = function () {\n return titleCase.test(this.text);\n };\n\n exports.titleCase = exports.isTitleCase;\n});\n\nvar _02Punctuation$1 = createCommonjsModule(function (module, exports) {\n // these methods are called with '@hasComma' in the match syntax\n // various unicode quotation-mark formats\n var startQuote = /(\\u0022|\\uFF02|\\u0027|\\u201C|\\u2018|\\u201F|\\u201B|\\u201E|\\u2E42|\\u201A|\\u00AB|\\u2039|\\u2035|\\u2036|\\u2037|\\u301D|\\u0060|\\u301F)/;\n var endQuote = /(\\u0022|\\uFF02|\\u0027|\\u201D|\\u2019|\\u201D|\\u2019|\\u201D|\\u201D|\\u2019|\\u00BB|\\u203A|\\u2032|\\u2033|\\u2034|\\u301E|\\u00B4|\\u301E)/;\n /** search the term's 'post' punctuation */\n\n exports.hasPost = function (punct) {\n return this.post.indexOf(punct) !== -1;\n };\n /** search the term's 'pre' punctuation */\n\n\n exports.hasPre = function (punct) {\n return this.pre.indexOf(punct) !== -1;\n };\n /** does it have a quotation symbol? */\n\n\n exports.hasQuote = function () {\n return startQuote.test(this.pre) || endQuote.test(this.post);\n };\n\n exports.hasQuotation = exports.hasQuote;\n /** does it have a comma? */\n\n exports.hasComma = function () {\n return this.hasPost(',');\n };\n /** does it end in a period? */\n\n\n exports.hasPeriod = function () {\n return this.hasPost('.') === true && this.hasPost('...') === false;\n };\n /** does it end in an exclamation */\n\n\n exports.hasExclamation = function () {\n return this.hasPost('!');\n };\n /** does it end with a question mark? */\n\n\n exports.hasQuestionMark = function () {\n return this.hasPost('?') || this.hasPost('¿');\n };\n /** is there a ... at the end? */\n\n\n exports.hasEllipses = function () {\n return this.hasPost('..') || this.hasPost('…') || this.hasPre('..') || this.hasPre('…');\n };\n /** is there a semicolon after this word? */\n\n\n exports.hasSemicolon = function () {\n return this.hasPost(';');\n };\n /** is there a slash '/' in this word? */\n\n\n exports.hasSlash = function () {\n return /\\//.test(this.text);\n };\n /** a hyphen connects two words like-this */\n\n\n exports.hasHyphen = function () {\n var hyphen = /^(-|–|—)$/;\n return hyphen.test(this.post) || hyphen.test(this.pre);\n };\n /** a dash separates words - like that */\n\n\n exports.hasDash = function () {\n var hyphen = / (-|–|—) /;\n return hyphen.test(this.post) || hyphen.test(this.pre);\n };\n /** is it multiple words combinded */\n\n\n exports.hasContraction = function () {\n return Boolean(this.implicit);\n };\n /** try to sensibly put this punctuation mark into the term */\n\n\n exports.addPunctuation = function (punct) {\n // dont add doubles\n if (punct === ',' || punct === ';') {\n this.post = this.post.replace(punct, '');\n }\n\n this.post = punct + this.post;\n return this;\n };\n});\n\n// fuzzy-match (damerau-levenshtein)\n// Based on tad-lispy /node-damerau-levenshtein\n// https://github.com/tad-lispy/node-damerau-levenshtein/blob/master/index.js\n// count steps (insertions, deletions, substitutions, or transpositions)\nvar editDistance = function editDistance(strA, strB) {\n var aLength = strA.length,\n bLength = strB.length; // fail-fast\n\n if (aLength === 0) {\n return bLength;\n }\n\n if (bLength === 0) {\n return aLength;\n } // If the limit is not defined it will be calculate from this and that args.\n\n\n var limit = (bLength > aLength ? bLength : aLength) + 1;\n\n if (Math.abs(aLength - bLength) > (limit || 100)) {\n return limit || 100;\n } // init the array\n\n\n var matrix = [];\n\n for (var i = 0; i < limit; i++) {\n matrix[i] = [i];\n matrix[i].length = limit;\n }\n\n for (var _i = 0; _i < limit; _i++) {\n matrix[0][_i] = _i;\n } // Calculate matrix.\n\n\n var j, a_index, b_index, cost, min, t;\n\n for (var _i2 = 1; _i2 <= aLength; ++_i2) {\n a_index = strA[_i2 - 1];\n\n for (j = 1; j <= bLength; ++j) {\n // Check the jagged distance total so far\n if (_i2 === j && matrix[_i2][j] > 4) {\n return aLength;\n }\n\n b_index = strB[j - 1];\n cost = a_index === b_index ? 0 : 1; // Step 5\n // Calculate the minimum (much faster than Math.min(...)).\n\n min = matrix[_i2 - 1][j] + 1; // Deletion.\n\n if ((t = matrix[_i2][j - 1] + 1) < min) min = t; // Insertion.\n\n if ((t = matrix[_i2 - 1][j - 1] + cost) < min) min = t; // Substitution.\n // Update matrix.\n\n var shouldUpdate = _i2 > 1 && j > 1 && a_index === strB[j - 2] && strA[_i2 - 2] === b_index && (t = matrix[_i2 - 2][j - 2] + cost) < min;\n\n if (shouldUpdate) {\n matrix[_i2][j] = t;\n } else {\n matrix[_i2][j] = min;\n }\n }\n } // return number of steps\n\n\n return matrix[aLength][bLength];\n}; // score similarity by from 0-1 (steps/length)\n\n\nvar fuzzyMatch = function fuzzyMatch(strA, strB) {\n var minLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;\n\n if (strA === strB) {\n return 1;\n } //don't even bother on tiny strings\n\n\n if (strA.length < minLength || strB.length < minLength) {\n return 0;\n }\n\n var steps = editDistance(strA, strB);\n var length = Math.max(strA.length, strB.length);\n var relative = length === 0 ? 0 : steps / length;\n var similarity = 1 - relative;\n return similarity;\n};\n\nvar _fuzzy = fuzzyMatch; // console.log(fuzzyMatch('test', 'test')) //exact match\n\nvar wrapMatch = function wrapMatch() {};\n/** ignore optional/greedy logic, straight-up term match*/\n\n\nvar doesMatch = function doesMatch(t, reg, index, length) {\n // support id matches\n if (reg.id === t.id) {\n return true;\n } // support '.'\n\n\n if (reg.anything === true) {\n return true;\n } // support '^' (in parentheses)\n\n\n if (reg.start === true && index !== 0) {\n return false;\n } // support '$' (in parentheses)\n\n\n if (reg.end === true && index !== length - 1) {\n return false;\n } //support a text match\n\n\n if (reg.word !== undefined) {\n //match contractions\n if (t.implicit !== null && t.implicit === reg.word) {\n return true;\n } // term aliases for slashes and things\n\n\n if (t.alias !== undefined && t.alias.hasOwnProperty(reg.word)) {\n return true;\n } // support ~ match\n\n\n if (reg.soft === true && reg.word === t.root) {\n return true;\n } // support fuzzy match param\n\n\n if (reg.fuzzy !== undefined) {\n var score = _fuzzy(reg.word, t.reduced);\n\n if (score > reg.fuzzy) {\n return true;\n } // support fuzzy + soft match\n\n\n if (reg.soft === true) {\n score = _fuzzy(reg.word, t.root);\n\n if (score > reg.fuzzy) {\n return true;\n }\n }\n } //match either .clean or .text\n\n\n return reg.word === t.clean || reg.word === t.text || reg.word === t.reduced;\n } //support #Tag\n\n\n if (reg.tag !== undefined) {\n return t.tags[reg.tag] === true;\n } //support @method\n\n\n if (reg.method !== undefined) {\n if (typeof t[reg.method] === 'function' && t[reg.method]() === true) {\n return true;\n }\n\n return false;\n } //support /reg/\n\n\n if (reg.regex !== undefined) {\n return reg.regex.test(t.clean);\n } // support optimized (one|two)\n\n\n if (reg.fastOr !== undefined) {\n if (t.implicit && reg.fastOr.hasOwnProperty(t.implicit) === true) {\n return true;\n }\n\n return reg.fastOr.hasOwnProperty(t.reduced) || reg.fastOr.hasOwnProperty(t.text);\n } //support slower (one|two)\n\n\n if (reg.choices !== undefined) {\n // try to support && operator\n if (reg.operator === 'and') {\n // must match them all\n return reg.choices.every(function (r) {\n return wrapMatch(t, r, index, length);\n });\n } // or must match one\n\n\n return reg.choices.some(function (r) {\n return wrapMatch(t, r, index, length);\n });\n }\n\n return false;\n}; // wrap result for !negative match logic\n\n\nwrapMatch = function wrapMatch(t, reg, index, length) {\n var result = doesMatch(t, reg, index, length);\n\n if (reg.negative === true) {\n return !result;\n }\n\n return result;\n};\n\nvar _doesMatch = wrapMatch;\n\nvar boring = {};\n/** check a match object against this term */\n\nvar doesMatch_1 = function doesMatch_1(reg, index, length) {\n return _doesMatch(this, reg, index, length);\n};\n/** does this term look like an acronym? */\n\n\nvar isAcronym_1 = function isAcronym_1() {\n return isAcronym_1$1(this.text);\n};\n/** is this term implied by a contraction? */\n\n\nvar isImplicit = function isImplicit() {\n return this.text === '' && Boolean(this.implicit);\n};\n/** does the term have at least one good tag? */\n\n\nvar isKnown = function isKnown() {\n return Object.keys(this.tags).some(function (t) {\n return boring[t] !== true;\n });\n};\n/** cache the root property of the term */\n\n\nvar setRoot = function setRoot(world) {\n var transform = world.transforms;\n var str = this.implicit || this.clean;\n\n if (this.tags.Plural) {\n str = transform.toSingular(str, world);\n }\n\n if (this.tags.Verb && !this.tags.Negative && !this.tags.Infinitive) {\n var tense = null;\n\n if (this.tags.PastTense) {\n tense = 'PastTense';\n } else if (this.tags.Gerund) {\n tense = 'Gerund';\n } else if (this.tags.PresentTense) {\n tense = 'PresentTense';\n } else if (this.tags.Participle) {\n tense = 'Participle';\n } else if (this.tags.Actor) {\n tense = 'Actor';\n }\n\n str = transform.toInfinitive(str, world, tense);\n }\n\n this.root = str;\n};\n\nvar _03Misc = {\n doesMatch: doesMatch_1,\n isAcronym: isAcronym_1,\n isImplicit: isImplicit,\n isKnown: isKnown,\n setRoot: setRoot\n};\n\nvar hasSpace$1 = /[\\s-]/;\nvar isUpperCase = /^[A-Z-]+$/; // const titleCase = str => {\n// return str.charAt(0).toUpperCase() + str.substr(1)\n// }\n\n/** return various text formats of this term */\n\nvar textOut = function textOut(options, showPre, showPost) {\n options = options || {};\n var word = this.text;\n var before = this.pre;\n var after = this.post; // -word-\n\n if (options.reduced === true) {\n word = this.reduced || '';\n }\n\n if (options.root === true) {\n word = this.root || '';\n }\n\n if (options.implicit === true && this.implicit) {\n word = this.implicit || '';\n }\n\n if (options.normal === true) {\n word = this.clean || this.text || '';\n }\n\n if (options.root === true) {\n word = this.root || this.reduced || '';\n }\n\n if (options.unicode === true) {\n word = unicode_1(word);\n } // cleanup case\n\n\n if (options.titlecase === true) {\n if (this.tags.ProperNoun && !this.titleCase()) ; else if (this.tags.Acronym) {\n word = word.toUpperCase(); //uppercase acronyms\n } else if (isUpperCase.test(word) && !this.tags.Acronym) {\n // lowercase everything else\n word = word.toLowerCase();\n }\n }\n\n if (options.lowercase === true) {\n word = word.toLowerCase();\n } // remove the '.'s from 'F.B.I.' (safely)\n\n\n if (options.acronyms === true && this.tags.Acronym) {\n word = word.replace(/\\./g, '');\n } // -before/after-\n\n\n if (options.whitespace === true || options.root === true) {\n before = '';\n after = ' ';\n\n if ((hasSpace$1.test(this.post) === false || options.last) && !this.implicit) {\n after = '';\n }\n }\n\n if (options.punctuation === true && !options.root) {\n //normalized end punctuation\n if (this.hasPost('.') === true) {\n after = '.' + after;\n } else if (this.hasPost('?') === true) {\n after = '?' + after;\n } else if (this.hasPost('!') === true) {\n after = '!' + after;\n } else if (this.hasPost(',') === true) {\n after = ',' + after;\n } else if (this.hasEllipses() === true) {\n after = '...' + after;\n }\n }\n\n if (showPre !== true) {\n before = '';\n }\n\n if (showPost !== true) {\n // let keep = after.match(/\\)/) || ''\n after = ''; //keep //after.replace(/[ .?!,]+/, '')\n } // remove the '.' from 'Mrs.' (safely)\n\n\n if (options.abbreviations === true && this.tags.Abbreviation) {\n after = after.replace(/^\\./, '');\n }\n\n return before + word + after;\n};\n\nvar _04Text = {\n textOut: textOut\n};\n\nvar boringTags = {\n Auxiliary: 1,\n Possessive: 1\n};\n/** a subjective ranking of tags kinda tfidf-based */\n\nvar rankTags = function rankTags(term, world) {\n var tags = Object.keys(term.tags);\n var tagSet = world.tags;\n tags = tags.sort(function (a, b) {\n //bury the tags we dont want\n if (boringTags[b] || !tagSet[b]) {\n return -1;\n } // unknown tags are interesting\n\n\n if (!tagSet[b]) {\n return 1;\n }\n\n if (!tagSet[a]) {\n return 0;\n } // then sort by #of parent tags (most-specific tags first)\n\n\n if (tagSet[a].lineage.length > tagSet[b].lineage.length) {\n return 1;\n }\n\n if (tagSet[a].isA.length > tagSet[b].isA.length) {\n return -1;\n }\n\n return 0;\n });\n return tags;\n};\n\nvar _bestTag = rankTags;\n\nvar jsonDefault = {\n text: true,\n tags: true,\n implicit: true,\n whitespace: true,\n clean: false,\n id: false,\n index: false,\n offset: false,\n bestTag: false\n};\n/** return various metadata for this term */\n\nvar json$1 = function json(options, world) {\n options = options || {};\n options = Object.assign({}, jsonDefault, options);\n var result = {}; // default on\n\n if (options.text) {\n result.text = this.text;\n }\n\n if (options.normal) {\n result.normal = this.clean;\n }\n\n if (options.tags) {\n result.tags = Object.keys(this.tags);\n } // default off\n\n\n if (options.clean) {\n result.clean = this.clean;\n }\n\n if (options.id || options.offset) {\n result.id = this.id;\n }\n\n if (options.implicit && this.implicit !== null) {\n result.implicit = this.implicit;\n }\n\n if (options.whitespace) {\n result.pre = this.pre;\n result.post = this.post;\n }\n\n if (options.bestTag) {\n result.bestTag = _bestTag(this, world)[0];\n }\n\n return result;\n};\n\nvar _05Json$1 = {\n json: json$1\n};\n\nvar methods$8 = Object.assign({}, _01Case, _02Punctuation$1, _03Misc, _04Text, _05Json$1);\n\nfunction isClientSide() {\n return typeof window !== 'undefined' && window.document;\n}\n/** add spaces at the end */\n\n\nvar padEnd = function padEnd(str, width) {\n str = str.toString();\n\n while (str.length < width) {\n str += ' ';\n }\n\n return str;\n};\n/** output for verbose-mode */\n\n\nvar logTag = function logTag(t, tag, reason) {\n if (isClientSide()) {\n console.log('%c' + padEnd(t.clean, 3) + ' + ' + tag + ' ', 'color: #6accb2;');\n return;\n } //server-side\n\n\n var log = '\\x1b[33m' + padEnd(t.clean, 15) + '\\x1b[0m + \\x1b[32m' + tag + '\\x1b[0m ';\n\n if (reason) {\n log = padEnd(log, 35) + ' ' + reason + '';\n }\n\n console.log(log);\n};\n/** output for verbose mode */\n\n\nvar logUntag = function logUntag(t, tag, reason) {\n if (isClientSide()) {\n console.log('%c' + padEnd(t.clean, 3) + ' - ' + tag + ' ', 'color: #AB5850;');\n return;\n } //server-side\n\n\n var log = '\\x1b[33m' + padEnd(t.clean, 3) + ' \\x1b[31m - #' + tag + '\\x1b[0m ';\n\n if (reason) {\n log = padEnd(log, 35) + ' ' + reason;\n }\n\n console.log(log);\n};\n\nvar isArray$3 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n};\n\nvar titleCase$4 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n\nvar fns$1 = {\n logTag: logTag,\n logUntag: logUntag,\n isArray: isArray$3,\n titleCase: titleCase$4\n};\n\n/** add a tag, and its descendents, to a term */\n\nvar addTag = function addTag(t, tag, reason, world) {\n var tagset = world.tags; //support '.' or '-' notation for skipping the tag\n\n if (tag === '' || tag === '.' || tag === '-') {\n return;\n }\n\n if (tag[0] === '#') {\n tag = tag.replace(/^#/, '');\n }\n\n tag = fns$1.titleCase(tag); //if we already got this one\n\n if (t.tags[tag] === true) {\n return;\n } // log it?\n\n\n var isVerbose = world.isVerbose();\n\n if (isVerbose === true) {\n fns$1.logTag(t, tag, reason);\n } //add tag\n\n\n t.tags[tag] = true; //whee!\n //check tagset for any additional things to do...\n\n if (tagset.hasOwnProperty(tag) === true) {\n //add parent Tags\n tagset[tag].isA.forEach(function (down) {\n t.tags[down] = true;\n\n if (isVerbose === true) {\n fns$1.logTag(t, '→ ' + down);\n }\n }); //remove any contrary tags\n\n t.unTag(tagset[tag].notA, '←', world);\n }\n};\n/** support an array of tags */\n\n\nvar addTags = function addTags(term, tags, reason, world) {\n if (typeof tags !== 'string') {\n for (var i = 0; i < tags.length; i++) {\n addTag(term, tags[i], reason, world);\n } // tags.forEach(tag => addTag(term, tag, reason, world))\n\n } else {\n addTag(term, tags, reason, world);\n }\n};\n\nvar add = addTags;\n\nvar lowerCase = /^[a-z]/;\n\nvar titleCase$3 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n/** remove this tag, and its descentents from the term */\n\n\nvar unTag$1 = function unTag(t, tag, reason, world) {\n var isVerbose = world.isVerbose(); //support '*' for removing all tags\n\n if (tag === '*') {\n t.tags = {};\n return t;\n }\n\n tag = tag.replace(/^#/, '');\n\n if (lowerCase.test(tag) === true) {\n tag = titleCase$3(tag);\n } // remove the tag\n\n\n if (t.tags[tag] === true) {\n delete t.tags[tag]; //log in verbose-mode\n\n if (isVerbose === true) {\n fns$1.logUntag(t, tag, reason);\n }\n } //delete downstream tags too\n\n\n var tagset = world.tags;\n\n if (tagset[tag]) {\n var lineage = tagset[tag].lineage;\n\n for (var i = 0; i < lineage.length; i++) {\n if (t.tags[lineage[i]] === true) {\n delete t.tags[lineage[i]];\n\n if (isVerbose === true) {\n fns$1.logUntag(t, ' - ' + lineage[i]);\n }\n }\n }\n }\n\n return t;\n}; //handle an array of tags\n\n\nvar untagAll = function untagAll(term, tags, reason, world) {\n if (typeof tags !== 'string' && tags) {\n for (var i = 0; i < tags.length; i++) {\n unTag$1(term, tags[i], reason, world);\n }\n\n return;\n }\n\n unTag$1(term, tags, reason, world);\n};\n\nvar unTag_1$1 = untagAll;\n\nvar canBe$2 = function canBe(term, tag, world) {\n var tagset = world.tags; // cleanup tag\n\n if (tag[0] === '#') {\n tag = tag.replace(/^#/, '');\n } //fail-fast\n\n\n if (tagset[tag] === undefined) {\n return true;\n } //loop through tag's contradictory tags\n\n\n var enemies = tagset[tag].notA || [];\n\n for (var i = 0; i < enemies.length; i++) {\n if (term.tags[enemies[i]] === true) {\n return false;\n }\n }\n\n if (tagset[tag].isA !== undefined) {\n return canBe(term, tagset[tag].isA, world); //recursive\n }\n\n return true;\n};\n\nvar canBe_1$1 = canBe$2;\n\n/** add a tag or tags, and their descendents to this term\n * @param {string | string[]} tags - a tag or tags\n * @param {string?} [reason] a clue for debugging\n */\n\nvar tag_1 = function tag_1(tags, reason, world) {\n add(this, tags, reason, world);\n return this;\n};\n/** only tag this term if it's consistent with it's current tags */\n\n\nvar tagSafe$1 = function tagSafe(tags, reason, world) {\n if (canBe_1$1(this, tags, world)) {\n add(this, tags, reason, world);\n }\n\n return this;\n};\n/** remove a tag or tags, and their descendents from this term\n * @param {string | string[]} tags - a tag or tags\n * @param {string?} [reason] a clue for debugging\n */\n\n\nvar unTag_1 = function unTag_1(tags, reason, world) {\n unTag_1$1(this, tags, reason, world);\n return this;\n};\n/** is this tag consistent with the word's current tags?\n * @param {string | string[]} tags - a tag or tags\n * @returns {boolean}\n */\n\n\nvar canBe_1 = function canBe_1(tags, world) {\n return canBe_1$1(this, tags, world);\n};\n\nvar tag$1 = {\n tag: tag_1,\n tagSafe: tagSafe$1,\n unTag: unTag_1,\n canBe: canBe_1\n};\n\nvar Term = /*#__PURE__*/function () {\n function Term() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n _classCallCheck(this, Term);\n\n text = String(text);\n var obj = parse$2(text); // the various forms of our text\n\n this.text = obj.text || '';\n this.clean = obj.clean;\n this.reduced = obj.reduced;\n this.root = null;\n this.implicit = null;\n this.pre = obj.pre || '';\n this.post = obj.post || '';\n this.tags = {};\n this.prev = null;\n this.next = null;\n this.id = _id(obj.clean);\n this.isA = 'Term'; // easier than .constructor...\n // support alternative matches\n\n if (obj.alias) {\n this.alias = obj.alias;\n }\n }\n /** set the text of the Term to something else*/\n\n\n _createClass(Term, [{\n key: \"set\",\n value: function set(str) {\n var obj = parse$2(str);\n this.text = obj.text;\n this.clean = obj.clean;\n return this;\n }\n }]);\n\n return Term;\n}();\n/** create a deep-copy of this term */\n\n\nTerm.prototype.clone = function () {\n var term = new Term(this.text);\n term.pre = this.pre;\n term.post = this.post;\n term.clean = this.clean;\n term.reduced = this.reduced;\n term.root = this.root;\n term.implicit = this.implicit;\n term.tags = Object.assign({}, this.tags); //use the old id, so it can be matched with .match(doc)\n // term.id = this.id\n\n return term;\n};\n\nObject.assign(Term.prototype, methods$8);\nObject.assign(Term.prototype, tag$1);\nvar Term_1 = Term;\n\n/** return a flat array of Term objects */\nvar terms = function terms(n) {\n if (this.length === 0) {\n return [];\n } // use cache, if it exists\n\n\n if (this.cache.terms) {\n if (n !== undefined) {\n return this.cache.terms[n];\n }\n\n return this.cache.terms;\n }\n\n var terms = [this.pool.get(this.start)];\n\n for (var i = 0; i < this.length - 1; i += 1) {\n var id = terms[terms.length - 1].next;\n\n if (id === null) {\n // throw new Error('linked-list broken')\n console.error(\"Compromise error: Linked list broken in phrase '\" + this.start + \"'\");\n break;\n }\n\n var term = this.pool.get(id);\n terms.push(term); //return this one?\n\n if (n !== undefined && n === i) {\n return terms[n];\n }\n }\n\n if (n === undefined) {\n this.cache.terms = terms;\n }\n\n if (n !== undefined) {\n return terms[n];\n }\n\n return terms;\n};\n/** return a shallow or deep copy of this phrase */\n\n\nvar clone$1 = function clone(isShallow) {\n var _this = this;\n\n if (isShallow) {\n var p = this.buildFrom(this.start, this.length);\n p.cache = this.cache;\n return p;\n } //how do we clone part of the pool?\n\n\n var terms = this.terms();\n var newTerms = terms.map(function (t) {\n return t.clone();\n }); // console.log(newTerms)\n //connect these new ids up\n\n newTerms.forEach(function (t, i) {\n //add it to the pool..\n _this.pool.add(t);\n\n if (newTerms[i + 1]) {\n t.next = newTerms[i + 1].id;\n }\n\n if (newTerms[i - 1]) {\n t.prev = newTerms[i - 1].id;\n }\n });\n return this.buildFrom(newTerms[0].id, newTerms.length);\n};\n/** return last term object */\n\n\nvar lastTerm = function lastTerm() {\n var terms = this.terms();\n return terms[terms.length - 1];\n};\n/** quick lookup for a term id */\n\n\nvar hasId = function hasId(wantId) {\n if (this.length === 0 || !wantId) {\n return false;\n }\n\n if (this.start === wantId) {\n return true;\n } // use cache, if available\n\n\n if (this.cache.terms) {\n var _terms = this.cache.terms;\n\n for (var i = 0; i < _terms.length; i++) {\n if (_terms[i].id === wantId) {\n return true;\n }\n }\n\n return false;\n } // otherwise, go through each term\n\n\n var lastId = this.start;\n\n for (var _i = 0; _i < this.length - 1; _i += 1) {\n var term = this.pool.get(lastId);\n\n if (term === undefined) {\n console.error(\"Compromise error: Linked list broken. Missing term '\".concat(lastId, \"' in phrase '\").concat(this.start, \"'\\n\")); // throw new Error('linked List error')\n\n return false;\n }\n\n if (term.next === wantId) {\n return true;\n }\n\n lastId = term.next;\n }\n\n return false;\n};\n/** how many seperate, non-empty words is it? */\n\n\nvar wordCount = function wordCount() {\n return this.terms().filter(function (t) {\n return t.text !== '';\n }).length;\n};\n/** get the full-sentence this phrase belongs to */\n\n\nvar fullSentence = function fullSentence() {\n var t = this.terms(0); //find first term in sentence\n\n while (t.prev) {\n t = this.pool.get(t.prev);\n }\n\n var start = t.id;\n var len = 1; //go to end of sentence\n\n while (t.next) {\n t = this.pool.get(t.next);\n len += 1;\n }\n\n return this.buildFrom(start, len);\n};\n\nvar _01Utils$1 = {\n terms: terms,\n clone: clone$1,\n lastTerm: lastTerm,\n hasId: hasId,\n wordCount: wordCount,\n fullSentence: fullSentence\n};\n\nvar trimEnd = function trimEnd(str) {\n return str.replace(/ +$/, '');\n};\n/** produce output in the given format */\n\n\nvar text$1 = function text() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var isFirst = arguments.length > 1 ? arguments[1] : undefined;\n var isLast = arguments.length > 2 ? arguments[2] : undefined;\n\n if (typeof options === 'string') {\n if (options === 'normal') {\n options = {\n whitespace: true,\n unicode: true,\n lowercase: true,\n punctuation: true,\n acronyms: true,\n abbreviations: true,\n implicit: true,\n normal: true\n };\n } else if (options === 'clean') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n normal: true\n };\n } else if (options === 'reduced') {\n options = {\n punctuation: false,\n //Hmm: is this reversed?\n titlecase: false,\n lowercase: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n reduced: true\n };\n } else if (options === 'implicit') {\n options = {\n punctuation: true,\n implicit: true,\n whitespace: true,\n trim: true\n };\n } else if (options === 'root') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n root: true\n };\n } else {\n options = {};\n }\n }\n\n var terms = this.terms(); //this this phrase a complete sentence?\n\n var isFull = false;\n\n if (terms[0] && terms[0].prev === null && terms[terms.length - 1].next === null) {\n isFull = true;\n }\n\n var text = terms.reduce(function (str, t, i) {\n // don't output intro space for a contraction-match i'm good => \"[am] good\"\n if (i === 0 && t.text === '' && t.implicit !== null && !options.implicit) {\n return str;\n }\n\n options.last = isLast && i === terms.length - 1;\n var showPre = true;\n var showPost = true;\n\n if (isFull === false) {\n // dont show beginning whitespace\n if (i === 0 && isFirst) {\n showPre = false;\n } // dont show end-whitespace\n\n\n if (i === terms.length - 1 && isLast) {\n showPost = false;\n }\n }\n\n var txt = t.textOut(options, showPre, showPost); // console.log(terms)\n // if (options.titlecase && i === 0) {\n // txt = titleCase(txt)\n // }\n\n return str + txt;\n }, ''); //full-phrases show punctuation, but not whitespace\n\n if (isFull === true && isLast) {\n text = trimEnd(text);\n }\n\n if (options.trim === true) {\n text = text.trim();\n }\n\n return text;\n};\n\nvar _02Text = {\n text: text$1\n};\n\n/** remove start and end whitespace */\nvar trim = function trim() {\n var terms = this.terms();\n\n if (terms.length > 0) {\n //trim starting\n terms[0].pre = terms[0].pre.replace(/^\\s+/, ''); //trim ending\n\n var lastTerm = terms[terms.length - 1];\n lastTerm.post = lastTerm.post.replace(/\\s+$/, '');\n }\n\n return this;\n};\n\nvar _03Change = {\n trim: trim\n};\n\nvar endOfSentence = /[.?!]\\s*$/; // replacing a 'word.' with a 'word!'\n\nvar combinePost = function combinePost(before, after) {\n //only transfer the whitespace\n if (endOfSentence.test(after)) {\n var whitespace = before.match(/\\s*$/);\n return after + whitespace;\n }\n\n return before;\n}; //add whitespace to the start of the second bit\n\n\nvar addWhitespace$1 = function addWhitespace(beforeTerms, newTerms) {\n // add any existing pre-whitespace to beginning\n newTerms[0].pre = beforeTerms[0].pre;\n var lastTerm = beforeTerms[beforeTerms.length - 1]; //add any existing punctuation to end of our new terms\n\n var newTerm = newTerms[newTerms.length - 1];\n newTerm.post = combinePost(lastTerm.post, newTerm.post); // remove existing punctuation\n\n lastTerm.post = ''; //before ←[space] - after\n\n if (lastTerm.post === '') {\n lastTerm.post += ' ';\n }\n}; //insert this segment into the linked-list\n\n\nvar stitchIn$1 = function stitchIn(beforeTerms, newTerms, pool) {\n var lastBefore = beforeTerms[beforeTerms.length - 1];\n var lastNew = newTerms[newTerms.length - 1];\n var afterId = lastBefore.next; //connect ours in (main → newPhrase)\n\n lastBefore.next = newTerms[0].id; //stich the end in (newPhrase → after)\n\n lastNew.next = afterId; //do it backwards, too\n\n if (afterId) {\n // newPhrase ← after\n var afterTerm = pool.get(afterId);\n afterTerm.prev = lastNew.id;\n } // before ← newPhrase\n\n\n var beforeId = beforeTerms[0].id;\n\n if (beforeId) {\n var newTerm = newTerms[0];\n newTerm.prev = beforeId;\n }\n}; // avoid stretching a phrase twice.\n\n\nvar unique$5 = function unique(list) {\n return list.filter(function (o, i) {\n return list.indexOf(o) === i;\n });\n}; //append one phrase onto another.\n\n\nvar appendPhrase = function appendPhrase(before, newPhrase, doc) {\n var beforeTerms = before.terms();\n var newTerms = newPhrase.terms(); //spruce-up the whitespace issues\n\n addWhitespace$1(beforeTerms, newTerms); //insert this segment into the linked-list\n\n stitchIn$1(beforeTerms, newTerms, before.pool); // stretch!\n // make each effected phrase longer\n\n var toStretch = [before];\n var hasId = before.start;\n var docs = [doc];\n docs = docs.concat(doc.parents()); // find them all!\n\n docs.forEach(function (parent) {\n // only the phrases that should change\n var shouldChange = parent.list.filter(function (p) {\n return p.hasId(hasId);\n });\n toStretch = toStretch.concat(shouldChange);\n }); // don't double-count a phrase\n\n toStretch = unique$5(toStretch);\n toStretch.forEach(function (p) {\n p.length += newPhrase.length;\n });\n before.cache = {};\n return before;\n};\n\nvar append = appendPhrase;\n\nvar hasSpace = / /; //a new space needs to be added, either on the new phrase, or the old one\n// '[new] [◻old]' -or- '[old] [◻new] [old]'\n\nvar addWhitespace = function addWhitespace(newTerms) {\n //add a space before our new text?\n // add a space after our text\n var lastTerm = newTerms[newTerms.length - 1];\n\n if (hasSpace.test(lastTerm.post) === false) {\n lastTerm.post += ' ';\n }\n\n return;\n}; //insert this segment into the linked-list\n\n\nvar stitchIn = function stitchIn(main, newPhrase, newTerms) {\n // [newPhrase] → [main]\n var lastTerm = newTerms[newTerms.length - 1];\n lastTerm.next = main.start; // [before] → [main]\n\n var pool = main.pool;\n var start = pool.get(main.start);\n\n if (start.prev) {\n var before = pool.get(start.prev);\n before.next = newPhrase.start;\n } //do it backwards, too\n // before ← newPhrase\n\n\n newTerms[0].prev = main.terms(0).prev; // newPhrase ← main\n\n main.terms(0).prev = lastTerm.id;\n};\n\nvar unique$4 = function unique(list) {\n return list.filter(function (o, i) {\n return list.indexOf(o) === i;\n });\n}; //append one phrase onto another\n\n\nvar joinPhrase = function joinPhrase(original, newPhrase, doc) {\n var starterId = original.start;\n var newTerms = newPhrase.terms(); //spruce-up the whitespace issues\n\n addWhitespace(newTerms); //insert this segment into the linked-list\n\n stitchIn(original, newPhrase, newTerms); //increase the length of our phrases\n\n var toStretch = [original];\n var docs = [doc];\n docs = docs.concat(doc.parents());\n docs.forEach(function (d) {\n // only the phrases that should change\n var shouldChange = d.list.filter(function (p) {\n return p.hasId(starterId) || p.hasId(newPhrase.start);\n });\n toStretch = toStretch.concat(shouldChange);\n }); // don't double-count\n\n toStretch = unique$4(toStretch); // stretch these phrases\n\n toStretch.forEach(function (p) {\n p.length += newPhrase.length; // change the start too, if necessary\n\n if (p.start === starterId) {\n p.start = newPhrase.start;\n }\n\n p.cache = {};\n });\n return original;\n};\n\nvar prepend = joinPhrase;\n\n//recursively decrease the length of all the parent phrases\nvar shrinkAll = function shrinkAll(doc, id, deleteLength, after) {\n var arr = doc.parents();\n arr.push(doc);\n arr.forEach(function (d) {\n //find our phrase to shrink\n var phrase = d.list.find(function (p) {\n return p.hasId(id);\n });\n\n if (!phrase) {\n return;\n }\n\n phrase.length -= deleteLength; // does it start with this soon-removed word?\n\n if (phrase.start === id) {\n phrase.start = after.id;\n }\n\n phrase.cache = {};\n }); // cleanup empty phrase objects\n\n doc.list = doc.list.filter(function (p) {\n if (!p.start || !p.length) {\n return false;\n }\n\n return true;\n });\n};\n/** wrap the linked-list around these terms\n * so they don't appear any more\n */\n\n\nvar deletePhrase = function deletePhrase(phrase, doc) {\n var pool = doc.pool();\n var terms = phrase.terms(); //grab both sides of the chain,\n\n var prev = pool.get(terms[0].prev) || {};\n var after = pool.get(terms[terms.length - 1].next) || {};\n\n if (terms[0].implicit && prev.implicit) {\n prev.set(prev.implicit);\n prev.post += ' ';\n } // //first, change phrase lengths\n\n\n shrinkAll(doc, phrase.start, phrase.length, after); // connect [prev]->[after]\n\n if (prev) {\n prev.next = after.id;\n } // connect [prev]<-[after]\n\n\n if (after) {\n after.prev = prev.id;\n } // lastly, actually delete the terms from the pool?\n // for (let i = 0; i < terms.length; i++) {\n // pool.remove(terms[i].id)\n // }\n\n};\n\nvar _delete$1 = deletePhrase;\n\n/** put this text at the end */\n\nvar append_1 = function append_1(newPhrase, doc) {\n append(this, newPhrase, doc);\n return this;\n};\n/** add this text to the beginning */\n\n\nvar prepend_1 = function prepend_1(newPhrase, doc) {\n prepend(this, newPhrase, doc);\n return this;\n};\n\nvar _delete = function _delete(doc) {\n _delete$1(this, doc);\n return this;\n}; // stich-in newPhrase, stretch 'doc' + parents\n\n\nvar replace$1 = function replace(newPhrase, doc) {\n //add it do the end\n var firstLength = this.length;\n append(this, newPhrase, doc); //delete original terms\n\n var tmp = this.buildFrom(this.start, this.length);\n tmp.length = firstLength;\n _delete$1(tmp, doc);\n};\n/**\n * Turn this phrase object into 3 phrase objects\n */\n\n\nvar splitOn = function splitOn(p) {\n var terms = this.terms();\n var result = {\n before: null,\n match: null,\n after: null\n };\n var index = terms.findIndex(function (t) {\n return t.id === p.start;\n });\n\n if (index === -1) {\n return result;\n } //make all three sections into phrase-objects\n\n\n var start = terms.slice(0, index);\n\n if (start.length > 0) {\n result.before = this.buildFrom(start[0].id, start.length);\n }\n\n var match = terms.slice(index, index + p.length);\n\n if (match.length > 0) {\n result.match = this.buildFrom(match[0].id, match.length);\n }\n\n var end = terms.slice(index + p.length, terms.length);\n\n if (end.length > 0) {\n result.after = this.buildFrom(end[0].id, end.length, this.pool);\n }\n\n return result;\n};\n\nvar _04Insert = {\n append: append_1,\n prepend: prepend_1,\n \"delete\": _delete,\n replace: replace$1,\n splitOn: splitOn\n};\n\n/** return json metadata for this phrase */\nvar json = function json() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var res = {}; // text data\n\n if (options.text) {\n res.text = this.text();\n }\n\n if (options.normal) {\n res.normal = this.text('normal');\n }\n\n if (options.clean) {\n res.clean = this.text('clean');\n }\n\n if (options.reduced) {\n res.reduced = this.text('reduced');\n }\n\n if (options.implicit) {\n res.implicit = this.text('implicit');\n }\n\n if (options.root) {\n res.root = this.text('root');\n }\n\n if (options.trim) {\n if (res.text) {\n res.text = res.text.trim();\n }\n\n if (res.normal) {\n res.normal = res.normal.trim();\n }\n\n if (res.reduced) {\n res.reduced = res.reduced.trim();\n }\n } // terms data\n\n\n if (options.terms) {\n if (options.terms === true) {\n options.terms = {};\n }\n\n res.terms = this.terms().map(function (t) {\n return t.json(options.terms, world);\n });\n }\n\n return res;\n};\n\nvar _05Json = {\n json: json\n};\n\n/** match any terms after this phrase */\nvar lookAhead = function lookAhead(regs) {\n // if empty match string, return everything after\n if (!regs) {\n regs = '.*';\n }\n\n var pool = this.pool; // get a list of all terms preceding our start\n\n var terms = [];\n\n var getAfter = function getAfter(id) {\n var term = pool.get(id);\n\n if (!term) {\n return;\n }\n\n terms.push(term);\n\n if (term.prev) {\n getAfter(term.next); //recursion\n }\n };\n\n var all = this.terms();\n var lastTerm = all[all.length - 1];\n getAfter(lastTerm.next);\n\n if (terms.length === 0) {\n return [];\n } // got the terms, make a phrase from them\n\n\n var p = this.buildFrom(terms[0].id, terms.length);\n return p.match(regs);\n};\n/** match any terms before this phrase */\n\n\nvar lookBehind = function lookBehind(regs) {\n // if empty match string, return everything before\n if (!regs) {\n regs = '.*';\n }\n\n var pool = this.pool; // get a list of all terms preceding our start\n\n var terms = [];\n\n var getBefore = function getBefore(id) {\n var term = pool.get(id);\n\n if (!term) {\n return;\n }\n\n terms.push(term);\n\n if (term.prev) {\n getBefore(term.prev); //recursion\n }\n };\n\n var term = pool.get(this.start);\n getBefore(term.prev);\n\n if (terms.length === 0) {\n return [];\n } // got the terms, make a phrase from them\n\n\n var p = this.buildFrom(terms[terms.length - 1].id, terms.length);\n return p.match(regs);\n};\n\nvar _06Lookahead = {\n lookAhead: lookAhead,\n lookBehind: lookBehind\n};\n\nvar methods$7 = Object.assign({}, _01Utils$1, _02Text, _03Change, _04Insert, _05Json, _06Lookahead);\n\n// try to avoid doing the match\nvar failFast$1 = function failFast(p, regs) {\n if (regs.length === 0) {\n return true;\n }\n\n for (var i = 0; i < regs.length; i += 1) {\n var reg = regs[i]; //logical quick-ones\n\n if (reg.optional !== true && reg.negative !== true) {\n //start/end impossibilites\n if (reg.start === true && i > 0) {\n return true;\n }\n } //this is not possible\n\n\n if (reg.anything === true && reg.negative === true) {\n return true;\n }\n }\n\n return false;\n};\n\nvar _02FailFast = failFast$1;\n\nvar _matchLogic = createCommonjsModule(function (module, exports) {\n //found a match? it's greedy? keep going!\n exports.getGreedy = function (state, endReg) {\n // for greedy checking, we no longer care about the reg.start\n // value, and leaving it can cause failures for anchored greedy\n // matches. ditto for end-greedy matches: we need an earlier non-\n // ending match to succceed until we get to the actual end.\n var reg = Object.assign({}, state.regs[state.r], {\n start: false,\n end: false\n });\n var start = state.t;\n\n for (; state.t < state.terms.length; state.t += 1) {\n //stop for next-reg match\n if (endReg && state.terms[state.t].doesMatch(endReg, state.start_i + state.t, state.phrase_length)) {\n return state.t;\n }\n\n var count = state.t - start + 1; // is it max-length now?\n\n if (reg.max !== undefined && count === reg.max) {\n return state.t;\n } //stop here\n\n\n if (state.terms[state.t].doesMatch(reg, state.start_i + state.t, state.phrase_length) === false) {\n // is it too short?\n if (reg.min !== undefined && count < reg.min) {\n return null;\n }\n\n return state.t;\n }\n }\n\n return state.t;\n }; //'unspecific greedy' is a weird situation.\n\n\n exports.greedyTo = function (state, nextReg) {\n var t = state.t; //if there's no next one, just go off the end!\n\n if (!nextReg) {\n return state.terms.length;\n } //otherwise, we're looking for the next one\n\n\n for (; t < state.terms.length; t += 1) {\n if (state.terms[t].doesMatch(nextReg, state.start_i + t, state.phrase_length) === true) {\n return t;\n }\n } //guess it doesn't exist, then.\n\n\n return null;\n }; //we have a special case where an end-anchored greedy match may need to\n //start matching before the actual end; we do this by (temporarily!)\n //removing the \"end\" property from the matching token... since this is\n //very situation-specific, we *only* do this when we really need to.\n\n\n exports.isEndGreedy = function (reg, state) {\n if (reg.end === true && reg.greedy === true) {\n if (state.start_i + state.t < state.phrase_length - 1) {\n var tmpReg = Object.assign({}, reg, {\n end: false\n });\n\n if (state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length) === true) {\n return true;\n }\n }\n }\n\n return false;\n }; // match complex OR cases like (a|b|foo bar)\n\n\n exports.doOrBlock = function (state) {\n var skipN = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var block = state.regs[state.r];\n var wasFound = false; // do each multiword sequence\n\n for (var c = 0; c < block.choices.length; c += 1) {\n // try to match this list of tokens\n var regs = block.choices[c];\n wasFound = regs.every(function (cr, w_index) {\n var extra = 0;\n var t = state.t + w_index + skipN + extra;\n\n if (state.terms[t] === undefined) {\n return false;\n }\n\n var foundBlock = state.terms[t].doesMatch(cr, t + state.start_i, state.phrase_length); // this can be greedy - '(foo+ bar)'\n\n if (foundBlock === true && cr.greedy === true) {\n for (var i = 1; i < state.terms.length; i += 1) {\n var term = state.terms[t + i];\n\n if (term) {\n var keepGoing = term.doesMatch(cr, state.start_i + i, state.phrase_length);\n\n if (keepGoing === true) {\n extra += 1;\n } else {\n break;\n }\n }\n }\n }\n\n skipN += extra;\n return foundBlock;\n });\n\n if (wasFound) {\n skipN += regs.length;\n break;\n }\n } // we found a match - is it greedy though?\n\n\n if (wasFound && block.greedy === true) {\n return exports.doOrBlock(state, skipN); // try it again!\n }\n\n return skipN;\n }; // match AND cases like (#Noun && foo)\n\n\n exports.doAndBlock = function (state) {\n var longest = 0; // all blocks must match, and we return the greediest match\n\n var reg = state.regs[state.r];\n var allDidMatch = reg.choices.every(function (block) {\n // for multi-word blocks, all must match\n var allWords = block.every(function (cr, w_index) {\n var tryTerm = state.t + w_index;\n\n if (state.terms[tryTerm] === undefined) {\n return false;\n }\n\n return state.terms[tryTerm].doesMatch(cr, tryTerm, state.phrase_length);\n });\n\n if (allWords === true && block.length > longest) {\n longest = block.length;\n }\n\n return allWords;\n });\n\n if (allDidMatch === true) {\n return longest;\n }\n\n return false;\n }; // get or create named group\n\n\n exports.getGroup = function (state, term_index, name) {\n if (state.groups[state.groupId]) {\n return state.groups[state.groupId];\n }\n\n var termId = state.terms[term_index].id;\n state.groups[state.groupId] = {\n group: String(name),\n start: termId,\n length: 0\n };\n return state.groups[state.groupId];\n };\n});\n\n/** tries to match a sequence of terms, starting from here */\n\nvar tryHere = function tryHere(terms, regs, start_i, phrase_length) {\n // all the variables that matter\n var state = {\n t: 0,\n //the term index we're on\n terms: terms,\n //the working slice of term objects\n r: 0,\n // the reg index we're on\n regs: regs,\n //our match conditions\n groups: {},\n //all named-group matches\n start_i: start_i,\n // term index we're starting from\n phrase_length: phrase_length,\n // # of terms in the sentence\n hasGroup: false,\n groupId: null,\n previousGroup: null\n }; // we must satisfy each rule in 'regs'\n\n for (; state.r < regs.length; state.r += 1) {\n var reg = regs[state.r]; // Check if this reg has a named capture group\n\n state.hasGroup = typeof reg.named === 'string' || typeof reg.named === 'number'; // Reuse previous capture group if same\n\n if (state.hasGroup === true) {\n var prev = regs[state.r - 1];\n\n if (prev && prev.named === reg.named && state.previousGroup) {\n state.groupId = state.previousGroup;\n } else {\n state.groupId = _id(reg.named);\n state.previousGroup = state.groupId;\n }\n } //have we run-out of terms?\n\n\n if (!state.terms[state.t]) {\n //are all remaining regs optional or negative?\n var haveNeeds = regs.slice(state.r).some(function (remain) {\n return !remain.optional;\n });\n\n if (haveNeeds === false) {\n break; //done!\n }\n\n return null; // die\n } //support 'unspecific greedy' .* properly\n\n\n if (reg.anything === true && reg.greedy === true) {\n var skipto = _matchLogic.greedyTo(state, regs[state.r + 1]); // ensure it's long enough\n\n if (reg.min !== undefined && skipto - state.t < reg.min) {\n return null;\n } // reduce it back, if it's too long\n\n\n if (reg.max !== undefined && skipto - state.t > reg.max) {\n state.t = state.t + reg.max;\n continue;\n }\n\n if (skipto === null) {\n return null; //couldn't find it\n } // is it really this easy?....\n\n\n if (state.hasGroup === true) {\n var g = _matchLogic.getGroup(state, state.t, reg.named);\n g.length = skipto - state.t;\n }\n\n state.t = skipto;\n continue;\n } // support multi-word OR (a|b|foo bar)\n\n\n if (reg.choices !== undefined && reg.operator === 'or') {\n var skipNum = _matchLogic.doOrBlock(state);\n\n if (skipNum) {\n // handle 'not' logic\n if (reg.negative === true) {\n return null; // die\n }\n\n if (state.hasGroup === true) {\n var _g = _matchLogic.getGroup(state, state.t, reg.named);\n\n _g.length += skipNum;\n }\n\n state.t += skipNum;\n continue;\n } else if (!reg.optional) {\n return null; //die\n }\n } // support AND (#Noun && foo) blocks\n\n\n if (reg.choices !== undefined && reg.operator === 'and') {\n var _skipNum = _matchLogic.doAndBlock(state);\n\n if (_skipNum) {\n // handle 'not' logic\n if (reg.negative === true) {\n return null; // die\n }\n\n if (state.hasGroup === true) {\n var _g2 = _matchLogic.getGroup(state, state.t, reg.named);\n\n _g2.length += _skipNum;\n }\n\n state.t += _skipNum;\n continue;\n } else if (!reg.optional) {\n return null; //die\n }\n } // ok, finally test the term/reg\n\n\n var term = state.terms[state.t];\n var doesMatch = term.doesMatch(reg, state.start_i + state.t, state.phrase_length);\n\n if (reg.anything === true || doesMatch === true || _matchLogic.isEndGreedy(reg, state)) {\n var startAt = state.t; // if it's a negative optional match... :0\n\n if (reg.optional && regs[state.r + 1] && reg.negative) {\n continue;\n } // okay, it was a match, but if it's optional too,\n // we should check the next reg too, to skip it?\n\n\n if (reg.optional && regs[state.r + 1]) {\n // does the next reg match it too?\n var nextRegMatched = term.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length);\n\n if (reg.negative || nextRegMatched) {\n // but does the next reg match the next term??\n // only skip if it doesn't\n var nextTerm = state.terms[state.t + 1];\n\n if (!nextTerm || !nextTerm.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length)) {\n state.r += 1;\n }\n }\n } //advance to the next term!\n\n\n state.t += 1; //check any ending '$' flags\n\n if (reg.end === true) {\n //if this isn't the last term, refuse the match\n if (state.t !== state.terms.length && reg.greedy !== true) {\n return null; //die\n }\n } //try keep it going!\n\n\n if (reg.greedy === true) {\n state.t = _matchLogic.getGreedy(state, regs[state.r + 1]);\n\n if (state.t === null) {\n return null; //greedy was too short\n }\n\n if (reg.min && reg.min > state.t) {\n return null; //greedy was too short\n } // if this was also an end-anchor match, check to see we really\n // reached the end\n\n\n if (reg.end === true && state.start_i + state.t !== phrase_length) {\n return null; //greedy didn't reach the end\n }\n }\n\n if (state.hasGroup === true) {\n // Get or create capture group\n var _g3 = _matchLogic.getGroup(state, startAt, reg.named); // Update group - add greedy or increment length\n\n\n if (state.t > 1 && reg.greedy) {\n _g3.length += state.t - startAt;\n } else {\n _g3.length++;\n }\n }\n\n continue;\n } // ok, it doesn't match.\n // did it *actually match* a negative?\n\n\n if (reg.negative) {\n var tmpReg = Object.assign({}, reg);\n tmpReg.negative = false; // try removing it\n\n var foundNeg = state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length);\n\n if (foundNeg === true) {\n return null; //bye!\n }\n } //bah, who cares, keep going\n\n\n if (reg.optional === true) {\n continue;\n } // should we skip-over an implicit word?\n\n\n if (state.terms[state.t].isImplicit() && regs[state.r - 1] && state.terms[state.t + 1]) {\n // if the last match was implicit too, we're missing a word.\n if (state.terms[state.t - 1] && state.terms[state.t - 1].implicit === regs[state.r - 1].word) {\n return null;\n } // does the next one match?\n\n\n if (state.terms[state.t + 1].doesMatch(reg, state.start_i + state.t, state.phrase_length)) {\n state.t += 2;\n continue;\n }\n }\n\n return null; //die\n } //return our result\n\n\n return {\n match: state.terms.slice(0, state.t),\n groups: state.groups\n };\n};\n\nvar _03TryMatch = tryHere;\n\n// final checks on the validity of our results\nvar postProcess$1 = function postProcess(terms, regs, matches) {\n if (!matches || matches.length === 0) {\n return matches;\n } // ensure end reg has the end term\n\n\n var atEnd = regs.some(function (r) {\n return r.end;\n });\n\n if (atEnd) {\n var lastTerm = terms[terms.length - 1];\n matches = matches.filter(function (_ref) {\n var arr = _ref.match;\n return arr.indexOf(lastTerm) !== -1;\n });\n }\n\n return matches;\n};\n\nvar _04PostProcess = postProcess$1;\n\n// supported suffix-flags:\n// suffixes: ? ] + * $ {2,6} ~\n// [\\?\\]\\+\\*\\$~]*\n// prefixes: ! [ ^\n// [\\!\\[\\^]*\n// match 'foo /yes/' and not 'foo/no/bar'\nvar bySlashes = /(?:^|\\s)([\\!\\[\\^]*(?:<[^<]*>)?\\/.*?[^\\\\\\/]\\/[\\?\\]\\+\\*\\$~]*)(?:\\s|$)/; // match '(yes) but not foo(no)bar'\n\nvar byParentheses = /([\\!\\[\\^]*(?:<[^<]*>)?\\([^\\)]+[^\\\\\\)]\\)[\\?\\]\\+\\*\\$~]*)(?:\\s|$)/; // okay\n\nvar byWord = / /g;\n\nvar isBlock = function isBlock(str) {\n return /^[\\!\\[\\^]*(<[^<]*>)?\\(/.test(str) && /\\)[\\?\\]\\+\\*\\$~]*$/.test(str);\n};\n\nvar isReg = function isReg(str) {\n return /^[\\!\\[\\^]*(<[^<]*>)?\\//.test(str) && /\\/[\\?\\]\\+\\*\\$~]*$/.test(str);\n};\n\nvar cleanUp = function cleanUp(arr) {\n arr = arr.map(function (str) {\n return str.trim();\n });\n arr = arr.filter(function (str) {\n return str;\n });\n return arr;\n};\n\nvar parseBlocks = function parseBlocks(txt) {\n // parse by /regex/ first\n var arr = txt.split(bySlashes);\n var res = []; // parse by (blocks), next\n\n arr.forEach(function (str) {\n if (isReg(str)) {\n res.push(str);\n return;\n }\n\n res = res.concat(str.split(byParentheses));\n });\n res = cleanUp(res); // split by spaces, now\n\n var _final = [];\n res.forEach(function (str) {\n if (isBlock(str)) {\n _final.push(str);\n } else if (isReg(str)) {\n _final.push(str);\n } else {\n _final = _final.concat(str.split(byWord));\n }\n });\n _final = cleanUp(_final);\n return _final;\n};\n\nvar _01ParseBlocks = parseBlocks; // console.log('(one two) (upto) [#Date+]'.split(byParentheses))\n\n/* break-down a match expression into this:\n{\n word:'',\n tag:'',\n regex:'',\n\n start:false,\n end:false,\n negative:false,\n anything:false,\n greedy:false,\n optional:false,\n\n named:'',\n choices:[],\n}\n*/\nvar hasMinMax = /\\{([0-9]+,?[0-9]*)\\}/;\nvar andSign = /&&/;\nvar captureName = new RegExp(/^<\\s*?(\\S+)\\s*?>/);\n\nvar titleCase$2 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n\nvar end = function end(str) {\n return str[str.length - 1];\n};\n\nvar start = function start(str) {\n return str[0];\n};\n\nvar stripStart = function stripStart(str) {\n return str.substr(1);\n};\n\nvar stripEnd = function stripEnd(str) {\n return str.substr(0, str.length - 1);\n};\n\nvar stripBoth = function stripBoth(str) {\n str = stripStart(str);\n str = stripEnd(str);\n return str;\n}; //\n\n\nvar parseToken = function parseToken(w) {\n var obj = {}; //collect any flags (do it twice)\n\n for (var i = 0; i < 2; i += 1) {\n //end-flag\n if (end(w) === '$') {\n obj.end = true;\n w = stripEnd(w);\n } //front-flag\n\n\n if (start(w) === '^') {\n obj.start = true;\n w = stripStart(w);\n } //capture group (this one can span multiple-terms)\n\n\n if (start(w) === '[' || end(w) === ']') {\n obj.named = true;\n\n if (start(w) === '[') {\n obj.groupType = end(w) === ']' ? 'single' : 'start';\n } else {\n obj.groupType = 'end';\n }\n\n w = w.replace(/^\\[/, '');\n w = w.replace(/\\]$/, ''); // Use capture group name\n\n if (start(w) === '<') {\n var res = captureName.exec(w);\n\n if (res.length >= 2) {\n obj.named = res[1];\n w = w.replace(res[0], '');\n }\n }\n } //back-flags\n\n\n if (end(w) === '+') {\n obj.greedy = true;\n w = stripEnd(w);\n }\n\n if (w !== '*' && end(w) === '*' && w !== '\\\\*') {\n obj.greedy = true;\n w = stripEnd(w);\n }\n\n if (end(w) === '?') {\n obj.optional = true;\n w = stripEnd(w);\n }\n\n if (start(w) === '!') {\n obj.negative = true; // obj.optional = true\n\n w = stripStart(w);\n } //wrapped-flags\n\n\n if (start(w) === '(' && end(w) === ')') {\n // support (one && two)\n if (andSign.test(w)) {\n obj.choices = w.split(andSign);\n obj.operator = 'and';\n } else {\n obj.choices = w.split('|');\n obj.operator = 'or';\n } //remove '(' and ')'\n\n\n obj.choices[0] = stripStart(obj.choices[0]);\n var last = obj.choices.length - 1;\n obj.choices[last] = stripEnd(obj.choices[last]); // clean up the results\n\n obj.choices = obj.choices.map(function (s) {\n return s.trim();\n });\n obj.choices = obj.choices.filter(function (s) {\n return s;\n }); //recursion alert!\n\n obj.choices = obj.choices.map(function (str) {\n return str.split(/ /g).map(parseToken);\n });\n w = '';\n } //regex\n\n\n if (start(w) === '/' && end(w) === '/') {\n w = stripBoth(w);\n obj.regex = new RegExp(w); //potential vuln - security/detect-non-literal-regexp\n\n return obj;\n } //soft-match\n\n\n if (start(w) === '~' && end(w) === '~') {\n w = stripBoth(w);\n obj.soft = true;\n obj.word = w;\n return obj;\n }\n } // support #Tag{1,9}\n\n\n if (hasMinMax.test(w) === true) {\n w = w.replace(hasMinMax, function (a, b) {\n var arr = b.split(/,/g);\n\n if (arr.length === 1) {\n // '{3}'\tExactly three times\n obj.min = Number(arr[0]);\n obj.max = Number(arr[0]);\n } else {\n // '{2,4}' Two to four times\n // '{3,}' Three or more times\n obj.min = Number(arr[0]);\n obj.max = Number(arr[1] || 999);\n } // use same method as '+'\n\n\n obj.greedy = true; // 0 as min means the same as '?'\n\n obj.optional = true;\n return '';\n });\n } //do the actual token content\n\n\n if (start(w) === '#') {\n obj.tag = stripStart(w);\n obj.tag = titleCase$2(obj.tag);\n return obj;\n } //dynamic function on a term object\n\n\n if (start(w) === '@') {\n obj.method = stripStart(w);\n return obj;\n }\n\n if (w === '.') {\n obj.anything = true;\n return obj;\n } //support alone-astrix\n\n\n if (w === '*') {\n obj.anything = true;\n obj.greedy = true;\n obj.optional = true;\n return obj;\n }\n\n if (w) {\n //somehow handle encoded-chars?\n w = w.replace('\\\\*', '*');\n w = w.replace('\\\\.', '.');\n obj.word = w.toLowerCase();\n }\n\n return obj;\n};\n\nvar _02ParseToken = parseToken;\n\n// name any [unnamed] capture-groups with a number\nvar nameGroups = function nameGroups(tokens) {\n var convert = false;\n var index = -1;\n var current; //'fill in' capture groups between start-end\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]; // Give name to un-named single tokens\n\n if (token.groupType === 'single' && token.named === true) {\n index += 1;\n token.named = index;\n continue;\n } // Start converting tokens\n\n\n if (token.groupType === 'start') {\n convert = true;\n\n if (typeof token.named === 'string' || typeof token.named === 'number') {\n current = token.named;\n } else {\n index += 1;\n current = index;\n }\n } // Ensure this token has the right name\n\n\n if (convert) {\n token.named = current;\n } // Stop converting tokens\n\n\n if (token.groupType === 'end') {\n convert = false;\n }\n }\n\n return tokens;\n}; // optimize an 'or' lookup, when the (a|b|c) list is simple or multi-word\n\n\nvar doFastOrMode = function doFastOrMode(tokens) {\n return tokens.map(function (token) {\n if (token.choices !== undefined) {\n // are they all straight-up words? then optimize them.\n var shouldPack = token.choices.every(function (block) {\n if (block.length !== 1) {\n return false;\n }\n\n var reg = block[0];\n\n if (reg.word !== undefined && reg.negative !== true && reg.optional !== true && reg.method !== true) {\n return true; //reg is simple-enough\n }\n\n return false;\n });\n\n if (shouldPack === true) {\n var oneOf = {};\n token.choices.forEach(function (block) {\n oneOf[block[0].word] = true;\n });\n token.fastOr = oneOf;\n delete token.choices;\n }\n }\n\n return token;\n });\n}; // allow multiword OR (foo|one two)\n// const doMultiWord = function (tokens) {\n// return tokens.map(token => {\n// if (token.choices !== undefined) {\n// let isMulti = token.choices.find(o => hasASpace.test(o.word)) || false\n// if (isMulti !== false) {\n// token.multiword = true\n// // turn all choices into arrays\n// token.choices = token.choices.map(choice => {\n// if (choice.word) {\n// choice.sequence = choice.word.split(hasASpace)\n// delete choice.word\n// }\n// return choice\n// })\n// }\n// }\n// return token\n// })\n// }\n// const doBlockMode = function (tokens) {\n// return tokens.map(token => {\n// // we've already setup fastOr mode\n// if (token.choices !== undefined) {\n// // console.log(token)\n// }\n// return token\n// })\n// }\n\n\nvar postProcess = function postProcess(tokens) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // ensure all capture groups are filled between start and end\n // give all capture groups names\n var count = tokens.filter(function (t) {\n return t.groupType;\n }).length;\n\n if (count > 0) {\n tokens = nameGroups(tokens);\n } // convert 'choices' format to 'fastOr' format\n\n\n if (!opts.fuzzy) {\n tokens = doFastOrMode(tokens);\n } // support multiword OR (foo bar|baz)\n // tokens = doMultiWord(tokens)\n // support (one two three)\n // tokens = doBlockMode(tokens)\n\n\n return tokens;\n};\n\nvar _03PostProcess = postProcess;\n\nvar isArray$2 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n}; //turn an array into a 'choices' list\n\n\nvar byArray = function byArray(arr) {\n var blocks = arr.map(function (s) {\n return [{\n word: s\n }];\n });\n return [{\n choices: blocks,\n operator: 'or'\n }];\n}; // turn a Doc object into a reg of ids to lookup\n\n\nvar fromDoc = function fromDoc(doc) {\n if (!doc || !doc.list || !doc.list[0]) {\n return [];\n }\n\n var regs = [];\n doc.list.forEach(function (p) {\n var ids = [];\n p.terms().forEach(function (t) {\n ids.push(t.id);\n });\n regs.push(ids);\n });\n return [{\n idBlocks: regs\n }];\n}; // add fuzziness etc to each reg\n\n\nvar addOptions = function addOptions(tokens, opts) {\n // add default fuzzy-search limit\n if (opts.fuzzy === true) {\n opts.fuzzy = 0.85;\n }\n\n if (typeof opts.fuzzy === 'number') {\n tokens = tokens.map(function (reg) {\n // add a fuzzy-match on 'word' tokens\n if (opts.fuzzy > 0 && reg.word) {\n reg.fuzzy = opts.fuzzy;\n } //add it to or|and choices too\n\n\n if (reg.choices) {\n reg.choices.forEach(function (block) {\n block.forEach(function (r) {\n r.fuzzy = opts.fuzzy;\n });\n });\n }\n\n return reg;\n });\n }\n\n return tokens;\n};\n/** parse a match-syntax string into json */\n\n\nvar syntax = function syntax(input) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // fail-fast\n if (input === null || input === undefined || input === '') {\n return [];\n } //try to support a ton of different formats:\n\n\n if (_typeof(input) === 'object') {\n if (isArray$2(input)) {\n if (input.length === 0 || !input[0]) {\n return [];\n } //is it a pre-parsed reg-list?\n\n\n if (_typeof(input[0]) === 'object') {\n return input;\n } //support a flat array of normalized words\n\n\n if (typeof input[0] === 'string') {\n return byArray(input);\n }\n } //support passing-in a compromise object as a match\n\n\n if (input && input.isA === 'Doc') {\n return fromDoc(input);\n }\n\n return [];\n }\n\n if (typeof input === 'number') {\n input = String(input); //go for it?\n }\n\n var tokens = _01ParseBlocks(input); //turn them into objects\n\n tokens = tokens.map(function (str) {\n return _02ParseToken(str);\n }); //clean up anything weird\n\n tokens = _03PostProcess(tokens, opts); // add fuzzy limits, etc\n\n tokens = addOptions(tokens, opts); // console.log(tokens)\n\n return tokens;\n};\n\nvar matchSyntax = syntax; // console.log(syntax('[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)'))\n\n// match an explicit sequence of term ids\n// take a phrase and find any of the idBlocks in it\nvar idLookup = function idLookup(terms, regs) {\n var matches = [];\n var blocklist = regs[0].idBlocks;\n\n var _loop = function _loop(_t) {\n blocklist.forEach(function (block) {\n if (block.length === 0) {\n t = _t;\n return;\n }\n\n var foundAll = block.every(function (id, i) {\n t = _t;\n return terms[_t + i].id === id;\n });\n\n if (foundAll) {\n matches.push({\n match: terms.slice(_t, _t + block.length)\n }); // skip top-loop forward\n\n _t += block.length - 1;\n }\n });\n t = _t;\n };\n\n for (var t = 0; t < terms.length; t += 1) {\n _loop(t);\n }\n\n return matches;\n};\n\nvar idLookup_1 = idLookup;\n\n/** returns a simple array of arrays */\n\nvar matchAll = function matchAll(p, regs) {\n var matchOne = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n //if we forgot to parse it..\n if (typeof regs === 'string') {\n regs = matchSyntax(regs);\n } //try to dismiss it, at-once\n\n\n if (_02FailFast(p, regs) === true) {\n return [];\n } //any match needs to be this long, at least\n\n\n var minLength = regs.filter(function (r) {\n return r.optional !== true && r.negative !== true;\n }).length;\n var terms = p.terms();\n var matches = []; // these id-lookups can be super-fast\n\n if (regs[0].idBlocks) {\n var res = idLookup_1(terms, regs);\n\n if (res && res.length > 0) {\n return _04PostProcess(terms, regs, res);\n }\n } //optimisation for '^' start logic\n\n\n if (regs[0].start === true) {\n var _res = _03TryMatch(terms, regs, 0, terms.length);\n\n if (_res && _res.match && _res.match.length > 0) {\n _res.match = _res.match.filter(function (m) {\n return m;\n });\n matches.push(_res);\n }\n\n return _04PostProcess(terms, regs, matches);\n } //try starting, from every term\n\n\n for (var i = 0; i < terms.length; i += 1) {\n // slice may be too short\n if (i + minLength > terms.length) {\n break;\n } //try it!\n\n\n var _res2 = _03TryMatch(terms.slice(i), regs, i, terms.length);\n\n if (_res2 && _res2.match && _res2.match.length > 0) {\n //zoom forward!\n i += _res2.match.length - 1; //[capture-groups] return some null responses\n\n _res2.match = _res2.match.filter(function (m) {\n return m;\n });\n matches.push(_res2); //ok, maybe that's enough?\n\n if (matchOne === true) {\n return _04PostProcess(terms, regs, matches);\n }\n }\n }\n\n return _04PostProcess(terms, regs, matches);\n};\n\nvar _01MatchAll = matchAll;\n\n/** return anything that doesn't match.\n * returns a simple array of arrays\n */\n\nvar notMatch = function notMatch(p, regs) {\n var found = {};\n var arr = _01MatchAll(p, regs);\n arr.forEach(function (_ref) {\n var ts = _ref.match;\n ts.forEach(function (t) {\n found[t.id] = true;\n });\n }); //return anything not found\n\n var terms = p.terms();\n var result = [];\n var current = [];\n terms.forEach(function (t) {\n if (found[t.id] === true) {\n if (current.length > 0) {\n result.push(current);\n current = [];\n }\n\n return;\n }\n\n current.push(t);\n });\n\n if (current.length > 0) {\n result.push(current);\n }\n\n return result;\n};\n\nvar not$1 = notMatch;\n\n/** return an array of matching phrases */\n\nvar match_1 = function match_1(regs) {\n var _this = this;\n\n var justOne = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var matches = _01MatchAll(this, regs, justOne); //make them phrase objects\n\n matches = matches.map(function (_ref) {\n var match = _ref.match,\n groups = _ref.groups;\n\n var p = _this.buildFrom(match[0].id, match.length, groups);\n\n p.cache.terms = match;\n return p;\n });\n return matches;\n};\n/** return boolean if one match is found */\n\n\nvar has = function has(regs) {\n var matches = _01MatchAll(this, regs, true);\n return matches.length > 0;\n};\n/** remove all matches from the result */\n\n\nvar not = function not(regs) {\n var _this2 = this;\n\n var matches = not$1(this, regs); //make them phrase objects\n\n matches = matches.map(function (list) {\n return _this2.buildFrom(list[0].id, list.length);\n });\n return matches;\n};\n/** return a list of phrases that can have this tag */\n\n\nvar canBe$1 = function canBe(tag, world) {\n var _this3 = this;\n\n var results = [];\n var terms = this.terms();\n var previous = false;\n\n for (var i = 0; i < terms.length; i += 1) {\n var can = terms[i].canBe(tag, world);\n\n if (can === true) {\n if (previous === true) {\n //add it to the end\n results[results.length - 1].push(terms[i]);\n } else {\n results.push([terms[i]]); //make a new one\n }\n\n previous = can;\n }\n } //turn them into Phrase objects\n\n\n results = results.filter(function (a) {\n return a.length > 0;\n }).map(function (arr) {\n return _this3.buildFrom(arr[0].id, arr.length);\n });\n return results;\n};\n\nvar match = {\n match: match_1,\n has: has,\n not: not,\n canBe: canBe$1\n};\n\nvar Phrase = function Phrase(id, length, pool) {\n _classCallCheck(this, Phrase);\n\n this.start = id;\n this.length = length;\n this.isA = 'Phrase'; // easier than .constructor...\n\n Object.defineProperty(this, 'pool', {\n enumerable: false,\n writable: true,\n value: pool\n });\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, 'groups', {\n enumerable: false,\n writable: true,\n value: {}\n });\n};\n/** create a new Phrase object from an id and length */\n\n\nPhrase.prototype.buildFrom = function (id, length, groups) {\n var p = new Phrase(id, length, this.pool); //copy-over or replace capture-groups too\n\n if (groups && Object.keys(groups).length > 0) {\n p.groups = groups;\n } else {\n p.groups = this.groups;\n }\n\n return p;\n}; //apply methods\n\n\nObject.assign(Phrase.prototype, match);\nObject.assign(Phrase.prototype, methods$7); //apply aliases\n\nvar aliases$1 = {\n term: 'terms'\n};\nObject.keys(aliases$1).forEach(function (k) {\n return Phrase.prototype[k] = Phrase.prototype[aliases$1[k]];\n});\nvar Phrase_1 = Phrase;\n\n/** a key-value store of all terms in our Document */\nvar Pool = /*#__PURE__*/function () {\n function Pool() {\n var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Pool);\n\n //quiet this property in console.logs\n Object.defineProperty(this, 'words', {\n enumerable: false,\n value: words\n });\n }\n /** throw a new term object in */\n\n\n _createClass(Pool, [{\n key: \"add\",\n value: function add(term) {\n this.words[term.id] = term;\n return this;\n }\n /** find a term by it's id */\n\n }, {\n key: \"get\",\n value: function get(id) {\n return this.words[id];\n }\n /** find a term by it's id */\n\n }, {\n key: \"remove\",\n value: function remove(id) {\n delete this.words[id];\n }\n }, {\n key: \"merge\",\n value: function merge(pool) {\n Object.assign(this.words, pool.words);\n return this;\n }\n /** helper method */\n\n }, {\n key: \"stats\",\n value: function stats() {\n return {\n words: Object.keys(this.words).length\n };\n }\n }]);\n\n return Pool;\n}();\n/** make a deep-copy of all terms */\n\n\nPool.prototype.clone = function () {\n var _this = this;\n\n var keys = Object.keys(this.words);\n var words = keys.reduce(function (h, k) {\n var t = _this.words[k].clone();\n\n h[t.id] = t;\n return h;\n }, {});\n return new Pool(words);\n};\n\nvar Pool_1 = Pool;\n\n//add forward/backward 'linked-list' prev/next ids\nvar linkTerms = function linkTerms(terms) {\n terms.forEach(function (term, i) {\n if (i > 0) {\n term.prev = terms[i - 1].id;\n }\n\n if (terms[i + 1]) {\n term.next = terms[i + 1].id;\n }\n });\n};\n\nvar _linkTerms = linkTerms;\n\n//(Rule-based sentence boundary segmentation) - chop given text into its proper sentences.\n// Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc.\n// @spencermountain 2017 MIT\n//proper nouns with exclamation marks\n// const blacklist = {\n// yahoo: true,\n// joomla: true,\n// jeopardy: true,\n// }\n//regs-\nvar initSplit = /(\\S.+?[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049])(?=\\s+|$)/g;\nvar hasSomething = /\\S/;\nvar isAcronym$1 = /[ .][A-Z]\\.? *$/i;\nvar hasEllipse = /(?:\\u2026|\\.{2,}) *$/;\nvar newLine = /((?:\\r?\\n|\\r)+)/; // Match different new-line formats\n\nvar hasLetter = /[a-z0-9\\u00C0-\\u00FF\\u00a9\\u00ae\\u2000-\\u3300\\ud000-\\udfff]/i;\nvar startWhitespace = /^\\s+/; // Start with a regex:\n\nvar naiive_split = function naiive_split(text) {\n var all = []; //first, split by newline\n\n var lines = text.split(newLine);\n\n for (var i = 0; i < lines.length; i++) {\n //split by period, question-mark, and exclamation-mark\n var arr = lines[i].split(initSplit);\n\n for (var o = 0; o < arr.length; o++) {\n all.push(arr[o]);\n }\n }\n\n return all;\n};\n/** does this look like a sentence? */\n\n\nvar isSentence = function isSentence(str, abbrevs) {\n // check for 'F.B.I.'\n if (isAcronym$1.test(str) === true) {\n return false;\n } //check for '...'\n\n\n if (hasEllipse.test(str) === true) {\n return false;\n } // must have a letter\n\n\n if (hasLetter.test(str) === false) {\n return false;\n }\n\n var txt = str.replace(/[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049] *$/, '');\n var words = txt.split(' ');\n var lastWord = words[words.length - 1].toLowerCase(); // check for 'Mr.'\n\n if (abbrevs.hasOwnProperty(lastWord)) {\n return false;\n } // //check for jeopardy!\n // if (blacklist.hasOwnProperty(lastWord)) {\n // return false\n // }\n\n\n return true;\n};\n\nvar splitSentences = function splitSentences(text, world) {\n var abbrevs = world.cache.abbreviations;\n text = text || '';\n text = String(text);\n var sentences = []; // First do a greedy-split..\n\n var chunks = []; // Ensure it 'smells like' a sentence\n\n if (!text || typeof text !== 'string' || hasSomething.test(text) === false) {\n return sentences;\n } // cleanup unicode-spaces\n\n\n text = text.replace('\\xa0', ' '); // Start somewhere:\n\n var splits = naiive_split(text); // Filter-out the crap ones\n\n for (var i = 0; i < splits.length; i++) {\n var s = splits[i];\n\n if (s === undefined || s === '') {\n continue;\n } //this is meaningful whitespace\n\n\n if (hasSomething.test(s) === false) {\n //add it to the last one\n if (chunks[chunks.length - 1]) {\n chunks[chunks.length - 1] += s;\n continue;\n } else if (splits[i + 1]) {\n //add it to the next one\n splits[i + 1] = s + splits[i + 1];\n continue;\n }\n } //else, only whitespace, no terms, no sentence\n\n\n chunks.push(s);\n } //detection of non-sentence chunks:\n //loop through these chunks, and join the non-sentence chunks back together..\n\n\n for (var _i = 0; _i < chunks.length; _i++) {\n var c = chunks[_i]; //should this chunk be combined with the next one?\n\n if (chunks[_i + 1] && isSentence(c, abbrevs) === false) {\n chunks[_i + 1] = c + (chunks[_i + 1] || '');\n } else if (c && c.length > 0) {\n //&& hasLetter.test(c)\n //this chunk is a proper sentence..\n sentences.push(c);\n chunks[_i] = '';\n }\n } //if we never got a sentence, return the given text\n\n\n if (sentences.length === 0) {\n return [text];\n } //move whitespace to the ends of sentences, when possible\n //['hello',' world'] -> ['hello ','world']\n\n\n for (var _i2 = 1; _i2 < sentences.length; _i2 += 1) {\n var ws = sentences[_i2].match(startWhitespace);\n\n if (ws !== null) {\n sentences[_i2 - 1] += ws[0];\n sentences[_i2] = sentences[_i2].replace(startWhitespace, '');\n }\n }\n\n return sentences;\n};\n\nvar _01Sentences = splitSentences; // console.log(sentence_parser('john f. kennedy'));\n\nvar wordlike = /\\S/;\nvar isBoundary = /^[!?.]+$/;\nvar naiiveSplit = /(\\S+)/;\nvar isSlash = /[a-z] ?\\/ ?[a-z]*$/;\nvar notWord = ['.', '?', '!', ':', ';', '-', '–', '—', '--', '...', '(', ')', '[', ']', '\"', \"'\", '`'];\nnotWord = notWord.reduce(function (h, c) {\n h[c] = true;\n return h;\n}, {});\n\nvar hasHyphen = function hasHyphen(str) {\n //dont split 're-do'\n if (/^(re|un)-?[^aeiou]./.test(str) === true) {\n return false;\n } //letter-number 'aug-20'\n\n\n var reg = /^([a-z\\u00C0-\\u00FF`\"'/]+)(-|–|—)([a-z0-9\\u00C0-\\u00FF].*)/i;\n\n if (reg.test(str) === true) {\n return true;\n } //number-letter '20-aug'\n\n\n var reg2 = /^([0-9]{1,4})(-|–|—)([a-z\\u00C0-\\u00FF`\"'/-]+$)/i;\n\n if (reg2.test(str) === true) {\n return true;\n } //support weird number-emdash combo '2010–2011'\n // let reg2 = /^([0-9]+)(–|—)([0-9].*)/i\n // if (reg2.test(str)) {\n // return true\n // }\n\n\n return false;\n}; // 'he / she' should be one word\n\n\nvar combineSlashes = function combineSlashes(arr) {\n for (var i = 1; i < arr.length - 1; i++) {\n if (isSlash.test(arr[i])) {\n arr[i - 1] += arr[i] + arr[i + 1];\n arr[i] = null;\n arr[i + 1] = null;\n }\n }\n\n return arr;\n};\n\nvar splitHyphens = function splitHyphens(word) {\n var arr = []; //support multiple-hyphenated-terms\n\n var hyphens = word.split(/[-–—]/);\n var whichDash = '-';\n var found = word.match(/[-–—]/);\n\n if (found && found[0]) {\n whichDash = found;\n }\n\n for (var o = 0; o < hyphens.length; o++) {\n if (o === hyphens.length - 1) {\n arr.push(hyphens[o]);\n } else {\n arr.push(hyphens[o] + whichDash);\n }\n }\n\n return arr;\n};\n\nvar isArray$1 = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n}; //turn a string into an array of strings (naiive for now, lumped later)\n\n\nvar splitWords = function splitWords(str) {\n var result = [];\n var arr = []; //start with a naiive split\n\n str = str || '';\n\n if (typeof str === 'number') {\n str = String(str);\n }\n\n if (isArray$1(str)) {\n return str;\n }\n\n var words = str.split(naiiveSplit);\n\n for (var i = 0; i < words.length; i++) {\n //split 'one-two'\n if (hasHyphen(words[i]) === true) {\n arr = arr.concat(splitHyphens(words[i]));\n continue;\n }\n\n arr.push(words[i]);\n } //greedy merge whitespace+arr to the right\n\n\n var carry = '';\n\n for (var _i = 0; _i < arr.length; _i++) {\n var word = arr[_i]; //if it's more than a whitespace\n\n if (wordlike.test(word) === true && notWord.hasOwnProperty(word) === false && isBoundary.test(word) === false) {\n //put whitespace on end of previous term, if possible\n if (result.length > 0) {\n result[result.length - 1] += carry;\n result.push(word);\n } else {\n //otherwise, but whitespace before\n result.push(carry + word);\n }\n\n carry = '';\n } else {\n carry += word;\n }\n } //handle last one\n\n\n if (carry) {\n if (result.length === 0) {\n result[0] = '';\n }\n\n result[result.length - 1] += carry; //put it on the end\n } // combine 'one / two'\n\n\n result = combineSlashes(result); // remove empty results\n\n result = result.filter(function (s) {\n return s;\n });\n return result;\n};\n\nvar _02Words = splitWords;\n\nvar isArray = function isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n};\n/** turn a string into an array of Phrase objects */\n\n\nvar fromText = function fromText() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var pool = arguments.length > 2 ? arguments[2] : undefined;\n var sentences = null; //a bit of validation, first\n\n if (typeof text !== 'string') {\n if (typeof text === 'number') {\n text = String(text);\n } else if (isArray(text)) {\n sentences = text;\n }\n } //tokenize into words\n\n\n sentences = sentences || _01Sentences(text, world);\n sentences = sentences.map(function (str) {\n return _02Words(str);\n }); //turn them into proper objects\n\n pool = pool || new Pool_1();\n var phrases = sentences.map(function (terms) {\n terms = terms.map(function (str) {\n var term = new Term_1(str);\n pool.add(term);\n return term;\n }); //add next/previous ids\n\n _linkTerms(terms); //return phrase objects\n\n var p = new Phrase_1(terms[0].id, terms.length, pool);\n p.cache.terms = terms;\n return p;\n }); //return them ready for a Document object\n\n return phrases;\n};\n\nvar _01Tokenizer = fromText;\n\nvar fromJSON = function fromJSON(json, world) {\n var pool = new Pool_1();\n var phrases = json.map(function (p, k) {\n var terms = p.terms.map(function (o, i) {\n var term = new Term_1(o.text);\n term.pre = o.pre !== undefined ? o.pre : '';\n\n if (o.post === undefined) {\n o.post = ' '; //no given space for very last term\n\n if (i >= p.terms.length - 1) {\n o.post = '. ';\n\n if (k >= p.terms.length - 1) {\n o.post = '.';\n }\n }\n }\n\n term.post = o.post !== undefined ? o.post : ' ';\n\n if (o.tags) {\n o.tags.forEach(function (tag) {\n return term.tag(tag, '', world);\n });\n }\n\n pool.add(term);\n return term;\n }); //add prev/next links\n\n _linkTerms(terms); // return a proper Phrase object\n\n return new Phrase_1(terms[0].id, terms.length, pool);\n });\n return phrases;\n};\n\nvar fromJSON_1 = fromJSON;\n\nvar _version = '13.10.5';\n\nvar entity = ['Person', 'Place', 'Organization'];\nvar nouns$1 = {\n Noun: {\n notA: ['Verb', 'Adjective', 'Adverb']\n },\n // - singular\n Singular: {\n isA: 'Noun',\n notA: 'Plural'\n },\n //a specific thing that's capitalized\n ProperNoun: {\n isA: 'Noun'\n },\n // -- people\n Person: {\n isA: ['ProperNoun', 'Singular'],\n notA: ['Place', 'Organization', 'Date']\n },\n FirstName: {\n isA: 'Person'\n },\n MaleName: {\n isA: 'FirstName',\n notA: ['FemaleName', 'LastName']\n },\n FemaleName: {\n isA: 'FirstName',\n notA: ['MaleName', 'LastName']\n },\n LastName: {\n isA: 'Person',\n notA: ['FirstName']\n },\n NickName: {\n isA: 'Person',\n notA: ['FirstName', 'LastName']\n },\n Honorific: {\n isA: 'Noun',\n notA: ['FirstName', 'LastName', 'Value']\n },\n // -- places\n Place: {\n isA: 'Singular',\n notA: ['Person', 'Organization']\n },\n Country: {\n isA: ['Place', 'ProperNoun'],\n notA: ['City']\n },\n City: {\n isA: ['Place', 'ProperNoun'],\n notA: ['Country']\n },\n Region: {\n isA: ['Place', 'ProperNoun']\n },\n Address: {\n isA: 'Place'\n },\n //---Orgs---\n Organization: {\n isA: ['Singular', 'ProperNoun'],\n notA: ['Person', 'Place']\n },\n SportsTeam: {\n isA: 'Organization'\n },\n School: {\n isA: 'Organization'\n },\n Company: {\n isA: 'Organization'\n },\n // - plural\n Plural: {\n isA: 'Noun',\n notA: ['Singular']\n },\n //(not plural or singular)\n Uncountable: {\n isA: 'Noun'\n },\n Pronoun: {\n isA: 'Noun',\n notA: entity\n },\n //a word for someone doing something -'plumber'\n Actor: {\n isA: 'Noun',\n notA: entity\n },\n //a gerund-as-noun - 'swimming'\n Activity: {\n isA: 'Noun',\n notA: ['Person', 'Place']\n },\n //'kilograms'\n Unit: {\n isA: 'Noun',\n notA: entity\n },\n //'Canadians'\n Demonym: {\n isA: ['Noun', 'ProperNoun'],\n notA: entity\n },\n //`john's`\n Possessive: {\n isA: 'Noun' // notA: 'Pronoun',\n\n }\n};\n\nvar verbs$1 = {\n Verb: {\n notA: ['Noun', 'Adjective', 'Adverb', 'Value']\n },\n // walks\n PresentTense: {\n isA: 'Verb',\n notA: ['PastTense', 'FutureTense']\n },\n // neutral form - 'walk'\n Infinitive: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Gerund']\n },\n //close the door!\n Imperative: {\n isA: 'Infinitive' // notA: ['PresentTense', 'PastTense', 'FutureTense', 'Gerund'],\n\n },\n // walking\n Gerund: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Copula', 'FutureTense']\n },\n // walked\n PastTense: {\n isA: 'Verb',\n notA: ['FutureTense']\n },\n // will walk\n FutureTense: {\n isA: 'Verb'\n },\n // is\n Copula: {\n isA: 'Verb'\n },\n // would have\n Modal: {\n isA: 'Verb',\n notA: ['Infinitive']\n },\n // had walked\n PerfectTense: {\n isA: 'Verb',\n notA: 'Gerund'\n },\n Pluperfect: {\n isA: 'Verb'\n },\n // shown\n Participle: {\n isA: 'PastTense'\n },\n // show up\n PhrasalVerb: {\n isA: 'Verb'\n },\n //'up' part\n Particle: {\n isA: 'PhrasalVerb'\n },\n //this can be an adverb\n Auxiliary: {\n notA: ['Noun', 'Adjective', 'Value']\n }\n};\n\nvar values = {\n Value: {\n notA: ['Verb', 'Adjective', 'Adverb']\n },\n Ordinal: {\n isA: 'Value',\n notA: ['Cardinal']\n },\n Cardinal: {\n isA: 'Value',\n notA: ['Ordinal']\n },\n Fraction: {\n isA: 'Value',\n notA: ['Noun']\n },\n RomanNumeral: {\n isA: 'Cardinal',\n //can be a person, too\n notA: ['Ordinal', 'TextValue']\n },\n TextValue: {\n isA: 'Value',\n notA: ['NumericValue']\n },\n NumericValue: {\n isA: 'Value',\n notA: ['TextValue']\n },\n Money: {\n isA: 'Cardinal'\n },\n Percent: {\n isA: 'Value'\n }\n};\n\nvar anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value', 'QuestionWord'];\nvar misc$1 = {\n //--Adjectives--\n Adjective: {\n notA: ['Noun', 'Verb', 'Adverb', 'Value']\n },\n // adjectives that can conjugate\n Comparable: {\n isA: ['Adjective']\n },\n // better\n Comparative: {\n isA: ['Adjective']\n },\n // best\n Superlative: {\n isA: ['Adjective'],\n notA: ['Comparative']\n },\n NumberRange: {\n isA: ['Contraction']\n },\n Adverb: {\n notA: ['Noun', 'Verb', 'Adjective', 'Value']\n },\n // Dates:\n //not a noun, but usually is\n Date: {\n notA: ['Verb', 'Adverb', 'Preposition', 'Adjective']\n },\n Month: {\n isA: ['Date', 'Singular'],\n notA: ['Year', 'WeekDay', 'Time']\n },\n WeekDay: {\n isA: ['Date', 'Noun']\n },\n // 'PST'\n Timezone: {\n isA: ['Date', 'Noun'],\n notA: ['Adjective', 'ProperNoun']\n },\n // '9:20pm'\n Time: {\n isA: ['Date'],\n notA: ['AtMention']\n },\n //glue\n Determiner: {\n notA: anything\n },\n Conjunction: {\n notA: anything\n },\n Preposition: {\n notA: anything\n },\n // what, who, why\n QuestionWord: {\n notA: ['Determiner']\n },\n // peso, euro\n Currency: {\n isA: ['Noun']\n },\n // ughh\n Expression: {\n notA: ['Noun', 'Adjective', 'Verb', 'Adverb']\n },\n // dr.\n Abbreviation: {},\n // internet tags\n Url: {\n notA: ['HashTag', 'PhoneNumber', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email']\n },\n PhoneNumber: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email']\n },\n HashTag: {},\n AtMention: {\n isA: ['Noun'],\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'Email']\n },\n Emoji: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n Emoticon: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n Email: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n //non-exclusive\n Acronym: {\n notA: ['Plural', 'RomanNumeral']\n },\n Negative: {\n notA: ['Noun', 'Adjective', 'Value']\n },\n // if, unless, were\n Condition: {\n notA: ['Verb', 'Adjective', 'Noun', 'Value']\n }\n};\n\n// i just made these up\nvar colorMap = {\n Noun: 'blue',\n Verb: 'green',\n Negative: 'green',\n Date: 'red',\n Value: 'red',\n Adjective: 'magenta',\n Preposition: 'cyan',\n Conjunction: 'cyan',\n Determiner: 'cyan',\n Adverb: 'cyan'\n};\n/** add a debug color to some tags */\n\nvar addColors = function addColors(tags) {\n Object.keys(tags).forEach(function (k) {\n // assigned from plugin, for example\n if (tags[k].color) {\n tags[k].color = tags[k].color;\n return;\n } // defined above\n\n\n if (colorMap[k]) {\n tags[k].color = colorMap[k];\n return;\n }\n\n tags[k].isA.some(function (t) {\n if (colorMap[t]) {\n tags[k].color = colorMap[t];\n return true;\n }\n\n return false;\n });\n });\n return tags;\n};\n\nvar _color = addColors;\n\nvar unique$3 = function unique(arr) {\n return arr.filter(function (v, i, a) {\n return a.indexOf(v) === i;\n });\n}; //add 'downward' tags (that immediately depend on this one)\n\n\nvar inferIsA = function inferIsA(tags) {\n Object.keys(tags).forEach(function (k) {\n var tag = tags[k];\n var len = tag.isA.length;\n\n for (var i = 0; i < len; i++) {\n var down = tag.isA[i];\n\n if (tags[down]) {\n tag.isA = tag.isA.concat(tags[down].isA);\n }\n } // clean it up\n\n\n tag.isA = unique$3(tag.isA);\n });\n return tags;\n};\n\nvar _isA = inferIsA;\n\nvar unique$2 = function unique(arr) {\n return arr.filter(function (v, i, a) {\n return a.indexOf(v) === i;\n });\n}; // crawl the tag-graph and infer any conflicts\n// faster than doing this at tag-time\n\n\nvar inferNotA = function inferNotA(tags) {\n var keys = Object.keys(tags);\n keys.forEach(function (k) {\n var tag = tags[k];\n tag.notA = tag.notA || [];\n tag.isA.forEach(function (down) {\n if (tags[down] && tags[down].notA) {\n // borrow its conflicts\n var notA = typeof tags[down].notA === 'string' ? [tags[down].isA] : tags[down].notA || [];\n tag.notA = tag.notA.concat(notA);\n }\n }); // any tag that lists us as a conflict, we conflict it back.\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (tags[key].notA.indexOf(k) !== -1) {\n tag.notA.push(key);\n }\n } // clean it up\n\n\n tag.notA = unique$2(tag.notA);\n });\n return tags;\n};\n\nvar _notA = inferNotA;\n\n// a lineage is all 'incoming' tags that have this as 'isA'\nvar inferLineage = function inferLineage(tags) {\n var keys = Object.keys(tags);\n keys.forEach(function (k) {\n var tag = tags[k];\n tag.lineage = []; // find all tags with it in their 'isA' set\n\n for (var i = 0; i < keys.length; i++) {\n if (tags[keys[i]].isA.indexOf(k) !== -1) {\n tag.lineage.push(keys[i]);\n }\n }\n });\n return tags;\n};\n\nvar _lineage = inferLineage;\n\nvar validate = function validate(tags) {\n // cleanup format\n Object.keys(tags).forEach(function (k) {\n var tag = tags[k]; // ensure isA is an array\n\n tag.isA = tag.isA || [];\n\n if (typeof tag.isA === 'string') {\n tag.isA = [tag.isA];\n } // ensure notA is an array\n\n\n tag.notA = tag.notA || [];\n\n if (typeof tag.notA === 'string') {\n tag.notA = [tag.notA];\n }\n });\n return tags;\n}; // build-out the tag-graph structure\n\n\nvar inferTags = function inferTags(tags) {\n // validate data\n tags = validate(tags); // build its 'down tags'\n\n tags = _isA(tags); // infer the conflicts\n\n tags = _notA(tags); // debug tag color\n\n tags = _color(tags); // find incoming links\n\n tags = _lineage(tags);\n return tags;\n};\n\nvar inference = inferTags;\n\nvar addIn = function addIn(obj, tags) {\n Object.keys(obj).forEach(function (k) {\n tags[k] = obj[k];\n });\n};\n\nvar build = function build() {\n var tags = {};\n addIn(nouns$1, tags);\n addIn(verbs$1, tags);\n addIn(values, tags);\n addIn(misc$1, tags); // do the graph-stuff\n\n tags = inference(tags);\n return tags;\n};\n\nvar tags = build();\n\nvar _data = {\n \"Comparative\": \"true¦better\",\n \"Superlative\": \"true¦earlier\",\n \"PresentTense\": \"true¦is,sounds\",\n \"Value\": \"true¦a few\",\n \"Noun\": \"true¦a5b4c2f1here,ie,lit,m0no doubt,pd,tce;a,d;t,y;a,ca,o0;l,rp;a,l;d,l,rc\",\n \"Copula\": \"true¦a1is,w0;as,ere;m,re\",\n \"PastTense\": \"true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan\",\n \"Condition\": \"true¦if,lest,unless\",\n \"Preposition\": \"true¦'o,-,aLbIcHdGexcept,fFiDmidQnotwithstandiRoBpSqua,sAt6u3vi2w0;/o,hereNith0;!in,oR;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oJ;ans,ince,o that;',f0n2ut;!f;f,n0;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut\",\n \"Gerund\": \"true¦accord0be0develop0go0result0stain0;ing\",\n \"Negative\": \"true¦n0;ever,o0;!n,t\",\n \"QuestionWord\": \"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s\",\n \"Plural\": \"true¦records\",\n \"Conjunction\": \"true¦&,aFbBcuz,how9in caEno8o7p5supposing,t2v1wh0yet;eth9ile;ers4s;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh\",\n \"Abbreviation\": \"true¦a0Jb0Gc0Ad08e05f02g01h00iYjWkanVlTmNnKoJpFque,rDs8t6u5v2w0;is0r,y0B;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;ce,e0;l,mp,nn,x;ask,e2fc,gt,i1q,r,s,t,u0;pt,rg;r,tu;c,nJp0;!t;b,d,e0;pGs,v;a,d,ennNhd,l,p,r1s0vt;!eud;ef,o0;b,f,n;ct,kla,nt;e0ov;b0e;!r;a4d,essrs,i1lle,me,r7s0t;!tr;n1s0;c,ter;!n;!j,r,sc;at,it,lb,ng,t0;!d;!s;an,d,r,u0;l,n;a,da,e,n0;c,f;on,wy;a,en,ov;e1ig,l0m,r,t,y;!a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0ist,r;c,f,pt,t;a3ca,l,m2o0pl,res,yn;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v\",\n \"Pronoun\": \"true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s\",\n \"Singular\": \"true¦0:15;1:12;2:18;a15b0Sc0Jd0Ce09f04gZhViUjel0kitty,lSmOnNoMpHquestionGrEs9t6u4w3;ay,om02;nc0Zs 3;doll0Kst0M; rex,a4h3ic,ragedy,v show;ere,i2;l0x return;i6ky,omeoMt3uper bowl,yst14;ep4ri2u3;de0Xff;faSmoS;st1ze;al0i2o3;om,se;! mark;a6i1la5r4u3;dPrpoH;eroga00ie0Gobl0U;te,y1;rt,te0N;bjWceJthers,verview;othi2umb1;a5ee08o3;del,m3nopo0rni2th1;!my;n,yf0;i3unch;ne;ci2nsect;ead start,o3uman right;l0me4u3;se;! run;adf0entlem6irl02laci1od,rand4u3;l0y; slam,fa3mo3;th1;an;a6ella,ly,ol0r4un3;di2;ee market,iWo3;nti1sP;mi0th1;conomy,gg,ner7ven4x3;ampTecu9;i2t;ad8e5inn1o3ragonf0ude;cumentGg3i0l0or;gy;ath,t3;ec3;tive;!dy;a9eili2h7i5o3redit card;ttage,u3;ri1sin;ty,vil w3;ar;andeli1ocol3;ate;n3rF;ary;aCel0lesJo8r5u3;n3tterf0;ti2;eakfa4o3;!th1;st;dy,tt5y3;!fri3;end;le;nki2r3;ri1;er;d5l0noma0u3;nt;ly; homin5verti3;si2;ng;em\",\n \"FemaleName\": \"true¦0:J3;1:J7;2:IG;3:IF;4:IX;5:IK;6:JO;7:H0;8:JG;9:JK;A:HN;B:HY;C:IT;D:IP;E:JD;F:HC;G:I0;aGRbFLcDPdCYeBOfB4gADh9Ti9Gj8Gk7Gl60m49n3No3Jp37qu36r2Ds16t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof2;e3Uf2la,ra;h3iKlIna,ynH;ab,ep;da,ma;da,h3iHra;nab;aKeJi0Fol5BuIvH;etAonDO;i0na;le0sen2;el,gm3Jn,rGJs8W;aoHme0nyi;m62yAE;aMendDYhiDFiH;dele8lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;cIktoriBMlAole7viH;anC3enJ0;kF9tor2;da,lA9nus,rHs0;a,nHoniH4;a,iFQ;leHnesH4;nIHrH;i1y;g8rHxH5;su5te;aYeUhRiNoLrIuHy3;i,la;acIZiHu0L;c2na,sH;hBPta;nHr0H;iBNya;aJffaEOnHs6;a,gtiH;ng;!nFQra;aIeHomasi0;a,l9Po8Ares1;l2ndolwethu;g9Go88rIssH;!a,ie;eHi,ri9;sa,za;bPlNmLnJrIs6tHwa0;ia0um;a63yn;iHya;a,ka,s6;arB6e3iHmEDra;!ka;a,iH;a,t6;at6it6;a0Fcarlet3We0BhXiTkye,neza0oRtNuIyH;bIBlvi1;e,ha,mayIEni7sIzH;an3MetAie,y;anHi9;!a,e,nH;aDe;aJeH;fHl5GphH;an4;cHZr5;b2fiA8m0OnHphi1;d3ia,ja,ya;er3lJmon1nIobh8PtH;a,i;dy;lEPv2;aMeIirHo0risF7y5;a,lDK;ba,e0i5lJrH;iHrDOyl;!d8Hfa;ia,lDX;hd,iMki3nJrIu0w0yH;la,ma,na;i,le8on,ron;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye81vH;da,inj;e0ife;en1i0ma;anA5bNd3Nh1RiBkMlLmJndIrHs6vannaD;aDi0;ra,y;aHi3;nt6ra;lDKma,ome;ee0in8Ru3;in1ri0;a05e00hYiVoIuH;by,thDH;bScRghQl2KnPsJwIxH;anAXie,y;an,e0;aIeHie,lE; merBLann9ll1marDBt7;!lHnn1;iHyn;e,nH;a,d9K;da,i,na;ayy8D;hel62io;bDKer7yn;a,cIkHmas,n9Fta,ya;ki,o;helGki;ea,iannGDoH;da,n1K;an0bJem9Agi0iInHta,y0;a88ee;han83na;a,eH;cEAkaD;bi0chIe,i0mo0nHquEKvCy0;di,ia;aEIelHiB;!e,le;een4ia0;aNeMhKipaluk,oJrHute66;iHudenCQ;scil3LyamvaB;lly,rt2;ilome0oebe,ylH;is,lis;arl,ggy,nelope,r5t3;ige,m0TnKo5rvaDGtIulH;a,etAin1;ricHsy,tBY;a,e,ia;do3i06;ctav2dIfCZis6lHphCZumC3yunbileg;a,ga,iv2;eHvAC;l2tA;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aDeCma;ll1mi;aNcLhariBOkKlaJna,sHta,vi;anHha;ur;!y;a,iDTki;hoGk9VolH;a,eDJ;!mh;hir,lHna,risFsreC;!a,lBT;asuLdKh2i6CnJomi9rgEPtHzanin zah3;aHhal4;li1s6;cy,etA;a,e8iEV;nngu30;a09ckenz4e01iMoJrignayani,uriDDyH;a,rH;a,lNna,tG;bi0i3llBInH;a,iH;ca,ka,qD3;a,cTkaSlNmi,nLrItzi,yH;ar;aIiam,lH;anEO;!l,nB;dy,eHh,n4;nhGrva;aKdJiCPlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5EgNi,lKrH;edi79iIjem,on,yH;em,l;em,sF;an4iHliF;nHsCE;a,da;!an,han;b0DcASd0Be,g09ha,i08ja,l06n04rLsoum60tKuIv82x9IyHz4;a,bell,ra,soB9;de,rH;a,eC;h8Fild1t4;a,cYgUiKjor4l7Sn4s6tJwa,yH;!aHbe6Wja8lAE;m,nBH;a,ha,in1;!aJbCBeIja,lEna,sHt64;!a,ol,sa;!l1H;! Jh,mInH;!a,e,n1;!awit,i;aliAHcJeduarBfernIjHlui5Y;o6Ful2;anB;ecil2la3;arJeIie,oHr44ueriA;!t;!ry;et42i37;el4Ui76y;dHon,ue5;akran7y;ak,en,iHk,lo3O;a,ka,nB;a,re,s4te;daHg4;!l3A;alEd4elHge,isDBon0;ei8in1yn;el,le;a0Ne0CiYoQuLyH;d2la,nH;!a,dIeBGnHsCL;!a,eBF;a,sCJ;aCWcJel0PiFlIna,pHz;e,i7;a,u,wa;iHy;a0Se,ja,l2JnB;is,l1SrJttIuHvel4;el5is1;e,ie;aKeIi9na,rH;a86i9;lHn1t7;ei;!in1;aSbb9CdRepa,lMnJsIv2zH;!a,be5LetAz4;a,etA;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lHy;iHy;aA0e;!aH;!n5F;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx4y5;iHt4;c2t2;e2LlCG;la,nHra;a,ie,o3;a,or1;a,gh,laH;!ni;!h,nH;a,d3e,n5P;cOdon97iNkes6mi9Ana,rMtJurIvHxmi,y5;ern1in2;a,e54ie,yn;as6iIoH;nya,ya;fa,s6;a,isF;a,la;ey,ie,y;a04eZhXiOlAKoNrJyH;lHra;a,ee,ie;istHy6D;a,en,iIyH;!na;!e,n59;nul,ri,urtnB0;aOerNlAZmJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stC;!na,ra;aHei3ongordzol;dij1w5;el7QiKjsi,lJnIrH;a,i,ri;d3na,za;ey,i,lBDs4y;ra,s6;bi7cAJdiat7IeB2iRlQmPnyakuma19rNss6KtKvi7yH;!e,lH;a,eH;e,i8L;a6DeIhHi4NlEri0y;ar6Ber6Bie,leCrB2y;!lyn8Gri0;a,en,iHl5Soli0yn;!ma,n3VsF;a5il1;ei8Ei,l4;a,tl6L;a07eYiVoNuH;anLdKliHst63;a8HeHsF;!n8tH;!a,te;e5Ji3Jy;a,i7;!anNcelEd6RelGhan7RlLni,sIva0yH;a,ce;eHie;fHlEph5U;a,in1;eHie;en,n1;!a,e,n41;lHng;!i1ClH;!i1B;anMle0nJrIsH;i8Csi8C;i,ri;!a,elGif2CnH;a,etAiHy;!e,f2A;a,e8EiInH;a,e8DiH;e,n1;cMd1mi,nIque4Xsmin3Ovie3y8zH;min9;a9eIiH;ce,e,n1s;!lHsFt0F;e,le;inIk4lEquelH;in1yn;da,ta;lRmPnOo0rNsIvaHzaro;!a0lu,na;aJiIlaHob84;!n9N;do3;!belHdo3;!a,e,l39;a77en1i0ma;a,di3es,gr6Yji;a8elBogH;en1;a,e8iHo0se;a0na;aSeOiJoHusFyacin2B;da,ll4rten23snH;a,i9Q;lImaH;ri;aIdHlaI;a,egard;ry;ath1CiJlInriet7rmi8sH;sa,t1B;en2Sga,mi;di;bi2Dil8IlNnMrJsItHwa,yl8Iz7H;i5St4;n5Yti;iHmo51ri52;etH;!te;aDnaD;a,ey,l4;a03eXiSlQoOrKunJwH;enHyne1Q;!dolE;ay,el;acIetHiselB;a,chC;e,ieH;!la;ld1AogooH;sh;adys,enHor2yn2H;a,da,na;aKgi,lIna,ov89selHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald3Pi,m3Ctru8B;etAi4W;a,eHna;s26vieve;ma;bIil,le,mHrnet,yG;al5Ni5;i5FrielH;a,l1;aVeSiRloOoz2rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0O;n1s61;!ca;!rH;a,encH;e,ia;en,o0;lIn0rnH;!anB;ec2ic2;jr,n7rKtHy9;emIiHma,ouma7;ha,ma,n;eh;ah,iBrah,za0;cr4Nd0Ne0Mi0Lk7l04mWn4YrTsNtMuLvH;aJelIiH;!e,ta;in0Gyn;!ngel2S;geni1la,ni45;h5Sta;mLperanKtH;eIhHrel5;er;l30r9;za;a,eralB;iHma,nest2Jyn;cHka,n;a,ka;a,eMiJmH;aHie,y;!li8;lHn1;ee,iHy;a,e,ja;lHrald;da,y;aWeUiNlMma,no3oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c2da,f,nMsJzaH;!betHve7;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a;!in1na;leCs6;vi;eIiHna,wi0;e,th;l,n;aYeMh2iLjeneKoHul30;lor5Tminiq4In3FrHtt4;a,eCis,la,othHthy;ea,y;ba;an0AnaDon8x4ya;anQbPde,eOiMja,lJmetr2nHsir5K;a,iH;ce,se;a,iIla,orHphi8;es,is;a,l6D;dHrdH;re;!d5Cna;!b2HoraDra;a,d3nH;!a,e;hl2i0l0HmNnLphn1rIvi1XyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,etAiH;!ca,el1Cka,z;arHia;is;a0Se0Oh05i03lVoKrIynH;di,th2;istHy05;al,i0;lPnMrIurH;tn1E;aJd2NiHn2Nri8;!nH;a,e,n1;!l1X;cepci59n4sH;tanHuelo;ce,za;eHleC;en,tA;aJeoIotH;il51;!pat3;ir9rJudH;etAiH;a,ne;a,e,iH;ce,sZ;a3er3ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Ren,iHy;!an1e,n1;deJlseIrH;!i9yl;a,y;li8;nMrH;isKlImH;ai8;a,eHotA;n1tA;!sa;d3elGtH;al,elG;cIlH;esAi44;el2ilH;e,ia,y;itlZlYmilXndWrOsMtHy5;aKeJhHri0;erHleCrEy;in1;ri0;li0ri0;a33sH;a32ie;a,iNlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eHie,o7y;ne,y;na,sF;a0Hi0H;a,e,l1;is7l4;in,yn;a0Ie02iZlXoUrH;andSeQiJoIyH;an0nn;nwEok9;an3DdgLg0XtH;n2XtH;!aInH;ey,i,y;ny;etH;!t9;an0e,nH;da,na;i9y;bbi9glarIlo05nH;i7n4;ka;ancHossom,ythe;a,he;an17lja0nHsm3I;i7tH;ou;aUcky,linTni7rPssOtJulaDvH;!erlH;ey,y;hJsy,tH;e,iHy9;e,na;!anH;ie,y;!ie;nHt6yl;adIiH;ce;etAi8;ay,da;!triH;ce,z;rbJyaH;rmH;aa;a3ie,o3ra;a2Sb2Md23g1Zi1Qj5l16m0Xn09oi,r04sUtTuPvOwa,yIzH;ra,u0;aKes6gJlIseH;!l;in;un;!nH;a,na;a,i2Ir2J;drJgus1RrIsteH;ja;el2;a,ey,i,y;aahua,he0;hIi2Gja,mi7s2DtrH;id;aMlIraqHt21;at;eIi9yH;!n;e,iHy;gh;!nH;ti;iJleIo6pi7;ta;en,n1tA;aHelG;!n1J;a00dje5eYgUiSjQnJohito,toHya;inetAnH;el5ia;!aKeIiHmJ;e,ka;!mHtA;ar4;!belIliFmU;sa;!le;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tA;te;! JbImHstasiNya;ar2;el;cla3jul2pau5;aLberKeliJiHy;e,l2naH;!ta;a,ja;!ly;hGiIl2nB;da;a,ra;le;aWba,ePiMlKma,thJyH;a,c2sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c2is6jaKksaKna,sJxH;aHia;!nd3;ia,saH;nd3;ra;ia;i0nIyH;ah,na;a,is,naDoud;la;c6da,leCmNnLsH;haDlH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lEsH;on;yn;!lH;i8yn;ne;aKbIiHrL;!gaK;ey,i9y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya\",\n \"Actor\": \"true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJecretary,oldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt\",\n \"Honorific\": \"true¦a01bYcQdPeOfiJgIhon,jr,king,lHmCoffic00p7queen,r3s0taoiseach,vice6;e1fc,gt,ir,r,u0;ltRpt,rg;cond liInBrgeaJ;abbi,e0;ar1p9s,v0;!erend; admirX;astOhd,r0vt;esideDi1of0;!essM;me mini4nce0;!ss;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al\",\n \"SportsTeam\": \"true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls\",\n \"Uncountable\": \"true¦0:1I;1:16;2:1X;a1Rb1Jc1Ad17e10f0Ug0Nh0Ii0Ej0Dknowled1Ql08mYnews,oXpTrOsDt8vi7w3;a5ea0Bi4oo3;d,l;ldlife,ne;rmth,t0;neg17ol0Ctae;e6h5oothpaste,r3una;affTou3;ble,sers,t;ermod1Mund0;a,nnis;aBcene0Aeri1hAil9kittl1now,o8p6t4u3;g10nshi0Q;ati1Le3;am,el;ace1Ee3;ci1ed;ap,cc0;k,v0;eep,ingl1;d0Dfe18l3nd,tish;m11t;a6e4ic3;e,ke0M;c3laxa0Isearch;ogni0Hrea0H;bi1in;aPe5hys2last9o3ress04;l3rk,w0;it2yA;a12trZ;bstetr2il,xygen;aAe8ilk,o5u3;mps,s3;ic;n3o0I;ey,o3;gamy;a3chan2;sl1t;chine3il,themat2; learn0Bry;aught0e5i4ogi0Su3;ck,g0I;ce,ghtn08ngui0QteratN;a3isM;th0;ewelAusti0L;ce,mp3nformaUtself;a3ortan0J;ti3;en0H;a6isto5o3;ck3mework,n3spitali0B;ey;ry;ir,libut,ppiD;ene6o4r3um,ymna0D;aCound;l3ssip;d,f; 3t2;editQpo3;ol;i7lour,o4urnit3;ure;od,rgive3uri0wl;ne3;ss;c9sh;conom2duca8lectr7n5quip6th2very3;body,o3thH;ne;joy3tertain3;ment;iciPon2;tiI;ar4iabet1raugh4;es;ts;aAelcius,h6iv2l5o3urrency;al,ld w3nfusiDttD;ar;ass2oth5;aos,e3;e4w3;ing;se;r7sh;a7eef,i4lood,owls,read,utt0;er;lliar4s3;on;ds;g3ss;ga3;ge;c8dvi7ero5ir4mnes3rt,thlet2;ty;craft;b2d3naut2;ynam2;ce;id,ou3;st2;ics\",\n \"Infinitive\": \"true¦0:6S;1:76;2:5C;3:74;4:73;5:67;6:6F;7:6Y;8:6Q;9:72;A:70;B:5X;C:6X;D:6L;E:77;F:5B;a6Kb66c57d4De3Xf3Jg3Dh37i2Uj2Sk2Ql2Hm26n23o1Yp1Jr0Rs06tYuTvOwHyG;awn,ield;aJe1Zhist6iIoGre6D;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raE;d0t;aJiHoG;te,w;eGsC;!w;l6Jry;nHpGr4se;gra4Pli41;dGi9lo5Zpub3Q;erGo;mi5Cw1I;aMeLhKig5SoJrHuGwi7;ne,rn;aGe0Mi5Uu7y;de,in,nsf0p,v5J;r2ZuD;ank,reatB;nd,st;lk,rg1Qs9;aZcWeVhTi4Dkip,lSmRnee3Lo52pQtJuGwitD;bmCck,ff0gge7ppHrGspe5;ge,pri1rou4Zvi3;ly,o36;aLeKoJrHuG;dy,mb6;aFeGi3;ngthBss,tD;p,re;m,p;in,ke,r0Qy;la58oil,rink6;e1Zi6o3J;am,ip;a2iv0oG;ck,rtBut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu8fYgXje5lUmTnt,pQquPsKtJvGwa5V;eGiew,o36;al,l,rG;se,t;aFi2u44;eJi7oItG;!o2rG;i5uc20;l3rt;mb6nt,r3;e7i2;air,eHlGo43r0K;a8y;at;aFemb0i3Zo3;aHeGi3y;a1nt;te,x;a5Dr0J;act1Yer,le5u1;a13ei3k5PoGyc6;gni2Cnci6rd;ch,li2Bs5N;i1nG;ge,k;aTerSiRlOoMrIuG;b21ll,mp,rGsh;cha1s4Q;ai1eIiEoG;cGdu8greAhibCmi1te7vi2W;eAlaim;di5pa2ss,veE;iEp,rtr46sGur;e,t;aHead,uG;g,n4;n,y;ck,le;fo34mCsi7;ck,iErt4Mss,u1;bJccur,ff0pera9utweIverGwe;co47lap,ta22u1wG;helm;igh;ser3taF;eHotG;e,i8;ed,gle5;aMeLiIoHuG;ltip3Grd0;nit13ve;nHrr12sreprG;eseE;d,g6us;asu2lt,n0Nr4;intaFna4rHtG;ch,t0;ch,kGry;et;aMeLiJoGu1C;aHck,oGve;k,sB;d,n;ft,g35ke,mCnk,st2YveG;!n;a2Fc0Et;b0Nck,uG;gh,nD;iGno34;ck,ll,ss;am,oFuG;d4mp;gno2mQnGss3H;cOdica9flu0MhNsKtIvG;eGol3;nt,st;erGrodu8;a5fe2;i7tG;aGru5;ll;abCibC;lu1Fr1D;agi24pG;lemeEo22ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppBrm,te;aKloAove1PrIuG;arGeAi15;ant39d;aGip,ow,umb6;b,sp;in,th0ze;aReaQiOlMoJrHuncG;ti3J;acGeshB;tu2;cus,lHrG;ce,eca7m,s30;d,l24;a1ZoG;at,od,w;gu2lGni1Xt,x;e,l;r,tu2;il,stBvG;or;a15cho,le5mSnPstNvalua9xG;a0AcLerKi7pGte19;a18eHi2laFoGreA;rt,se;ct,riG;en8;ci1t;el,han4;abGima9;li1J;ab6couXdHfor8ga4han8j03riDsu2t0vG;isi2Vy;!u2;body,er4pG;hasiGow0;ze;a07eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iZor8;aKcHliGmiApl1Btingui14;ke;oGuA;uGv0;ra4;gr1YppG;ear,ro3;cOeNfLliv0ma0Fny,pKsHterG;mi0G;cribe,er3iHtrG;oy;gn,re;a0Be0Ai5osC;eGi0By;at,ct;m,pB;iIlHrG;ea1;a2i06;de;ma4n8rGte;e,kB;a0Ae09h06i9l04oJrG;aHeGoAu0Hy;a9dC;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin8;rt,y;aFin0VrG;a7ibu9ol;iGtitu9;d0st;iHoGroE;rm;gu2rm;rn;biLfoKmaJpG;a2laF;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aSePloOoMrIuG;lGry;ly;igHuG;sh;htB;en;a7mb,o7rrGth0un8;ow;ck;ar,lHnefCtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waC;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia9uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun8sw0tG;icipa9;ce;lHt0;er;e4ow;ee;rd;aRdIju7mCoR;it;st;!reA;ss;cJhie3knowled4tiva9;te;ge;ve;eIouEu1;se;nt;pt;on\",\n \"Unit\": \"true¦0:19;a14b12c0Od0Ne0Lf0Gg0Ch09in0Hjoule0k02l00mNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Nb,d0Dears old,o1;tt0H;att0b;able4b3d,e2on1sp;!ne0;a2r0D;!l,sp;spo04; ft,uare 1;c0Id0Hf3i0Fkilo0Jm1ya0E;e0Mil1;e0li0H;eet0o0D;t,uart0;ascals,e2i1ou0Pt;c0Mnt0;rcent,t02;hms,uYz;an0JewtT;/s,b,e9g,i3l,m2p1²,³;h,s;!²;!/h,cro5l1;e1li08;! pFs1²;! 1;anEpD;g06s0B;gQter1;! 2s1;! 1;per second;b,i00m,u1x;men0x0;b,elvin0g,ilo2m1nR;!/h,ph,²;byZgXmeter1;! p2s1;! p1;er1; hour;e1g,r0z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s\",\n \"Organization\": \"true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c\",\n \"Demonym\": \"true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an\",\n \"Possessive\": \"true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne\",\n \"Currency\": \"true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s\",\n \"City\": \"true¦0:73;1:61;2:6G;3:5U;4:5R;a68b54c4Id4Ae46f3Yg3Jh38i2Zj2Uk2Dl22m1Kn19o16p0Uq0Sr0Ls01tPuOvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3J;greb,nzib5G;ang2e5okoha3Uunfu;katerin3Jrev0;a5n0O;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1K;hi5Zkl3C;l63xford;aw;a6ern2i5ladivost5Molgogr6K;en3lni6R;lenc6Dncouv2Yr3ughn;lan bat1Drumqi,trecht;aDbilisi,eCheBi9o8r7u5;l21n63r5;in,ku;ipoli,ondh62;kyo,m34ron1QulouS;an5jua3l2Zmisoa6Era3;j4Xshui; hag65ssaloni2L;gucigal28hr0l av1W;briz,i6llinn,mpe5Ang5rtu,shk2X;i2Msh0;an,chu1n0p2Iyu0;aEeDh8kopje,owe1It7u5ydney;ra5zh51;ba0Jt;aten is59ockholm,rasbou6Auttga31;an8e6i5;jiazhua1llo1m60y0;f54n5;ya1zh4L;gh3Ot4U;att4Ao1Yv49;cramen18int DlBn5o paulo,ppo3Wrajevo; 7aa,t5;a 5ia3Io domin3I;a3fe,m1O;antonCdie3Gfrancisco,j5ped3Ssalv8;o5u0;se;em,v5z2B;ad0I;lou59peters29;aAe9i7o5;me,sar5t5A;io;ga,o5yadh;! de janei3I;cife,ykjavik;b4Uip4lei2Mnc2Swalpindi;ingdao,u5;ez2i0Q;aEeDhCiBo8r7u6yong5;ya1;eb5Aya1;ag54etor53;rt5zn0; 5la4Fo;au prin0Nelizabe29sa05;ls3Srae5Ctts2B;iladelph4Ynom pe1Doenix;r26tah tik3I;ler00naji,r4Pt5;na,r36;ak47des0Lm1Rr6s5ttawa;a3Ylo;an,d07;a8ew6i5ovosibir1Oyc;ng2Hs; 5cast39;del27orlea46taip16york;g8iro4Xn5pl2Zshv36v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0Y;aFeCi9o6u5;mb2Cni28sc40;gadishu,nt6s5;c17ul;evideo,re31;ami,l6n18s5;kolc,sissauga;an,waukee;cca,d5lbour2Pmph41;an,ell5i3;in,ín;cau,drAkass2Tl9n8r5shh4A;aca6ib5rakesh,se2N;or;i1Ty;a4EchEdal12i47;mo;id;aCeiAi8o6u5vRy2;anLckn0Rdhia3;n5s angel28;d2g bea1O;brev2De3Kma5nz,sb2verpo2A;!ss29;c5pzig;est0C; p6g5ho2Yn0Gusan27;os;az,la35;aHharFiClaipeBo9rak0Hu7y5;iv,o5;to;ala lump4n5;mi1sh0;be,hi0Llka2Zpavog4si5wlo2;ce;da;ev,n5rkuk;gSsha5;sa;k5toum;iv;bIdu3llakuric0Tmpa3Gn6ohsiu1ra5un1Lwaguc0T;c0Sj;d5o,p4;ah1Vy;a7e6i5ohannesZ;l1Xn0;dd37rusalem;ip4k5;ar2J;bad0mph1QnBrkutYs8ta01z5̇zm7;m6tapala5;pa;ir;fah0l6tanb5;ul;am2Zi2I;che2d5;ianap2Lo21;aBe8o5yder2W; chi mi6ms,nolulu,u5;st2;nh;f6lsin5rakli2;ki;ei;ifa,lifax,m7n5rb1Dva3;gAnov5oi;er;bu2Wilt2;aFdanEenDhCiPlasgBo9raz,u5;a5jr21;dal6ng5yaquil;zh1H;aja2Lupe;ld coa18then5;bu2P;ow;ent;e0Toa;sk;lw7n5za;dhi5gt1C;nag0S;ay;aisal26es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Nl paso;in5mont2;bur5;gh;aAe8ha0Visp4o7resd0Ju5;b5esseldorf,rb0shanbe;ai,l0G;ha,nggu0rtmu11;hradRl5troit;hi;donghHe5k08li0masc1Xr es sala1HugavpiY;gu,je2;aKebu,hAo5raio03uriti1P;lo7n6penhag0Ar5;do1Nk;akLst0V;gVm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;n5ttogr12;digarh,g5;ch8sha,zh06;i9lga8mayenJn6pe town,r5;acCdiff;ber18c5;un;ry;ro;aUeMhJirmingh0ToIr9u5;chareRdapeRenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil0Mtisla7zzav5;il5;le;va;goZst2;op6ubaneshw5;ar;al;iBl9ng8r5;g6l5n;in;en;aluru,hazi;fa5grade,o horizonte;st;ji1rut;ghd0BkGnAot9r7s6yan n4;ur;el,r07;celo3ranquil09;na;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a04b01cc00ddis abaZgartaYhmedWizawl,lQmNnHqaZrEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a6chora5kaNtwerp;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 8buquerq7e5giers,maty;ppo,xandr5;ia;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg\",\n \"Country\": \"true¦0:39;1:2M;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om3DpZqat1KrXsKtCu6v4wal3yemTz2;a25imbabwe;es,lis and futu2Y;a2enezue32ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2Y;k.,s.2; 28a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Ys and caic1U; and 2-2;toba1K;go,kel0Znga;iw2Wji2nz2S;ki2U;aCcotl1eBi8lov7o5pa2Cri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Rriname;lomon1Wmal0uth 2;afr2JkLsud2P;ak0en0;erra leoEn2;gapo1Xt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele25luc0mart20;epublic of ir0Dom2Duss0w2;an26;a3eHhilippinTitcairn1Lo2uerto riM;l1rtugE;ki2Cl3nama,pua new0Ura2;gu6;au,esti2;ne;aAe8i6or2;folk1Hth3w2;ay; k2ern mariana1C;or0N;caragua,ger2ue;!ia;p2ther19w zeal1;al;mib0u2;ru;a6exi5icro0Ao2yanm05;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagasc00l6r4urit3yot2;te;an0i15;shall0Wtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed01;a5e4i2uxembourg;b2echtenste11thu1F;er0ya;ban0Hsotho;os,tv0;azakh1Ee3iriba03o2uwait,yrgyz1E;rWsovo;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an\",\n \"Region\": \"true¦0:2M;1:2S;2:2J;a2Pb2Cc1Yd1Tes1Sf1Qg1Kh1Gi1Bj17k12l0Zm0On07o05pZqWrTsKtFuCv9w5y3zacatec2T;akut0o0Du3;cat2k07;a4est 3isconsin,yomi1L;bengal,vi6;rwick2Ashington3;! dc;er4i3;rgin0;acruz,mont;dmurt0t3;ah,tar3; 2Ka0W;a5e4laxca1Qripu1Wu3;scaDva;langa1nnessee,x2E;bas0Um3smNtar24;aulip2Cil nadu;a8i6o4taf10u3ylh1E;ffYrr03s19;me1Bno1Puth 3;cVdU;ber0c3kkim,naloa;hu2ily;n4skatchew2xo3;ny; luis potosi,ta catari1;a3hode9;j3ngp06;asth2shahi;ingh24u3;e3intana roo;bec,en5reta0Q;ara7e5rince edward3unjab; i3;sl0A;i,nnsylv3rnambu0A;an0;!na;axa0Xdisha,h3klaho1Zntar3reg6ss0Ax0F;io;aIeDo5u3;evo le3nav0V;on;r3tt16va scot0;f8mandy,th3; 3ampton15;c5d4yo3;rk13;ako1M;aroli1;olk;bras1Lva0Bw3; 4foundland3;! and labrador;brunswick,hamp0Wjers3mexiRyork state;ey;galOyarit;a9eghala0Mi5o3;nta1r3;dov0elos;ch5dlanCn4ss3zor11;issippi,ouri;as geraOneso18;ig2oac2;dhy12harasht0Gine,ni4r3ssachusetts;anhao,i el,ylF;p3toba;ur;anca0Ie3incoln0IouisH;e3iR;ds;a5e4h3omi;aka06ul1;ntucky,ra01;bardino,lmyk0ns0Qr3;achay,el0nata0X;alis5har3iangxi;kh3;and;co;daho,llino6n3owa;d4gush3;et0;ia1;is;a5ert4i3un2;dalFm0D;fordZ;mpYrya1waii;ansu,eorg0lou7oa,u3;an4erre3izhou,jarat;ro;ajuato,gdo3;ng;cesterS;lori3uji2;da;sex;ageTe6o4uran3;go;rs3;et;lawaLrbyK;aEeaDh8o3rimea ,umbr0;ahui6l5nnectic4rsi3ventry;ca;ut;i02orado;la;e4hattisgarh,i3uvash0;apQhuahua;chn4rke3;ss0;ya;ra;lFm3;bridge6peche;a8ihar,r7u3;ck3ryat0;ingham3;shi3;re;emen,itish columb0;h0ja cal7lk6s3v6;hkorto3que;st2;an;ar0;iforn0;ia;dygea,guascalientes,lAndhr8r4ss3;am;izo1kans4un3;achal 6;as;na;a 3;pradesh;a5ber4t3;ai;ta;ba4s3;ka;ma\",\n \"Place\": \"true¦a0Eb0Bc04d03e02f00gVhUiRjfk,kOlMmJneGoFpBque,rd,s9t6u5v4w1y0;akutOyz;ake isFis1y0;!o;!c;a,ostok,t;laanbaatar,p02safa,t;ahiti,e1he 0;bronx,hamptons;nn,x;a0fo,oho,t,under7yd;khalNsk;a2e1h0itcairn;l,x;k,nnN;!cif04;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dNnn;gadZlibu,nhattZ;a0gw,hr;s,x;an1osrae,rasnoyar0ul;sk;!s;a1cn,da,nd0st;ianRochina;!x;arlem,kg,nd,oHwy;a3re0;at 0enwich;brita0lakH;in;!y village;co,l0ra;!a;urope,vergladC;ak,en,fw,ist,own4xb;al5dg,gk,h2l1o0rA;lo,nn;!t;a1ina0uuk;town;morro,tham;!if;cn,e1kk,l0rooklyn;vd;l air,verly hills;frica,lta,m7n3r2sia,tl1ve,zor0;es;!ant2;ct1iz;adyr,tarct0;ic0; oce0;an;ericas,s\",\n \"MaleName\": \"true¦0:E5;1:D6;2:DO;3:AY;4:D2;5:CG;6:B6;7:CW;8:C8;9:DK;A:DL;B:A6;C:C2;aCObBLcAJd9He8Nf85g7Ih6Ui6Ej5Ek52l4Dm35n2To2Np2Fqu2Dr1Ls11t0Eu0Dv07wTxSyIzD;aDor0;cDh9Tkaria,n5W;hEkD;!aCM;ar5WeCL;aLoFuD;sDu2KvBY;if,uf;nFsEusD;ouf,sD;ef;aDg;s,tD;an,h0;hli,nBMssX;avi3ho4;aMeKiFoDyaC2;jcie8Clfgang,odrow,utD;!er;lDnst1;bFey,frD1lD;aBDiD;am,e,s;e9Fur;i,nde6sD;!l8t1;de,lErrAyD;l1ne;lDt3;aAAy;aGiDladimir,ojte7Z;cEha0kt69nceDrgAJva0;!nt;e3Vt67;lentDnA5;in4Y;ghBVlyss5Cnax,sm0;aXeShOiMoHrFuEyD;!l3ro7s1;n9r5C;avAWeDist0oy,um0;ntAOv5Zy;bGdFmDny;!as,mDoharu;aCTie,y;!d;iBy;mDt5;!my,othy;adFeoEia8GomD;!as;!do8P;!de5;dGrD;en9LrD;an9KeDy;ll,n9J;!dy;dgh,ha,iDnn3req,tsu4T;cB5ka;aTcotRePhLiJoHpenc3tDur1Vylve9Kzym1;anFeDua8D;f0phBTvDwa8C;e62ie;!islaw,l8;lom1nBFuD;leyma7ta;dDlBm1yabonga;!dhart7Bn8;aFeD;lDrm0;d1t1;h7Une,qu10un,wn,y7;aDbasti0k2Al4Rrg4Oth,ymoAU;m5n;!tD;!ie,y;lEmDnti2Eq5Bul;!ke5MmCu4;ik,vato7X;aYeUheAAiQoHuEyD;an,ou;b7NdEf5pe7SssD;!elBZ;ol3Fy;an,bKcJdIel,geHh0landBQmGnFry,sEyD;!ce;coe,s;!aAHnC;an,eo;l47r;e5Og3n8olfo,ri7A;co,ky;bCeB7;cDl8;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ubAx,yDza;an1InY;gA8iD;naA4s;ch70fa4lHmGndFpha4sEul,wi2HyD;an,mo82;h7Vm5;alBDol2Uy;iATon;f,ph;ent2inD;cy,t1;aIeGhilFier72ol,rD;aka16eD;m,st1;!ip,lip;dALrcy,tD;ar,e3Gr1X;b4Kdra7Ft4ZulD;!o17;ctav3Fi3liv3mAFndrej,rHsEtDum9wA;is,to;aEc9k9m0vD;al5Z;ma;i,l53vL;aLeJiFoDu3A;aDel,j5l0ma0r3K;h,m;cEg4i49kD;!au,h7Uola;holBkDolB;!olB;al,d,il,ls1vD;il8Y;hom,thD;anDy;!a4i4;aZeWiMoHuEyD;l2Jr1;hamEr6XstaD;fa,p5C;ed,mH;di0We,hamFis2FntEsDussa;es,he;e,y;ad,ed,mD;ad,ed;cIgu4hai,kGlFnEtchD;!e6;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk8;aEeD;al,l;el,l;hElv2rD;le,ri6v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe6;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha6tDv2;iDy;!m,n;in,on;!el,oPus;!el9IoOus;iGu4;achDcolm,ik;ai,y;amEdi,eDmoud;sh;adDm5T;ou;aXeQiOlo3EoKuEyD;le,nd1;cGiFkDth3uk;aDe;!s;gi,s,z;as,iaD;no;g0nn7SrenFuDv8Jwe6;!iD;e,s;!zo;am,oD;n4r;a8Cevi,la5JnIoGst3thaFvD;eDi;nte;bo;!nD;!a6Sel;!ny;mFnErDur5Hwr5H;ry,s;ce,d1;ar,o5A;aLeGhaled,iDrist5Iu4Vy6X;er0p,rD;by,k,ollD;os;en0iGnDrmit,v44;!dEnDt5Z;e1Ay;a6ri59;r,th;cp3j5m66na73rEsp9them,uD;ri;im,l;a02eUiSoGuD;an,lDst2;en,iD;an,en,o,us;aNeLhnKkubBnIrGsD;eEhDi8Bue;!ua;!ph;dDge;an,i,on;!aDny;h,s,th5I;!ath5Hie,nC;!l,sDy;ph;o,qu2;an,mD;!mC;d,ffIrFsD;sDus;!e;a6BemEmai7oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKdAkImHrFsEvi3yD;!dAs1;on,p3;ed,od,rDv56;e5Nod;al,es4Xis1;a,e,oDub;b,v;k,ob,quD;es;aWbQchiPgNkeMlija,nuLonut,rJsFtDv0;ai,suD;ki;aEha0i7DmaDsac;el,il;ac,iaD;h,s;a,vinDw2;!g;k,nngu5S;!r;nacDor;io;ka;ai,rahD;im;aPeJoIuDyd9;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4JdA;an,s0;lGo50rFuDv8;hi4Gki,tD;a,o;is1y;an,ey;k,s;!im;ib;aVeRiPlenOoLrHuD;ilEsD;!tavo;herme,lerD;mo;aFegDov3;!g,orD;io,y;dy,h5Wnt;nzaErD;an,d1;lo;!n;lbe5Ano,oD;rg3Hvan5A;ne,oFrD;aDry;ld,rd5H;ffr8rge;brElArDv2;la28r3Sth,y;e3EielD;!i5;aTePiNlLorr0NrD;anFedDitz;!dCeDri2B;ri2A;cFkD;!ie,lD;in,yn;esLisD;!co,z36;etch3oD;yd;d4lDnn,onn;ip;deriFliEng,rnD;an06;pe,x;co;bi0di,hd;ar04dZfrYit0lSmKnHo2rFsteb0th0uge7vDymAzra;an,eD;ns,re36;gi,i0DnDrol,v2w2;est4Pie;oEriqDzo;ue;ch;aJerIiEmD;aIe2Z;lErD;!h0;!iD;o,s;s1y;nu4;be0Cd1iGliFmEt1viDwood;n,s;er,o;ot1Ys;!as,j4NsD;ha;a2en;!dCg9mGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay7ight;a7dl8nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e6ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay7ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne6rDyl;eDin,yl;l3Bn;n,o,us;!e,i4ny;iDon;an,en,on;e,lB;as;a09e07hYiar0lNoIrGuEyrD;il,us;rtD;!is;aDistob0U;ig;dy,lGnErD;ey,neli5y;or,rD;ad;by,e,in,l2t1;aIeFiDyK;fDnt;fo0Ft1;meEt5velaD;nd;nt;rFuEyD;!t1;de;enD;ce;aIeGrisEuD;ck;!tD;i0oph3;st3;er;d,rDs;b4leD;s,y;cDdric,s9;il;lGmer1rD;ey,lEro6y;ll;!os,t1;eb,v2;a07eZiVlaUoRrEuDyr1;ddy,rtK;aLeGiFuEyD;an,ce,on;ce,no;an,ce;nEtD;!t;dEtD;!on;an,on;dEndD;en,on;!foDl8y;rd;bErDyd;is;!by;i7ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n8rDt;eDy;tt;ey;dDeE;ar,iD;le;ar17b0Vd0Rf0Pgust2hm0Mi0Jja0Il04m00nSputsiRrIsaHuFveEyDziz;a0kh0;ry;gust5st2;us;hi;aKchJiIjun,maHnFon,tDy0;hDu09;ur;av,oD;ld;an,nd0H;!el,ki;ie;ta;aq;as,dIgel0CtD;hoGoD;i7nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePdAeJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;dAm9;ar;en;ad,eD;d,t;in;onD;so;aEi,olfDri0vik;!o;mDn;!a;dHeGraEuD;!bakr,lfazl;hDm;am;!l;allIelFoulaye,ulD;!lDrF;ah,o;! rD;ahm0;an;ah;av,on\",\n \"LastName\": \"true¦0:9F;1:9V;2:9H;3:9X;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:6E;B:77;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaB;aBhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsB;liA1s3;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukA;lk5roby5;dAllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisB;dor95lst31m2rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps3s0Y;hirAkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot2lliv4zuB;aEein0oD;i67j3Lyan8V;l6rm0;kol5lovy5re6Psa,to,uD;ng,sa;iDy5Z;rn5tD;!h;l5YmDngh,rbu;mo6Do6J;aFeDimizu;hu,vchD;en7Cuk;la,r17;gu8mDoh,pulve8Trra4R;jDyD;on5;evi6Filtz,miDneid0roed0ulz,warz;dEtD;!z;!t;ar42h6ito,lFnDr2saBto,v2;ch7d0AtDz;a4Pe,os;as,ihAm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins3;!on;bei0LcEes,vDzzo;as,e8;ci,hards3;ag4es,it0ut0y9;dFmEnDsmu7Zv5F;tan1;ir7os;ic,u;aSeLhJiGoErDut6;asad,if5Zochazk1W;lishc24pDrti62u55we66;e2Tov48;cEe09nD;as,to;as60hl0;aDillips;k,m,n5K;de3AetIna,rGtD;ersErovDtersC;!a,ic;en,on;eDic,ry,ss3;i8ra,tz,z;ers;h71k,rk0tEvD;ic,l3T;el,t2O;bJconnor,g2ClGnei5PrEzD;demir,turk;ella3MtDwe5N;ega,iz;iDof6GsC;vDyn1F;ei8;aPri1;aLeJguy1iFoDune44ym4;rodahl,vDwak;ak3Uik5otn56;eEkolDlsCx3;ic,ov6X;ls1miD;!n1;ils3mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov2;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dAti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkAqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k2nDo;d,gu;mbarDpe2Rvr2;di;!nDu,yana1R;coln,dD;bDholm;erg;bed5TfeGhtFitn0kaEn6rDw2G;oy;!j;in1on1;bvDvD;re;iDmmy,rsCu,voie;ne,t11;aTennedy,h4iSlQnez46oJrGuEvar4woD;k,n;cerDmar58znets5;a,o2G;aDem0i2Zyeziu;sni3PvD;ch3U;bay4Frh0Jsk0TvaFwalDzl5;czDsB;yk;cFlD;!cDen3Q;huk;!ev2ic,s;e6uiveD;rt;eff0l2mu8nnun1;hn,lloe,minsBrEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r2;e2JhFnErge2Ju2NvD;anA;es,ss3;anEnsD;en,on,t3;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks3obs1;brahimAglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz2fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers3;kkiEnD;on1;la,n1;dz2g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw3;o,staf2Utierr7zm4;ayDg2iffitUub0;li1G;lub3Rme0JnD;calv9zale0I;aj,i;l,mDordaL;en7;iev3B;gnJlGmaFnd2No,rDs2Nuthi0;cDza;ia;ge;eaElD;agh0i,o;no;e,on;ab0erMiIjeldsted,lor9oGrFuD;cDent9ji3F;hs;an1Wiedm4;ntaDrt6st0urni0;na;lipEsD;ch0;ovD;!ic;hatAnandeVrD;arDei8;a,i;ov2;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s3;er,is3wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov2;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e3uD;ca;hl,mcevsBnErw6t2EviD;d5es,s;ieDku1S;ls1;ki;a05e00hNiobMlarkLoFrD;ivDuz;elli;h1lGntFop0rDs26x;byn,reD;a,ia;i,rer0O;em4liD;ns;!e;anu;aLeIiu,oGriDuJwe;stD;eDiaD;ns1;i,ng,uFwDy;!dhury;!n,onEuD;ng;!g;kEnDtterjee,v7;!d,g;ma,raboD;rty;bGl09ng2rD;eghetEnD;a,y;ti;an,ota0M;cer9lder3mpbeIrFstDvadi08;iDro;llo;doEt0uDvalho;so;so,zo;ll;es;a09eXhUiSlNoGrFyD;rne,tyD;qi;ank5iem,ooks,yant;gdan5nFruya,su,uchEyHziD;c,n5;ard;darDik;enD;ko;ov;aEondD;al;nEzD;ev2;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss3;asD;hi;er,ham;b2ch,ez,hMiley,kk0nHrDu0;bEnDua;es,i0;ieDosa;ri;dDik;a8yopadhyD;ay;ra;er;k,ng;ic;cosZdYguilXkhtXlSnJrGsl4yD;aEd6;in;la;aEsl4;an;ujo,ya;dFgelD;ovD;!a;ersGov,reD;aDjL;ss1;en;en,on,s3;on;eksejGiyGmeiFvD;ar7es;ez;da;ev;ar;ams;ta\",\n \"WeekDay\": \"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s\",\n \"Month\": \"true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il\",\n \"Date\": \"true¦ago,t2week0yesterd4; e0e0;nd;mr2o0;d0morrow;ay;!w\",\n \"FirstName\": \"true¦aKblair,cGdevFgabrieEhinaDjBk8l7m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g6ne;a1el0ina,org5;!okuh9;naia,r0;ion,lo;ashawn,uca;asCe1ir0rE;an;lsAnyat2rry;am0ess6ie,ude;ie,m5;ta;le;an,on;as2h0;arl0eyenne;ie;ey,sidy;lex2ndr1ubr0;ey;a,ea;is\",\n \"Person\": \"true¦ashton kutchTbScNdLeJgastOhHinez,jFkEleDmCnettKoBp9r4s3t2v0;a0irgin maH;lentino rossi,n go3;aylor,heresa may,iger woods,yra banks;addam hussain,carlett johanssKlobodan milosevic,uC;ay romano,e3o1ush limbau0;gh;d stewart,nald0;inho,o;ese witherspoFilly;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0;on;dinal wols1son0;! palm2;ey;arack obama,rock;er\",\n \"Verb\": \"true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en\",\n \"PhrasalVerb\": \"true¦0:7E;1:72;2:7Q;3:7G;4:6V;5:7T;6:7I;7:6O;8:71;9:6P;A:5T;B:7C;C:7J;D:6Q;E:7L;F:7D;G:7S;H:46;a7Yb6Jc5Sd5Oe5Mf4Lg43h3Miron0j3Ik3Dl2Xm2Ln2Jo2Hp1ZquietDr1Ms0FtVuTvacuum 1wLyammerBzI;eroAip JonI;e0k0;by,up;aOeLhKiJorIrit5H;d 1k35;mp0n2Xpe0r7s7;eel Fip G;aJiIn2L;gh 0Crd0;n Fr 3S;it 60k7lk6rm 6Bsh 7Lt6Ov53;rgeBsI;e 9herA;aXeVhTiPoNrKuIype 68;ckArn I;d2in,o3Vup;aJiIot0y 2L;ckleDp G;ckDde 02;neDp Is4Q;d2o71up;ck KdJe Igh69me0p o0Kre0;aw3ba4d2in,up;e 60y 1;by,oC;ink Irow 6B;ba4ov8up;aIe 4Vll52;m 1r 01;ckBke Jlk I;ov8u53;aIba4d2in,o3Fup;ba4ft8p58w3;a0Nc0Me0Gh0Ci09l05m04n03o02pXquare WtOuMwI;earKiI;ngJtch I;aw3ba4o75; by;ck Iit 1m 1ss0;in,up;aNe10iMoKrIucH;aigh1ZiI;ke 6En3C;p Irm22;by,in,oC;nHr 1tc3V;cHmp0nd Ir6Xve6y 1;ba4d2up;d2oCup;arHeLiKlJrIurB;ingBuc7;a3Hit 47;l16n 1;e5Qll0;be4Prt0;ap 4Row F;ash 5Doke0;eep JiIow 9;c3Yp 1;in,oI;ff,v8;gn 4WngJt Iz7;d2o5up; al52le0;aKoIu4S;ot Iut0w 6B;aw3ba4f3IoC;cHdeAk56ve6;e Mll0nd LtI; Itl4G;d2in,o5upI;!on;aw3ba4d2in,o2Aup;o5to;al4Zout0rap4Z;il6v7;aTeQiPoLuI;b 4Sle0n Istl7;aIba4d2in5Ho3Tt3Bu3R;c29w3;ll Kot JuI;g2Vnd6;a29f32o5;arEin,o5;ng 51p6;aIel6inAnt0;c5Bd I;o33u0L;cHt0;aVeUiTlRoPrMsyc2JuI;ll Kt I;aIba4d2in,o1Rt3Fup;p3Kw3;ap3Jd2in,o5t3Dup;attleBess JiLoI;p 1;ah1Ron;iIp 5Fr3XurDwer 5F;nt0;ay4BuI;gAmp 9;ck Gg0leBn 9p48;el 4JncilA;c41ir 2Rn0ss KtJy I;ba4oC; d2c27;aw3ba4o1C;pIw3W;e3Vt F;arrowDerd0oI;d6teD;aQeNiMoKuI;ddl7lI;l 3I;cHp 1uth6ve I;al3Md2in,o5up;ss0x 1;asur7lJss I;a1Jup;t 9;ke Jn 9rIs1Sx0;k 9ry6;do,o47up;aVeTiOoIuck0;aMc3Gg LoIse0;k Ise3E;aft8ba4d2forw2Jin45ov8uI;nd8p;in,o0Q;d 9;e LghtKnJsIv1Y;ten G;e 1k 1; 1e36;arEd2;av1Mt 36velI; o3T;c7p 1sh ItchBugh6y20;in3To5;eJick6nock I;d2o3P;eIyA;l 2Pp I;aw3ba4d2fXin,o0Bto,up;aKoJuI;ic7mpA;ke30tD;c39zz 1;aUePiMoJuI;nkerDrry 1s0Z;lIneArse2W;d Ie 1;ba4d2fast,o05up;de Jt I;ba4on,up;aw3o5;aIlp0;d Kl 2Ar It 1;fIof;rom;in,oXu1H;cHm 1nJve Iz25;it,to;d Ig 2EkerK;d2in,o5;aWeQive Oloss 22oKrJunI; f0Q;in3Gow 2A; Iof 0Y;aJb1Dit,oIrEt0Su18;ff,n,v8;bo5ft8hOw3;aw3ba4d2in,oIup,w3;ff,n,ut;a1Dek0t I;aJb17d2oIrEup;ff,n,ut,v8;cJhIl1WrEt,w3;ead;ross;d aJnI;g 1;bo5;a0Ce05iWlSoOrKuI;cHel 1;k 1;eJighten IownBy 1;aw3oC;eIshe1N; 1z7;lKol I;aIwi1G;bo5rE;d 9low 1;aJeIip0;sh0;g 9ke0mIrI;e G;gPlNnLrJsIzzle0;h G;e Im 1;aw3ba4up;d0isI;h 1;e Il 19;aw3fN;ht ba4ure0;eNnJsI;s 1;cKd I;fIoC;or;e F;dWl 1;cMll Irm0t0W;ap05bKd2in,oJtI;hrough;ff,ut,v8;a4ehi20;e J;at0dge0nd Iy7;oCup;oKrI;ess 9op I;aw3bUin,o1D; 0Eubl7;aYhVlean 9oIross Fut 10;me LoJuntI; o1T;k 1l I;d2oC;aObNforLin,oKtJuI;nd8;ogeth8;ut,v8;th,wI;ard;a4y;pIrEw3;art;eIipA;ck FeI;r 1;lOncel0rLsKtch JveA; in;o1Cup;h Ft6;ry JvI;e 01;aw3o18;l ImD;aIba4d2o16up;rEw3;a0Ne0El07oYrNuI;bblKcklZil05lk 9ndlZrn 0Bst JtIy Gzz6;t F;in,o5up;e I;ov8;anReaPiIush6;ghMng I;aJba4d2forIin,o5up;th;bo5lIrEw3;ong;teI;n 1;k I;d2in,o5up;ch0;arPgDil 9n7oLssKttlJunce Ix F;aw3ba4;e 9; arE;k Ft 1;e 1;d2up; d2;d 1;aNeed0oIurt0;cKw I;aw3ba4d2o5up;ck;k I;in,oP;ck0nk0st6; oOaLef 1nd I;d2ov8up;er;up;r0t I;d2in,oIup;ff,ut;ff,nI;to;ck Oil0nKrgJsI;h F;ainBe F;g FkB; on;in,o5; o5;aw3d2o5up;ay;cRdNsk Kuction6; oC;ff;arEo5;ouI;nd;d I;d2oIup;ff,n;own;t G;o5up;ut\",\n \"Modal\": \"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld\",\n \"Adjective\": \"true¦0:7P;1:84;2:83;3:8A;4:7W;5:5S;6:4N;7:4O;8:58;9:6I;A:81;a6Wb6Gc63d5Je54f4Hg49h3Wi39j37k36l2Vm2Ln2Bo1Wp1Dquack,r12s0Ft07uMvJwByear5;arp0eFholeEiDoB;man5oBu6P;d6Rzy;despr7Ls5S;!sa7;eClBste2A;co1Nl o4W;!k5;aCiBola4M;b89ce versa,ol5H;ca3gabo6Gnilla;ltUnHpCrb5Msu4tterB;!mo7G; Eb1SpDsBti1M;ca7etBide dKtairs;!ti2;er,i3U;f36to da1;aLbeco75convin29deIeHfair,ivers4knGprecedVrEsCwB;iel3Nritt6A;i1XuB;pervis0spec3Y;eBu5;cognHgul6Tl6T;own;ndi2v64xpect0;cid0rB;!grou5ZsB;iz0tood;b7pp0Dssu6UuthorB;iz0;i26ra;aGeEhDi6AoCrB;i1oubl0us3M;geth8p,rp6Vuc67;ough4Wril33;en60l32mpBrr2X;o6Ati2;boo,lBn;ent0;aWcVeThSiQmug,nobbi3LoOpNqueami3LtFuBymb6H;bDi gener5DpBrpri6D;erBre0N;! dup8b,i2C;du0seq52;anda77eGiFrBunni2y3F;aightCiB;ki2p0; fBfB;or5K;ll,r5S;aBreotyp0;dfa6Cmi2;a55ec2Gir1Hlend6Cot on; call0le,mb8phist1XrBu0Vvi48;d6Ary;gnifica3nB;ce51g7;am2Re8ocki2ut;cBda1em5lfi32ni1Wpa6Jre6;o1Er42;at5Gient28reec5G;cr0me;aJeEiCoB;bu60tt51uQy4;ghtBv4;!-2Bf9;ar,bel,condi1du6Dfres5AlEpublic42sCtard0vB;ea26;is4CoB;lu1na3;aQe1Cuc4A;b5TciBllyi2;al,st;aOeLicayu6lac5Ropuli5QrCuB;bl5Jmp0n51;eGiDoB;!b07fu5RmiBp8;ne3si2;mCor,sBva1;ti6;a53e;ci5MmB;a0EiB;er,um;ac20rBti1;feAma2XpleBv38;xi2;rBst;allelDtB;-tiBi4;me;!ed;bLffJkIld fashion0nHpGrg1Eth8utFvB;al,erB;!all,niCt,wB;eiBrouB;ght;do0Ter,g2Qsi4B;en,posi1; boa5Og2Oli6;!ay; gua5MbBli6;eat;eDsB;cBer0Eole1;e6u3O;d2Xse;aJeIiHoBua4X;nFrCtB;ab7;thB;!eB;rn;chala3descri58stop;ght5;arby,cessa44ighbor5xt;k0usia1A;aIeGiDoBultip7;bi7derBl0Vnth5ot,st;a1n;nBx0;dblo0RiaBor;tu37;ande3Qdi4NnaBre;ci2;cBgenta,in,j01keshift,le,mmoth,ny,sculi6;ab33ho;aKeFiCoBu15;uti14vi2;mCteraB;l,te;it0;ftEgBth4;al,eCitiB;ma1;nda3K;!-0C;ngu3Zst,tt8;ap1Xind5no0A;agg0uB;niMstifi0veni7;de4gno4Klleg4mQnEpso 20rB;a1rB;eleBita0J;va3; KaJbr0corIdGfluenQiQnFsEtCviB;go0Fti2;aAen3SoxB;ic3B;a6i2Vul0D;a1er,oce3;iCoB;or;reA;deq3Qppr33;fBsitu,vitro;ro3;mFpB;arDerfeAoBrop8;li1rtB;a3ed;ti4;eBi0S;d2Vn3C;aIeFiDoBumdr3I;ne36ok0rrBs08ur5;if2Z;ghfalut1QspB;an2X;aClB;liYpf9;li2;lEnDrB;d04roB;wi2;dy;f,low0;ainf9ener2Oiga24lHoGraDuB;ilBng ho;ty;cCtB;ef9is;ef9;ne,od;ea2Iob4;aTeNinMlKoFrB;a1VeDoz1MustB;raB;ti2;e2Gq10tf9;oDrB; keeps,eBm8tuna1;g03ign;liB;sh;aBue3;g31tte1P;al,i1;dFmCrB;ti7;a7ini6;ne;le; up;bl0i3l27r Cux,voB;ri1uri1;oBreac1E;ff;aLfficie3lKmHnFreAthere4veExB;aAcess,pe1QtraCuB;be2Nl0E;!va1E;n,ryday; BcouraEti0O;rou1sui1;erCiB;ne3;gi2;abo23dMe17i1;g8sB;t,ygB;oi2;er;aReJiDoBrea14ue;mina3ne,ubB;le,tf9;dact1Bfficu1OsCvB;er1K;creDeas0gruntl0hone1FordCtB;a3ressM;er5;et; HadpGfFgene1PliDrang0spe1PtCvoB;ut;ail0ermin0;be1Mca1ghB;tf9;ia3;an;facto;i5magBngeroUs0G;ed,i2;ly;ertaMhief,ivil,oDrB;aBowd0u0G;mp0vZz0;loImGnCrrBve0P;eAu1I;cre1fu0LgrDsCtB;empo0Dra0E;ta3;ue3;mer08pleB;te,x;ni4ss4;in;aNeIizarHlFoCrB;and new,isk,okN;gCna fiUttom,urgeoB;is;us;ank,indB;!i2;re;autif9hiDloCnBst,yoD;eUt;v0w;nd;ul;ckCnkru0WrrB;en;!wards; priori,b0Mc0Jd09fra08g04h03lYmWntiquVppSrMsIttracti06utheHvEwB;aCkB;wa0T;ke,re;ant garCerB;age;de;ntU;leep,piDsuDtonB;isB;hi2;ri2;ab,bitEroDtiB;fiB;ci4;ga3;raB;ry;are3etiNrB;oprB;ia1;at0;aJuB;si2;arEcohCeBiIl,oof;rt;olB;ic;mi2;ead;ainDgressiConiB;zi2;ve;st;id; IeGuFvB;aCerB;se;nc0;ed;lt;pt,qB;ua1;hoc,infinitB;um;cuCtu4u1;al;ra1;erLlKoIruHsCuB;nda3;e3oCtraA;ct;lu1rbi2;ng;te;pt;aBve;rd;aze,e;ra3;nt\",\n \"Comparable\": \"true¦0:41;1:4I;2:45;3:2Y;4:4B;5:3X;a4Ob44c3Od3De35f2Rg2Fh24i1Vj1Uk1Rl1Jm1Dn17o15p0Vqu0Tr0KsTtMuIvFw7y6za13;ell27ou4;aBe9hi1Yi7r6;o4y;ck0Ode,l6n1ry,se;d,y;a6i4Mt;k,ry;n1Tr6sK;m,y;a7e6ulgar;nge5rda2xi4;g9in,st;g0n6pco3Mse5;like0t6;i1r6;ue;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te5;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft3;aAe9iff,r7u6;pXr1;a6ict,o4;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi4;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp3;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p3;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in5le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b3isy,rm15sy;ce,mb3;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt3ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti4;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b3id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te5;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t3uiY;u1y;aIeeb3iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get5mG;my;erce8n6rm;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi4;gey,lm8r6;e5i4;ful;!i4;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i4;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd\",\n \"TextOrdinal\": \"true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th\",\n \"Cardinal\": \"true¦bHeEf8hundred,mHnineAone,qu6s4t0zero;en,h2rGw0;e0o;lve,n8;irt9ousandEree;e0ix5;pt1ven4xt1;adr0int0;illion;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion0;!s\",\n \"Expression\": \"true¦a02b01dXeVfuck,gShLlImHnGoDpBshAtsk,u7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la\",\n \"Adverb\": \"true¦a08by 06d02eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,well,ye0;p,s; to,wards5;h1iny bit,o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hYtimes,w09;a1e0;alT;ndomSthN;ar excellDer0oint blank; Nhaps;f3n0;ce0ly;! 0;ag02moW; courIten;ewKo0; longEt 0;onIwithstanding;aybe,eanwhiAore0;!ovB;! aboU;deed,steV;en0;ce;or2u0;lArther0;!moJ; 0ev3;examp0good,suH;le;n1v0;er; mas0ough;se;e0irect1; 1finite0;ly;ju8trop;far,n0;ow; DbroCd nauseam,gBl6ny3part,s2t 0w4;be6l0mo6wor6;arge,ea5; soon,ide;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori\",\n \"Determiner\": \"true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er\"\n};\n\nvar seq = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",\n cache$1 = seq.split(\"\").reduce(function (n, o, e) {\n return n[o] = e, n;\n}, {}),\n toAlphaCode = function toAlphaCode(n) {\n if (void 0 !== seq[n]) return seq[n];\n var o = 1,\n e = 36,\n t = \"\";\n\n for (; n >= e; n -= e, o++, e *= 36) {\n }\n\n for (; o--;) {\n var _o = n % 36;\n\n t = String.fromCharCode((_o < 10 ? 48 : 55) + _o) + t, n = (n - _o) / 36;\n }\n\n return t;\n},\n fromAlphaCode = function fromAlphaCode(n) {\n if (void 0 !== cache$1[n]) return cache$1[n];\n var o = 0,\n e = 1,\n t = 36,\n r = 1;\n\n for (; e < n.length; o += t, e++, t *= 36) {\n }\n\n for (var _e = n.length - 1; _e >= 0; _e--, r *= 36) {\n var _t = n.charCodeAt(_e) - 48;\n\n _t > 10 && (_t -= 7), o += _t * r;\n }\n\n return o;\n};\n\nvar encoding = {\n toAlphaCode: toAlphaCode,\n fromAlphaCode: fromAlphaCode\n},\n symbols = function symbols(n) {\n var o = new RegExp(\"([0-9A-Z]+):([0-9A-Z]+)\");\n\n for (var e = 0; e < n.nodes.length; e++) {\n var t = o.exec(n.nodes[e]);\n\n if (!t) {\n n.symCount = e;\n break;\n }\n\n n.syms[encoding.fromAlphaCode(t[1])] = encoding.fromAlphaCode(t[2]);\n }\n\n n.nodes = n.nodes.slice(n.symCount, n.nodes.length);\n};\n\nvar indexFromRef = function indexFromRef(n, o, e) {\n var t = encoding.fromAlphaCode(o);\n return t < n.symCount ? n.syms[t] : e + t + 1 - n.symCount;\n},\n toArray = function toArray(n) {\n var o = [],\n e = function e(t, r) {\n var s = n.nodes[t];\n \"!\" === s[0] && (o.push(r), s = s.slice(1));\n var c = s.split(/([A-Z0-9,]+)/g);\n\n for (var _s = 0; _s < c.length; _s += 2) {\n var u = c[_s],\n i = c[_s + 1];\n if (!u) continue;\n var l = r + u;\n\n if (\",\" === i || void 0 === i) {\n o.push(l);\n continue;\n }\n\n var f = indexFromRef(n, i, t);\n e(f, l);\n }\n };\n\n return e(0, \"\"), o;\n},\n unpack = function unpack(n) {\n var o = {\n nodes: n.split(\";\"),\n syms: [],\n symCount: 0\n };\n return n.match(\":\") && symbols(o), toArray(o);\n};\n\nvar unpack_1$1 = unpack,\n unpack_1$1$1 = function unpack_1$1$1(n) {\n var o = n.split(\"|\").reduce(function (n, o) {\n var e = o.split(\"¦\");\n return n[e[0]] = e[1], n;\n }, {}),\n e = {};\n return Object.keys(o).forEach(function (n) {\n var t = unpack_1$1(o[n]);\n \"true\" === n && (n = !0);\n\n for (var _o2 = 0; _o2 < t.length; _o2++) {\n var r = t[_o2];\n !0 === e.hasOwnProperty(r) ? !1 === Array.isArray(e[r]) ? e[r] = [e[r], n] : e[r].push(n) : e[r] = n;\n }\n }), e;\n};\n\nvar efrtUnpack_min = unpack_1$1$1;\n\n//words that can't be compressed, for whatever reason\nvar misc = {\n // numbers\n '20th century fox': 'Organization',\n // '3m': 'Organization',\n '7 eleven': 'Organization',\n 'motel 6': 'Organization',\n g8: 'Organization',\n vh1: 'Organization',\n q1: 'Date',\n q2: 'Date',\n q3: 'Date',\n q4: 'Date',\n her: ['Possessive', 'Pronoun'],\n his: ['Possessive', 'Pronoun'],\n their: ['Possessive', 'Pronoun'],\n themselves: ['Possessive', 'Pronoun'],\n your: ['Possessive', 'Pronoun'],\n our: ['Possessive', 'Pronoun'],\n my: ['Possessive', 'Pronoun'],\n its: ['Possessive', 'Pronoun']\n};\n\nvar fancy = {\n Unit: function Unit(lex, w) {\n lex[w] = ['Abbreviation', 'Unit'];\n },\n Cardinal: function Cardinal(lex, w) {\n lex[w] = ['TextValue', 'Cardinal'];\n },\n TextOrdinal: function TextOrdinal(lex, w) {\n lex[w] = ['Ordinal', 'TextValue'];\n lex[w + 's'] = ['TextValue', 'Fraction']; // add 'millionths'\n },\n // add plural/singular forms\n Singular: function Singular(lex, w, world) {\n lex[w] = 'Singular';\n var plural = world.transforms.toPlural(w, world);\n lex[plural] = lex[plural] || 'Plural';\n },\n // conjugate these verbs\n Infinitive: function Infinitive(lex, w, world) {\n lex[w] = 'Infinitive';\n var conj = world.transforms.conjugate(w, world);\n var tags = Object.keys(conj);\n\n for (var i = 0; i < tags.length; i++) {\n var str = conj[tags[i]];\n lex[str] = lex[str] || tags[i]; // only if it's safe\n }\n },\n // conjugate other Adjectival forms\n Comparable: function Comparable(lex, w, world) {\n lex[w] = 'Comparable';\n var conj = world.transforms.adjectives(w);\n var tags = Object.keys(conj);\n\n for (var i = 0; i < tags.length; i++) {\n var word = conj[tags[i]];\n lex[word] = lex[word] || tags[i]; // only if it's safe\n }\n },\n //conjugate phrasal-verbs\n PhrasalVerb: function PhrasalVerb(lex, w, world) {\n // whole thing\n lex[w] = ['PhrasalVerb', 'Infinitive']; //add original form\n\n var words = w.split(' '); // lex[words[0]] = lex[words[0]] || 'Infinitive'\n // //conjugate first word\n\n var conj = world.transforms.conjugate(words[0], world);\n var tags = Object.keys(conj);\n\n for (var i = 0; i < tags.length; i++) {\n var str = conj[tags[i]] + ' ' + words[1];\n lex[str] = lex[str] || ['PhrasalVerb', tags[i]];\n world.hasCompound[conj[tags[i]]] = true;\n }\n },\n // inflect our demonyms - 'germans'\n Demonym: function Demonym(lex, w, world) {\n lex[w] = 'Demonym';\n var plural = world.transforms.toPlural(w, world);\n lex[plural] = lex[plural] || ['Demonym', 'Plural']; // only if it's safe\n }\n}; // let a user explode their lexicon, too\n\nvar addWords = function addWords(wordsObj, lex, world) {\n Object.keys(wordsObj).forEach(function (word) {\n var tag = wordsObj[word]; // abbreviation-words are used in our tokenizer\n\n if (tag === 'Abbreviation' || tag === 'Unit') {\n world.cache.abbreviations[word] = true;\n } // cache multi-words\n\n\n var multi = word.split(' ');\n\n if (multi.length > 1) {\n world.hasCompound[multi[0]] = true;\n } // do some ad-hoc work before adding it\n\n\n if (fancy[tag] !== undefined) {\n fancy[tag](lex, word, world);\n return;\n } //set it in our lexicon, basic\n\n\n if (lex[word] === undefined) {\n lex[word] = tag;\n return;\n } // if we already have that word\n\n\n if (typeof lex[word] === 'string') {\n lex[word] = [lex[word]];\n }\n\n if (typeof tag === 'string') {\n lex[word].push(tag);\n } else {\n lex[word] = lex[word].concat(tag);\n }\n });\n}; // we do some ad-hoc stuff here, building-up our word-list\n\n\nvar buildOut = function buildOut(world) {\n //our bag of words\n var lexicon = Object.assign({}, misc); // start adding words to the lex\n\n Object.keys(_data).forEach(function (tag) {\n var wordsObj = efrtUnpack_min(_data[tag]); // this part sucks\n\n Object.keys(wordsObj).forEach(function (w) {\n wordsObj[w] = tag;\n });\n addWords(wordsObj, lexicon, world);\n }); // console.log(Object.keys(lexicon).length)\n\n return lexicon;\n};\n\nvar unpack_1 = {\n buildOut: buildOut,\n addWords: addWords\n};\n\n// add words from plurals and conjugations data\nvar addIrregulars = function addIrregulars(world) {\n //add irregular plural nouns\n var nouns = world.irregulars.nouns;\n var words = Object.keys(nouns);\n\n for (var i = 0; i < words.length; i++) {\n var w = words[i];\n world.words[w] = 'Singular';\n world.words[nouns[w]] = 'Plural';\n } // add irregular verb conjugations\n\n\n var verbs = world.irregulars.verbs;\n var keys = Object.keys(verbs);\n\n var _loop = function _loop(_i) {\n var inf = keys[_i]; //add only if it it's safe...\n\n world.words[inf] = world.words[inf] || 'Infinitive';\n var forms = world.transforms.conjugate(inf, world);\n forms = Object.assign(forms, verbs[inf]); //add the others\n\n Object.keys(forms).forEach(function (tag) {\n world.words[forms[tag]] = world.words[forms[tag]] || tag; // lexicon should prefer other tags, over participle\n\n if (world.words[forms[tag]] === 'Participle') {\n world.words[forms[tag]] = tag;\n }\n });\n };\n\n for (var _i = 0; _i < keys.length; _i++) {\n _loop(_i);\n }\n};\n\nvar addIrregulars_1 = addIrregulars;\n\n//nouns with irregular plural/singular forms\n//used in noun.inflect, and also in the lexicon.\nvar plurals = {\n addendum: 'addenda',\n alga: 'algae',\n alumna: 'alumnae',\n alumnus: 'alumni',\n analysis: 'analyses',\n antenna: 'antennae',\n appendix: 'appendices',\n avocado: 'avocados',\n axis: 'axes',\n bacillus: 'bacilli',\n barracks: 'barracks',\n beau: 'beaux',\n bus: 'buses',\n cactus: 'cacti',\n chateau: 'chateaux',\n child: 'children',\n circus: 'circuses',\n clothes: 'clothes',\n corpus: 'corpora',\n criterion: 'criteria',\n curriculum: 'curricula',\n database: 'databases',\n deer: 'deer',\n diagnosis: 'diagnoses',\n echo: 'echoes',\n embargo: 'embargoes',\n epoch: 'epochs',\n foot: 'feet',\n formula: 'formulae',\n fungus: 'fungi',\n genus: 'genera',\n goose: 'geese',\n halo: 'halos',\n hippopotamus: 'hippopotami',\n index: 'indices',\n larva: 'larvae',\n leaf: 'leaves',\n libretto: 'libretti',\n loaf: 'loaves',\n man: 'men',\n matrix: 'matrices',\n memorandum: 'memoranda',\n modulus: 'moduli',\n mosquito: 'mosquitoes',\n mouse: 'mice',\n // move: 'moves',\n nebula: 'nebulae',\n nucleus: 'nuclei',\n octopus: 'octopi',\n opus: 'opera',\n ovum: 'ova',\n ox: 'oxen',\n parenthesis: 'parentheses',\n person: 'people',\n phenomenon: 'phenomena',\n prognosis: 'prognoses',\n quiz: 'quizzes',\n radius: 'radii',\n referendum: 'referenda',\n rodeo: 'rodeos',\n sex: 'sexes',\n shoe: 'shoes',\n sombrero: 'sombreros',\n stimulus: 'stimuli',\n stomach: 'stomachs',\n syllabus: 'syllabi',\n synopsis: 'synopses',\n tableau: 'tableaux',\n thesis: 'theses',\n thief: 'thieves',\n tooth: 'teeth',\n tornado: 'tornados',\n tuxedo: 'tuxedos',\n vertebra: 'vertebrae' // virus: 'viri',\n // zero: 'zeros',\n\n};\n\n// a list of irregular verb conjugations\n// used in verbs().conjugate()\n// but also added to our lexicon\n//use shorter key-names\nvar mapping$1 = {\n g: 'Gerund',\n prt: 'Participle',\n perf: 'PerfectTense',\n pst: 'PastTense',\n fut: 'FuturePerfect',\n pres: 'PresentTense',\n pluperf: 'Pluperfect',\n a: 'Actor'\n}; // '_' in conjugations is the infinitive form\n// (order matters, to the lexicon)\n\nvar conjugations = {\n act: {\n a: '_or'\n },\n ache: {\n pst: 'ached',\n g: 'aching'\n },\n age: {\n g: 'ageing',\n pst: 'aged',\n pres: 'ages'\n },\n aim: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n arise: {\n prt: '_n',\n pst: 'arose'\n },\n babysit: {\n a: '_ter',\n pst: 'babysat'\n },\n ban: {\n a: '',\n g: '_ning',\n pst: '_ned'\n },\n be: {\n a: '',\n g: 'am',\n prt: 'been',\n pst: 'was',\n pres: 'is'\n },\n beat: {\n a: '_er',\n g: '_ing',\n prt: '_en'\n },\n become: {\n prt: '_'\n },\n begin: {\n g: '_ning',\n prt: 'begun',\n pst: 'began'\n },\n being: {\n g: 'are',\n pst: 'were',\n pres: 'are'\n },\n bend: {\n prt: 'bent'\n },\n bet: {\n a: '_ter',\n prt: '_'\n },\n bind: {\n pst: 'bound'\n },\n bite: {\n g: 'biting',\n prt: 'bitten',\n pst: 'bit'\n },\n bleed: {\n pst: 'bled',\n prt: 'bled'\n },\n blow: {\n prt: '_n',\n pst: 'blew'\n },\n boil: {\n a: '_er'\n },\n brake: {\n prt: 'broken'\n },\n \"break\": {\n pst: 'broke'\n },\n breed: {\n pst: 'bred'\n },\n bring: {\n pst: 'brought',\n prt: 'brought'\n },\n broadcast: {\n pst: '_'\n },\n budget: {\n pst: '_ed'\n },\n build: {\n pst: 'built',\n prt: 'built'\n },\n burn: {\n prt: '_ed'\n },\n burst: {\n prt: '_'\n },\n buy: {\n pst: 'bought',\n prt: 'bought'\n },\n can: {\n a: '',\n fut: '_',\n g: '',\n pst: 'could',\n perf: 'could',\n pluperf: 'could',\n pres: '_'\n },\n \"catch\": {\n pst: 'caught'\n },\n choose: {\n g: 'choosing',\n prt: 'chosen',\n pst: 'chose'\n },\n cling: {\n prt: 'clung'\n },\n come: {\n prt: '_',\n pst: 'came',\n g: 'coming'\n },\n compete: {\n a: 'competitor',\n g: 'competing',\n pst: '_d'\n },\n cost: {\n pst: '_'\n },\n creep: {\n prt: 'crept'\n },\n cut: {\n prt: '_'\n },\n deal: {\n pst: '_t',\n prt: '_t'\n },\n develop: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n die: {\n g: 'dying',\n pst: '_d'\n },\n dig: {\n g: '_ging',\n pst: 'dug',\n prt: 'dug'\n },\n dive: {\n prt: '_d'\n },\n \"do\": {\n pst: 'did',\n pres: '_es'\n },\n draw: {\n prt: '_n',\n pst: 'drew'\n },\n dream: {\n prt: '_t'\n },\n drink: {\n prt: 'drunk',\n pst: 'drank'\n },\n drive: {\n g: 'driving',\n prt: '_n',\n pst: 'drove'\n },\n drop: {\n g: '_ping',\n pst: '_ped'\n },\n eat: {\n a: '_er',\n g: '_ing',\n prt: '_en',\n pst: 'ate'\n },\n edit: {\n pst: '_ed',\n g: '_ing'\n },\n egg: {\n pst: '_ed'\n },\n fall: {\n prt: '_en',\n pst: 'fell'\n },\n feed: {\n prt: 'fed',\n pst: 'fed'\n },\n feel: {\n a: '_er',\n pst: 'felt'\n },\n fight: {\n pst: 'fought',\n prt: 'fought'\n },\n find: {\n pst: 'found'\n },\n flee: {\n g: '_ing',\n prt: 'fled'\n },\n fling: {\n prt: 'flung'\n },\n fly: {\n prt: 'flown',\n pst: 'flew'\n },\n forbid: {\n pst: 'forbade'\n },\n forget: {\n g: '_ing',\n prt: 'forgotten',\n pst: 'forgot'\n },\n forgive: {\n g: 'forgiving',\n prt: '_n',\n pst: 'forgave'\n },\n free: {\n a: '',\n g: '_ing'\n },\n freeze: {\n g: 'freezing',\n prt: 'frozen',\n pst: 'froze'\n },\n get: {\n pst: 'got',\n prt: 'gotten'\n },\n give: {\n g: 'giving',\n prt: '_n',\n pst: 'gave'\n },\n go: {\n prt: '_ne',\n pst: 'went',\n pres: 'goes'\n },\n grow: {\n prt: '_n'\n },\n guide: {\n pst: '_d'\n },\n hang: {\n pst: 'hung',\n prt: 'hung'\n },\n have: {\n g: 'having',\n pst: 'had',\n prt: 'had',\n pres: 'has'\n },\n hear: {\n pst: '_d',\n prt: '_d'\n },\n hide: {\n prt: 'hidden',\n pst: 'hid'\n },\n hit: {\n prt: '_'\n },\n hold: {\n pst: 'held',\n prt: 'held'\n },\n hurt: {\n pst: '_',\n prt: '_'\n },\n ice: {\n g: 'icing',\n pst: '_d'\n },\n imply: {\n pst: 'implied',\n pres: 'implies'\n },\n is: {\n a: '',\n g: 'being',\n pst: 'was',\n pres: '_'\n },\n keep: {\n prt: 'kept'\n },\n kneel: {\n prt: 'knelt'\n },\n know: {\n prt: '_n'\n },\n lay: {\n pst: 'laid',\n prt: 'laid'\n },\n lead: {\n pst: 'led',\n prt: 'led'\n },\n leap: {\n prt: '_t'\n },\n leave: {\n pst: 'left',\n prt: 'left'\n },\n lend: {\n prt: 'lent'\n },\n lie: {\n g: 'lying',\n pst: 'lay'\n },\n light: {\n pst: 'lit',\n prt: 'lit'\n },\n log: {\n g: '_ging',\n pst: '_ged'\n },\n loose: {\n prt: 'lost'\n },\n lose: {\n g: 'losing',\n pst: 'lost'\n },\n make: {\n pst: 'made',\n prt: 'made'\n },\n mean: {\n pst: '_t',\n prt: '_t'\n },\n meet: {\n a: '_er',\n g: '_ing',\n pst: 'met',\n prt: 'met'\n },\n miss: {\n pres: '_'\n },\n name: {\n g: 'naming'\n },\n patrol: {\n g: '_ling',\n pst: '_led'\n },\n pay: {\n pst: 'paid',\n prt: 'paid'\n },\n prove: {\n prt: '_n'\n },\n puke: {\n g: 'puking'\n },\n put: {\n prt: '_'\n },\n quit: {\n prt: '_'\n },\n read: {\n pst: '_',\n prt: '_'\n },\n ride: {\n prt: 'ridden'\n },\n reside: {\n pst: '_d'\n },\n ring: {\n pst: 'rang',\n prt: 'rung'\n },\n rise: {\n fut: 'will have _n',\n g: 'rising',\n prt: '_n',\n pst: 'rose',\n pluperf: 'had _n'\n },\n rub: {\n g: '_bing',\n pst: '_bed'\n },\n run: {\n g: '_ning',\n prt: '_',\n pst: 'ran'\n },\n say: {\n pst: 'said',\n prt: 'said',\n pres: '_s'\n },\n seat: {\n pst: 'sat',\n prt: 'sat'\n },\n see: {\n g: '_ing',\n prt: '_n',\n pst: 'saw'\n },\n seek: {\n prt: 'sought'\n },\n sell: {\n pst: 'sold',\n prt: 'sold'\n },\n send: {\n prt: 'sent'\n },\n set: {\n prt: '_'\n },\n sew: {\n prt: '_n'\n },\n shake: {\n prt: '_n'\n },\n shave: {\n prt: '_d'\n },\n shed: {\n g: '_ding',\n pst: '_',\n pres: '_s'\n },\n shine: {\n pst: 'shone',\n prt: 'shone'\n },\n shoot: {\n pst: 'shot',\n prt: 'shot'\n },\n show: {\n pst: '_ed'\n },\n shut: {\n prt: '_'\n },\n sing: {\n prt: 'sung',\n pst: 'sang'\n },\n sink: {\n pst: 'sank',\n pluperf: 'had sunk'\n },\n sit: {\n pst: 'sat'\n },\n ski: {\n pst: '_ied'\n },\n slay: {\n prt: 'slain'\n },\n sleep: {\n prt: 'slept'\n },\n slide: {\n pst: 'slid',\n prt: 'slid'\n },\n smash: {\n pres: '_es'\n },\n sneak: {\n prt: 'snuck'\n },\n speak: {\n fut: 'will have spoken',\n prt: 'spoken',\n pst: 'spoke',\n perf: 'have spoken',\n pluperf: 'had spoken'\n },\n speed: {\n prt: 'sped'\n },\n spend: {\n prt: 'spent'\n },\n spill: {\n prt: '_ed',\n pst: 'spilt'\n },\n spin: {\n g: '_ning',\n pst: 'spun',\n prt: 'spun'\n },\n spit: {\n prt: 'spat'\n },\n split: {\n prt: '_'\n },\n spread: {\n pst: '_'\n },\n spring: {\n prt: 'sprung'\n },\n stand: {\n pst: 'stood'\n },\n steal: {\n a: '_er',\n pst: 'stole'\n },\n stick: {\n pst: 'stuck'\n },\n sting: {\n pst: 'stung'\n },\n stink: {\n pst: 'stunk',\n prt: 'stunk'\n },\n stream: {\n a: '_er'\n },\n strew: {\n prt: '_n'\n },\n strike: {\n g: 'striking',\n pst: 'struck'\n },\n suit: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n sware: {\n prt: 'sworn'\n },\n swear: {\n pst: 'swore'\n },\n sweep: {\n prt: 'swept'\n },\n swim: {\n g: '_ming',\n pst: 'swam'\n },\n swing: {\n pst: 'swung'\n },\n take: {\n fut: 'will have _n',\n pst: 'took',\n perf: 'have _n',\n pluperf: 'had _n'\n },\n teach: {\n pst: 'taught',\n pres: '_es'\n },\n tear: {\n pst: 'tore'\n },\n tell: {\n pst: 'told'\n },\n think: {\n pst: 'thought'\n },\n thrive: {\n prt: '_d'\n },\n tie: {\n g: 'tying',\n pst: '_d'\n },\n undergo: {\n prt: '_ne'\n },\n understand: {\n pst: 'understood'\n },\n upset: {\n prt: '_'\n },\n wait: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n wake: {\n pst: 'woke'\n },\n wear: {\n pst: 'wore'\n },\n weave: {\n prt: 'woven'\n },\n wed: {\n pst: 'wed'\n },\n weep: {\n prt: 'wept'\n },\n win: {\n g: '_ning',\n pst: 'won'\n },\n wind: {\n prt: 'wound'\n },\n withdraw: {\n pst: 'withdrew'\n },\n wring: {\n prt: 'wrung'\n },\n write: {\n g: 'writing',\n prt: 'written',\n pst: 'wrote'\n }\n}; //uncompress our ad-hoc compression scheme\n\nvar keys = Object.keys(conjugations);\n\nvar _loop = function _loop(i) {\n var inf = keys[i];\n var _final = {};\n Object.keys(conjugations[inf]).forEach(function (key) {\n var str = conjugations[inf][key]; //swap-in infinitives for '_'\n\n str = str.replace('_', inf);\n var full = mapping$1[key];\n _final[full] = str;\n }); //over-write original\n\n conjugations[inf] = _final;\n};\n\nfor (var i = 0; i < keys.length; i++) {\n _loop(i);\n}\n\nvar conjugations_1 = conjugations;\n\nvar endsWith$1 = {\n b: [{\n reg: /([^aeiou][aeiou])b$/i,\n repl: {\n pr: '$1bs',\n pa: '$1bbed',\n gr: '$1bbing'\n }\n }],\n d: [{\n reg: /(end)$/i,\n repl: {\n pr: '$1s',\n pa: 'ent',\n gr: '$1ing',\n ar: '$1er'\n }\n }, {\n reg: /(eed)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n ar: '$1er'\n }\n }, {\n reg: /(ed)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ded',\n ar: '$1der',\n gr: '$1ding'\n }\n }, {\n reg: /([^aeiou][ou])d$/i,\n repl: {\n pr: '$1ds',\n pa: '$1dded',\n gr: '$1dding'\n }\n }],\n e: [{\n reg: /(eave)$/i,\n repl: {\n pr: '$1s',\n pa: '$1d',\n gr: 'eaving',\n ar: '$1r'\n }\n }, {\n reg: /(ide)$/i,\n repl: {\n pr: '$1s',\n pa: 'ode',\n gr: 'iding',\n ar: 'ider'\n }\n }, {\n //shake\n reg: /(t|sh?)(ake)$/i,\n repl: {\n pr: '$1$2s',\n pa: '$1ook',\n gr: '$1aking',\n ar: '$1$2r'\n }\n }, {\n //awake\n reg: /w(ake)$/i,\n repl: {\n pr: 'w$1s',\n pa: 'woke',\n gr: 'waking',\n ar: 'w$1r'\n }\n }, {\n //make\n reg: /m(ake)$/i,\n repl: {\n pr: 'm$1s',\n pa: 'made',\n gr: 'making',\n ar: 'm$1r'\n }\n }, {\n reg: /(a[tg]|i[zn]|ur|nc|gl|is)e$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing' // prt: '$1en',\n\n }\n }, {\n reg: /([bd]l)e$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(om)e$/i,\n repl: {\n pr: '$1es',\n pa: 'ame',\n gr: '$1ing'\n }\n }],\n g: [{\n reg: /([^aeiou][ou])g$/i,\n repl: {\n pr: '$1gs',\n pa: '$1gged',\n gr: '$1gging'\n }\n }],\n h: [{\n reg: /(..)([cs]h)$/i,\n repl: {\n pr: '$1$2es',\n pa: '$1$2ed',\n gr: '$1$2ing'\n }\n }],\n k: [{\n reg: /(ink)$/i,\n repl: {\n pr: '$1s',\n pa: 'unk',\n gr: '$1ing',\n ar: '$1er'\n }\n }],\n m: [{\n reg: /([^aeiou][aeiou])m$/i,\n repl: {\n pr: '$1ms',\n pa: '$1mmed',\n gr: '$1mming'\n }\n }],\n n: [{\n reg: /(en)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n p: [{\n reg: /(e)(ep)$/i,\n repl: {\n pr: '$1$2s',\n pa: '$1pt',\n gr: '$1$2ing',\n ar: '$1$2er'\n }\n }, {\n reg: /([^aeiou][aeiou])p$/i,\n repl: {\n pr: '$1ps',\n pa: '$1pped',\n gr: '$1pping'\n }\n }, {\n reg: /([aeiu])p$/i,\n repl: {\n pr: '$1ps',\n pa: '$1p',\n gr: '$1pping'\n }\n }],\n r: [{\n reg: /([td]er)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(er)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n s: [{\n reg: /(ish|tch|ess)$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n t: [{\n reg: /(ion|end|e[nc]t)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(.eat)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /([aeiu])t$/i,\n repl: {\n pr: '$1ts',\n pa: '$1t',\n gr: '$1tting'\n }\n }, {\n reg: /([^aeiou][aeiou])t$/i,\n repl: {\n pr: '$1ts',\n pa: '$1tted',\n gr: '$1tting'\n }\n }],\n w: [{\n reg: /(.llow)$/i,\n //follow, allow\n repl: {\n pr: '$1s',\n pa: '$1ed'\n }\n }, {\n reg: /(..)(ow)$/i,\n //grow\n repl: {\n pr: '$1$2s',\n pa: '$1ew',\n gr: '$1$2ing',\n prt: '$1$2n'\n }\n }],\n y: [{\n reg: /(i|f|rr)y$/i,\n repl: {\n pr: '$1ies',\n pa: '$1ied',\n gr: '$1ying'\n }\n }],\n z: [{\n reg: /([aeiou]zz)$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }]\n};\nvar suffixes$1 = endsWith$1;\n\nvar posMap = {\n pr: 'PresentTense',\n pa: 'PastTense',\n gr: 'Gerund',\n prt: 'Participle',\n ar: 'Actor'\n};\n\nvar doTransform = function doTransform(str, obj) {\n var found = {};\n var keys = Object.keys(obj.repl);\n\n for (var i = 0; i < keys.length; i += 1) {\n var pos = keys[i];\n found[posMap[pos]] = str.replace(obj.reg, obj.repl[pos]);\n }\n\n return found;\n}; //look at the end of the word for clues\n\n\nvar checkSuffix = function checkSuffix() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var c = str[str.length - 1];\n\n if (suffixes$1.hasOwnProperty(c) === true) {\n for (var r = 0; r < suffixes$1[c].length; r += 1) {\n var reg = suffixes$1[c][r].reg;\n\n if (reg.test(str) === true) {\n return doTransform(str, suffixes$1[c][r]);\n }\n }\n }\n\n return {};\n};\n\nvar _01Suffixes = checkSuffix;\n\n//non-specifc, 'hail-mary' transforms from infinitive, into other forms\nvar hasY = /[bcdfghjklmnpqrstvwxz]y$/;\nvar generic = {\n Gerund: function Gerund(inf) {\n if (inf.charAt(inf.length - 1) === 'e') {\n return inf.replace(/e$/, 'ing');\n }\n\n return inf + 'ing';\n },\n PresentTense: function PresentTense(inf) {\n if (inf.charAt(inf.length - 1) === 's') {\n return inf + 'es';\n }\n\n if (hasY.test(inf) === true) {\n return inf.slice(0, -1) + 'ies';\n }\n\n return inf + 's';\n },\n PastTense: function PastTense(inf) {\n if (inf.charAt(inf.length - 1) === 'e') {\n return inf + 'd';\n }\n\n if (inf.substr(-2) === 'ed') {\n return inf;\n }\n\n if (hasY.test(inf) === true) {\n return inf.slice(0, -1) + 'ied';\n }\n\n return inf + 'ed';\n }\n};\nvar _02Generic = generic;\n\n//we assume the input word is a proper infinitive\n\nvar conjugate$2 = function conjugate() {\n var inf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var found = {}; // 1. look at irregulars\n //the lexicon doesn't pass this in\n\n if (world && world.irregulars) {\n if (world.irregulars.verbs.hasOwnProperty(inf) === true) {\n found = Object.assign({}, world.irregulars.verbs[inf]);\n }\n } //2. rule-based regex\n\n\n found = Object.assign({}, _01Suffixes(inf), found); //3. generic transformations\n //'buzzing'\n\n if (found.Gerund === undefined) {\n found.Gerund = _02Generic.Gerund(inf);\n } //'buzzed'\n\n\n if (found.PastTense === undefined) {\n found.PastTense = _02Generic.PastTense(inf);\n } //'buzzes'\n\n\n if (found.PresentTense === undefined) {\n found.PresentTense = _02Generic.PresentTense(inf);\n }\n\n return found;\n};\n\nvar conjugate_1$1 = conjugate$2; // console.log(conjugate('bake'))\n\n//turn 'quick' into 'quickest'\nvar do_rules$1 = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/];\nvar dont_rules$1 = [/ary$/];\nvar irregulars$5 = {\n nice: 'nicest',\n late: 'latest',\n hard: 'hardest',\n inner: 'innermost',\n outer: 'outermost',\n far: 'furthest',\n worse: 'worst',\n bad: 'worst',\n good: 'best',\n big: 'biggest',\n large: 'largest'\n};\nvar transforms$2 = [{\n reg: /y$/i,\n repl: 'iest'\n}, {\n reg: /([aeiou])t$/i,\n repl: '$1ttest'\n}, {\n reg: /([aeou])de$/i,\n repl: '$1dest'\n}, {\n reg: /nge$/i,\n repl: 'ngest'\n}, {\n reg: /([aeiou])te$/i,\n repl: '$1test'\n}];\n\nvar to_superlative = function to_superlative(str) {\n //irregulars\n if (irregulars$5.hasOwnProperty(str)) {\n return irregulars$5[str];\n } //known transforms\n\n\n for (var i = 0; i < transforms$2.length; i++) {\n if (transforms$2[i].reg.test(str)) {\n return str.replace(transforms$2[i].reg, transforms$2[i].repl);\n }\n } //dont-rules\n\n\n for (var _i = 0; _i < dont_rules$1.length; _i++) {\n if (dont_rules$1[_i].test(str) === true) {\n return null;\n }\n } //do-rules\n\n\n for (var _i2 = 0; _i2 < do_rules$1.length; _i2++) {\n if (do_rules$1[_i2].test(str) === true) {\n if (str.charAt(str.length - 1) === 'e') {\n return str + 'st';\n }\n\n return str + 'est';\n }\n }\n\n return str + 'est';\n};\n\nvar toSuperlative = to_superlative;\n\n//turn 'quick' into 'quickly'\nvar do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/];\nvar dont_rules = [/ary$/, /ous$/];\nvar irregulars$4 = {\n grey: 'greyer',\n gray: 'grayer',\n green: 'greener',\n yellow: 'yellower',\n red: 'redder',\n good: 'better',\n well: 'better',\n bad: 'worse',\n sad: 'sadder',\n big: 'bigger'\n};\nvar transforms$1 = [{\n reg: /y$/i,\n repl: 'ier'\n}, {\n reg: /([aeiou])t$/i,\n repl: '$1tter'\n}, {\n reg: /([aeou])de$/i,\n repl: '$1der'\n}, {\n reg: /nge$/i,\n repl: 'nger'\n}];\n\nvar to_comparative = function to_comparative(str) {\n //known-irregulars\n if (irregulars$4.hasOwnProperty(str)) {\n return irregulars$4[str];\n } //known-transforms\n\n\n for (var i = 0; i < transforms$1.length; i++) {\n if (transforms$1[i].reg.test(str) === true) {\n return str.replace(transforms$1[i].reg, transforms$1[i].repl);\n }\n } //dont-patterns\n\n\n for (var _i = 0; _i < dont_rules.length; _i++) {\n if (dont_rules[_i].test(str) === true) {\n return null;\n }\n } //do-patterns\n\n\n for (var _i2 = 0; _i2 < do_rules.length; _i2++) {\n if (do_rules[_i2].test(str) === true) {\n return str + 'er';\n }\n } //easy-one\n\n\n if (/e$/.test(str) === true) {\n return str + 'r';\n }\n\n return str + 'er';\n};\n\nvar toComparative = to_comparative;\n\nvar fns = {\n toSuperlative: toSuperlative,\n toComparative: toComparative\n};\n/** conjugate an adjective into other forms */\n\nvar conjugate$1 = function conjugate(w) {\n var res = {}; // 'greatest'\n\n var sup = fns.toSuperlative(w);\n\n if (sup) {\n res.Superlative = sup;\n } // 'greater'\n\n\n var comp = fns.toComparative(w);\n\n if (comp) {\n res.Comparative = comp;\n }\n\n return res;\n};\n\nvar adjectives$2 = conjugate$1;\n\n/** patterns for turning 'bus' to 'buses'*/\nvar suffixes = {\n a: [[/(antenn|formul|nebul|vertebr|vit)a$/i, '$1ae'], [/([ti])a$/i, '$1a']],\n e: [[/(kn|l|w)ife$/i, '$1ives'], [/(hive)$/i, '$1s'], [/([m|l])ouse$/i, '$1ice'], [/([m|l])ice$/i, '$1ice']],\n f: [[/^(dwar|handkerchie|hoo|scar|whar)f$/i, '$1ves'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i, '$1ves']],\n i: [[/(octop|vir)i$/i, '$1i']],\n m: [[/([ti])um$/i, '$1a']],\n n: [[/^(oxen)$/i, '$1']],\n o: [[/(al|ad|at|er|et|ed|ad)o$/i, '$1oes']],\n s: [[/(ax|test)is$/i, '$1es'], [/(alias|status)$/i, '$1es'], [/sis$/i, 'ses'], [/(bu)s$/i, '$1ses'], [/(sis)$/i, 'ses'], [/^(?!talis|.*hu)(.*)man$/i, '$1men'], [/(octop|vir|radi|nucle|fung|cact|stimul)us$/i, '$1i']],\n x: [[/(matr|vert|ind|cort)(ix|ex)$/i, '$1ices'], [/^(ox)$/i, '$1en']],\n y: [[/([^aeiouy]|qu)y$/i, '$1ies']],\n z: [[/(quiz)$/i, '$1zes']]\n};\nvar _rules$2 = suffixes;\n\nvar addE = /(x|ch|sh|s|z)$/;\n\nvar trySuffix = function trySuffix(str) {\n var c = str[str.length - 1];\n\n if (_rules$2.hasOwnProperty(c) === true) {\n for (var i = 0; i < _rules$2[c].length; i += 1) {\n var reg = _rules$2[c][i][0];\n\n if (reg.test(str) === true) {\n return str.replace(reg, _rules$2[c][i][1]);\n }\n }\n }\n\n return null;\n};\n/** Turn a singular noun into a plural\n * assume the given string is singular\n */\n\n\nvar pluralize = function pluralize() {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var world = arguments.length > 1 ? arguments[1] : undefined;\n var irregulars = world.irregulars.nouns; // check irregulars list\n\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str];\n } //we have some rules to try-out\n\n\n var plural = trySuffix(str);\n\n if (plural !== null) {\n return plural;\n } //like 'church'\n\n\n if (addE.test(str)) {\n return str + 'es';\n } // ¯\\_(ツ)_/¯\n\n\n return str + 's';\n};\n\nvar toPlural = pluralize;\n\n//patterns for turning 'dwarves' to 'dwarf'\nvar _rules$1 = [[/([^v])ies$/i, '$1y'], [/ises$/i, 'isis'], [/(kn|[^o]l|w)ives$/i, '$1ife'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i, '$1f'], [/^(dwar|handkerchie|hoo|scar|whar)ves$/i, '$1f'], [/(antenn|formul|nebul|vertebr|vit)ae$/i, '$1a'], [/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i, '$1us'], [/(buffal|tomat|tornad)(oes)$/i, '$1o'], // [/(analy|diagno|parenthe|progno|synop|the)ses$/i, '$1sis'],\n[/(eas)es$/i, '$1e'], //diseases\n[/(..[aeiou]s)es$/i, '$1'], //geniouses\n[/(vert|ind|cort)(ices)$/i, '$1ex'], [/(matr|append)(ices)$/i, '$1ix'], [/(x|ch|ss|sh|z|o)es$/i, '$1'], [/men$/i, 'man'], [/(n)ews$/i, '$1ews'], [/([ti])a$/i, '$1um'], [/([^aeiouy]|qu)ies$/i, '$1y'], [/(s)eries$/i, '$1eries'], [/(m)ovies$/i, '$1ovie'], [/([m|l])ice$/i, '$1ouse'], [/(cris|ax|test)es$/i, '$1is'], [/(alias|status)es$/i, '$1'], [/(ss)$/i, '$1'], [/(ics)$/i, '$1'], [/s$/i, '']];\n\nvar invertObj = function invertObj(obj) {\n return Object.keys(obj).reduce(function (h, k) {\n h[obj[k]] = k;\n return h;\n }, {});\n};\n\nvar toSingular = function toSingular(str, world) {\n var irregulars = world.irregulars.nouns;\n var invert = invertObj(irregulars); //(not very efficient)\n // check irregulars list\n\n if (invert.hasOwnProperty(str)) {\n return invert[str];\n } // go through our regexes\n\n\n for (var i = 0; i < _rules$1.length; i++) {\n if (_rules$1[i][0].test(str) === true) {\n str = str.replace(_rules$1[i][0], _rules$1[i][1]);\n return str;\n }\n }\n\n return str;\n};\n\nvar toSingular_1 = toSingular;\n\n//rules for turning a verb into infinitive form\nvar rules = {\n Participle: [{\n reg: /own$/i,\n to: 'ow'\n }, {\n reg: /(.)un([g|k])$/i,\n to: '$1in$2'\n }],\n Actor: [{\n reg: /(er)er$/i,\n to: '$1'\n }],\n PresentTense: [{\n reg: /(..)(ies)$/i,\n to: '$1y'\n }, {\n reg: /(tch|sh)es$/i,\n to: '$1'\n }, {\n reg: /(ss|zz)es$/i,\n to: '$1'\n }, {\n reg: /([tzlshicgrvdnkmu])es$/i,\n to: '$1e'\n }, {\n reg: /(n[dtk]|c[kt]|[eo]n|i[nl]|er|a[ytrl])s$/i,\n to: '$1'\n }, {\n reg: /(ow)s$/i,\n to: '$1'\n }, {\n reg: /(op)s$/i,\n to: '$1'\n }, {\n reg: /([eirs])ts$/i,\n to: '$1t'\n }, {\n reg: /(ll)s$/i,\n to: '$1'\n }, {\n reg: /(el)s$/i,\n to: '$1'\n }, {\n reg: /(ip)es$/i,\n to: '$1e'\n }, {\n reg: /ss$/i,\n to: 'ss'\n }, {\n reg: /s$/i,\n to: ''\n }],\n Gerund: [{\n //popping -> pop\n reg: /(..)(p|d|t|g){2}ing$/i,\n to: '$1$2'\n }, {\n //fuzzing -> fuzz\n reg: /(ll|ss|zz)ing$/i,\n to: '$1'\n }, {\n reg: /([^aeiou])ying$/i,\n to: '$1y'\n }, {\n reg: /([^ae]i.)ing$/i,\n to: '$1e'\n }, {\n //eating, reading\n reg: /(ea[dklnrtv])ing$/i,\n to: '$1'\n }, {\n //washing -> wash\n reg: /(ch|sh)ing$/i,\n to: '$1'\n }, //soft-e forms:\n {\n //z : hazing (not buzzing)\n reg: /(z)ing$/i,\n to: '$1e'\n }, {\n //a : baking, undulating\n reg: /(a[gdkvtc])ing$/i,\n to: '$1e'\n }, {\n //u : conjuring, tubing\n reg: /(u[rtcbn])ing$/i,\n to: '$1e'\n }, {\n //o : forboding, poking, hoping, boring (not hooping)\n reg: /([^o]o[bdknprv])ing$/i,\n to: '$1e'\n }, {\n //ling : tingling, wrinkling, circling, scrambling, bustling\n reg: /([tbckg]l)ing$/i,\n //dp\n to: '$1e'\n }, {\n //cing : bouncing, denouncing\n reg: /(c|s)ing$/i,\n //dp\n to: '$1e'\n }, // {\n // //soft-e :\n // reg: /([ua]s|[dr]g|z|o[rlsp]|cre)ing$/i,\n // to: '$1e',\n // },\n {\n //fallback\n reg: /(..)ing$/i,\n to: '$1'\n }],\n PastTense: [{\n reg: /(ued)$/i,\n to: 'ue'\n }, {\n reg: /a([^aeiouy])ed$/i,\n to: 'a$1e'\n }, {\n reg: /([aeiou]zz)ed$/i,\n to: '$1'\n }, {\n reg: /(e|i)lled$/i,\n to: '$1ll'\n }, {\n reg: /(.)(sh|ch)ed$/i,\n to: '$1$2'\n }, {\n reg: /(tl|gl)ed$/i,\n to: '$1e'\n }, {\n reg: /(um?pt?)ed$/i,\n to: '$1'\n }, {\n reg: /(ss)ed$/i,\n to: '$1'\n }, {\n reg: /pped$/i,\n to: 'p'\n }, {\n reg: /tted$/i,\n to: 't'\n }, {\n reg: /(..)gged$/i,\n to: '$1g'\n }, {\n reg: /(..)lked$/i,\n to: '$1lk'\n }, {\n reg: /([^aeiouy][aeiou])ked$/i,\n to: '$1ke'\n }, {\n reg: /(.[aeiou])led$/i,\n to: '$1l'\n }, {\n reg: /(..)(h|ion|n[dt]|ai.|[cs]t|pp|all|ss|tt|int|ail|ld|en|oo.|er|k|pp|w|ou.|rt|ght|rm)ed$/i,\n to: '$1$2'\n }, {\n reg: /(.ut)ed$/i,\n to: '$1e'\n }, {\n reg: /(.pt)ed$/i,\n to: '$1'\n }, {\n reg: /(us)ed$/i,\n to: '$1e'\n }, {\n reg: /(dd)ed$/i,\n to: '$1'\n }, {\n reg: /(..[^aeiouy])ed$/i,\n to: '$1e'\n }, {\n reg: /(..)ied$/i,\n to: '$1y'\n }, {\n reg: /(.o)ed$/i,\n to: '$1o'\n }, {\n reg: /(..i)ed$/i,\n to: '$1'\n }, {\n reg: /(.a[^aeiou])ed$/i,\n to: '$1'\n }, {\n //owed, aced\n reg: /([aeiou][^aeiou])ed$/i,\n to: '$1e'\n }, {\n reg: /([rl])ew$/i,\n to: '$1ow'\n }, {\n reg: /([pl])t$/i,\n to: '$1t'\n }]\n};\nvar _transform = rules;\n\nvar guessVerb = {\n Gerund: ['ing'],\n Actor: ['erer'],\n Infinitive: ['ate', 'ize', 'tion', 'rify', 'then', 'ress', 'ify', 'age', 'nce', 'ect', 'ise', 'ine', 'ish', 'ace', 'ash', 'ure', 'tch', 'end', 'ack', 'and', 'ute', 'ade', 'ock', 'ite', 'ase', 'ose', 'use', 'ive', 'int', 'nge', 'lay', 'est', 'ain', 'ant', 'ent', 'eed', 'er', 'le', 'own', 'unk', 'ung', 'en'],\n PastTense: ['ed', 'lt', 'nt', 'pt', 'ew', 'ld'],\n PresentTense: ['rks', 'cks', 'nks', 'ngs', 'mps', 'tes', 'zes', 'ers', 'les', 'acks', 'ends', 'ands', 'ocks', 'lays', 'eads', 'lls', 'els', 'ils', 'ows', 'nds', 'ays', 'ams', 'ars', 'ops', 'ffs', 'als', 'urs', 'lds', 'ews', 'ips', 'es', 'ts', 'ns']\n}; //flip it into a lookup object\n\nguessVerb = Object.keys(guessVerb).reduce(function (h, k) {\n guessVerb[k].forEach(function (a) {\n return h[a] = k;\n });\n return h;\n}, {});\nvar _guess = guessVerb;\n\n/** it helps to know what we're conjugating from */\n\nvar guessTense = function guessTense(str) {\n var three = str.substr(str.length - 3);\n\n if (_guess.hasOwnProperty(three) === true) {\n return _guess[three];\n }\n\n var two = str.substr(str.length - 2);\n\n if (_guess.hasOwnProperty(two) === true) {\n return _guess[two];\n }\n\n var one = str.substr(str.length - 1);\n\n if (one === 's') {\n return 'PresentTense';\n }\n\n return null;\n};\n\nvar toInfinitive$1 = function toInfinitive(str, world, tense) {\n if (!str) {\n return '';\n } //1. look at known irregulars\n\n\n if (world.words.hasOwnProperty(str) === true) {\n var irregs = world.irregulars.verbs;\n var keys = Object.keys(irregs);\n\n for (var i = 0; i < keys.length; i++) {\n var forms = Object.keys(irregs[keys[i]]);\n\n for (var o = 0; o < forms.length; o++) {\n if (str === irregs[keys[i]][forms[o]]) {\n return keys[i];\n }\n }\n }\n } // give'r!\n\n\n tense = tense || guessTense(str);\n\n if (tense && _transform[tense]) {\n for (var _i = 0; _i < _transform[tense].length; _i++) {\n var rule = _transform[tense][_i];\n\n if (rule.reg.test(str) === true) {\n // console.log(rule.reg)\n return str.replace(rule.reg, rule.to);\n }\n }\n }\n\n return str;\n};\n\nvar toInfinitive_1$1 = toInfinitive$1;\n\nvar irregulars$3 = {\n nouns: plurals,\n verbs: conjugations_1\n}; //these behaviours are configurable & shared across some plugins\n\nvar transforms = {\n conjugate: conjugate_1$1,\n adjectives: adjectives$2,\n toPlural: toPlural,\n toSingular: toSingular_1,\n toInfinitive: toInfinitive_1$1\n};\nvar _isVerbose = false;\n/** all configurable linguistic data */\n\nvar World = /*#__PURE__*/function () {\n function World() {\n _classCallCheck(this, World);\n\n // quiet these properties from a console.log\n Object.defineProperty(this, 'words', {\n enumerable: false,\n value: {},\n writable: true\n });\n Object.defineProperty(this, 'hasCompound', {\n enumerable: false,\n value: {},\n writable: true\n });\n Object.defineProperty(this, 'irregulars', {\n enumerable: false,\n value: irregulars$3,\n writable: true\n });\n Object.defineProperty(this, 'tags', {\n enumerable: false,\n value: Object.assign({}, tags),\n writable: true\n });\n Object.defineProperty(this, 'transforms', {\n enumerable: false,\n value: transforms,\n writable: true\n });\n Object.defineProperty(this, 'taggers', {\n enumerable: false,\n value: [],\n writable: true\n }); // cache our abbreviations for our sentence-parser\n\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n value: {\n abbreviations: {}\n }\n }); // add our compressed data to lexicon\n\n this.words = unpack_1.buildOut(this); // add our irregulars to lexicon\n\n addIrregulars_1(this);\n }\n /** more logs for debugging */\n\n\n _createClass(World, [{\n key: \"verbose\",\n value: function verbose(bool) {\n _isVerbose = bool;\n return this;\n }\n }, {\n key: \"isVerbose\",\n value: function isVerbose() {\n return _isVerbose;\n }\n /** put new words into our lexicon, properly */\n\n }, {\n key: \"addWords\",\n value: function addWords(wordObj) {\n // clean them up a bit\n var cleaned = {};\n Object.keys(wordObj).forEach(function (w) {\n var tag = wordObj[w];\n w = w.toLowerCase().trim();\n cleaned[w] = tag;\n });\n unpack_1.addWords(cleaned, this.words, this);\n }\n /** add new custom conjugations */\n\n }, {\n key: \"addConjugations\",\n value: function addConjugations(obj) {\n Object.assign(this.irregulars.verbs, obj);\n return this;\n }\n /** add new custom plural/singular pairs */\n\n }, {\n key: \"addPlurals\",\n value: function addPlurals(obj) {\n Object.assign(this.irregulars.nouns, obj);\n return this;\n }\n /** extend the compromise tagset */\n\n }, {\n key: \"addTags\",\n value: function addTags(tags) {\n tags = Object.assign({}, tags);\n this.tags = Object.assign(this.tags, tags); // calculate graph implications for the new tags\n\n this.tags = inference(this.tags);\n return this;\n }\n /** call methods after tagger runs */\n\n }, {\n key: \"postProcess\",\n value: function postProcess(fn) {\n this.taggers.push(fn);\n return this;\n }\n /** helper method for logging + debugging */\n\n }, {\n key: \"stats\",\n value: function stats() {\n return {\n words: Object.keys(this.words).length,\n plurals: Object.keys(this.irregulars.nouns).length,\n conjugations: Object.keys(this.irregulars.verbs).length,\n compounds: Object.keys(this.hasCompound).length,\n postProcessors: this.taggers.length\n };\n }\n }]);\n\n return World;\n}(); // ¯\\_(:/)_/¯\n\n\nvar clone = function clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n};\n/** produce a deep-copy of all lingustic data */\n\n\nWorld.prototype.clone = function () {\n var w2 = new World(); // these are simple to copy:\n\n w2.words = Object.assign({}, this.words);\n w2.hasCompound = Object.assign({}, this.hasCompound); //these ones are nested:\n\n w2.irregulars = clone(this.irregulars);\n w2.tags = clone(this.tags); // these are functions\n\n w2.transforms = this.transforms;\n w2.taggers = this.taggers;\n return w2;\n};\n\nvar World_1 = World;\n\n/** return the root, first document */\n\nvar _01Utils = createCommonjsModule(function (module, exports) {\n exports.all = function () {\n return this.parents()[0] || this;\n };\n /** return the previous result */\n\n\n exports.parent = function () {\n if (this.from) {\n return this.from;\n }\n\n return this;\n };\n /** return a list of all previous results */\n\n\n exports.parents = function (n) {\n var arr = [];\n\n var addParent = function addParent(doc) {\n if (doc.from) {\n arr.push(doc.from);\n addParent(doc.from);\n }\n };\n\n addParent(this);\n arr = arr.reverse();\n\n if (typeof n === 'number') {\n return arr[n];\n }\n\n return arr;\n };\n /** deep-copy the document, so that no references remain */\n\n\n exports.clone = function (doShallow) {\n var list = this.list.map(function (ts) {\n return ts.clone(doShallow);\n });\n var tmp = this.buildFrom(list);\n return tmp;\n };\n /** how many seperate terms does the document have? */\n\n\n exports.wordCount = function () {\n return this.list.reduce(function (count, p) {\n count += p.wordCount();\n return count;\n }, 0);\n };\n\n exports.wordcount = exports.wordCount;\n /** turn on logging for decision-debugging */\n // exports.verbose = function(bool) {\n // if (bool === undefined) {\n // bool = true\n // }\n // this.world.verbose = bool\n // }\n});\n\n/** use only the first result(s) */\n\nvar _02Accessors = createCommonjsModule(function (module, exports) {\n exports.first = function (n) {\n if (n === undefined) {\n return this.get(0);\n }\n\n return this.slice(0, n);\n };\n /** use only the last result(s) */\n\n\n exports.last = function (n) {\n if (n === undefined) {\n return this.get(this.list.length - 1);\n }\n\n var end = this.list.length;\n return this.slice(end - n, end);\n };\n /** grab a given subset of the results*/\n\n\n exports.slice = function (start, end) {\n var list = this.list.slice(start, end);\n return this.buildFrom(list);\n };\n /* grab nth result */\n\n\n exports.eq = function (n) {\n var p = this.list[n];\n\n if (p === undefined) {\n return this.buildFrom([]);\n }\n\n return this.buildFrom([p]);\n };\n\n exports.get = exports.eq;\n /** grab term[0] for every match */\n\n exports.firstTerms = function () {\n return this.match('^.');\n };\n\n exports.firstTerm = exports.firstTerms;\n /** grab the last term for every match */\n\n exports.lastTerms = function () {\n return this.match('.$');\n };\n\n exports.lastTerm = exports.lastTerms;\n /** return a flat array of term objects */\n\n exports.termList = function (num) {\n var arr = []; //'reduce' but faster\n\n for (var i = 0; i < this.list.length; i++) {\n var terms = this.list[i].terms();\n\n for (var o = 0; o < terms.length; o++) {\n arr.push(terms[o]); //support .termList(4)\n\n if (num !== undefined && arr[num] !== undefined) {\n return arr[num];\n }\n }\n }\n\n return arr;\n };\n /* grab named capture group terms as object */\n\n\n var getGroups = function getGroups(doc) {\n var res = {};\n var allGroups = {};\n\n var _loop = function _loop(i) {\n var phrase = doc.list[i];\n var groups = Object.keys(phrase.groups).map(function (k) {\n return phrase.groups[k];\n });\n\n for (var j = 0; j < groups.length; j++) {\n var _groups$j = groups[j],\n group = _groups$j.group,\n start = _groups$j.start,\n length = _groups$j.length;\n\n if (!allGroups[group]) {\n allGroups[group] = [];\n }\n\n allGroups[group].push(phrase.buildFrom(start, length));\n }\n };\n\n for (var i = 0; i < doc.list.length; i++) {\n _loop(i);\n }\n\n var keys = Object.keys(allGroups);\n\n for (var _i = 0; _i < keys.length; _i++) {\n var key = keys[_i];\n res[key] = doc.buildFrom(allGroups[key]);\n }\n\n return res;\n };\n /** lookup a named-group, by its name */\n\n\n var getOneName = function getOneName(doc, name) {\n var arr = [];\n\n var _loop2 = function _loop2(i) {\n var phrase = doc.list[i];\n var keys = Object.keys(phrase.groups);\n keys = keys.filter(function (id) {\n return phrase.groups[id].group === name;\n });\n keys.forEach(function (id) {\n arr.push(phrase.buildFrom(phrase.groups[id].start, phrase.groups[id].length));\n });\n };\n\n for (var i = 0; i < doc.list.length; i++) {\n _loop2(i);\n }\n\n return doc.buildFrom(arr);\n };\n /** grab named capture group results */\n\n\n exports.groups = function (target) {\n if (target === undefined) {\n return getGroups(this);\n }\n\n if (typeof target === 'number') {\n target = String(target);\n }\n\n return getOneName(this, target) || this.buildFrom([]);\n };\n\n exports.group = exports.groups;\n /** get the full-sentence each phrase belongs to */\n\n exports.sentences = function (n) {\n var arr = [];\n this.list.forEach(function (p) {\n arr.push(p.fullSentence());\n });\n\n if (typeof n === 'number') {\n return this.buildFrom([arr[n]]);\n }\n\n return this.buildFrom(arr);\n };\n\n exports.sentence = exports.sentences;\n});\n\n// cache the easier conditions up-front\nvar cacheRequired$1 = function cacheRequired(reg) {\n var needTags = [];\n var needWords = [];\n reg.forEach(function (obj) {\n if (obj.optional === true || obj.negative === true) {\n return;\n }\n\n if (obj.tag !== undefined) {\n needTags.push(obj.tag);\n }\n\n if (obj.word !== undefined) {\n needWords.push(obj.word);\n }\n });\n return {\n tags: needTags,\n words: needWords\n };\n}; // try to pre-fail as many matches as possible, without doing them\n\n\nvar failFast = function failFast(doc, regs) {\n if (doc._cache && doc._cache.set === true) {\n var _cacheRequired = cacheRequired$1(regs),\n words = _cacheRequired.words,\n tags = _cacheRequired.tags; //check required words\n\n\n for (var i = 0; i < words.length; i++) {\n if (doc._cache.words[words[i]] === undefined) {\n return false;\n }\n } //check required tags\n\n\n for (var _i = 0; _i < tags.length; _i++) {\n if (doc._cache.tags[tags[_i]] === undefined) {\n return false;\n }\n }\n }\n\n return true;\n};\n\nvar _failFast = failFast;\n\nvar _03Match = createCommonjsModule(function (module, exports) {\n /** return a new Doc, with this one as a parent */\n exports.match = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // support '0' shorthand for named-groups\n if (typeof opts === 'string' || typeof opts === 'number' || opts === null) {\n opts = {\n group: opts\n };\n } //parse-up the input expression\n\n\n var regs = matchSyntax(reg, opts);\n\n if (regs.length === 0) {\n return this.buildFrom([]);\n } //check our cache, if it exists\n\n\n if (_failFast(this, regs) === false) {\n return this.buildFrom([]);\n } //try expression on each phrase\n\n\n var matches = this.list.reduce(function (arr, p) {\n return arr.concat(p.match(regs));\n }, []); // support returning named groups\n\n if (opts.group !== undefined && opts.group !== null && opts.group !== '') {\n return this.buildFrom(matches).groups(opts.group);\n }\n\n return this.buildFrom(matches);\n };\n /** return all results except for this */\n\n\n exports.not = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n //parse-up the input expression\n var regs = matchSyntax(reg, opts); //if it's empty, return them all!\n\n if (regs.length === 0 || _failFast(this, regs) === false) {\n return this;\n } //try expression on each phrase\n\n\n var matches = this.list.reduce(function (arr, p) {\n return arr.concat(p.not(regs));\n }, []);\n return this.buildFrom(matches);\n };\n /** return only the first match */\n\n\n exports.matchOne = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //check our cache, if it exists\n\n if (_failFast(this, regs) === false) {\n return this.buildFrom([]);\n }\n\n for (var i = 0; i < this.list.length; i++) {\n var match = this.list[i].match(regs, true);\n return this.buildFrom(match);\n }\n\n return this.buildFrom([]);\n };\n /** return each current phrase, only if it contains this match */\n\n\n exports[\"if\"] = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //consult our cache, if it exists\n\n if (_failFast(this, regs) === false) {\n return this.buildFrom([]);\n }\n\n var found = this.list.filter(function (p) {\n return p.has(regs) === true;\n });\n return this.buildFrom(found);\n };\n /** Filter-out any current phrases that have this match*/\n\n\n exports.ifNo = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts);\n var found = this.list.filter(function (p) {\n return p.has(regs) === false;\n });\n return this.buildFrom(found);\n };\n /**Return a boolean if this match exists */\n\n\n exports.has = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //consult our cache, if it exists\n\n if (_failFast(this, regs) === false) {\n return false;\n }\n\n return this.list.some(function (p) {\n return p.has(regs) === true;\n });\n };\n /** match any terms after our matches, within the sentence */\n\n\n exports.lookAhead = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // find everything afterwards, by default\n if (!reg) {\n reg = '.*';\n }\n\n var regs = matchSyntax(reg, opts);\n var matches = [];\n this.list.forEach(function (p) {\n matches = matches.concat(p.lookAhead(regs));\n });\n matches = matches.filter(function (p) {\n return p;\n });\n return this.buildFrom(matches);\n };\n\n exports.lookAfter = exports.lookAhead;\n /** match any terms before our matches, within the sentence */\n\n exports.lookBehind = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // find everything afterwards, by default\n if (!reg) {\n reg = '.*';\n }\n\n var regs = matchSyntax(reg, opts);\n var matches = [];\n this.list.forEach(function (p) {\n matches = matches.concat(p.lookBehind(regs));\n });\n matches = matches.filter(function (p) {\n return p;\n });\n return this.buildFrom(matches);\n };\n\n exports.lookBefore = exports.lookBehind;\n /** return all terms before a match, in each phrase */\n\n exports.before = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //only the phrases we care about\n\n var phrases = this[\"if\"](regs).list;\n var befores = phrases.map(function (p) {\n var ids = p.terms().map(function (t) {\n return t.id;\n }); //run the search again\n\n var m = p.match(regs)[0];\n var index = ids.indexOf(m.start); //nothing is before a first-term match\n\n if (index === 0 || index === -1) {\n return null;\n }\n\n return p.buildFrom(p.start, index);\n });\n befores = befores.filter(function (p) {\n return p !== null;\n });\n return this.buildFrom(befores);\n };\n /** return all terms after a match, in each phrase */\n\n\n exports.after = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var regs = matchSyntax(reg, opts); //only the phrases we care about\n\n var phrases = this[\"if\"](regs).list;\n var befores = phrases.map(function (p) {\n var terms = p.terms();\n var ids = terms.map(function (t) {\n return t.id;\n }); //run the search again\n\n var m = p.match(regs)[0];\n var index = ids.indexOf(m.start); //skip if nothing is after it\n\n if (index === -1 || !terms[index + m.length]) {\n return null;\n } //create the new phrase, after our match.\n\n\n var id = terms[index + m.length].id;\n var len = p.length - index - m.length;\n return p.buildFrom(id, len);\n });\n befores = befores.filter(function (p) {\n return p !== null;\n });\n return this.buildFrom(befores);\n };\n /** return only results with this match afterwards */\n\n\n exports.hasAfter = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.filter(function (doc) {\n return doc.lookAfter(reg, opts).found;\n });\n };\n /** return only results with this match before it */\n\n\n exports.hasBefore = function (reg) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.filter(function (doc) {\n return doc.lookBefore(reg, opts).found;\n });\n };\n});\n\n/** apply a tag, or tags to all terms */\nvar tagTerms = function tagTerms(tag, doc, safe, reason) {\n var tagList = [];\n\n if (typeof tag === 'string') {\n tagList = tag.split(' ');\n } // doc.parents()[0].reasons.push(reason)\n //do indepenent tags for each term:\n\n\n doc.list.forEach(function (p) {\n var terms = p.terms(); // tagSafe - apply only to fitting terms\n\n if (safe === true) {\n terms = terms.filter(function (t) {\n return t.canBe(tag, doc.world);\n });\n }\n\n terms.forEach(function (t, i) {\n //fancy version:\n if (tagList.length > 1) {\n if (tagList[i] && tagList[i] !== '.') {\n t.tag(tagList[i], reason, doc.world);\n }\n } else {\n //non-fancy version (same tag for all terms)\n t.tag(tag, reason, doc.world);\n }\n });\n });\n return;\n};\n\nvar _setTag = tagTerms;\n\n/** Give all terms the given tag */\n\nvar tag = function tag(tags, why) {\n if (!tags) {\n return this;\n }\n\n _setTag(tags, this, false, why);\n return this;\n};\n/** Only apply tag to terms if it is consistent with current tags */\n\n\nvar tagSafe = function tagSafe(tags, why) {\n if (!tags) {\n return this;\n }\n\n _setTag(tags, this, true, why);\n return this;\n};\n/** Remove this term from the given terms */\n\n\nvar unTag = function unTag(tags, why) {\n var _this = this;\n\n this.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n return t.unTag(tags, why, _this.world);\n });\n });\n return this;\n};\n/** return only the terms that can be this tag*/\n\n\nvar canBe = function canBe(tag) {\n if (!tag) {\n return this;\n }\n\n var world = this.world;\n var matches = this.list.reduce(function (arr, p) {\n return arr.concat(p.canBe(tag, world));\n }, []);\n return this.buildFrom(matches);\n};\n\nvar _04Tag = {\n tag: tag,\n tagSafe: tagSafe,\n unTag: unTag,\n canBe: canBe\n};\n\n/* run each phrase through a function, and create a new document */\nvar map = function map(fn) {\n var _this = this;\n\n if (!fn) {\n return this;\n }\n\n var list = this.list.map(function (p, i) {\n var doc = _this.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n var res = fn(doc, i); // if its a doc, return one result\n\n if (res && res.list && res.list[0]) {\n return res.list[0];\n }\n\n return res;\n }); //remove nulls\n\n list = list.filter(function (x) {\n return x;\n }); // return an empty response\n\n if (list.length === 0) {\n return this.buildFrom(list);\n } // if it is not a list of Phrase objects, then don't try to make a Doc object\n\n\n if (_typeof(list[0]) !== 'object' || list[0].isA !== 'Phrase') {\n return list;\n }\n\n return this.buildFrom(list);\n};\n/** run a function on each phrase */\n\n\nvar forEach = function forEach(fn, detachParent) {\n var _this2 = this;\n\n if (!fn) {\n return this;\n }\n\n this.list.forEach(function (p, i) {\n var sub = _this2.buildFrom([p]); // if we're doing fancy insertions, we may want to skip updating the parent each time.\n\n\n if (detachParent === true) {\n sub.from = null; //\n }\n\n fn(sub, i);\n });\n return this;\n};\n/** return only the phrases that return true */\n\n\nvar filter = function filter(fn) {\n var _this3 = this;\n\n if (!fn) {\n return this;\n }\n\n var list = this.list.filter(function (p, i) {\n var doc = _this3.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n return this.buildFrom(list);\n};\n/** return a document with only the first phrase that matches */\n\n\nvar find = function find(fn) {\n var _this4 = this;\n\n if (!fn) {\n return this;\n }\n\n var phrase = this.list.find(function (p, i) {\n var doc = _this4.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n\n if (phrase) {\n return this.buildFrom([phrase]);\n }\n\n return undefined;\n};\n/** return true or false if there is one matching phrase */\n\n\nvar some = function some(fn) {\n var _this5 = this;\n\n if (!fn) {\n return this;\n }\n\n return this.list.some(function (p, i) {\n var doc = _this5.buildFrom([p]);\n\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n};\n/** sample a subset of the results */\n\n\nvar random = function random(n) {\n if (!this.found) {\n return this;\n }\n\n var r = Math.floor(Math.random() * this.list.length);\n\n if (n === undefined) {\n var list = [this.list[r]];\n return this.buildFrom(list);\n } //prevent it from going over the end\n\n\n if (r + n > this.length) {\n r = this.length - n;\n r = r < 0 ? 0 : r;\n }\n\n return this.slice(r, r + n);\n};\n/** combine each phrase into a new data-structure */\n// exports.reduce = function(fn, h) {\n// let list = this.list.reduce((_h, ts) => {\n// let doc = this.buildFrom([ts])\n// doc.from = null //it's not a child/parent\n// return fn(_h, doc)\n// }, h)\n// return this.buildFrom(list)\n// }\n\n\nvar _05Loops = {\n map: map,\n forEach: forEach,\n filter: filter,\n find: find,\n some: some,\n random: random\n};\n\n// const tokenize = require('../../01-tokenizer/02-words')\nvar tokenize = function tokenize(str) {\n return str.split(/[ -]/g);\n}; // take a list of strings\n// look them up in the document\n\n\nvar buildTree = function buildTree(termList) {\n var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var root = {}; // parse our input\n\n termList.forEach(function (str, i) {\n var val = true;\n\n if (values[i] !== undefined) {\n val = values[i];\n } // some rough normalization\n\n\n str = (str || '').toLowerCase();\n str = str.replace(/[,;.!?]+$/, '');\n var arr = tokenize(str).map(function (s) {\n return s.trim();\n });\n root[arr[0]] = root[arr[0]] || {};\n\n if (arr.length === 1) {\n root[arr[0]].value = val;\n } else {\n root[arr[0]].more = root[arr[0]].more || [];\n root[arr[0]].more.push({\n rest: arr.slice(1),\n value: val\n });\n }\n }); // sort by longest-first?\n // console.log(JSON.stringify(root, null, 2))\n\n return root;\n};\n\nvar fastLookup = function fastLookup(termList, values, doc) {\n var root = buildTree(termList, values);\n var found = []; // each phrase\n\n var _loop = function _loop(i) {\n var p = doc.list[i];\n var terms = p.terms();\n var words = terms.map(function (t) {\n return t.reduced;\n }); // each word\n\n var _loop2 = function _loop2(w) {\n if (root[words[w]] !== undefined) {\n // is it a multi-word match?\n if (root[words[w]].more !== undefined) {\n root[words[w]].more.forEach(function (more) {\n // is it too-long?\n if (words[w + more.rest.length] === undefined) {\n return;\n } // compare each subsequent term\n\n\n var everyTerm = more.rest.every(function (word, r) {\n return word === words[w + r + 1];\n });\n\n if (everyTerm === true) {\n found.push({\n id: p.terms()[w].id,\n value: more.value,\n length: more.rest.length + 1\n });\n }\n });\n } // is it a single-word match?\n\n\n if (root[words[w]].value !== undefined) {\n found.push({\n id: p.terms()[w].id,\n value: root[words[w]].value,\n length: 1\n });\n }\n }\n };\n\n for (var w = 0; w < words.length; w++) {\n _loop2(w);\n }\n };\n\n for (var i = 0; i < doc.list.length; i++) {\n _loop(i);\n }\n\n return found;\n};\n\nvar _lookup = fastLookup;\n\nvar _06Lookup = createCommonjsModule(function (module, exports) {\n // compare one term and one match\n // const doesMatch = function(term, str) {\n // if (str === '') {\n // return false\n // }\n // return term.reduced === str || term.implicit === str || term.root === str || term.text.toLowerCase() === str\n // }\n var isObject = function isObject(obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]';\n };\n /** lookup an array of words or phrases */\n\n\n exports.lookup = function (arr) {\n var _this = this;\n\n var values = []; //is it a {key:val} object?\n\n var isObj = isObject(arr);\n\n if (isObj === true) {\n arr = Object.keys(arr).map(function (k) {\n values.push(arr[k]);\n return k;\n });\n } // support .lookup('foo')\n\n\n if (typeof arr === 'string') {\n arr = [arr];\n } //make sure we go fast.\n\n\n if (this._cache.set !== true) {\n this.cache();\n }\n\n var found = _lookup(arr, values, this);\n var p = this.list[0]; // make object response\n\n if (isObj === true) {\n var byVal = {};\n found.forEach(function (o) {\n byVal[o.value] = byVal[o.value] || [];\n byVal[o.value].push(p.buildFrom(o.id, o.length));\n });\n Object.keys(byVal).forEach(function (k) {\n byVal[k] = _this.buildFrom(byVal[k]);\n });\n return byVal;\n } // otherwise, make array response:\n\n\n found = found.map(function (o) {\n return p.buildFrom(o.id, o.length);\n });\n return this.buildFrom(found);\n };\n\n exports.lookUp = exports.lookup;\n});\n\n/** freeze the current state of the document, for speed-purposes*/\nvar cache = function cache(options) {\n var _this = this;\n\n options = options || {};\n var words = {};\n var tags = {};\n this._cache.words = words;\n this._cache.tags = tags;\n this._cache.set = true;\n this.list.forEach(function (p, i) {\n p.cache = p.cache || {}; //p.terms get cached automatically\n\n var terms = p.terms(); // cache all the terms\n\n terms.forEach(function (t) {\n if (words[t.reduced] && !words.hasOwnProperty(t.reduced)) {\n return; //skip prototype words\n }\n\n words[t.reduced] = words[t.reduced] || [];\n words[t.reduced].push(i);\n Object.keys(t.tags).forEach(function (tag) {\n tags[tag] = tags[tag] || [];\n tags[tag].push(i);\n }); // cache root-form on Term, too\n\n if (options.root) {\n t.setRoot(_this.world);\n words[t.root] = [i];\n }\n });\n });\n return this;\n};\n/** un-freezes the current state of the document, so it may be transformed */\n\n\nvar uncache = function uncache() {\n this._cache = {};\n this.list.forEach(function (p) {\n p.cache = {};\n }); // do parents too?\n\n this.parents().forEach(function (doc) {\n doc._cache = {};\n doc.list.forEach(function (p) {\n p.cache = {};\n });\n });\n return this;\n};\n\nvar _07Cache = {\n cache: cache,\n uncache: uncache\n};\n\nvar titleCase$1 = function titleCase(str) {\n return str.charAt(0).toUpperCase() + str.substr(1);\n};\n/** substitute-in new content */\n\n\nvar replaceWith = function replaceWith(replace) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!replace) {\n return this[\"delete\"]();\n } //support old-style params\n\n\n if (options === true) {\n options = {\n keepTags: true\n };\n }\n\n if (options === false) {\n options = {\n keepTags: false\n };\n }\n\n options = options || {}; // clear the cache\n\n this.uncache(); // return this\n\n this.list.forEach(function (p) {\n var input = replace; // accept a function for replace\n\n if (typeof replace === 'function') {\n input = replace(p);\n }\n\n var newPhrases; // accept a Doc object to replace\n\n if (input && _typeof(input) === 'object' && input.isA === 'Doc') {\n newPhrases = input.list;\n\n _this.pool().merge(input.pool());\n } else if (typeof input === 'string') {\n //input is a string\n if (options.keepCase !== false && p.terms(0).isTitleCase()) {\n input = titleCase$1(input);\n }\n\n newPhrases = _01Tokenizer(input, _this.world, _this.pool()); //tag the new phrases\n\n var tmpDoc = _this.buildFrom(newPhrases);\n\n tmpDoc.tagger();\n newPhrases = tmpDoc.list;\n } else {\n return; //don't even bother\n } // try to keep its old tags, if appropriate\n\n\n if (options.keepTags === true) {\n var oldTags = p.json({\n terms: {\n tags: true\n }\n }).terms;\n newPhrases[0].terms().forEach(function (t, i) {\n if (oldTags[i]) {\n t.tagSafe(oldTags[i].tags, 'keptTag', _this.world);\n }\n });\n }\n\n p.replace(newPhrases[0], _this); //Oneday: support multi-sentence replacements\n });\n return this;\n};\n/** search and replace match with new content */\n\n\nvar replace = function replace(match, _replace, options) {\n // if there's no 2nd param, use replaceWith\n if (_replace === undefined) {\n return this.replaceWith(match, options);\n }\n\n this.match(match).replaceWith(_replace, options);\n return this;\n};\n\nvar _01Replace = {\n replaceWith: replaceWith,\n replace: replace\n};\n\nvar _02Insert = createCommonjsModule(function (module, exports) {\n var isObject = function isObject(obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]';\n }; // if it's empty, just create the phrase\n\n\n var makeNew = function makeNew(str, doc) {\n var phrase = _01Tokenizer(str, doc.world)[0]; //assume it's one sentence, for now\n\n var tmpDoc = doc.buildFrom([phrase]);\n tmpDoc.tagger();\n doc.list = tmpDoc.list;\n return doc;\n };\n /** add these new terms to the end*/\n\n\n exports.append = function () {\n var _this = this;\n\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n if (!str) {\n return this;\n } // if it's empty, just create the phrase\n\n\n if (!this.found) {\n return makeNew(str, this);\n } // clear the cache\n\n\n this.uncache(); //add it to end of every phrase\n\n this.list.forEach(function (p) {\n //build it\n var phrase;\n\n if (isObject(str) && str.isA === 'Doc') {\n phrase = str.list[0].clone(); //use the first phrase\n } else if (typeof str === 'string') {\n phrase = _01Tokenizer(str, _this.world, _this.pool())[0]; //assume it's one sentence, for now\n } //tag it\n\n\n var tmpDoc = _this.buildFrom([phrase]);\n\n tmpDoc.tagger(); // push it onto the end\n\n p.append(phrase, _this);\n });\n return this;\n };\n\n exports.insertAfter = exports.append;\n exports.insertAt = exports.append;\n /** add these new terms to the front*/\n\n exports.prepend = function (str) {\n var _this2 = this;\n\n if (!str) {\n return this;\n } // if it's empty, just create the phrase\n\n\n if (!this.found) {\n return makeNew(str, this);\n } // clear the cache\n\n\n this.uncache(); //add it to start of every phrase\n\n this.list.forEach(function (p) {\n //build it\n var phrase;\n\n if (isObject(str) && str.isA === 'Doc') {\n phrase = str.list[0].clone(); //use the first phrase\n } else if (typeof str === 'string') {\n phrase = _01Tokenizer(str, _this2.world, _this2.pool())[0]; //assume it's one sentence, for now\n } //tag it\n\n\n var tmpDoc = _this2.buildFrom([phrase]);\n\n tmpDoc.tagger(); // add it to the start\n\n p.prepend(phrase, _this2);\n });\n return this;\n };\n\n exports.insertBefore = exports.prepend;\n /** add these new things to the end*/\n\n exports.concat = function () {\n // clear the cache\n this.uncache();\n var list = this.list.slice(0); //repeat for any number of params\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i]; //support a fresh string\n\n if (typeof arg === 'string') {\n var arr = _01Tokenizer(arg, this.world); //TODO: phrase.tagger()?\n\n list = list.concat(arr);\n } else if (arg.isA === 'Doc') {\n list = list.concat(arg.list);\n } else if (arg.isA === 'Phrase') {\n list.push(arg);\n }\n }\n\n return this.buildFrom(list);\n };\n /** fully remove these terms from the document */\n\n\n exports[\"delete\"] = function (match) {\n var _this3 = this;\n\n // clear the cache\n this.uncache();\n var toRemove = this;\n\n if (match) {\n toRemove = this.match(match);\n }\n\n toRemove.list.forEach(function (phrase) {\n return phrase[\"delete\"](_this3);\n });\n return this;\n }; // aliases\n\n\n exports.remove = exports[\"delete\"];\n});\n\nvar shouldTrim = {\n clean: true,\n reduced: true,\n root: true\n};\n/** return the document as text */\n\nvar text = function text(options) {\n var _this = this;\n\n options = options || {}; //are we showing every phrase?\n\n var showFull = false;\n\n if (this.parents().length === 0) {\n showFull = true;\n } // cache roots, if necessary\n\n\n if (options === 'root' || _typeof(options) === 'object' && options.root) {\n this.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n if (t.root === null) {\n t.setRoot(_this.world);\n }\n });\n });\n }\n\n var txt = this.list.reduce(function (str, p, i) {\n var trimPre = !showFull && i === 0;\n var trimPost = !showFull && i === _this.list.length - 1;\n return str + p.text(options, trimPre, trimPost);\n }, ''); // clumsy final trim of leading/trailing whitespace\n\n if (shouldTrim[options] === true || options.reduced === true || options.clean === true || options.root === true) {\n txt = txt.trim();\n }\n\n return txt;\n};\n\nvar _01Text = {\n text: text\n};\n\n// get all character startings in doc\nvar termOffsets = function termOffsets(doc) {\n var elapsed = 0;\n var index = 0;\n var offsets = {};\n doc.termList().forEach(function (term) {\n offsets[term.id] = {\n index: index,\n start: elapsed + term.pre.length,\n length: term.text.length\n };\n elapsed += term.pre.length + term.text.length + term.post.length;\n index += 1;\n });\n return offsets;\n};\n\nvar calcOffset = function calcOffset(doc, result, options) {\n // calculate offsets for each term\n var offsets = termOffsets(doc.all()); // add index values\n\n if (options.terms.index || options.index) {\n result.forEach(function (o) {\n o.terms.forEach(function (t) {\n t.index = offsets[t.id].index;\n });\n o.index = o.terms[0].index;\n });\n } // add offset values\n\n\n if (options.terms.offset || options.offset) {\n result.forEach(function (o) {\n o.terms.forEach(function (t) {\n t.offset = offsets[t.id] || {};\n }); // let len = o.terms.reduce((n, t, i) => {\n // n += t.offset.length || 0\n // //add whitespace, too\n // console.log(t.post)\n // return n\n // }, 0)\n // The offset information for the entire doc starts at (or just before)\n // the first term, and is as long as the whole text. The code originally\n // copied the entire offset value from terms[0], but since we're now\n // overriding 2 of the three fields, it's cleaner to just create an all-\n // new object and not pretend it's \"just\" the same as terms[0].\n\n o.offset = {\n index: o.terms[0].offset.index,\n start: o.terms[0].offset.start - o.text.indexOf(o.terms[0].text),\n length: o.text.length\n };\n });\n }\n};\n\nvar _offset = calcOffset;\n\nvar _02Json = createCommonjsModule(function (module, exports) {\n var jsonDefaults = {\n text: true,\n terms: true,\n trim: true\n }; //some options have dependents\n\n var setOptions = function setOptions(options) {\n options = Object.assign({}, jsonDefaults, options);\n\n if (options.unique) {\n options.reduced = true;\n } //offset calculation requires these options to be on\n\n\n if (options.offset) {\n options.text = true;\n\n if (!options.terms || options.terms === true) {\n options.terms = {};\n }\n\n options.terms.offset = true;\n }\n\n if (options.index || options.terms.index) {\n options.terms = options.terms === true ? {} : options.terms;\n options.terms.id = true;\n }\n\n return options;\n };\n /** pull out desired metadata from the document */\n\n\n exports.json = function () {\n var _this = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n //support json(3) format\n if (typeof options === 'number' && this.list[options]) {\n return this.list[options].json(jsonDefaults);\n }\n\n options = setOptions(options); // cache root strings beforehand, if necessary\n\n if (options.root === true) {\n this.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n if (t.root === null) {\n t.setRoot(_this.world);\n }\n });\n });\n }\n\n var result = this.list.map(function (p) {\n return p.json(options, _this.world);\n }); // add offset and index data for each term\n\n if (options.terms.offset || options.offset || options.terms.index || options.index) {\n _offset(this, result, options);\n } // add frequency #s\n\n\n if (options.frequency || options.freq || options.count) {\n var obj = {};\n this.list.forEach(function (p) {\n var str = p.text('reduced');\n obj[str] = obj[str] || 0;\n obj[str] += 1;\n });\n this.list.forEach(function (p, i) {\n result[i].count = obj[p.text('reduced')];\n });\n } // remove duplicates\n\n\n if (options.unique) {\n var already = {};\n result = result.filter(function (o) {\n if (already[o.reduced] === true) {\n return false;\n }\n\n already[o.reduced] = true;\n return true;\n });\n }\n\n return result;\n }; //aliases\n\n\n exports.data = exports.json;\n});\n\nvar _debug = createCommonjsModule(function (module) {\n // https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color\n var reset = '\\x1b[0m';\n\n var padEnd = function padEnd(str, width) {\n str = str.toString();\n\n while (str.length < width) {\n str += ' ';\n }\n\n return str;\n };\n\n function isClientSide() {\n return typeof window !== 'undefined' && window.document;\n } // some nice colors for client-side debug\n\n\n var css = {\n green: '#7f9c6c',\n red: '#914045',\n blue: '#6699cc',\n magenta: '#6D5685',\n cyan: '#2D85A8',\n yellow: '#e6d7b3',\n black: '#303b50'\n };\n\n var logClientSide = function logClientSide(doc) {\n var tagset = doc.world.tags;\n doc.list.forEach(function (p) {\n console.log('\\n%c\"' + p.text() + '\"', 'color: #e6d7b3;');\n var terms = p.terms();\n terms.forEach(function (t) {\n var tags = Object.keys(t.tags);\n var text = t.text || '-';\n\n if (t.implicit) {\n text = '[' + t.implicit + ']';\n }\n\n var word = \"'\" + text + \"'\";\n word = padEnd(word, 8);\n var found = tags.find(function (tag) {\n return tagset[tag] && tagset[tag].color;\n });\n var color = 'steelblue';\n\n if (tagset[found]) {\n color = tagset[found].color;\n color = css[color];\n }\n\n console.log(\" \".concat(word, \" - %c\").concat(tags.join(', ')), \"color: \".concat(color || 'steelblue', \";\"));\n });\n });\n }; //cheaper than requiring chalk\n\n\n var cli = {\n green: function green(str) {\n return '\\x1b[32m' + str + reset;\n },\n red: function red(str) {\n return '\\x1b[31m' + str + reset;\n },\n blue: function blue(str) {\n return '\\x1b[34m' + str + reset;\n },\n magenta: function magenta(str) {\n return '\\x1b[35m' + str + reset;\n },\n cyan: function cyan(str) {\n return '\\x1b[36m' + str + reset;\n },\n yellow: function yellow(str) {\n return '\\x1b[33m' + str + reset;\n },\n black: function black(str) {\n return '\\x1b[30m' + str + reset;\n }\n };\n\n var tagString = function tagString(tags, world) {\n tags = tags.map(function (tag) {\n if (!world.tags.hasOwnProperty(tag)) {\n return tag;\n }\n\n var c = world.tags[tag].color || 'blue';\n return cli[c](tag);\n });\n return tags.join(', ');\n }; //output some helpful stuff to the console\n\n\n var debug = function debug(doc) {\n if (isClientSide()) {\n logClientSide(doc);\n return doc;\n }\n\n console.log(cli.blue('====='));\n doc.list.forEach(function (p) {\n console.log(cli.blue(' -----'));\n var terms = p.terms();\n terms.forEach(function (t) {\n var tags = Object.keys(t.tags);\n var text = t.text || '-';\n\n if (t.implicit) {\n text = '[' + t.implicit + ']';\n }\n\n {\n text = cli.yellow(text);\n }\n\n var word = \"'\" + text + \"'\";\n word = padEnd(word, 18);\n var str = cli.blue(' | ') + word + ' - ' + tagString(tags, doc.world);\n console.log(str);\n });\n });\n console.log('');\n return doc;\n };\n\n module.exports = debug;\n});\n\nvar topk = function topk(doc) {\n var list = doc.json({\n text: false,\n terms: false,\n reduced: true\n }); // combine them\n\n var obj = {};\n list.forEach(function (o) {\n if (!obj[o.reduced]) {\n o.count = 0;\n obj[o.reduced] = o;\n }\n\n obj[o.reduced].count += 1;\n });\n var arr = Object.keys(obj).map(function (k) {\n return obj[k];\n }); // sort them\n\n arr.sort(function (a, b) {\n if (a.count > b.count) {\n return -1;\n } else if (a.count < b.count) {\n return 1;\n }\n\n return 0;\n });\n return arr;\n};\n\nvar _topk = topk;\n\n/** pretty-print the current document and its tags */\n\nvar debug_1 = function debug_1() {\n _debug(this);\n return this;\n};\n/** some named output formats */\n\n\nvar out = function out(method) {\n if (method === 'text') {\n return this.text();\n }\n\n if (method === 'normal') {\n return this.text('normal');\n }\n\n if (method === 'json') {\n return this.json();\n }\n\n if (method === 'offset' || method === 'offsets') {\n return this.json({\n offset: true\n });\n }\n\n if (method === 'array') {\n return this.json({\n terms: false\n }).map(function (obj) {\n return obj.text;\n }).filter(function (str) {\n return str;\n });\n }\n\n if (method === 'freq' || method === 'frequency') {\n return _topk(this);\n }\n\n if (method === 'terms') {\n var list = [];\n this.json({\n text: false,\n terms: {\n text: true\n }\n }).forEach(function (obj) {\n var terms = obj.terms.map(function (t) {\n return t.text;\n });\n terms = terms.filter(function (t) {\n return t;\n });\n list = list.concat(terms);\n });\n return list;\n }\n\n if (method === 'tags') {\n return this.list.map(function (p) {\n return p.terms().reduce(function (h, t) {\n h[t.clean || t.implicit] = Object.keys(t.tags);\n return h;\n }, {});\n });\n }\n\n if (method === 'debug') {\n _debug(this);\n return this;\n }\n\n return this.text();\n};\n\nvar _03Out = {\n debug: debug_1,\n out: out\n};\n\nvar methods$6 = {\n /** alphabetical order */\n alpha: function alpha(a, b) {\n var left = a.text('clean');\n var right = b.text('clean');\n\n if (left < right) {\n return -1;\n }\n\n if (left > right) {\n return 1;\n }\n\n return 0;\n },\n\n /** count the # of characters of each match */\n length: function length(a, b) {\n var left = a.text().trim().length;\n var right = b.text().trim().length;\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n },\n\n /** count the # of terms in each match */\n wordCount: function wordCount(a, b) {\n var left = a.wordCount();\n var right = b.wordCount();\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n }\n};\n/** sort by # of duplicates in the document*/\n\nvar byFreq = function byFreq(doc) {\n var counts = {};\n var options = {\n \"case\": true,\n punctuation: false,\n whitespace: true,\n unicode: true\n };\n doc.list.forEach(function (p) {\n var str = p.text(options);\n counts[str] = counts[str] || 0;\n counts[str] += 1;\n }); // sort by freq\n\n doc.list.sort(function (a, b) {\n var left = counts[a.text(options)];\n var right = counts[b.text(options)];\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n });\n return doc;\n}; // order results 'chronologically', or document-order\n\n\nvar sortSequential = function sortSequential(doc) {\n var order = {};\n doc.json({\n terms: {\n offset: true\n }\n }).forEach(function (o) {\n order[o.terms[0].id] = o.terms[0].offset.start;\n });\n doc.list = doc.list.sort(function (a, b) {\n if (order[a.start] > order[b.start]) {\n return 1;\n } else if (order[a.start] < order[b.start]) {\n return -1;\n }\n\n return 0;\n });\n return doc;\n}; //aliases\n\n\nmethods$6.alphabetical = methods$6.alpha;\nmethods$6.wordcount = methods$6.wordCount; // aliases for sequential ordering\n\nvar seqNames = {\n index: true,\n sequence: true,\n seq: true,\n sequential: true,\n chron: true,\n chronological: true\n};\n/** re-arrange the order of the matches (in place) */\n\nvar sort = function sort(input) {\n input = input || 'alpha'; //do this one up-front\n\n if (input === 'freq' || input === 'frequency' || input === 'topk') {\n return byFreq(this);\n }\n\n if (seqNames.hasOwnProperty(input)) {\n return sortSequential(this);\n }\n\n input = methods$6[input] || input; // apply sort method on each phrase\n\n if (typeof input === 'function') {\n this.list = this.list.sort(input);\n return this;\n }\n\n return this;\n};\n/** reverse the order of the matches, but not the words */\n\n\nvar reverse = function reverse() {\n var list = [].concat(this.list);\n list = list.reverse();\n return this.buildFrom(list);\n};\n/** remove any duplicate matches */\n\n\nvar unique$1 = function unique() {\n var list = [].concat(this.list);\n var obj = {};\n list = list.filter(function (p) {\n var str = p.text('reduced').trim() || p.text('implicit').trim();\n\n if (obj.hasOwnProperty(str) === true) {\n return false;\n }\n\n obj[str] = true;\n return true;\n });\n return this.buildFrom(list);\n};\n\nvar _01Sort = {\n sort: sort,\n reverse: reverse,\n unique: unique$1\n};\n\nvar isPunct = /[\\[\\]{}⟨⟩:,،、‒–—―…‹›«»‐\\-;\\/⁄·*\\•^†‡°¡¿※№÷׺ª%‰=‱¶§~|‖¦©℗®℠™¤₳฿]/g;\nvar quotes = /['‘’“”\"′″‴]+/g;\nvar methods$5 = {\n // cleanup newlines and extra spaces\n whitespace: function whitespace(doc) {\n var termArr = doc.list.map(function (ts) {\n return ts.terms();\n });\n termArr.forEach(function (terms, o) {\n terms.forEach(function (t, i) {\n // keep dashes between words\n if (t.hasDash() === true) {\n t.post = ' - ';\n return;\n } // remove existing spaces\n\n\n t.pre = t.pre.replace(/\\s/g, '');\n t.post = t.post.replace(/\\s/g, ''); //last word? ensure there's a next sentence.\n\n if (terms.length - 1 === i && !termArr[o + 1]) {\n return;\n } // no extra spaces for contractions\n\n\n if (t.implicit && Boolean(t.text) === true) {\n return;\n } // no extra spaces for hyphenated words\n\n\n if (t.hasHyphen() === true) {\n return;\n }\n\n t.post += ' ';\n });\n });\n },\n punctuation: function punctuation(termList) {\n termList.forEach(function (t) {\n // space between hyphenated words\n if (t.hasHyphen() === true) {\n t.post = ' ';\n }\n\n t.pre = t.pre.replace(isPunct, '');\n t.post = t.post.replace(isPunct, ''); // elipses\n\n t.post = t.post.replace(/\\.\\.\\./, ''); // only allow one exclamation\n\n if (/!/.test(t.post) === true) {\n t.post = t.post.replace(/!/g, '');\n t.post = '!' + t.post;\n } // only allow one question mark\n\n\n if (/\\?/.test(t.post) === true) {\n t.post = t.post.replace(/[\\?!]*/, '');\n t.post = '?' + t.post;\n }\n });\n },\n unicode: function unicode(termList) {\n termList.forEach(function (t) {\n if (t.isImplicit() === true) {\n return;\n }\n\n t.text = unicode_1(t.text);\n });\n },\n quotations: function quotations(termList) {\n termList.forEach(function (t) {\n t.post = t.post.replace(quotes, '');\n t.pre = t.pre.replace(quotes, '');\n });\n },\n adverbs: function adverbs(doc) {\n doc.match('#Adverb').not('(not|nary|seldom|never|barely|almost|basically|so)').remove();\n },\n // remove the '.' from 'Mrs.' (safely)\n abbreviations: function abbreviations(doc) {\n doc.list.forEach(function (ts) {\n var terms = ts.terms();\n terms.forEach(function (t, i) {\n if (t.tags.Abbreviation === true && terms[i + 1]) {\n t.post = t.post.replace(/^\\./, '');\n }\n });\n });\n }\n};\nvar _methods = methods$5;\n\nvar defaults = {\n // light\n whitespace: true,\n unicode: true,\n punctuation: true,\n emoji: true,\n acronyms: true,\n abbreviations: true,\n // medium\n \"case\": false,\n contractions: false,\n parentheses: false,\n quotations: false,\n adverbs: false,\n // heavy (loose legibility)\n possessives: false,\n verbs: false,\n nouns: false,\n honorifics: false // pronouns: true,\n\n};\nvar mapping = {\n light: {},\n medium: {\n \"case\": true,\n contractions: true,\n parentheses: true,\n quotations: true,\n adverbs: true\n }\n};\nmapping.heavy = Object.assign({}, mapping.medium, {\n possessives: true,\n verbs: true,\n nouns: true,\n honorifics: true\n});\n/** common ways to clean-up the document, and reduce noise */\n\nvar normalize = function normalize(options) {\n options = options || {}; // support named forms\n\n if (typeof options === 'string') {\n options = mapping[options] || {};\n } // set defaults\n\n\n options = Object.assign({}, defaults, options); // clear the cache\n\n this.uncache();\n var termList = this.termList(); // lowercase things\n\n if (options[\"case\"]) {\n this.toLowerCase();\n } //whitespace\n\n\n if (options.whitespace) {\n _methods.whitespace(this);\n } // unicode: é -> e\n\n\n if (options.unicode) {\n _methods.unicode(termList);\n } //punctuation - keep sentence punctation, quotes, parenths\n\n\n if (options.punctuation) {\n _methods.punctuation(termList);\n } // remove ':)'\n\n\n if (options.emoji) {\n this.remove('(#Emoji|#Emoticon)');\n } // 'f.b.i.' -> 'FBI'\n\n\n if (options.acronyms) {\n this.acronyms().strip(); // .toUpperCase()\n } // remove period from abbreviations\n\n\n if (options.abbreviations) {\n _methods.abbreviations(this);\n } // --Medium methods--\n // `isn't` -> 'is not'\n\n\n if (options.contraction || options.contractions) {\n this.contractions().expand();\n } // '(word)' -> 'word'\n\n\n if (options.parentheses) {\n this.parentheses().unwrap();\n } // remove \"\" punctuation\n\n\n if (options.quotations || options.quotes) {\n _methods.quotations(termList);\n } // remove any un-necessary adverbs\n\n\n if (options.adverbs) {\n _methods.adverbs(this);\n } // --Heavy methods--\n // `cory hart's -> cory hart'\n\n\n if (options.possessive || options.possessives) {\n this.possessives().strip();\n } // 'he walked' -> 'he walk'\n\n\n if (options.verbs) {\n this.verbs().toInfinitive();\n } // 'three dogs' -> 'three dog'\n\n\n if (options.nouns || options.plurals) {\n this.nouns().toSingular();\n } // remove 'Mr.' from 'Mr John Smith'\n\n\n if (options.honorifics) {\n this.remove('#Honorific');\n }\n\n return this;\n};\n\nvar _02Normalize = {\n normalize: normalize\n};\n\nvar _03Split = createCommonjsModule(function (module, exports) {\n /** return a Document with three parts for every match\n * seperate everything before the word, as a new phrase\n */\n exports.splitOn = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n var parent = this.parent();\n return parent.splitOn(this);\n } //start looking for a match..\n\n\n var regs = matchSyntax(reg);\n var matches = [];\n this.list.forEach(function (p) {\n var foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n var carry = p;\n foundEm.forEach(function (found) {\n var parts = carry.splitOn(found); // add em in\n\n if (parts.before) {\n matches.push(parts.before);\n }\n\n if (parts.match) {\n matches.push(parts.match);\n } // start matching now on the end\n\n\n carry = parts.after;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n /** return a Document with two parts for every match\n * seperate everything after the word, as a new phrase\n */\n\n\n exports.splitAfter = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n var parent = this.parent();\n return parent.splitAfter(this);\n } // start looking for our matches\n\n\n var regs = matchSyntax(reg);\n var matches = [];\n this.list.forEach(function (p) {\n var foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n var carry = p;\n foundEm.forEach(function (found) {\n var parts = carry.splitOn(found); // add em in\n\n if (parts.before && parts.match) {\n // merge these two together\n parts.before.length += parts.match.length;\n matches.push(parts.before);\n } else if (parts.match) {\n matches.push(parts.match);\n } // start matching now on the end\n\n\n carry = parts.after;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n\n exports.split = exports.splitAfter; //i guess?\n\n /** return a Document with two parts for every match */\n\n exports.splitBefore = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n var parent = this.parent();\n return parent.splitBefore(this);\n } //start looking for a match..\n\n\n var regs = matchSyntax(reg);\n var matches = [];\n this.list.forEach(function (p) {\n var foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n var carry = p;\n foundEm.forEach(function (found) {\n var parts = carry.splitOn(found); // add before part in\n\n if (parts.before) {\n matches.push(parts.before);\n } // merge match+after\n\n\n if (parts.match && parts.after) {\n parts.match.length += parts.after.length;\n } // start matching now on the end\n\n\n carry = parts.match;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n /** split a document into labeled sections */\n\n\n exports.segment = function (regs, options) {\n regs = regs || {};\n options = options || {\n text: true\n };\n var doc = this;\n var keys = Object.keys(regs); // split em\n\n keys.forEach(function (k) {\n doc = doc.splitOn(k);\n }); //add labels for each section\n\n doc.list.forEach(function (p) {\n for (var i = 0; i < keys.length; i += 1) {\n if (p.has(keys[i])) {\n p.segment = regs[keys[i]];\n return;\n }\n }\n });\n return doc.list.map(function (p) {\n var res = p.json(options);\n res.segment = p.segment || null;\n return res;\n });\n };\n});\n\nvar eachTerm = function eachTerm(doc, fn) {\n var world = doc.world;\n doc.list.forEach(function (p) {\n p.terms().forEach(function (t) {\n return t[fn](world);\n });\n });\n return doc;\n};\n/** turn every letter of every term to lower-cse */\n\n\nvar toLowerCase = function toLowerCase() {\n return eachTerm(this, 'toLowerCase');\n};\n/** turn every letter of every term to upper case */\n\n\nvar toUpperCase = function toUpperCase() {\n return eachTerm(this, 'toUpperCase');\n};\n/** upper-case the first letter of each term */\n\n\nvar toTitleCase = function toTitleCase() {\n return eachTerm(this, 'toTitleCase');\n};\n/** remove whitespace and title-case each term */\n\n\nvar toCamelCase = function toCamelCase() {\n this.list.forEach(function (p) {\n //remove whitespace\n var terms = p.terms();\n terms.forEach(function (t, i) {\n if (i !== 0) {\n t.toTitleCase();\n }\n\n if (i !== terms.length - 1) {\n t.post = '';\n }\n });\n }); // this.tag('#CamelCase', 'toCamelCase')\n\n return this;\n};\n\nvar _04Case = {\n toLowerCase: toLowerCase,\n toUpperCase: toUpperCase,\n toTitleCase: toTitleCase,\n toCamelCase: toCamelCase\n};\n\n/** add this punctuation or whitespace before each match: */\n\nvar _05Whitespace = createCommonjsModule(function (module, exports) {\n exports.pre = function (str, concat) {\n if (str === undefined) {\n return this.list[0].terms(0).pre;\n }\n\n this.list.forEach(function (p) {\n var term = p.terms(0);\n\n if (concat === true) {\n term.pre += str;\n } else {\n term.pre = str;\n }\n });\n return this;\n };\n /** add this punctuation or whitespace after each match: */\n\n\n exports.post = function (str, concat) {\n // return array of post strings\n if (str === undefined) {\n return this.list.map(function (p) {\n var terms = p.terms();\n var term = terms[terms.length - 1];\n return term.post;\n });\n } // set post string on all ends\n\n\n this.list.forEach(function (p) {\n var terms = p.terms();\n var term = terms[terms.length - 1];\n\n if (concat === true) {\n term.post += str;\n } else {\n term.post = str;\n }\n });\n return this;\n };\n /** remove start and end whitespace */\n\n\n exports.trim = function () {\n this.list = this.list.map(function (p) {\n return p.trim();\n });\n return this;\n };\n /** connect words with hyphen, and remove whitespace */\n\n\n exports.hyphenate = function () {\n this.list.forEach(function (p) {\n var terms = p.terms(); //remove whitespace\n\n terms.forEach(function (t, i) {\n if (i !== 0) {\n t.pre = '';\n }\n\n if (terms[i + 1]) {\n t.post = '-';\n }\n });\n });\n return this;\n };\n /** remove hyphens between words, and set whitespace */\n\n\n exports.dehyphenate = function () {\n var hasHyphen = /(-|–|—)/;\n this.list.forEach(function (p) {\n var terms = p.terms(); //remove whitespace\n\n terms.forEach(function (t) {\n if (hasHyphen.test(t.post)) {\n t.post = ' ';\n }\n });\n });\n return this;\n };\n\n exports.deHyphenate = exports.dehyphenate;\n /** add quotations around these matches */\n\n exports.toQuotations = function (start, end) {\n start = start || \"\\\"\";\n end = end || \"\\\"\";\n this.list.forEach(function (p) {\n var terms = p.terms();\n terms[0].pre = start + terms[0].pre;\n var last = terms[terms.length - 1];\n last.post = end + last.post;\n });\n return this;\n };\n\n exports.toQuotation = exports.toQuotations;\n /** add brackets around these matches */\n\n exports.toParentheses = function (start, end) {\n start = start || \"(\";\n end = end || \")\";\n this.list.forEach(function (p) {\n var terms = p.terms();\n terms[0].pre = start + terms[0].pre;\n var last = terms[terms.length - 1];\n last.post = end + last.post;\n });\n return this;\n };\n});\n\n/** make all phrases into one phrase */\nvar join = function join(str) {\n // clear the cache\n this.uncache(); // make one large phrase - 'main'\n\n var main = this.list[0];\n var before = main.length;\n var removed = {};\n\n for (var i = 1; i < this.list.length; i++) {\n var p = this.list[i];\n removed[p.start] = true;\n var term = main.lastTerm(); // add whitespace between them\n\n if (str) {\n term.post += str;\n } // main -> p\n\n\n term.next = p.start; // main <- p\n\n p.terms(0).prev = term.id;\n main.length += p.length;\n main.cache = {};\n } // parents are bigger than than their children.\n // when we increase a child, we increase their parent too.\n\n\n var increase = main.length - before;\n this.parents().forEach(function (doc) {\n // increase length on each effected phrase\n doc.list.forEach(function (p) {\n var terms = p.terms();\n\n for (var _i = 0; _i < terms.length; _i++) {\n if (terms[_i].id === main.start) {\n p.length += increase;\n break;\n }\n }\n\n p.cache = {};\n }); // remove redundant phrases now\n\n doc.list = doc.list.filter(function (p) {\n return removed[p.start] !== true;\n });\n }); // return one major phrase\n\n return this.buildFrom([main]);\n};\n\nvar _06Join = {\n join: join\n};\n\nvar postPunct = /[,\\)\"';:\\-–—\\.…]/; // const irregulars = {\n// 'will not': `won't`,\n// 'i am': `i'm`,\n// }\n\nvar setContraction = function setContraction(m, suffix) {\n if (!m.found) {\n return;\n }\n\n var terms = m.termList(); //avoid any problematic punctuation\n\n for (var i = 0; i < terms.length - 1; i++) {\n var t = terms[i];\n\n if (postPunct.test(t.post)) {\n return;\n }\n } // set them as implict\n\n\n terms.forEach(function (t) {\n t.implicit = t.clean;\n }); // perform the contraction\n\n terms[0].text += suffix; // clean-up the others\n\n terms.slice(1).forEach(function (t) {\n t.text = '';\n });\n\n for (var _i = 0; _i < terms.length - 1; _i++) {\n var _t = terms[_i];\n _t.post = _t.post.replace(/ /, '');\n }\n};\n/** turn 'i am' into i'm */\n\n\nvar contract = function contract() {\n var doc = this.not('@hasContraction'); // we are -> we're\n\n var m = doc.match('(we|they|you) are');\n setContraction(m, \"'re\"); // they will -> they'll\n\n m = doc.match('(he|she|they|it|we|you) will');\n setContraction(m, \"'ll\"); // she is -> she's\n\n m = doc.match('(he|she|they|it|we) is');\n setContraction(m, \"'s\"); // spencer is -> spencer's\n\n m = doc.match('#Person is');\n setContraction(m, \"'s\"); // spencer would -> spencer'd\n\n m = doc.match('#Person would');\n setContraction(m, \"'d\"); // would not -> wouldn't\n\n m = doc.match('(is|was|had|would|should|could|do|does|have|has|can) not');\n setContraction(m, \"n't\"); // i have -> i've\n\n m = doc.match('(i|we|they) have');\n setContraction(m, \"'ve\"); // would have -> would've\n\n m = doc.match('(would|should|could) have');\n setContraction(m, \"'ve\"); // i am -> i'm\n\n m = doc.match('i am');\n setContraction(m, \"'m\"); // going to -> gonna\n\n m = doc.match('going to');\n return this;\n};\n\nvar _07Contract = {\n contract: contract\n};\n\nvar methods$4 = Object.assign({}, _01Utils, _02Accessors, _03Match, _04Tag, _05Loops, _06Lookup, _07Cache, _01Replace, _02Insert, _01Text, _02Json, _03Out, _01Sort, _02Normalize, _03Split, _04Case, _05Whitespace, _06Join, _07Contract);\n\nvar methods$3 = {}; // allow helper methods like .adjectives() and .adverbs()\n\nvar arr = [['terms', '.'], ['hyphenated', '@hasHyphen .'], ['adjectives', '#Adjective'], ['hashTags', '#HashTag'], ['emails', '#Email'], ['emoji', '#Emoji'], ['emoticons', '#Emoticon'], ['atMentions', '#AtMention'], ['urls', '#Url'], ['adverbs', '#Adverb'], ['pronouns', '#Pronoun'], ['conjunctions', '#Conjunction'], ['prepositions', '#Preposition']];\narr.forEach(function (a) {\n methods$3[a[0]] = function (n) {\n var m = this.match(a[1]);\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n };\n}); // aliases\n\nmethods$3.emojis = methods$3.emoji;\nmethods$3.atmentions = methods$3.atMentions;\nmethods$3.words = methods$3.terms;\n/** return anything tagged as a phone number */\n\nmethods$3.phoneNumbers = function (n) {\n var m = this.splitAfter('@hasComma');\n m = m.match('#PhoneNumber+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n};\n/** Deprecated: please use compromise-numbers plugin */\n\n\nmethods$3.money = function (n) {\n var m = this.match('#Money #Currency?');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n};\n/** return all cities, countries, addresses, and regions */\n\n\nmethods$3.places = function (n) {\n // don't split 'paris, france'\n var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas\n\n var m = this.not(keep).splitAfter('@hasComma'); // combine them back together\n\n m = m.concat(keep);\n m.sort('index');\n m = m.match('#Place+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n};\n/** return all schools, businesses and institutions */\n\n\nmethods$3.organizations = function (n) {\n var m = this.clauses();\n m = m.match('#Organization+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n}; //combine them with .topics() method\n\n\nmethods$3.entities = function (n) {\n var r = this.clauses(); // Find people, places, and organizations\n\n var yup = r.people();\n yup = yup.concat(r.places());\n yup = yup.concat(r.organizations());\n var ignore = ['someone', 'man', 'woman', 'mother', 'brother', 'sister', 'father'];\n yup = yup.not(ignore); //return them to normal ordering\n\n yup.sort('sequence'); // yup.unique() //? not sure\n\n if (typeof n === 'number') {\n yup = yup.get(n);\n }\n\n return yup;\n}; //aliases\n\n\nmethods$3.things = methods$3.entities;\nmethods$3.topics = methods$3.entities;\nvar _simple = methods$3;\n\nvar underOver = /^(under|over)-?/;\n/** match a word-sequence, like 'super bowl' in the lexicon */\n\nvar tryMultiple = function tryMultiple(terms, t, world) {\n var lex = world.words; //try a two-word version\n\n var txt = terms[t].reduced + ' ' + terms[t + 1].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-two', world);\n terms[t + 1].tag(lex[txt], 'lexicon-two', world);\n return 1;\n } //try a three-word version?\n\n\n if (t + 2 < terms.length) {\n txt += ' ' + terms[t + 2].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-three', world);\n terms[t + 1].tag(lex[txt], 'lexicon-three', world);\n terms[t + 2].tag(lex[txt], 'lexicon-three', world);\n return 2;\n }\n } //try a four-word version?\n\n\n if (t + 3 < terms.length) {\n txt += ' ' + terms[t + 3].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-four', world);\n terms[t + 1].tag(lex[txt], 'lexicon-four', world);\n terms[t + 2].tag(lex[txt], 'lexicon-four', world);\n terms[t + 3].tag(lex[txt], 'lexicon-four', world);\n return 3;\n }\n }\n\n return 0;\n};\n/** look at each word in our list of known-words */\n\n\nvar checkLexicon = function checkLexicon(terms, world) {\n var lex = world.words;\n var hasCompound = world.hasCompound; // use reduced?\n //go through each term, and check the lexicon\n\n for (var t = 0; t < terms.length; t += 1) {\n var str = terms[t].clean; //is it the start of a compound word, like 'super bowl'?\n\n if (hasCompound[str] === true && t + 1 < terms.length) {\n var foundWords = tryMultiple(terms, t, world);\n\n if (foundWords > 0) {\n t += foundWords; //skip any already-found words\n\n continue;\n }\n } //try one-word lexicon\n\n\n if (lex[str] !== undefined && lex.hasOwnProperty(str) === true) {\n terms[t].tag(lex[str], 'lexicon', world);\n continue;\n } // look at reduced version of term, too\n\n\n if (str !== terms[t].reduced && lex.hasOwnProperty(terms[t].reduced) === true) {\n terms[t].tag(lex[terms[t].reduced], 'lexicon', world);\n continue;\n } // prefix strip: try to match 'take' for 'undertake'\n\n\n if (underOver.test(str) === true) {\n var noPrefix = str.replace(underOver, '');\n\n if (lex.hasOwnProperty(noPrefix) === true) {\n terms[t].tag(lex[noPrefix], 'noprefix-lexicon', world);\n }\n }\n }\n\n return terms;\n};\n\nvar _01Lexicon = checkLexicon;\n\nvar apostrophes = /[\\'‘’‛‵′`´]$/;\nvar perSec = /^(m|k|cm|km|m)\\/(s|h|hr)$/; // '5 k/m'\n//\n\nvar checkPunctuation = function checkPunctuation(terms, i, world) {\n var term = terms[i]; //check hyphenation\n // if (term.post.indexOf('-') !== -1 && terms[i + 1] && terms[i + 1].pre === '') {\n // term.tag('Hyphenated', 'has-hyphen', world)\n // }\n // support 'head-over'\n // if (term.hasHyphen() === true) {\n // console.log(term.tags)\n // }\n // console.log(term.hasHyphen(), term.text)\n //an end-tick (trailing apostrophe) - flanders', or Carlos'\n\n if (apostrophes.test(term.text)) {\n if (!apostrophes.test(term.pre) && !apostrophes.test(term.post) && term.clean.length > 2) {\n var endChar = term.clean[term.clean.length - 2]; //flanders'\n\n if (endChar === 's') {\n term.tag(['Possessive', 'Noun'], 'end-tick', world);\n return;\n } //chillin'\n\n\n if (endChar === 'n') {\n term.tag(['Gerund'], 'chillin', world);\n }\n }\n } // '5 km/s'\n\n\n if (perSec.test(term.text)) {\n term.tag('Unit', 'per-sec', world);\n } // 'NASA' is, but not 'i REALLY love it.'\n // if (term.tags.Noun === true && isAcronym(term, world)) {\n // term.tag('Acronym', 'acronym-step', world)\n // term.tag('Noun', 'acronym-infer', world)\n // } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) {\n // term.tag('Acronym', 'one-letter-acronym', world)\n // term.tag('Noun', 'one-letter-infer', world)\n // }\n\n};\n\nvar _02Punctuation = checkPunctuation;\n\n//these are regexes applied to t.text, instead of t.clean\n// order matters.\nvar startsWith = [//web tags\n[/^[\\w\\.]+@[\\w\\.]+\\.[a-z]{2,3}$/, 'Email'], //not fancy\n[/^#[a-z0-9_\\u00C0-\\u00FF]{2,}$/, 'HashTag'], [/^@1?[0-9](am|pm)$/i, 'Time'], // @6pm\n[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i, 'Time'], // @6:30\n[/^@\\w{2,}$/, 'AtMention'], //@spencermountain\n[/^(https?:\\/\\/|www\\.)\\w+\\.[a-z]{2,3}/, 'Url'], //with http/www\n[/^[\\w./]+\\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/, 'Url'], //http://mostpopularwebsites.net/top-level-domain\n//dates/times\n[/^'[0-9]{2}$/, 'Year'], //like '97\n[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/, 'Time'], //4:32:32\n[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i, 'Time'], //4pm\n[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i, 'Time'], //4:00pm\n[/^[PMCE]ST$/, 'Time'], //PST, time zone abbrevs\n[/^utc ?[+-]?[0-9]+?$/, 'Time'], //UTC 8+\n[/^[a-z0-9]*? o\\'?clock$/, 'Time'], //3 oclock\n[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i, 'Date'], // 2020-03-02T00:00:00.000Z\n[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/, 'Date'], // 03-02-89\n[/^[0-9]{1,4}\\/[0-9]{1,2}\\/[0-9]{1,4}$/, 'Date'], // 03/02/89\n[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i, 'Date'], // 03-March-89\n[/^gmt[+-][0-9][0-9]?$/i, 'Timezone'], // gmt-3\n[/^utc[+-][0-9][0-9]?$/i, 'Timezone'], // utc-3\n//names\n[/^ma?c\\'.*/, 'LastName'], //mc'adams\n[/^o\\'[drlkn].*/, 'LastName'], //o'douggan\n[/^ma?cd[aeiou]/, 'LastName'], //macdonell - Last patterns https://en.wikipedia.org/wiki/List_of_family_name_affixes\n//slang things\n[/^(lol)+[sz]$/, 'Expression'], //lol\n[/^woo+a*?h?$/, 'Expression'], //whoaa, wooo\n[/^(un|de|re)\\\\-[a-z\\u00C0-\\u00FF]{2}/, 'Verb'], // [/^(over|under)[a-z]{2,}/, 'Adjective'],\n[/^[0-9]{1,4}\\.[0-9]{1,2}\\.[0-9]{1,4}$/, 'Date'], // 03-02-89\n//phone numbers\n[/^[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //589-3809\n[/^(\\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //632-589-3809\n//money\n// currency regex\n// /[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6]\n//like $5.30\n[/^[-+]?[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(k|m|b|bn)?\\+?$/, ['Money', 'Value']], //like 5.30$\n[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6]\\+?$/, ['Money', 'Value']], //like $400usd\n[/^[-+]?[\\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value']], //numbers\n// 50 | -50 | 3.23 | 5,999.0 | 10+\n[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\+?$/, ['Cardinal', 'NumericValue']], [/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(st|nd|rd|r?th)$/, ['Ordinal', 'NumericValue']], // .73th\n[/^\\.[0-9]+\\+?$/, ['Cardinal', 'NumericValue']], //percent\n[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?%\\+?$/, ['Percent', 'Cardinal', 'NumericValue']], //7% ..\n[/^\\.[0-9]+%$/, ['Percent', 'Cardinal', 'NumericValue']], //.7% ..\n//fraction\n[/^[0-9]{1,4}\\/[0-9]{1,4}(st|nd|rd|th)?s?$/, ['Fraction', 'NumericValue']], //3/2ths\n//range\n[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/, ['Value', 'NumberRange']], //7th-8th\n//time-range\n[/^[0-9][0-9]?(:[0-9][0-9])?(am|pm)?[-–—][0-9][0-9]?(:[0-9][0-9])?(am|pm)?$/, ['Time', 'NumberRange']], //7pm-8:30\n//with unit\n[/^[0-9.]+([a-z]{1,4})$/, 'Value'] //like 5tbsp\n//ordinal\n// [/^[0-9][0-9,.]*(st|nd|rd|r?th)$/, ['NumericValue', 'Ordinal']], //like 5th\n// [/^[0-9]+(st|nd|rd|th)$/, 'Ordinal'], //like 5th\n];\n\nvar romanNumeral = /^[IVXLCDM]{2,}$/;\nvar romanNumValid = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/; // https://stackoverflow.com/a/267405/168877\n//try each of the ^regexes in our list\n\nvar checkRegex$1 = function checkRegex(term, world) {\n var str = term.text; // do them all!\n\n for (var r = 0; r < startsWith.length; r += 1) {\n if (startsWith[r][0].test(str) === true) {\n term.tagSafe(startsWith[r][1], 'prefix #' + r, world);\n break;\n }\n } // do some more!\n //roman numberals - XVII\n\n\n if (term.text.length >= 2 && romanNumeral.test(str) && romanNumValid.test(str)) {\n term.tag('RomanNumeral', 'xvii', world);\n }\n};\n\nvar _03Prefixes = checkRegex$1;\n\n//regex suffix patterns and their most common parts of speech,\n//built using wordnet, by spencer kelly.\n//this mapping shrinks-down the uglified build\nvar Adj$1 = 'Adjective';\nvar Inf$1 = 'Infinitive';\nvar Pres$1 = 'PresentTense';\nvar Sing$1 = 'Singular';\nvar Past$1 = 'PastTense';\nvar Adverb = 'Adverb';\nvar Exp = 'Expression';\nvar Actor$1 = 'Actor';\nvar Verb = 'Verb';\nvar Noun$1 = 'Noun';\nvar Last$1 = 'LastName'; //the order here matters.\n//regexes indexed by mandated last-character\n\nvar endsWith = {\n a: [[/.[aeiou]na$/, Noun$1], [/.[oau][wvl]ska$/, Last$1], //polish (female)\n [/.[^aeiou]ica$/, Sing$1], [/^([hyj]a)+$/, Exp] //hahah\n ],\n c: [[/.[^aeiou]ic$/, Adj$1]],\n d: [//==-ed==\n //double-consonant\n [/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/, Past$1], //popped, planned\n //double-vowel\n [/.[aeo]{2}[bdgmnprvz]ed$/, Past$1], //beeped, mooned, veered\n //-hed\n [/.[aeiou][sg]hed$/, Past$1], //stashed, sighed\n //-rd\n [/.[aeiou]red$/, Past$1], //stored\n [/.[aeiou]r?ried$/, Past$1], //buried\n //-led\n [/.[bcdgtr]led$/, Past$1], //startled, rumbled\n [/.[aoui]f?led$/, Past$1], //impaled, stifled\n //-sed\n [/.[iao]sed$/, Past$1], //franchised\n [/[aeiou]n?[cs]ed$/, Past$1], //laced, lanced\n //-med\n [/[aeiou][rl]?[mnf]ed$/, Past$1], //warmed, attained, engulfed\n //-ked\n [/[aeiou][ns]?c?ked$/, Past$1], //hooked, masked\n //-ged\n [/[aeiou][nl]?ged$/, Past$1], //engaged\n //-ted\n [/.[tdbwxz]ed$/, Past$1], //bribed, boxed\n [/[^aeiou][aeiou][tvx]ed$/, Past$1], //boxed\n //-ied\n [/.[cdlmnprstv]ied$/, Past$1], //rallied\n [/[^aeiou]ard$/, Sing$1], //card\n [/[aeiou][^aeiou]id$/, Adj$1], [/.[vrl]id$/, Adj$1]],\n e: [[/.[lnr]ize$/, Inf$1], [/.[^aeiou]ise$/, Inf$1], [/.[aeiou]te$/, Inf$1], [/.[^aeiou][ai]ble$/, Adj$1], [/.[^aeiou]eable$/, Adj$1], [/.[ts]ive$/, Adj$1]],\n h: [[/.[^aeiouf]ish$/, Adj$1], [/.v[iy]ch$/, Last$1], //east-europe\n [/^ug?h+$/, Exp], //uhh\n [/^uh[ -]?oh$/, Exp] //uhoh\n ],\n i: [[/.[oau][wvl]ski$/, Last$1] //polish (male)\n ],\n k: [[/^(k){2}$/, Exp] //kkkk\n ],\n l: [[/.[gl]ial$/, Adj$1], [/.[^aeiou]ful$/, Adj$1], [/.[nrtumcd]al$/, Adj$1], [/.[^aeiou][ei]al$/, Adj$1]],\n m: [[/.[^aeiou]ium$/, Sing$1], [/[^aeiou]ism$/, Sing$1], [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm\n [/^\\d+ ?[ap]m$/, 'Date']],\n n: [[/.[lsrnpb]ian$/, Adj$1], [/[^aeiou]ician$/, Actor$1], [/[aeiou][ktrp]in$/, 'Gerund'] // 'cookin', 'hootin'\n ],\n o: [[/^no+$/, Exp], //noooo\n [/^(yo)+$/, Exp], //yoyo\n [/^woo+[pt]?$/, Exp] //woo\n ],\n r: [[/.[bdfklmst]ler$/, 'Noun'], [/[aeiou][pns]er$/, Sing$1], [/[^i]fer$/, Inf$1], [/.[^aeiou][ao]pher$/, Actor$1], [/.[lk]er$/, 'Noun'], [/.ier$/, 'Comparative']],\n t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj$1], [/[aeiou].*ist$/, Adj$1], [/^[a-z]et$/, Verb]],\n s: [[/.[^aeiou]ises$/, Pres$1], [/.[rln]ates$/, Pres$1], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing$1], [/.[aeiou]sks$/, Pres$1], //masks\n [/.[aeiou]kes$/, Pres$1], //bakes\n [/[aeiou][^aeiou]is$/, Sing$1], [/[a-z]\\'s$/, Noun$1], [/^yes+$/, Exp] //yessss\n ],\n v: [[/.[^aeiou][ai][kln]ov$/, Last$1] //east-europe\n ],\n y: [[/.[cts]hy$/, Adj$1], [/.[st]ty$/, Adj$1], [/.[gk]y$/, Adj$1], [/.[tnl]ary$/, Adj$1], [/.[oe]ry$/, Sing$1], [/[rdntkbhs]ly$/, Adverb], [/...lly$/, Adverb], [/[bszmp]{2}y$/, Adj$1], [/.(gg|bb|zz)ly$/, Adj$1], [/.[ai]my$/, Adj$1], [/[ea]{2}zy$/, Adj$1], [/.[^aeiou]ity$/, Sing$1]]\n};\n\n//just a foolish lookup of known suffixes\nvar Adj = 'Adjective';\nvar Inf = 'Infinitive';\nvar Pres = 'PresentTense';\nvar Sing = 'Singular';\nvar Past = 'PastTense';\nvar Avb = 'Adverb';\nvar Plrl = 'Plural';\nvar Actor = 'Actor';\nvar Vb = 'Verb';\nvar Noun = 'Noun';\nvar Last = 'LastName';\nvar Modal = 'Modal';\nvar Place = 'Place'; // find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup\n\nvar suffixMap = [null, //0\nnull, //1\n{\n //2-letter\n ea: Sing,\n ia: Noun,\n ic: Adj,\n ly: Avb,\n \"'n\": Vb,\n \"'t\": Vb\n}, {\n //3-letter\n oed: Past,\n ued: Past,\n xed: Past,\n ' so': Avb,\n \"'ll\": Modal,\n \"'re\": 'Copula',\n azy: Adj,\n eer: Noun,\n end: Vb,\n ped: Past,\n ffy: Adj,\n ify: Inf,\n ing: 'Gerund',\n //likely to be converted to Adj after lexicon pass\n ize: Inf,\n lar: Adj,\n mum: Adj,\n nes: Pres,\n nny: Adj,\n oid: Adj,\n ous: Adj,\n que: Adj,\n rol: Sing,\n sis: Sing,\n zes: Pres\n}, {\n //4-letter\n amed: Past,\n aped: Past,\n ched: Past,\n lked: Past,\n nded: Past,\n cted: Past,\n dged: Past,\n akis: Last,\n //greek\n cede: Inf,\n chuk: Last,\n //east-europe\n czyk: Last,\n //polish (male)\n ects: Pres,\n ends: Vb,\n enko: Last,\n //east-europe\n ette: Sing,\n fies: Pres,\n fore: Avb,\n gate: Inf,\n gone: Adj,\n ices: Plrl,\n ints: Plrl,\n ines: Plrl,\n ions: Plrl,\n less: Avb,\n llen: Adj,\n made: Adj,\n nsen: Last,\n //norway\n oses: Pres,\n ould: Modal,\n some: Adj,\n sson: Last,\n //swedish male\n tage: Inf,\n teen: 'Value',\n tion: Sing,\n tive: Adj,\n tors: Noun,\n vice: Sing\n}, {\n //5-letter\n tized: Past,\n urned: Past,\n eased: Past,\n ances: Plrl,\n bound: Adj,\n ettes: Plrl,\n fully: Avb,\n ishes: Pres,\n ities: Plrl,\n marek: Last,\n //polish (male)\n nssen: Last,\n //norway\n ology: Noun,\n ports: Plrl,\n rough: Adj,\n tches: Pres,\n tieth: 'Ordinal',\n tures: Plrl,\n wards: Avb,\n where: Avb\n}, {\n //6-letter\n auskas: Last,\n //lithuania\n keeper: Actor,\n logist: Actor,\n teenth: 'Value'\n}, {\n //7-letter\n opoulos: Last,\n //greek\n borough: Place,\n //Hillsborough\n sdottir: Last //swedish female\n\n}];\n\nvar endRegexs = function endRegexs(term, world) {\n var str = term.clean;\n var _char = str[str.length - 1];\n\n if (endsWith.hasOwnProperty(_char) === true) {\n var regs = endsWith[_char];\n\n for (var r = 0; r < regs.length; r += 1) {\n if (regs[r][0].test(str) === true) {\n term.tagSafe(regs[r][1], \"endReg \".concat(_char, \" #\").concat(r), world);\n break;\n }\n }\n }\n}; //sweep-through all suffixes\n\n\nvar knownSuffixes = function knownSuffixes(term, world) {\n var len = term.clean.length;\n var max = 7;\n\n if (len <= max) {\n max = len - 1;\n }\n\n for (var i = max; i > 1; i -= 1) {\n var str = term.clean.substr(len - i, len);\n\n if (suffixMap[str.length].hasOwnProperty(str) === true) {\n var tag = suffixMap[str.length][str];\n term.tagSafe(tag, 'suffix -' + str, world);\n break;\n }\n }\n}; //all-the-way-down!\n\n\nvar checkRegex = function checkRegex(term, world) {\n knownSuffixes(term, world);\n endRegexs(term, world);\n};\n\nvar _04Suffixes = checkRegex;\n\n//just some of the most common emoticons\n//faster than\n//http://stackoverflow.com/questions/28077049/regex-matching-emoticons\nvar emoticons = {\n ':(': true,\n ':)': true,\n ':P': true,\n ':p': true,\n ':O': true,\n ':3': true,\n ':|': true,\n ':/': true,\n ':\\\\': true,\n ':$': true,\n ':*': true,\n ':@': true,\n ':-(': true,\n ':-)': true,\n ':-P': true,\n ':-p': true,\n ':-O': true,\n ':-3': true,\n ':-|': true,\n ':-/': true,\n ':-\\\\': true,\n ':-$': true,\n ':-*': true,\n ':-@': true,\n ':^(': true,\n ':^)': true,\n ':^P': true,\n ':^p': true,\n ':^O': true,\n ':^3': true,\n ':^|': true,\n ':^/': true,\n ':^\\\\': true,\n ':^$': true,\n ':^*': true,\n ':^@': true,\n '):': true,\n '(:': true,\n '$:': true,\n '*:': true,\n ')-:': true,\n '(-:': true,\n '$-:': true,\n '*-:': true,\n ')^:': true,\n '(^:': true,\n '$^:': true,\n '*^:': true,\n '<3': true,\n ' 35) {\n return false;\n }\n\n return true;\n }\n\n return false;\n}; //check against emoticon whitelist\n\n\nvar isEmoticon = function isEmoticon(str) {\n str = str.replace(/^[:;]/, ':'); //normalize the 'eyes'\n\n return emoticons.hasOwnProperty(str);\n};\n\nvar tagEmoji = function tagEmoji(term, world) {\n var raw = term.pre + term.text + term.post;\n raw = raw.trim(); //dont double-up on ending periods\n\n raw = raw.replace(/[.!?,]$/, ''); //test for :keyword: emojis\n\n if (isCommaEmoji(raw) === true) {\n term.tag('Emoji', 'comma-emoji', world);\n term.text = raw;\n term.pre = term.pre.replace(':', '');\n term.post = term.post.replace(':', '');\n } //test for unicode emojis\n\n\n if (term.text.match(emojiReg)) {\n term.tag('Emoji', 'unicode-emoji', world);\n term.text = raw;\n } //test for emoticon ':)' emojis\n\n\n if (isEmoticon(raw) === true) {\n term.tag('Emoticon', 'emoticon-emoji', world);\n term.text = raw;\n }\n};\n\nvar _05Emoji = tagEmoji;\n\nvar steps = {\n lexicon: _01Lexicon,\n punctuation: _02Punctuation,\n regex: _03Prefixes,\n suffix: _04Suffixes,\n emoji: _05Emoji\n}; //'lookups' look at a term by itself\n\nvar lookups = function lookups(doc, terms) {\n var world = doc.world; //our list of known-words\n\n steps.lexicon(terms, world); //try these other methods\n\n for (var i = 0; i < terms.length; i += 1) {\n var term = terms[i]; //or maybe some helpful punctuation\n\n steps.punctuation(terms, i, world); //mostly prefix checks\n\n steps.regex(term, world); //maybe we can guess\n\n steps.suffix(term, world); //emoji and emoticons\n\n steps.emoji(term, world);\n }\n\n return doc;\n};\n\nvar _01Init = lookups;\n\n//markov-like stats about co-occurance, for hints about unknown terms\n//basically, a little-bit better than the noun-fallback\n//just top n-grams from nlp tags, generated from nlp-corpus\n//after this word, here's what happens usually\nvar afterThisWord = {\n i: 'Verb',\n //44% //i walk..\n first: 'Noun',\n //50% //first principles..\n it: 'Verb',\n //33%\n there: 'Verb',\n //35%\n not: 'Verb',\n //33%\n because: 'Noun',\n //31%\n \"if\": 'Noun',\n //32%\n but: 'Noun',\n //26%\n who: 'Verb',\n //40%\n \"this\": 'Noun',\n //37%\n his: 'Noun',\n //48%\n when: 'Noun',\n //33%\n you: 'Verb',\n //35%\n very: 'Adjective',\n // 39%\n old: 'Noun',\n //51%\n never: 'Verb',\n //42%\n before: 'Noun' //28%\n\n}; //in advance of this word, this is what happens usually\n\nvar beforeThisWord = {\n there: 'Verb',\n //23% // be there\n me: 'Verb',\n //31% //see me\n man: 'Adjective',\n // 80% //quiet man\n only: 'Verb',\n //27% //sees only\n him: 'Verb',\n //32% //show him\n were: 'Noun',\n //48% //we were\n took: 'Noun',\n //38% //he took\n himself: 'Verb',\n //31% //see himself\n went: 'Noun',\n //43% //he went\n who: 'Noun',\n //47% //person who\n jr: 'Person'\n}; //following this POS, this is likely\n\nvar afterThisPOS = {\n Adjective: 'Noun',\n //36% //blue dress\n Possessive: 'Noun',\n //41% //his song\n Determiner: 'Noun',\n //47%\n Adverb: 'Verb',\n //20%\n Pronoun: 'Verb',\n //40%\n Value: 'Noun',\n //47%\n Ordinal: 'Noun',\n //53%\n Modal: 'Verb',\n //35%\n Superlative: 'Noun',\n //43%\n Demonym: 'Noun',\n //38%\n Honorific: 'Person' //\n\n}; //in advance of this POS, this is likely\n\nvar beforeThisPOS = {\n Copula: 'Noun',\n //44% //spencer is\n PastTense: 'Noun',\n //33% //spencer walked\n Conjunction: 'Noun',\n //36%\n Modal: 'Noun',\n //38%\n Pluperfect: 'Noun',\n //40%\n PerfectTense: 'Verb' //32%\n\n};\nvar markov = {\n beforeThisWord: beforeThisWord,\n afterThisWord: afterThisWord,\n beforeThisPos: beforeThisPOS,\n afterThisPos: afterThisPOS\n};\n\nvar afterKeys = Object.keys(markov.afterThisPos);\nvar beforeKeys = Object.keys(markov.beforeThisPos);\n\nvar checkNeighbours = function checkNeighbours(terms, world) {\n var _loop = function _loop(i) {\n var term = terms[i]; //do we still need a tag?\n\n if (term.isKnown() === true) {\n return \"continue\";\n } //ok, this term needs a tag.\n //look at previous word for clues..\n\n\n var lastTerm = terms[i - 1];\n\n if (lastTerm) {\n // 'foobar term'\n if (markov.afterThisWord.hasOwnProperty(lastTerm.clean) === true) {\n var tag = markov.afterThisWord[lastTerm.clean];\n term.tag(tag, 'after-' + lastTerm.clean, world);\n return \"continue\";\n } // 'Tag term'\n // (look at previous POS tags for clues..)\n\n\n var foundTag = afterKeys.find(function (tag) {\n return lastTerm.tags[tag];\n });\n\n if (foundTag !== undefined) {\n var _tag = markov.afterThisPos[foundTag];\n term.tag(_tag, 'after-' + foundTag, world);\n return \"continue\";\n }\n } //look at next word for clues..\n\n\n var nextTerm = terms[i + 1];\n\n if (nextTerm) {\n // 'term foobar'\n if (markov.beforeThisWord.hasOwnProperty(nextTerm.clean) === true) {\n var _tag2 = markov.beforeThisWord[nextTerm.clean];\n term.tag(_tag2, 'before-' + nextTerm.clean, world);\n return \"continue\";\n } // 'term Tag'\n // (look at next POS tags for clues..)\n\n\n var _foundTag = beforeKeys.find(function (tag) {\n return nextTerm.tags[tag];\n });\n\n if (_foundTag !== undefined) {\n var _tag3 = markov.beforeThisPos[_foundTag];\n term.tag(_tag3, 'before-' + _foundTag, world);\n return \"continue\";\n }\n }\n };\n\n for (var i = 0; i < terms.length; i += 1) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n};\n\nvar _01Neighbours = checkNeighbours;\n\nvar titleCase = /^[A-Z][a-z'\\u00C0-\\u00FF]/;\nvar hasNumber = /[0-9]/;\n/** look for any grammar signals based on capital/lowercase */\n\nvar checkCase = function checkCase(doc) {\n var world = doc.world;\n doc.list.forEach(function (p) {\n var terms = p.terms();\n\n for (var i = 1; i < terms.length; i++) {\n var term = terms[i];\n\n if (titleCase.test(term.text) === true && hasNumber.test(term.text) === false && term.tags.Date === undefined) {\n term.tag('ProperNoun', 'titlecase-noun', world);\n }\n }\n });\n};\n\nvar _02Case = checkCase;\n\nvar hasPrefix = /^(re|un)-?[a-z\\u00C0-\\u00FF]/;\nvar prefix = /^(re|un)-?/;\n/** check 'rewatch' in lexicon as 'watch' */\n\nvar checkPrefix = function checkPrefix(terms, world) {\n var lex = world.words;\n terms.forEach(function (term) {\n // skip if we have a good tag already\n if (term.isKnown() === true) {\n return;\n } //does it start with 'un|re'\n\n\n if (hasPrefix.test(term.clean) === true) {\n // look for the root word in the lexicon:\n var stem = term.clean.replace(prefix, '');\n\n if (stem && stem.length > 3 && lex[stem] !== undefined && lex.hasOwnProperty(stem) === true) {\n term.tag(lex[stem], 'stem-' + stem, world);\n }\n }\n });\n};\n\nvar _03Stem = checkPrefix;\n\n//similar to plural/singularize rules, but not the same\nvar isPlural$3 = [/(^v)ies$/i, /ises$/i, /ives$/i, /(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /(buffal|tomat|tornad)oes$/i, /(analy|ba|diagno|parenthe|progno|synop|the)ses$/i, /(vert|ind|cort)ices$/i, /(matr|append)ices$/i, /(x|ch|ss|sh|s|z|o)es$/i, /is$/i, /men$/i, /news$/i, /.tia$/i, /(^f)ves$/i, /(lr)ves$/i, /(^aeiouy|qu)ies$/i, /(m|l)ice$/i, /(cris|ax|test)es$/i, /(alias|status)es$/i, /ics$/i]; //similar to plural/singularize rules, but not the same\n\nvar isSingular$1 = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /s[aeiou]+ns$/i, // sans, siens\n/(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i];\nvar isPlural_1$2 = {\n isSingular: isSingular$1,\n isPlural: isPlural$3\n};\n\nvar noPlurals = ['Uncountable', 'Pronoun', 'Place', 'Value', 'Person', 'Month', 'WeekDay', 'Holiday'];\nvar notPlural = [/ss$/, /sis$/, /[^aeiou][uo]s$/, /'s$/];\nvar notSingular = [/i$/, /ae$/];\n/** turn nouns into singular/plural */\n\nvar checkPlural = function checkPlural(t, world) {\n if (t.tags.Noun && !t.tags.Acronym) {\n var str = t.clean; //skip existing tags, fast\n\n if (t.tags.Singular || t.tags.Plural) {\n return;\n } //too short\n\n\n if (str.length <= 3) {\n t.tag('Singular', 'short-singular', world);\n return;\n } //is it impossible to be plural?\n\n\n if (noPlurals.find(function (tag) {\n return t.tags[tag];\n })) {\n return;\n } // isPlural suffix rules\n\n\n if (isPlural_1$2.isPlural.find(function (reg) {\n return reg.test(str);\n })) {\n t.tag('Plural', 'plural-rules', world);\n return;\n } // isSingular suffix rules\n\n\n if (isPlural_1$2.isSingular.find(function (reg) {\n return reg.test(str);\n })) {\n t.tag('Singular', 'singular-rules', world);\n return;\n } // finally, fallback 'looks plural' rules..\n\n\n if (/s$/.test(str) === true) {\n //avoid anything too sketchy to be plural\n if (notPlural.find(function (reg) {\n return reg.test(str);\n })) {\n return;\n }\n\n t.tag('Plural', 'plural-fallback', world);\n return;\n } //avoid anything too sketchy to be singular\n\n\n if (notSingular.find(function (reg) {\n return reg.test(str);\n })) {\n return;\n }\n\n t.tag('Singular', 'singular-fallback', world);\n }\n};\n\nvar _04Plurals = checkPlural;\n\n//nouns that also signal the title of an unknown organization\n//todo remove/normalize plural forms\nvar orgWords = ['academy', 'administration', 'agence', 'agences', 'agencies', 'agency', 'airlines', 'airways', 'army', 'assoc', 'associates', 'association', 'assurance', 'authority', 'autorite', 'aviation', 'bank', 'banque', 'board', 'boys', 'brands', 'brewery', 'brotherhood', 'brothers', 'building society', 'bureau', 'cafe', 'caisse', 'capital', 'care', 'cathedral', 'center', 'central bank', 'centre', 'chemicals', 'choir', 'chronicle', 'church', 'circus', 'clinic', 'clinique', 'club', 'co', 'coalition', 'coffee', 'collective', 'college', 'commission', 'committee', 'communications', 'community', 'company', 'comprehensive', 'computers', 'confederation', 'conference', 'conseil', 'consulting', 'containers', 'corporation', 'corps', 'corp', 'council', 'crew', 'daily news', 'data', 'departement', 'department', 'department store', 'departments', 'design', 'development', 'directorate', 'division', 'drilling', 'education', 'eglise', 'electric', 'electricity', 'energy', 'ensemble', 'enterprise', 'enterprises', 'entertainment', 'estate', 'etat', 'evening news', 'faculty', 'federation', 'financial', 'fm', 'foundation', 'fund', 'gas', 'gazette', 'girls', 'government', 'group', 'guild', 'health authority', 'herald', 'holdings', 'hospital', 'hotel', 'hotels', 'inc', 'industries', 'institut', 'institute', 'institute of technology', 'institutes', 'insurance', 'international', 'interstate', 'investment', 'investments', 'investors', 'journal', 'laboratory', 'labs', // 'law',\n'liberation army', 'limited', 'local authority', 'local health authority', 'machines', 'magazine', 'management', 'marine', 'marketing', 'markets', 'media', 'memorial', 'mercantile exchange', 'ministere', 'ministry', 'military', 'mobile', 'motor', 'motors', 'musee', 'museum', // 'network',\n'news', 'news service', 'observatory', 'office', 'oil', 'optical', 'orchestra', 'organization', 'partners', 'partnership', // 'party',\n\"people's party\", 'petrol', 'petroleum', 'pharmacare', 'pharmaceutical', 'pharmaceuticals', 'pizza', 'plc', 'police', 'polytechnic', 'post', 'power', 'press', 'productions', 'quartet', 'radio', 'regional authority', 'regional health authority', 'reserve', 'resources', 'restaurant', 'restaurants', 'savings', 'school', 'securities', 'service', 'services', 'social club', 'societe', 'society', 'sons', 'standard', 'state police', 'state university', 'stock exchange', 'subcommittee', 'syndicat', 'systems', 'telecommunications', 'telegraph', 'television', 'times', 'tribunal', 'tv', 'union', 'university', 'utilities', 'workers'];\nvar organizations = orgWords.reduce(function (h, str) {\n h[str] = 'Noun';\n return h;\n}, {});\n\nvar maybeOrg = function maybeOrg(t) {\n //must be a noun\n if (!t.tags.Noun) {\n return false;\n } //can't be these things\n\n\n if (t.tags.Pronoun || t.tags.Comma || t.tags.Possessive) {\n return false;\n } //must be one of these\n\n\n if (t.tags.Organization || t.tags.Acronym || t.tags.Place || t.titleCase()) {\n return true;\n }\n\n return false;\n};\n\nvar tagOrgs = function tagOrgs(terms, world) {\n for (var i = 0; i < terms.length; i += 1) {\n var t = terms[i];\n\n if (organizations[t.clean] !== undefined && organizations.hasOwnProperty(t.clean) === true) {\n // look-backward - eg. 'Toronto University'\n var lastTerm = terms[i - 1];\n\n if (lastTerm !== undefined && maybeOrg(lastTerm) === true) {\n lastTerm.tagSafe('Organization', 'org-word-1', world);\n t.tagSafe('Organization', 'org-word-2', world);\n continue;\n } //look-forward - eg. University of Toronto\n\n\n var nextTerm = terms[i + 1];\n\n if (nextTerm !== undefined && nextTerm.clean === 'of') {\n if (terms[i + 2] && maybeOrg(terms[i + 2])) {\n t.tagSafe('Organization', 'org-of-word-1', world);\n nextTerm.tagSafe('Organization', 'org-of-word-2', world);\n terms[i + 2].tagSafe('Organization', 'org-of-word-3', world);\n continue;\n }\n }\n }\n }\n};\n\nvar _05Organizations = tagOrgs;\n\nvar oneLetterAcronym = /^[A-Z]('s|,)?$/;\nvar periodSeperated = /([A-Z]\\.){2}[A-Z]?/i;\nvar oneLetterWord = {\n I: true,\n A: true\n};\n\nvar isAcronym = function isAcronym(term, world) {\n var str = term.reduced; // a known acronym like fbi\n\n if (term.tags.Acronym) {\n return true;\n } // if (term.tags.Adverb || term.tags.Verb || term.tags.Value || term.tags.Plural) {\n // return false\n // }\n // known-words, like 'PIZZA' is not an acronym.\n\n\n if (world.words[str]) {\n return false;\n } // long capitalized words are not usually either\n\n\n if (str.length > 5) {\n return false;\n }\n\n return term.isAcronym();\n}; // F.B.I., NBC, - but not 'NO COLLUSION'\n\n\nvar checkAcronym = function checkAcronym(terms, world) {\n terms.forEach(function (term) {\n //these are not acronyms\n if (term.tags.RomanNumeral === true) {\n return;\n } //period-ones F.D.B.\n\n\n if (periodSeperated.test(term.text) === true) {\n term.tag('Acronym', 'period-acronym', world);\n } //non-period ones are harder\n\n\n if (term.isUpperCase() && isAcronym(term, world)) {\n term.tag('Acronym', 'acronym-step', world);\n term.tag('Noun', 'acronym-infer', world);\n } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) {\n term.tag('Acronym', 'one-letter-acronym', world);\n term.tag('Noun', 'one-letter-infer', world);\n } //if it's a organization,\n\n\n if (term.tags.Organization && term.text.length <= 3) {\n term.tag('Acronym', 'acronym-org', world);\n }\n\n if (term.tags.Organization && term.isUpperCase() && term.text.length <= 6) {\n term.tag('Acronym', 'acronym-org-case', world);\n }\n });\n};\n\nvar _06Acronyms = checkAcronym;\n\nvar step = {\n neighbours: _01Neighbours,\n \"case\": _02Case,\n stem: _03Stem,\n plural: _04Plurals,\n organizations: _05Organizations,\n acronyms: _06Acronyms\n}; //\n\nvar fallbacks = function fallbacks(doc, terms) {\n var world = doc.world; // if it's empty, consult it's neighbours, first\n\n step.neighbours(terms, world); // is there a case-sensitive clue?\n\n step[\"case\"](doc); // check 'rewatch' as 'watch'\n\n step.stem(terms, world); // ... fallback to a noun!\n\n terms.forEach(function (t) {\n if (t.isKnown() === false) {\n t.tag('Noun', 'noun-fallback', doc.world);\n }\n }); // turn 'Foo University' into an Org\n\n step.organizations(terms, world); //turn 'FBD' into an acronym\n\n step.acronyms(terms, world); //are the nouns singular or plural?\n\n terms.forEach(function (t) {\n step.plural(t, doc.world);\n });\n return doc;\n};\n\nvar _02Fallbacks = fallbacks;\n\nvar hasNegative = /n't$/;\nvar irregulars$2 = {\n \"won't\": ['will', 'not'],\n wont: ['will', 'not'],\n \"can't\": ['can', 'not'],\n cant: ['can', 'not'],\n cannot: ['can', 'not'],\n \"shan't\": ['should', 'not'],\n dont: ['do', 'not'],\n dun: ['do', 'not'] // \"ain't\" is ambiguous for is/was\n\n}; // either 'is not' or 'are not'\n\nvar doAint = function doAint(term, phrase) {\n var terms = phrase.terms();\n var index = terms.indexOf(term);\n var before = terms.slice(0, index); //look for the preceding noun\n\n var noun = before.find(function (t) {\n return t.tags.Noun;\n });\n\n if (noun && noun.tags.Plural) {\n return ['are', 'not'];\n }\n\n return ['is', 'not'];\n};\n\nvar checkNegative = function checkNegative(term, phrase) {\n //check named-ones\n if (irregulars$2.hasOwnProperty(term.clean) === true) {\n return irregulars$2[term.clean];\n } //this word needs it's own logic:\n\n\n if (term.clean === \"ain't\" || term.clean === 'aint') {\n return doAint(term, phrase);\n } //try it normally\n\n\n if (hasNegative.test(term.clean) === true) {\n var main = term.clean.replace(hasNegative, '');\n return [main, 'not'];\n }\n\n return null;\n};\n\nvar _01Negative = checkNegative;\n\nvar contraction$1 = /([a-z\\u00C0-\\u00FF]+)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]([a-z]{1,2})$/i; //these ones don't seem to be ambiguous\n\nvar easy = {\n ll: 'will',\n ve: 'have',\n re: 'are',\n m: 'am',\n \"n't\": 'not'\n}; //\n\nvar checkApostrophe = function checkApostrophe(term) {\n var parts = term.text.match(contraction$1);\n\n if (parts === null) {\n return null;\n }\n\n if (easy.hasOwnProperty(parts[2])) {\n return [parts[1], easy[parts[2]]];\n }\n\n return null;\n};\n\nvar _02Simple = checkApostrophe;\n\nvar irregulars$1 = {\n wanna: ['want', 'to'],\n gonna: ['going', 'to'],\n im: ['i', 'am'],\n alot: ['a', 'lot'],\n ive: ['i', 'have'],\n imma: ['I', 'will'],\n \"where'd\": ['where', 'did'],\n whered: ['where', 'did'],\n \"when'd\": ['when', 'did'],\n whend: ['when', 'did'],\n // \"how'd\": ['how', 'did'], //'how would?'\n // \"what'd\": ['what', 'did'], //'what would?'\n howd: ['how', 'did'],\n whatd: ['what', 'did'],\n // \"let's\": ['let', 'us'], //too weird\n //multiple word contractions\n dunno: ['do', 'not', 'know'],\n brb: ['be', 'right', 'back'],\n gtg: ['got', 'to', 'go'],\n irl: ['in', 'real', 'life'],\n tbh: ['to', 'be', 'honest'],\n imo: ['in', 'my', 'opinion'],\n til: ['today', 'i', 'learned'],\n rn: ['right', 'now'],\n twas: ['it', 'was'],\n '@': ['at']\n}; //\n\nvar checkIrregulars = function checkIrregulars(term) {\n //check white-list\n if (irregulars$1.hasOwnProperty(term.clean)) {\n return irregulars$1[term.clean];\n }\n\n return null;\n};\n\nvar _03Irregulars = checkIrregulars;\n\nvar hasApostropheS = /([a-z\\u00C0-\\u00FF]+)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]s$/i;\nvar banList = {\n that: true,\n there: true\n};\nvar hereThere = {\n here: true,\n there: true,\n everywhere: true\n};\n\nvar isPossessive = function isPossessive(term, pool) {\n // if we already know it\n if (term.tags.Possessive) {\n return true;\n } //a pronoun can't be possessive - \"he's house\"\n\n\n if (term.tags.Pronoun || term.tags.QuestionWord) {\n return false;\n }\n\n if (banList.hasOwnProperty(term.reduced)) {\n return false;\n } //if end of sentence, it is possessive - \"was spencer's\"\n\n\n var nextTerm = pool.get(term.next);\n\n if (!nextTerm) {\n return true;\n } //a gerund suggests 'is walking'\n\n\n if (nextTerm.tags.Verb) {\n //fix 'jamie's bite'\n if (nextTerm.tags.Infinitive) {\n return true;\n } //fix 'spencer's runs'\n\n\n if (nextTerm.tags.PresentTense) {\n return true;\n }\n\n return false;\n } //spencer's house\n\n\n if (nextTerm.tags.Noun) {\n // 'spencer's here'\n if (hereThere.hasOwnProperty(nextTerm.reduced) === true) {\n return false;\n }\n\n return true;\n } //rocket's red glare\n\n\n var twoTerm = pool.get(nextTerm.next);\n\n if (twoTerm && twoTerm.tags.Noun && !twoTerm.tags.Pronoun) {\n return true;\n } //othwerwise, an adjective suggests 'is good'\n\n\n if (nextTerm.tags.Adjective || nextTerm.tags.Adverb || nextTerm.tags.Verb) {\n return false;\n }\n\n return false;\n};\n\nvar isHas = function isHas(term, phrase) {\n var terms = phrase.terms();\n var index = terms.indexOf(term);\n var after = terms.slice(index + 1, index + 3); //look for a past-tense verb\n\n return after.find(function (t) {\n return t.tags.PastTense;\n });\n};\n\nvar checkPossessive = function checkPossessive(term, phrase, world) {\n //the rest of 's\n var found = term.text.match(hasApostropheS);\n\n if (found !== null) {\n //spencer's thing vs spencer-is\n if (isPossessive(term, phrase.pool) === true) {\n term.tag('#Possessive', 'isPossessive', world);\n return null;\n } //'spencer is'\n\n\n if (found !== null) {\n if (isHas(term, phrase)) {\n return [found[1], 'has'];\n }\n\n return [found[1], 'is'];\n }\n }\n\n return null;\n};\n\nvar _04Possessive = checkPossessive;\n\nvar hasPerfect = /[a-z\\u00C0-\\u00FF]'d$/;\nvar useDid = {\n how: true,\n what: true\n};\n/** split `i'd` into 'i had', or 'i would' */\n\nvar checkPerfect = function checkPerfect(term, phrase) {\n if (hasPerfect.test(term.clean)) {\n var root = term.clean.replace(/'d$/, ''); //look at the next few words\n\n var terms = phrase.terms();\n var index = terms.indexOf(term);\n var after = terms.slice(index + 1, index + 4); //is it before a past-tense verb? - 'i'd walked'\n\n for (var i = 0; i < after.length; i++) {\n var t = after[i];\n\n if (t.tags.Verb) {\n if (t.tags.PastTense) {\n return [root, 'had'];\n } //what'd you see\n\n\n if (useDid[root] === true) {\n return [root, 'did'];\n }\n\n return [root, 'would'];\n }\n } //otherwise, 'i'd walk'\n\n\n return [root, 'would'];\n }\n\n return null;\n};\n\nvar _05PerfectTense = checkPerfect;\n\nvar isRange = /^([0-9.]{1,3}[a-z]{0,2})[-–—]([0-9]{1,3}[a-z]{0,2})$/i;\nvar timeRange = /^([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)[-–—]([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)$/i; //split '2-4' into '2 to 4'\n\nvar checkRange = function checkRange(term) {\n if (term.tags.PhoneNumber === true) {\n return null;\n }\n\n var parts = term.text.match(isRange);\n\n if (parts !== null) {\n return [parts[1], 'to', parts[2]];\n } else {\n parts = term.text.match(timeRange);\n\n if (parts !== null) {\n return [parts[1], 'to', parts[4]];\n }\n }\n\n return null;\n};\n\nvar _06Ranges = checkRange;\n\nvar contraction = /^(l|c|d|j|m|n|qu|s|t)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]([a-z\\u00C0-\\u00FF]+)$/i; // basic support for ungendered french contractions\n// not perfect, but better than nothing, to support matching on french text.\n\nvar french = {\n l: 'le',\n // l'amour\n c: 'ce',\n // c'est\n d: 'de',\n // d'amerique\n j: 'je',\n // j'aime\n m: 'me',\n // m'appelle\n n: 'ne',\n // n'est\n qu: 'que',\n // qu'il\n s: 'se',\n // s'appelle\n t: 'tu' // t'aime\n\n};\n\nvar checkFrench = function checkFrench(term) {\n var parts = term.text.match(contraction);\n\n if (parts === null || french.hasOwnProperty(parts[1]) === false) {\n return null;\n }\n\n var arr = [french[parts[1]], parts[2]];\n\n if (arr[0] && arr[1]) {\n return arr;\n }\n\n return null;\n};\n\nvar _07French = checkFrench;\n\nvar isNumber = /^[0-9]+$/;\nvar isOrdinal = /^[0-9]+(st|nd|rd|th)$/;\nvar isTime = /^[0-9:]+(am|pm)$/;\n\nvar createPhrase = function createPhrase(found, doc) {\n //create phrase from ['would', 'not']\n var phrase = _01Tokenizer(found.join(' '), doc.world, doc.pool())[0]; //tag it\n\n var terms = phrase.terms();\n _01Lexicon(terms, doc.world); //make these terms implicit\n\n terms.forEach(function (t) {\n t.implicit = t.text;\n t.text = '';\n t.clean = ''; // remove whitespace for implicit terms\n\n t.pre = '';\n t.post = ''; // tag number-ranges\n\n if (isNumber.test(t.implicit)) {\n t.tag('Cardinal', 'num-range', doc.world);\n } else if (isOrdinal.test(t.implicit)) {\n t.tag('Ordinal', 'ord-range', doc.world);\n } else if (isTime.test(t.implicit)) {\n t.tag('Time', 'time-range', doc.world);\n } else if (Object.keys(t.tags).length === 0) {\n t.tags.Noun = true; // if no tag, give it a noun\n }\n });\n return phrase;\n};\n\nvar contractions = function contractions(doc) {\n var world = doc.world;\n doc.list.forEach(function (p) {\n var terms = p.terms();\n\n for (var i = 0; i < terms.length; i += 1) {\n var term = terms[i];\n var found = _01Negative(term, p);\n found = found || _02Simple(term);\n found = found || _03Irregulars(term);\n found = found || _04Possessive(term, p, world);\n found = found || _05PerfectTense(term, p);\n found = found || _06Ranges(term);\n found = found || _07French(term); //add them in\n\n if (found !== null) {\n var newPhrase = createPhrase(found, doc); // keep tag NumberRange, if we had it\n\n if (p.has('#NumberRange') === true) {\n doc.buildFrom([newPhrase]).tag('NumberRange');\n } //set text as contraction\n\n\n var firstTerm = newPhrase.terms(0);\n firstTerm.text = term.text; //grab sub-phrase to remove\n\n var match = p.buildFrom(term.id, 1, doc.pool());\n match.replace(newPhrase, doc, true);\n }\n }\n });\n return doc;\n};\n\nvar _03Contractions = contractions;\n\nvar hasWord = function hasWord(doc, word) {\n var arr = doc._cache.words[word] || [];\n arr = arr.map(function (i) {\n return doc.list[i];\n });\n return doc.buildFrom(arr);\n};\n\nvar hasTag = function hasTag(doc, tag) {\n var arr = doc._cache.tags[tag] || [];\n arr = arr.map(function (i) {\n return doc.list[i];\n });\n return doc.buildFrom(arr);\n}; //mostly pos-corections here\n\n\nvar miscCorrection = function miscCorrection(doc) {\n // imperative-form\n var m = hasTag(doc, 'Infinitive');\n\n if (m.found) {\n // you eat?\n m = m.ifNo('@hasQuestionMark'); // i speak\n\n m = m.ifNo('(i|we|they)'); // shut the door!\n\n m.match('[#Infinitive] (#Determiner|#Possessive) #Noun', 0).tag('Imperative', 'shut-the'); // go-fast\n\n m.match('^[#Infinitive] #Adverb?$', 0).tag('Imperative', 'go-fast'); // do not go\n\n m.match('[(do && #Infinitive)] not? #Verb', 0).tag('Imperative', 'do-not'); // do it\n\n m.match('[#Infinitive] (it|some)', 0).tag('Imperative', 'do-it');\n } //exactly like\n\n\n m = hasWord(doc, 'like');\n m.match('#Adverb like').notIf('(really|generally|typically|usually|sometimes|often|just) [like]').tag('Adverb', 'adverb-like'); //the orange.\n\n m = hasTag(doc, 'Adjective');\n m.match('#Determiner #Adjective$').notIf('(#Comparative|#Superlative)').terms(1).tag('Noun', 'the-adj-1'); // Firstname x (dangerous)\n\n m = hasTag(doc, 'FirstName');\n m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('(#Pronoun|#Plural)').ifNo('@hasComma .').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train\n\n m = hasTag(doc, 'Value');\n m = m.match('#Value #PresentTense').ifNo('#Copula');\n\n if (m.found) {\n if (m.has('(one|1)') === true) {\n m.terms(1).tag('Singular', 'one-presentTense');\n } else {\n m.terms(1).tag('Plural', 'value-presentTense');\n }\n } // well i've been...\n\n\n doc.match('^(well|so|okay)').tag('Expression', 'well-'); // 10th of a second\n\n doc.match('#Value [of a second]', 0).unTag('Value', 'of-a-second'); // 30 seconds\n\n doc.match('#Value [seconds]', 0).unTag('Value', '30-seconds').tag(['Unit', 'Plural']); //been walking\n\n m = hasTag(doc, 'Gerund');\n m.match(\"(be|been) (#Adverb|not)+? #Gerund\").not('#Verb$').tag('Auxiliary', 'be-walking'); // directive verb - 'use reverse'\n\n doc.match('(try|use|attempt|build|make) #Verb').ifNo('(@hasComma|#Negative|#PhrasalVerb|#Copula|will|be)').lastTerm().tag('#Noun', 'do-verb'); //possessives\n //'her match' vs 'let her match'\n\n m = hasTag(doc, 'Possessive');\n m = m.match('#Possessive [#Infinitive]', 0);\n\n if (!m.lookBehind('(let|made|make|force|ask)').found) {\n m.tag('Noun', 'her-match');\n }\n\n return doc;\n};\n\nvar fixMisc = miscCorrection;\n\nvar unique = function unique(arr) {\n var obj = {};\n\n for (var i = 0; i < arr.length; i++) {\n obj[arr[i]] = true;\n }\n\n return Object.keys(obj);\n};\n\nvar _unique = unique;\n\n// order matters\nvar list$5 = [// ==== Mutliple tags ====\n{\n match: 'too much',\n tag: 'Adverb Adjective',\n reason: 'bit-4'\n}, // u r cool\n{\n match: 'u r',\n tag: 'Pronoun Copula',\n reason: 'u r'\n}, //sometimes adverbs - 'pretty good','well above'\n{\n match: '#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)',\n tag: '#Copula #Adverb #Adjective',\n reason: 'sometimes-adverb'\n}, //i better ..\n{\n match: '(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense',\n group: 0,\n tag: 'Modal',\n reason: 'i-better'\n}, //walking is cool\n{\n match: '[#Gerund] #Adverb? not? #Copula',\n group: 0,\n tag: 'Activity',\n reason: 'gerund-copula'\n}, //walking should be fun\n{\n match: '[#Gerund] #Modal',\n group: 0,\n tag: 'Activity',\n reason: 'gerund-modal'\n}, //swear-words as non-expression POS\n{\n match: 'holy (shit|fuck|hell)',\n tag: 'Expression',\n reason: 'swears-expression'\n}, //Aircraft designer\n{\n match: '#Noun #Actor',\n tag: 'Actor',\n reason: 'thing-doer'\n}, {\n match: '#Conjunction [u]',\n group: 0,\n tag: 'Pronoun',\n reason: 'u-pronoun-2'\n}, //'u' as pronoun\n{\n match: '[u] #Verb',\n group: 0,\n tag: 'Pronoun',\n reason: 'u-pronoun-1'\n}, // ==== Determiners ====\n{\n match: '#Noun [(who|whom)]',\n group: 0,\n tag: 'Determiner',\n reason: 'captain-who'\n}, //that car goes\n// { match: 'that #Noun [#PresentTense]', group: 0, tag: 'Determiner', reason: 'that-determiner' },\n{\n match: 'a bit much',\n tag: 'Determiner Adverb Adjective',\n reason: 'bit-3'\n}, // ==== Propositions ====\n//all students\n{\n match: '#Verb #Adverb? #Noun [(that|which)]',\n group: 0,\n tag: 'Preposition',\n reason: 'that-prep'\n}, //work, which has been done.\n{\n match: '@hasComma [which] (#Pronoun|#Verb)',\n group: 0,\n tag: 'Preposition',\n reason: 'which-copula'\n}, {\n match: '#Copula just [like]',\n group: 0,\n tag: 'Preposition',\n reason: 'like-preposition'\n}, //folks like her\n{\n match: '#Noun [like] #Noun',\n group: 0,\n tag: 'Preposition',\n reason: 'noun-like'\n}, //fix for busted-up phrasalVerbs\n// { match: '#Noun [#Particle]', group: 0, tag: 'Preposition', reason: 'repair-noPhrasal' },\n// ==== Conditions ====\n// had he survived,\n{\n match: '[had] #Noun+ #PastTense',\n group: 0,\n tag: 'Condition',\n reason: 'had-he'\n}, // were he to survive\n{\n match: '[were] #Noun+ to #Infinitive',\n group: 0,\n tag: 'Condition',\n reason: 'were-he'\n}, // ==== Questions ====\n//the word 'how'\n{\n match: '^how',\n tag: 'QuestionWord',\n reason: 'how-question'\n}, {\n match: '[how] (#Determiner|#Copula|#Modal|#PastTense)',\n group: 0,\n tag: 'QuestionWord',\n reason: 'how-is'\n}, // //the word 'which'\n{\n match: '^which',\n tag: 'QuestionWord',\n reason: 'which-question'\n}, // { match: '[which] . (#Noun)+ #Pronoun', group: 0, tag: 'QuestionWord', reason: 'which-question2' },\n// { match: 'which', tag: 'QuestionWord', reason: 'which-question3' },\n// ==== Conjunctions ====\n{\n match: '[so] #Noun',\n group: 0,\n tag: 'Conjunction',\n reason: 'so-conj'\n}, //how he is driving\n{\n match: '[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)',\n group: 0,\n tag: 'Conjunction',\n reason: 'how-he-is-x'\n} // {\n// match: '[(who|what|where|why|how|when)] #Noun #Adverb? #Infinitive not? #Gerund',\n// group: 0,\n// tag: 'Conjunction',\n// reason: 'when-i-go-fishing',\n// },\n];\nvar _01Misc = list$5;\n\nvar _ambig = {\n // adverbs than can be adjectives\n adverbAdjective: ['dark', 'bright', 'flat', 'light', 'soft', 'pale', 'dead', 'dim', 'faux', 'little', 'wee', 'sheer', 'most', 'near', 'good', 'extra', 'all'],\n // names that are dates\n personDate: ['april', 'june', 'may', 'jan', 'august', 'eve'],\n // names that may be months\n personMonth: ['january', 'april', 'may', 'june', 'jan', 'sep'],\n // names that are adjectives\n personAdjective: ['misty', 'rusty', 'dusty', 'rich', 'randy', 'young'],\n // names that are verbs\n personVerb: ['pat', 'wade', 'ollie', 'will', 'rob', 'buck', 'bob', 'mark', 'jack'],\n // names that are verbs\n personPlace: ['darwin', 'hamilton', 'paris', 'alexandria', 'houston', 'kobe', 'santiago', 'salvador', 'sydney', 'victoria'],\n // names that are nouns\n personNoun: ['art', 'baker', 'berg', 'bill', 'brown', 'charity', 'chin', 'christian', 'cliff', 'daisy', 'dawn', 'dick', 'dolly', 'faith', 'franco', 'gene', 'green', 'hall', 'hill', 'holly', 'hope', 'jean', 'jewel', 'joy', 'kelvin', 'king', 'kitty', 'lane', 'lily', 'melody', 'mercedes', 'miles', 'olive', 'penny', 'ray', 'reed', 'robin', 'rod', 'rose', 'sky', 'summer', 'trinity', 'van', 'viola', 'violet', 'wang', 'white']\n};\n\nvar dates = \"(\".concat(_ambig.personDate.join('|'), \")\");\nvar list$4 = [// ==== Holiday ====\n{\n match: '#Holiday (day|eve)',\n tag: 'Holiday',\n reason: 'holiday-day'\n}, // the captain who\n// ==== WeekDay ====\n// sun the 5th\n{\n match: '[sun] the #Ordinal',\n tag: 'WeekDay',\n reason: 'sun-the-5th'\n}, //sun feb 2\n{\n match: '[sun] #Date',\n group: 0,\n tag: 'WeekDay',\n reason: 'sun-feb'\n}, //1pm next sun\n{\n match: '#Date (on|this|next|last|during)? [sun]',\n group: 0,\n tag: 'WeekDay',\n reason: '1pm-sun'\n}, //this sat\n{\n match: \"(in|by|before|during|on|until|after|of|within|all) [sat]\",\n group: 0,\n tag: 'WeekDay',\n reason: 'sat'\n}, {\n match: \"(in|by|before|during|on|until|after|of|within|all) [wed]\",\n group: 0,\n tag: 'WeekDay',\n reason: 'wed'\n}, {\n match: \"(in|by|before|during|on|until|after|of|within|all) [march]\",\n group: 0,\n tag: 'Month',\n reason: 'march'\n}, //sat november\n{\n match: '[sat] #Date',\n group: 0,\n tag: 'WeekDay',\n reason: 'sat-feb'\n}, // ==== Month ====\n//all march\n{\n match: \"#Preposition [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'in-month'\n}, //this march\n{\n match: \"this [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n}, {\n match: \"next [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n}, {\n match: \"last [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n}, // march 5th\n{\n match: \"[(march|may)] the? #Value\",\n group: 0,\n tag: 'Month',\n reason: 'march-5th'\n}, // 5th of march\n{\n match: \"#Value of? [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: '5th-of-march'\n}, // march and feb\n{\n match: \"[(march|may)] .? #Date\",\n group: 0,\n tag: 'Month',\n reason: 'march-and-feb'\n}, // feb to march\n{\n match: \"#Date .? [(march|may)]\",\n group: 0,\n tag: 'Month',\n reason: 'feb-and-march'\n}, //quickly march\n{\n match: \"#Adverb [(march|may)]\",\n group: 0,\n tag: 'Verb',\n reason: 'quickly-march'\n}, //march quickly\n{\n match: \"[(march|may)] #Adverb\",\n group: 0,\n tag: 'Verb',\n reason: 'march-quickly'\n}, //5th of March\n{\n match: '#Value of #Month',\n tag: 'Date',\n reason: 'value-of-month'\n}, //5 March\n{\n match: '#Cardinal #Month',\n tag: 'Date',\n reason: 'cardinal-month'\n}, //march 5 to 7\n{\n match: '#Month #Value to #Value',\n tag: 'Date',\n reason: 'value-to-value'\n}, //march the 12th\n{\n match: '#Month the #Value',\n tag: 'Date',\n reason: 'month-the-value'\n}, //june 7\n{\n match: '(#WeekDay|#Month) #Value',\n tag: 'Date',\n reason: 'date-value'\n}, //7 june\n{\n match: '#Value (#WeekDay|#Month)',\n tag: 'Date',\n reason: 'value-date'\n}, //may twenty five\n{\n match: '(#TextValue && #Date) #TextValue',\n tag: 'Date',\n reason: 'textvalue-date'\n}, // in june\n{\n match: \"in [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, {\n match: \"during [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, {\n match: \"on [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, {\n match: \"by [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'by-june'\n}, {\n match: \"after [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'after-june'\n}, {\n match: \"#Date [\".concat(dates, \"]\"),\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n}, // june 1992\n{\n match: \"\".concat(dates, \" #Value\"),\n tag: 'Date',\n reason: 'june-5th'\n}, {\n match: \"\".concat(dates, \" #Date\"),\n tag: 'Date',\n reason: 'june-5th'\n}, // June Smith\n{\n match: \"\".concat(dates, \" #ProperNoun\"),\n tag: 'Person',\n reason: 'june-smith',\n safe: true\n}, // june m. Cooper\n{\n match: \"\".concat(dates, \" #Acronym? (#ProperNoun && !#Month)\"),\n tag: 'Person',\n reason: 'june-smith-jr'\n}, // 'second'\n{\n match: \"#Cardinal [second]\",\n tag: 'Unit',\n reason: 'one-second'\n}, // second quarter\n// { match: `#Ordinal quarter`, tag: 'Date', reason: 'second-quarter' },\n// 'aug 20-21'\n{\n match: \"#Month #NumberRange\",\n tag: 'Date',\n reason: 'aug 20-21'\n}, // timezones\n// china standard time\n{\n match: \"(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time\",\n tag: 'Timezone',\n reason: 'std-time'\n}, // eastern time\n{\n match: \"(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time\",\n tag: 'Timezone',\n reason: 'eastern-time'\n}, // 5pm central\n{\n match: \"#Time [(eastern|mountain|pacific|central|est|pst|gmt)]\",\n group: 0,\n tag: 'Timezone',\n reason: '5pm-central'\n}, // central european time\n{\n match: \"(central|western|eastern) european time\",\n tag: 'Timezone',\n reason: 'cet'\n}];\nvar _02Dates = list$4;\n\nvar adjectives$1 = \"(\".concat(_ambig.personAdjective.join('|'), \")\");\nvar list$3 = [// all fell apart\n{\n match: '[all] #Determiner? #Noun',\n group: 0,\n tag: 'Adjective',\n reason: 'all-noun'\n}, // very rusty\n{\n match: \"#Adverb [\".concat(adjectives$1, \"]\"),\n group: 0,\n tag: 'Adjective',\n reason: 'really-rich'\n}, // rusty smith\n{\n match: \"\".concat(adjectives$1, \" #Person\"),\n tag: 'Person',\n reason: 'randy-smith'\n}, // rusty a. smith\n{\n match: \"\".concat(adjectives$1, \" #Acronym? #ProperNoun\"),\n tag: 'Person',\n reason: 'rusty-smith'\n}, //sometimes not-adverbs\n{\n match: '#Copula [(just|alone)]$',\n group: 0,\n tag: 'Adjective',\n reason: 'not-adverb'\n}, //jack is guarded\n{\n match: '#Singular is #Adverb? [#PastTense$]',\n group: 0,\n tag: 'Adjective',\n reason: 'is-filled'\n}, // smoked poutine is\n{\n match: '[#PastTense] #Singular is',\n group: 0,\n tag: 'Adjective',\n reason: 'smoked-poutine'\n}, // baked onions are\n{\n match: '[#PastTense] #Plural are',\n group: 0,\n tag: 'Adjective',\n reason: 'baked-onions'\n}, // well made\n{\n match: 'well [#PastTense]',\n group: 0,\n tag: 'Adjective',\n reason: 'well-made'\n}, // is f*ed up\n{\n match: '#Copula [fucked up?]',\n tag: 'Adjective',\n reason: 'swears-adjective'\n}, //jack seems guarded\n{\n match: '#Singular (seems|appears) #Adverb? [#PastTense$]',\n group: 0,\n tag: 'Adjective',\n reason: 'seems-filled'\n}, // Gerund-Adjectives - 'amusing, annoying'\n//a staggering cost\n{\n match: '(a|an) [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'a|an'\n}, //as amusing as\n{\n match: 'as [#Gerund] as',\n group: 0,\n tag: 'Adjective',\n reason: 'as-gerund-as'\n}, // more amusing than\n{\n match: 'more [#Gerund] than',\n group: 0,\n tag: 'Adjective',\n reason: 'more-gerund-than'\n}, // very amusing\n{\n match: '(so|very|extremely) [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'so-gerund'\n}, // it was amusing\n{\n match: '(it|he|she|everything|something) #Adverb? was #Adverb? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'it-was-gerund'\n}, // found it amusing\n{\n match: '(found|found) it #Adverb? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'found-it-gerund'\n}, // a bit amusing\n{\n match: 'a (little|bit|wee) bit? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'a-bit-gerund'\n}, // jury is out - preposition ➔ adjective\n{\n match: '#Copula #Adjective? [(out|in|through)]$',\n group: 0,\n tag: 'Adjective',\n reason: 'still-out'\n}, // shut the door\n{\n match: '^[#Adjective] (the|your) #Noun',\n group: 0,\n tag: 'Infinitive',\n reason: 'shut-the'\n}];\nvar _03Adjective = list$3;\n\nvar _04Noun = [// ==== Plural ====\n//there are reasons\n{\n match: 'there (are|were) #Adjective? [#PresentTense]',\n group: 0,\n tag: 'Plural',\n reason: 'there-are'\n}, // ==== Singular ====\n//the sun\n{\n match: '#Determiner [sun]',\n group: 0,\n tag: 'Singular',\n reason: 'the-sun'\n}, //did a 900, paid a 20\n{\n match: '#Verb (a|an) [#Value]',\n group: 0,\n tag: 'Singular',\n reason: 'did-a-value'\n}, //'the can'\n{\n match: 'the [(can|will|may)]',\n group: 0,\n tag: 'Singular',\n reason: 'the can'\n}, // ==== Possessive ====\n//spencer kelly's\n{\n match: '#FirstName #Acronym? (#Possessive && #LastName)',\n tag: 'Possessive',\n reason: 'name-poss'\n}, //Super Corp's fundraiser\n{\n match: '#Organization+ #Possessive',\n tag: 'Possessive',\n reason: 'org-possessive'\n}, //Los Angeles's fundraiser\n{\n match: '#Place+ #Possessive',\n tag: 'Possessive',\n reason: 'place-possessive'\n}, // assign all tasks\n{\n match: '(#Verb && !#Modal) (all|every|each|most|some|no) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'all-presentTense'\n}, //the above is clear\n{\n match: '#Determiner [#Adjective] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-is'\n}, //real evil is\n{\n match: '#Adjective [#Adjective] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'adj-adj-is'\n}, // PresentTense/Noun ambiguities\n// big dreams, critical thinking\n// have big dreams\n{\n match: '(had|have|#PastTense) #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'adj-presentTense'\n}, // excellent answer spencer\n{\n match: '^#Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'start adj-presentTense'\n}, // one big reason\n{\n match: '#Value #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'one-big-reason'\n}, // won widespread support\n{\n match: '#PastTense #Adjective+ [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'won-wide-support'\n}, // many poses\n{\n match: '(many|few|several|couple) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'many-poses'\n}, // very big dreams\n{\n match: '#Adverb #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'very-big-dream'\n}, // good wait staff\n{\n match: '#Adjective [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'good-wait-staff'\n}, // adorable little store\n{\n match: '#Adjective #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'adorable-little-store'\n}, // of basic training\n{\n match: '#Preposition #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'of-basic-training'\n}, // early warning\n{\n match: '#Adjective [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'early-warning'\n}, // justifiying higher costs\n{\n match: '#Gerund #Adverb? #Comparative [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'higher-costs'\n}, // do the dance\n{\n match: '#Infinitive (this|that|the) [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'do-this-dance'\n}, //his fine\n{\n match: '(his|her|its) [#Adjective]',\n group: 0,\n tag: 'Noun',\n reason: 'his-fine'\n}, //some pressing issues\n{\n match: 'some [#Verb] #Plural',\n group: 0,\n tag: 'Noun',\n reason: 'determiner6'\n}, //'more' is not always an adverb\n{\n match: 'more #Noun',\n tag: 'Noun',\n reason: 'more-noun'\n}, {\n match: '(#Noun && @hasComma) #Noun (and|or) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'noun-list'\n}, //3 feet\n{\n match: '(right|rights) of .',\n tag: 'Noun',\n reason: 'right-of'\n}, // a bit\n{\n match: 'a [bit]',\n group: 0,\n tag: 'Noun',\n reason: 'bit-2'\n}, // my first thought\n{\n match: '#Possessive #Ordinal [#PastTense]',\n group: 0,\n tag: 'Noun',\n reason: 'first-thought'\n}, //running-a-show\n{\n match: '#Gerund #Determiner [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-a-show'\n}, //the-only-reason\n{\n match: '#Determiner #Adverb [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'the-reason'\n}, //the nice swim\n{\n match: '(the|this|those|these) #Adjective [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-verb'\n}, // the truly nice swim\n{\n match: '(the|this|those|these) #Adverb #Adjective [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'determiner4'\n}, //the orange is\n{\n match: '#Determiner [#Adjective] (#Copula|#PastTense|#Auxiliary)',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-2'\n}, // a stream runs\n{\n match: '(the|this|a|an) [#Infinitive] #Adverb? #Verb',\n group: 0,\n tag: 'Noun',\n reason: 'determiner5'\n}, //the test string\n{\n match: '#Determiner [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'determiner7'\n}, //a nice deal\n{\n match: '#Determiner #Adjective #Adjective? [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'a-nice-inf'\n}, //the wait to vote\n{\n match: 'the [#Verb] #Preposition .',\n group: 0,\n tag: 'Noun',\n reason: 'determiner1'\n}, //a sense of\n{\n match: '#Determiner [#Verb] of',\n group: 0,\n tag: 'Noun',\n reason: 'the-verb-of'\n}, //next career move\n{\n match: '#Adjective #Noun+ [#Infinitive] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'career-move'\n}, //the threat of force\n{\n match: '#Determiner #Noun of [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'noun-of-noun'\n}, //the western line\n{\n match: '#Determiner [(western|eastern|northern|southern|central)] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'western-line'\n}, //her polling\n{\n match: '#Possessive [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'her-polling'\n}, //her fines\n{\n match: '(his|her|its) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'its-polling'\n}, //linear algebra\n{\n match: '(#Determiner|#Value) [(linear|binary|mobile|lexical|technical|computer|scientific|formal)] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'technical-noun'\n}, // a blown motor\n{\n match: '(the|those|these|a|an) [#Participle] #Noun',\n group: 0,\n tag: 'Adjective',\n reason: 'blown-motor'\n}, // walk the walk\n{\n match: '(the|those|these|a|an) #Adjective? [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'det-inf'\n}, {\n match: '(the|those|these|a|an) #Adjective? [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'det-pres'\n}, {\n match: '(the|those|these|a|an) #Adjective? [#PastTense]',\n group: 0,\n tag: 'Noun',\n reason: 'det-past'\n}, // this swimming\n{\n match: '(this|that) [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'this-gerund'\n}, // at some point\n{\n match: 'at some [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'at-some-inf'\n}, //air-flow\n{\n match: '(#Noun && @hasHyphen) #Verb',\n tag: 'Noun',\n reason: 'hyphen-verb'\n}, //is no walk\n{\n match: 'is no [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'is-no-verb'\n}, //different views than\n{\n match: '[#Verb] than',\n group: 0,\n tag: 'Noun',\n reason: 'correction'\n}, // goes to sleep\n{\n match: '(go|goes|went) to [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'goes-to-verb'\n}, //a close watch on\n{\n match: '(a|an) #Noun [#Infinitive] (#Preposition|#Noun)',\n group: 0,\n tag: 'Noun',\n reason: 'a-noun-inf'\n}, //a tv show\n{\n match: '(a|an) #Noun [#Infinitive]$',\n group: 0,\n tag: 'Noun',\n reason: 'a-noun-inf2'\n}, //do so\n{\n match: 'do [so]',\n group: 0,\n tag: 'Noun',\n reason: 'so-noun'\n}, //is mark hughes\n{\n match: '#Copula [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'is-pres-noun'\n}, //a close\n{\n match: '#Determiner #Adverb? [close]',\n group: 0,\n tag: 'Adjective',\n reason: 'a-close'\n}, // what the hell\n{\n match: '#Determiner [(shit|damn|hell)]',\n group: 0,\n tag: 'Noun',\n reason: 'swears-noun'\n}, // the staff were\n{\n match: '(the|these) [#Singular] (were|are)',\n group: 0,\n tag: 'Plural',\n reason: 'singular-were'\n}, // running for congress\n{\n match: '#Gerund #Adjective? for [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-for'\n}, // running to work\n{\n match: '#Gerund #Adjective to [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-to'\n}, // any questions for\n{\n match: '(many|any|some|several) [#PresentTense] for',\n group: 0,\n tag: 'Noun',\n reason: 'any-verbs-for'\n}, // have fun\n{\n match: \"(have|had) [#Adjective] #Preposition .\",\n group: 0,\n tag: 'Noun',\n reason: 'have-fun'\n}, // co-founder\n{\n match: \"co #Noun\",\n tag: 'Actor',\n reason: 'co-noun'\n}];\n\nvar adjectives = \"(\".concat(_ambig.adverbAdjective.join('|'), \")\");\nvar _05Adverb = [//still good\n{\n match: '[still] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'still-advb'\n}, //still make\n{\n match: '[still] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'still-verb'\n}, // so hot\n{\n match: '[so] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'so-adv'\n}, // way hotter\n{\n match: '[way] #Comparative',\n group: 0,\n tag: 'Adverb',\n reason: 'way-adj'\n}, // way too hot\n{\n match: '[way] #Adverb #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'way-too-adj'\n}, // all singing\n{\n match: '[all] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'all-verb'\n}, // sing like an angel\n{\n match: '(#Verb && !#Modal) [like]',\n group: 0,\n tag: 'Adverb',\n reason: 'verb-like'\n}, //barely even walk\n{\n match: '(barely|hardly) even',\n tag: 'Adverb',\n reason: 'barely-even'\n}, //even held\n{\n match: '[even] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'even-walk'\n}, // even left\n{\n match: 'even left',\n tag: '#Adverb #Verb',\n reason: 'even-left'\n}, //cheering hard - dropped -ly's\n{\n match: '(#PresentTense && !#Copula) [(hard|quick|long|bright|slow|fast|backwards|forwards)]',\n group: 0,\n tag: 'Adverb',\n reason: 'lazy-ly'\n}, // much appreciated\n{\n match: '[much] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'bit-1'\n}, // is well\n{\n match: '#Copula [#Adverb]$',\n group: 0,\n tag: 'Adjective',\n reason: 'is-well'\n}, // a bit cold\n{\n match: 'a [(little|bit|wee) bit?] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'a-bit-cold'\n}, // dark green\n{\n match: \"[\".concat(adjectives, \"] #Adjective\"),\n group: 0,\n tag: 'Adverb',\n reason: 'dark-green'\n}, // kinda sparkly\n{\n match: \"#Adverb [#Adverb]$\",\n group: 0,\n tag: 'Adjective',\n reason: 'kinda-sparkly'\n}, {\n match: \"#Adverb [#Adverb] (and|or|then)\",\n group: 0,\n tag: 'Adjective',\n reason: 'kinda-sparkly-and'\n}];\n\nvar _06Value = [// ==== PhoneNumber ====\n//1 800 ...\n{\n match: '1 #Value #PhoneNumber',\n tag: 'PhoneNumber',\n reason: '1-800-Value'\n}, //(454) 232-9873\n{\n match: '#NumericValue #PhoneNumber',\n tag: 'PhoneNumber',\n reason: '(800) PhoneNumber'\n}, // ==== Currency ====\n// chinese yuan\n{\n match: '#Demonym #Currency',\n tag: 'Currency',\n reason: 'demonym-currency'\n}, // ==== Ordinal ====\n{\n match: '[second] #Noun',\n group: 0,\n tag: 'Ordinal',\n reason: 'second-noun'\n}, // ==== Unit ====\n//5 yan\n{\n match: '#Value+ [#Currency]',\n group: 0,\n tag: 'Unit',\n reason: '5-yan'\n}, {\n match: '#Value [(foot|feet)]',\n group: 0,\n tag: 'Unit',\n reason: 'foot-unit'\n}, //minus 7\n{\n match: '(minus|negative) #Value',\n tag: 'Value',\n reason: 'minus-value'\n}, //5 kg.\n{\n match: '#Value [#Abbreviation]',\n group: 0,\n tag: 'Unit',\n reason: 'value-abbr'\n}, {\n match: '#Value [k]',\n group: 0,\n tag: 'Unit',\n reason: 'value-k'\n}, {\n match: '#Unit an hour',\n tag: 'Unit',\n reason: 'unit-an-hour'\n}, //seven point five\n{\n match: '#Value (point|decimal) #Value',\n tag: 'Value',\n reason: 'value-point-value'\n}, // ten bucks\n{\n match: '(#Value|a) [(buck|bucks|grand)]',\n group: 0,\n tag: 'Currency',\n reason: 'value-bucks'\n}, //quarter million\n{\n match: '#Determiner [(half|quarter)] #Ordinal',\n group: 0,\n tag: 'Value',\n reason: 'half-ordinal'\n}, {\n match: 'a #Value',\n tag: 'Value',\n reason: 'a-value'\n}, // ==== Money ====\n{\n match: '[#Value+] #Currency',\n group: 0,\n tag: 'Money',\n reason: '15 usd'\n}, // thousand and two\n{\n match: \"(hundred|thousand|million|billion|trillion|quadrillion)+ and #Value\",\n tag: 'Value',\n reason: 'magnitude-and-value'\n}, //'a/an' can mean 1 - \"a hour\"\n{\n match: '!once [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)',\n group: 0,\n tag: 'Value',\n reason: 'a-is-one'\n}];\n\nvar verbs = \"(\".concat(_ambig.personVerb.join('|'), \")\");\nvar list$2 = [// adj -> gerund\n// amusing his aunt\n{\n match: '[#Adjective] #Possessive #Noun',\n group: 0,\n tag: 'Verb',\n reason: 'gerund-his-noun'\n}, // loving you\n{\n match: '[#Adjective] (us|you)',\n group: 0,\n tag: 'Gerund',\n reason: 'loving-you'\n}, // slowly stunning\n{\n match: '(slowly|quickly) [#Adjective]',\n group: 0,\n tag: 'Gerund',\n reason: 'slowly-adj'\n}, // like\n{\n match: '(#Modal|i|they|we|do) not? [like]',\n group: 0,\n tag: 'PresentTense',\n reason: 'modal-like'\n}, // do not simply like\n{\n match: 'do (simply|just|really|not)+ [(#Adjective|like)]',\n group: 0,\n tag: 'Verb',\n reason: 'do-simply-like'\n}, // does mean\n{\n match: 'does (#Adverb|not)? [#Adjective]',\n group: 0,\n tag: 'PresentTense',\n reason: 'does-mean'\n}, // i mean\n{\n match: 'i (#Adverb|do)? not? [mean]',\n group: 0,\n tag: 'PresentTense',\n reason: 'i-mean'\n}, // { match: '!are (i|you|we) (#Adverb|do)? [#Adjective]', group: 0, tag: 'PresentTense', reason: 'i-mean' },\n// ==== Tense ====\n//he left\n{\n match: '#Noun #Adverb? [left]',\n group: 0,\n tag: 'PastTense',\n reason: 'left-verb'\n}, //this rocks\n{\n match: '(this|that) [#Plural]',\n group: 0,\n tag: 'PresentTense',\n reason: 'this-verbs'\n}, // ==== Auxiliary ====\n//was walking\n{\n match: \"[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'copula-walking'\n}, //support a splattering of auxillaries before a verb\n{\n match: \"[(has|had) (#Adverb|not)+?] #PastTense\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-walked'\n}, //would walk\n{\n match: \"[#Adverb+? (#Modal|did)+ (#Adverb|not)+?] #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'modal-verb'\n}, //would have had\n{\n match: \"[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-have'\n}, //would be walking\n// { match: `#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'would-be' },\n//had been walking\n// {\n// match: `(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb`,\n// group: 0,\n// tag: 'Auxiliary',\n// reason: 'had-been',\n// },\n//support a splattering of auxillaries before a verb\n{\n match: \"[(has|had) (#Adverb|not)+?] #PastTense\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-walked'\n}, // will walk\n{\n match: '[(do|does|will|have|had)] (not|#Adverb)? #Verb',\n group: 0,\n tag: 'Auxiliary',\n reason: 'have-had'\n}, // about to go\n{\n match: '[about to] #Adverb? #Verb',\n group: 0,\n tag: ['Auxiliary', 'Verb'],\n reason: 'about-to'\n}, //would be walking\n{\n match: \"#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-be'\n}, //were being run\n{\n match: \"(were|was) being [#PresentTense]\",\n group: 0,\n tag: 'PastTense',\n reason: 'was-being'\n}, //have run\n// { match: `have #PresentTense`, group: 0, tag: 'PastTense', reason: 'have-vb' },\n//would have had\n{\n match: \"[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-have'\n}, //had been walking\n{\n match: \"(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb\",\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-been'\n}, // was being driven\n{\n match: '[(be|being|been)] #Participle',\n group: 0,\n tag: 'Auxiliary',\n reason: 'being-foo'\n}, // ==== Phrasal ====\n//'foo-up'\n{\n match: '(#Verb && @hasHyphen) up',\n tag: 'PhrasalVerb',\n reason: 'foo-up'\n}, {\n match: '(#Verb && @hasHyphen) off',\n tag: 'PhrasalVerb',\n reason: 'foo-off'\n}, {\n match: '(#Verb && @hasHyphen) over',\n tag: 'PhrasalVerb',\n reason: 'foo-over'\n}, {\n match: '(#Verb && @hasHyphen) out',\n tag: 'PhrasalVerb',\n reason: 'foo-out'\n}, //fall over\n{\n match: '#PhrasalVerb [#PhrasalVerb]',\n group: 0,\n tag: 'Particle',\n reason: 'phrasal-particle'\n}, //back it up\n{\n match: '#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]',\n group: 0,\n tag: 'Adverb',\n reason: 'phrasal-pronoun-advb'\n}, // ==== Copula ====\n//will be running (not copula)\n{\n match: '[will #Adverb? not? #Adverb? be] #Gerund',\n group: 0,\n tag: 'Copula',\n reason: 'will-be-copula'\n}, //for more complex forms, just tag 'be'\n{\n match: 'will #Adverb? not? #Adverb? [be] #Adjective',\n group: 0,\n tag: 'Copula',\n reason: 'be-copula'\n}, // ==== Infinitive ====\n//march to\n{\n match: '[march] (up|down|back|to|toward)',\n group: 0,\n tag: 'Infinitive',\n reason: 'march-to'\n}, //must march\n{\n match: '#Modal [march]',\n group: 0,\n tag: 'Infinitive',\n reason: 'must-march'\n}, //let him glue\n{\n match: '(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)',\n group: 0,\n tag: 'Infinitive',\n reason: 'let-him-glue'\n}, //he quickly foo\n// { match: '#Noun #Adverb [#Noun]', group: 0, tag: 'Verb', reason: 'quickly-foo' },\n//will secure our\n{\n match: 'will [#Adjective]',\n group: 0,\n tag: 'Verb',\n reason: 'will-adj'\n}, //he disguised the thing\n{\n match: '#Pronoun [#Adjective] #Determiner #Adjective? #Noun',\n group: 0,\n tag: 'Verb',\n reason: 'he-adj-the'\n}, //is eager to go\n{\n match: '#Copula [#Adjective to] #Verb',\n group: 0,\n tag: 'Verb',\n reason: 'adj-to'\n}, // open the door\n{\n match: '[open] #Determiner',\n group: 0,\n tag: 'Infinitive',\n reason: 'open-the'\n}, // compromises are possible\n{\n match: '[#PresentTense] (are|were|was) #Adjective',\n group: 0,\n tag: 'Plural',\n reason: 'compromises-are-possible'\n}, // would wade\n{\n match: \"#Modal [\".concat(verbs, \"]\"),\n group: 0,\n tag: 'Verb',\n reason: 'would-mark'\n}, {\n match: \"#Adverb [\".concat(verbs, \"]\"),\n group: 0,\n tag: 'Verb',\n reason: 'really-mark'\n}, //to mark\n{\n match: '(to|#Modal) [mark]',\n group: 0,\n tag: 'PresentTense',\n reason: 'to-mark'\n}, // wade smith\n{\n match: \"\".concat(verbs, \" #Person\"),\n tag: 'Person',\n reason: 'rob-smith'\n}, // wade m. Cooper\n{\n match: \"\".concat(verbs, \" #Acronym #ProperNoun\"),\n tag: 'Person',\n reason: 'rob-a-smith'\n}, // damn them\n{\n match: '[shit] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear1-verb'\n}, {\n match: '[damn] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear2-verb'\n}, {\n match: '[fuck] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear3-verb'\n}];\nvar _07Verbs = list$2;\n\nvar list$1 = [// ==== Region ====\n//West Norforlk\n{\n match: '(west|north|south|east|western|northern|southern|eastern)+ #Place',\n tag: 'Region',\n reason: 'west-norfolk'\n}, //some us-state acronyms (exlude: al, in, la, mo, hi, me, md, ok..)\n{\n match: '#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]',\n group: 0,\n tag: 'Region',\n reason: 'us-state'\n}, // portland oregon\n{\n match: 'portland [or]',\n group: 0,\n tag: 'Region',\n reason: 'portland-or'\n}, //Foo District\n{\n match: '#ProperNoun+ (district|region|province|county|prefecture|municipality|territory|burough|reservation)',\n tag: 'Region',\n reason: 'foo-district'\n}, //District of Foo\n{\n match: '(district|region|province|municipality|territory|burough|state) of #ProperNoun',\n tag: 'Region',\n reason: 'district-of-Foo'\n}, // in Foo California\n{\n match: 'in [#ProperNoun] #Place',\n group: 0,\n tag: 'Place',\n reason: 'propernoun-place'\n}, // ==== Address ====\n{\n match: '#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)',\n tag: 'Address',\n reason: 'address-st'\n} // in houston\n// { match: `in [${places}]`, group: 0, tag: 'Place', reason: 'in-paris' },\n// { match: `near [${places}]`, group: 0, tag: 'Place', reason: 'near-paris' },\n// { match: `at [${places}]`, group: 0, tag: 'Place', reason: 'at-paris' },\n// { match: `from [${places}]`, group: 0, tag: 'Place', reason: 'from-paris' },\n// { match: `to [${places}]`, group: 0, tag: 'Place', reason: 'to-paris' },\n// { match: `#Place [${places}]`, group: 0, tag: 'Place', reason: 'tokyo-paris' },\n// // houston texas\n// { match: `[${places}] #Place`, group: 0, tag: 'Place', reason: 'paris-france' },\n];\nvar _08Place = list$1;\n\nvar _09Org = [//John & Joe's\n{\n match: '#Noun (&|n) #Noun',\n tag: 'Organization',\n reason: 'Noun-&-Noun'\n}, // teachers union of Ontario\n{\n match: '#Organization of the? #ProperNoun',\n tag: 'Organization',\n reason: 'org-of-place',\n safe: true\n}, //walmart USA\n{\n match: '#Organization #Country',\n tag: 'Organization',\n reason: 'org-country'\n}, //organization\n{\n match: '#ProperNoun #Organization',\n tag: 'Organization',\n reason: 'titlecase-org'\n}, //FitBit Inc\n{\n match: '#ProperNoun (ltd|co|inc|dept|assn|bros)',\n tag: 'Organization',\n reason: 'org-abbrv'\n}, // the OCED\n{\n match: 'the [#Acronym]',\n group: 0,\n tag: 'Organization',\n reason: 'the-acronym',\n safe: true\n}, // global trade union\n{\n match: '(world|global|international|national|#Demonym) #Organization',\n tag: 'Organization',\n reason: 'global-org'\n}, // schools\n{\n match: '#Noun+ (public|private) school',\n tag: 'School',\n reason: 'noun-public-school'\n}];\n\nvar nouns = \"(\".concat(_ambig.personNoun.join('|'), \")\");\nvar months = \"(\".concat(_ambig.personMonth.join('|'), \")\");\nvar places = \"(\".concat(_ambig.personPlace.join('|'), \")\");\nvar list = [// ==== Honorific ====\n{\n match: '[(1st|2nd|first|second)] #Honorific',\n group: 0,\n tag: 'Honorific',\n reason: 'ordinal-honorific'\n}, {\n match: '[(private|general|major|corporal|lord|lady|secretary|premier)] #Honorific? #Person',\n group: 0,\n tag: 'Honorific',\n reason: 'ambg-honorifics'\n}, // ==== FirstNames ====\n//is foo Smith\n{\n match: '#Copula [(#Noun|#PresentTense)] #LastName',\n group: 0,\n tag: 'FirstName',\n reason: 'copula-noun-lastname'\n}, //pope francis\n{\n match: '(lady|queen|sister) #ProperNoun',\n tag: 'FemaleName',\n reason: 'lady-titlecase',\n safe: true\n}, {\n match: '(king|pope|father) #ProperNoun',\n tag: 'MaleName',\n reason: 'pope-titlecase',\n safe: true\n}, //ambiguous-but-common firstnames\n{\n match: '[(will|may|april|june|said|rob|wade|ray|rusty|drew|miles|jack|chuck|randy|jan|pat|cliff|bill)] #LastName',\n group: 0,\n tag: 'FirstName',\n reason: 'maybe-lastname'\n}, // ==== Nickname ====\n// Dwayne 'the rock' Johnson\n{\n match: '#FirstName [#Determiner #Noun] #LastName',\n group: 0,\n tag: 'NickName',\n reason: 'first-noun-last'\n}, //my buddy\n{\n match: '#Possessive [#FirstName]',\n group: 0,\n tag: 'Person',\n reason: 'possessive-name'\n}, {\n match: '#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun',\n tag: 'Person',\n reason: 'titlecase-acronym-titlecase',\n safe: true\n}, //ludwig van beethovan\n{\n match: '#Acronym #LastName',\n tag: 'Person',\n reason: 'acronym-latname',\n safe: true\n}, //jk rowling\n{\n match: '#Person (jr|sr|md)',\n tag: 'Person',\n reason: 'person-honorific'\n}, //peter II\n{\n match: '#Person #Person the? #RomanNumeral',\n tag: 'Person',\n reason: 'roman-numeral'\n}, //'Professor Fink', 'General McCarthy'\n{\n match: '#FirstName [/^[^aiurck]$/]',\n group: 0,\n tag: ['Acronym', 'Person'],\n reason: 'john-e'\n}, //Doctor john smith jr\n//general pearson\n{\n match: '#Honorific #Person',\n tag: 'Person',\n reason: 'honorific-person'\n}, //remove single 'mr'\n{\n match: '#Honorific #Acronym',\n tag: 'Person',\n reason: 'Honorific-TitleCase'\n}, //j.k Rowling\n{\n match: '#Noun van der? #Noun',\n tag: 'Person',\n reason: 'van der noun',\n safe: true\n}, //king of spain\n{\n match: '(king|queen|prince|saint|lady) of #Noun',\n tag: 'Person',\n reason: 'king-of-noun',\n safe: true\n}, //lady Florence\n{\n match: '(prince|lady) #Place',\n tag: 'Person',\n reason: 'lady-place'\n}, //saint Foo\n{\n match: '(king|queen|prince|saint) #ProperNoun',\n tag: 'Person',\n reason: 'saint-foo'\n}, //Foo U Ford\n{\n match: '[#ProperNoun] #Person',\n group: 0,\n tag: 'Person',\n reason: 'proper-person',\n safe: true\n}, // al sharpton\n{\n match: 'al (#Person|#ProperNoun)',\n tag: 'Person',\n reason: 'al-borlen',\n safe: true\n}, //ferdinand de almar\n{\n match: '#FirstName de #Noun',\n tag: 'Person',\n reason: 'bill-de-noun'\n}, //Osama bin Laden\n{\n match: '#FirstName (bin|al) #Noun',\n tag: 'Person',\n reason: 'bill-al-noun'\n}, //John L. Foo\n{\n match: '#FirstName #Acronym #ProperNoun',\n tag: 'Person',\n reason: 'bill-acronym-title'\n}, //Andrew Lloyd Webber\n{\n match: '#FirstName #FirstName #ProperNoun',\n tag: 'Person',\n reason: 'bill-firstname-title'\n}, //Mr Foo\n{\n match: '#Honorific #FirstName? #ProperNoun',\n tag: 'Person',\n reason: 'dr-john-Title'\n}, //peter the great\n{\n match: '#FirstName the #Adjective',\n tag: 'Person',\n reason: 'name-the-great'\n}, //very common-but-ambiguous lastnames\n{\n match: '#FirstName (green|white|brown|hall|young|king|hill|cook|gray|price)',\n tag: 'Person',\n reason: 'bill-green'\n}, // faith smith\n{\n match: \"\".concat(nouns, \" #Person\"),\n tag: 'Person',\n reason: 'ray-smith',\n safe: true\n}, // faith m. Smith\n{\n match: \"\".concat(nouns, \" #Acronym? #ProperNoun\"),\n tag: 'Person',\n reason: 'ray-a-smith',\n safe: true\n}, //give to april\n{\n match: \"#Infinitive #Determiner? #Adjective? #Noun? (to|for) [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'ambig-person'\n}, // remind june\n{\n match: \"#Infinitive [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'infinitive-person'\n}, // may waits for\n// { match: `[${months}] #PresentTense for`, group: 0, tag: 'Person', reason: 'ambig-active-for' },\n// may waits to\n// { match: `[${months}] #PresentTense to`, group: 0, tag: 'Person', reason: 'ambig-active-to' },\n// april will\n{\n match: \"[\".concat(months, \"] #Modal\"),\n group: 0,\n tag: 'Person',\n reason: 'ambig-modal'\n}, // may be\n{\n match: \"[may] be\",\n group: 0,\n tag: 'Verb',\n reason: 'may-be'\n}, // would april\n{\n match: \"#Modal [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'modal-ambig'\n}, // it is may\n{\n match: \"#Copula [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'is-may'\n}, // may is\n{\n match: \"[\".concat(months, \"] #Copula\"),\n group: 0,\n tag: 'Person',\n reason: 'may-is'\n}, // with april\n{\n match: \"that [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'that-month'\n}, // with april\n{\n match: \"with [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'with-month'\n}, // for april\n{\n match: \"for [\".concat(months, \"]\"),\n group: 0,\n tag: 'Person',\n reason: 'for-month'\n}, // this april\n{\n match: \"this [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'this-may'\n}, //maybe not 'this'\n// next april\n{\n match: \"next [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'next-may'\n}, // last april\n{\n match: \"last [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'last-may'\n}, // wednesday april\n{\n match: \"#Date [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: 'date-may'\n}, // may 5th\n{\n match: \"[\".concat(months, \"] the? #Value\"),\n group: 0,\n tag: 'Month',\n reason: 'may-5th'\n}, // 5th of may\n{\n match: \"#Value of [\".concat(months, \"]\"),\n group: 0,\n tag: 'Month',\n reason: '5th-of-may'\n}, // dick van dyke\n{\n match: '#ProperNoun (van|al|bin) #ProperNoun',\n tag: 'Person',\n reason: 'title-van-title',\n safe: true\n}, //jose de Sucre\n{\n match: '#ProperNoun (de|du) la? #ProperNoun',\n tag: 'Person',\n reason: 'title-de-title',\n safe: true\n}, //Jani K. Smith\n{\n match: '#Singular #Acronym #LastName',\n tag: '#Person',\n reason: 'title-acro-noun',\n safe: true\n}, //John Foo\n{\n match: '#FirstName (#Noun && #ProperNoun) #ProperNoun?',\n tag: 'Person',\n reason: 'firstname-titlecase'\n}, //Joe K. Sombrero\n{\n match: '#FirstName #Acronym #Noun',\n tag: 'Person',\n reason: 'n-acro-noun',\n safe: true\n}, //Anthony de Marco\n{\n match: '#FirstName [(de|di|du|van|von) #Person]',\n group: 0,\n tag: 'LastName',\n reason: 'de-firstname'\n}, // Paris Berelc\n{\n match: \"[\".concat(places, \"] (#ProperNoun && !#Place)\"),\n group: 0,\n tag: 'FirstName',\n reason: 'place-firstname'\n}];\nvar _10People = list;\n\nvar matches = [];\nmatches = matches.concat(_01Misc);\nmatches = matches.concat(_02Dates);\nmatches = matches.concat(_03Adjective);\nmatches = matches.concat(_04Noun);\nmatches = matches.concat(_05Adverb);\nmatches = matches.concat(_06Value);\nmatches = matches.concat(_07Verbs);\nmatches = matches.concat(_08Place);\nmatches = matches.concat(_09Org);\nmatches = matches.concat(_10People); // cache the easier conditions up-front\n\nvar cacheRequired = function cacheRequired(reg) {\n var needTags = [];\n var needWords = [];\n reg.forEach(function (obj) {\n if (obj.optional === true || obj.negative === true) {\n return;\n }\n\n if (obj.tag !== undefined) {\n needTags.push(obj.tag);\n }\n\n if (obj.word !== undefined) {\n needWords.push(obj.word);\n }\n });\n return {\n tags: _unique(needTags),\n words: _unique(needWords)\n };\n}; // for speed, enumerate (a|b|c) to three matches\n\n\nvar allLists = function allLists(m) {\n var more = [];\n var lists = m.reg.filter(function (r) {\n return r.fastOr !== undefined;\n });\n\n if (lists.length === 1) {\n var i = m.reg.findIndex(function (r) {\n return r.fastOr !== undefined;\n });\n Object.keys(m.reg[i].fastOr).forEach(function (w) {\n var newM = Object.assign({}, m);\n newM.reg = newM.reg.slice(0);\n newM.reg[i] = Object.assign({}, newM.reg[i]);\n newM.reg[i].word = w;\n delete newM.reg[i].operator;\n delete newM.reg[i].fastOr; // newM.reason += '-' + w\n\n more.push(newM);\n });\n }\n\n return more;\n}; // parse them\n\n\nvar all = [];\nmatches.forEach(function (m) {\n m.reg = matchSyntax(m.match);\n var enumerated = allLists(m);\n\n if (enumerated.length > 0) {\n all = all.concat(enumerated);\n } else {\n all.push(m); // console.log(m)\n }\n});\nall.forEach(function (m) {\n m.required = cacheRequired(m.reg);\n return m;\n}); // console.log(all.length)\n// console.log(all[all.length - 1])\n\nvar matches_1 = all;\n\nvar hasEvery = function hasEvery(chances) {\n if (chances.length === 0) {\n return [];\n }\n\n var obj = {};\n chances.forEach(function (arr) {\n arr = _unique(arr);\n\n for (var i = 0; i < arr.length; i++) {\n obj[arr[i]] = obj[arr[i]] || 0;\n obj[arr[i]] += 1;\n }\n });\n var res = Object.keys(obj);\n res = res.filter(function (k) {\n return obj[k] === chances.length;\n });\n res = res.map(function (num) {\n return Number(num);\n });\n return res;\n};\n\nvar runner = function runner(doc) {\n //find phrases to try for each match\n matches_1.forEach(function (m) {\n var allChances = [];\n m.required.words.forEach(function (w) {\n allChances.push(doc._cache.words[w] || []);\n });\n m.required.tags.forEach(function (tag) {\n allChances.push(doc._cache.tags[tag] || []);\n });\n var worthIt = hasEvery(allChances);\n\n if (worthIt.length === 0) {\n return;\n }\n\n var phrases = worthIt.map(function (index) {\n return doc.list[index];\n });\n var tryDoc = doc.buildFrom(phrases); // phrases getting tagged\n\n var match = tryDoc.match(m.reg, m.group);\n\n if (match.found) {\n if (m.safe === true) {\n match.tagSafe(m.tag, m.reason);\n } else {\n match.tag(m.tag, m.reason);\n }\n }\n });\n};\n\nvar runner_1 = runner; // console.log(hasEvery([[1, 2, 2, 3], [2, 3], []]))\n\n// misc: 40ms\n//sequence of match-tag statements to correct mis-tags\n\nvar corrections = function corrections(doc) {\n runner_1(doc);\n fixMisc(doc);\n return doc;\n};\n\nvar _04Correction = corrections;\n\n/** POS-tag all terms in this document */\n\nvar tagger = function tagger(doc) {\n var terms = doc.termList(); // check against any known-words\n\n doc = _01Init(doc, terms); // everything has gotta be something. ¯\\_(:/)_/¯\n\n doc = _02Fallbacks(doc, terms); // support \"didn't\" & \"spencer's\"\n\n doc = _03Contractions(doc); //set our cache, to speed things up\n\n doc.cache(); // wiggle-around the results, so they make more sense\n\n doc = _04Correction(doc); // remove our cache, as it's invalidated now\n\n doc.uncache(); // run any user-given tagger functions\n\n doc.world.taggers.forEach(function (fn) {\n fn(doc);\n });\n return doc;\n};\n\nvar _02Tagger = tagger;\n\nvar addMethod$a = function addMethod(Doc) {\n /** */\n var Abbreviations = /*#__PURE__*/function (_Doc) {\n _inherits(Abbreviations, _Doc);\n\n var _super = _createSuper(Abbreviations);\n\n function Abbreviations() {\n _classCallCheck(this, Abbreviations);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Abbreviations, [{\n key: \"stripPeriods\",\n value: function stripPeriods() {\n this.termList().forEach(function (t) {\n if (t.tags.Abbreviation === true && t.next) {\n t.post = t.post.replace(/^\\./, '');\n }\n\n var str = t.text.replace(/\\./, '');\n t.set(str);\n });\n return this;\n }\n }, {\n key: \"addPeriods\",\n value: function addPeriods() {\n this.termList().forEach(function (t) {\n t.post = t.post.replace(/^\\./, '');\n t.post = '.' + t.post;\n });\n return this;\n }\n }]);\n\n return Abbreviations;\n }(Doc);\n\n Abbreviations.prototype.unwrap = Abbreviations.prototype.stripPeriods;\n\n Doc.prototype.abbreviations = function (n) {\n var match = this.match('#Abbreviation');\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new Abbreviations(match.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Abbreviations = addMethod$a;\n\nvar hasPeriod = /\\./;\n\nvar addMethod$9 = function addMethod(Doc) {\n /** */\n var Acronyms = /*#__PURE__*/function (_Doc) {\n _inherits(Acronyms, _Doc);\n\n var _super = _createSuper(Acronyms);\n\n function Acronyms() {\n _classCallCheck(this, Acronyms);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Acronyms, [{\n key: \"stripPeriods\",\n value: function stripPeriods() {\n this.termList().forEach(function (t) {\n var str = t.text.replace(/\\./g, '');\n t.set(str);\n });\n return this;\n }\n }, {\n key: \"addPeriods\",\n value: function addPeriods() {\n this.termList().forEach(function (t) {\n var str = t.text.replace(/\\./g, '');\n str = str.split('').join('.'); // don't add a end-period if there's a sentence-end one\n\n if (hasPeriod.test(t.post) === false) {\n str += '.';\n }\n\n t.set(str);\n });\n return this;\n }\n }]);\n\n return Acronyms;\n }(Doc);\n\n Acronyms.prototype.unwrap = Acronyms.prototype.stripPeriods;\n Acronyms.prototype.strip = Acronyms.prototype.stripPeriods;\n\n Doc.prototype.acronyms = function (n) {\n var match = this.match('#Acronym');\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new Acronyms(match.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Acronyms = addMethod$9;\n\nvar addMethod$8 = function addMethod(Doc) {\n /** split into approximate sub-sentence phrases */\n Doc.prototype.clauses = function (n) {\n // an awkward way to disambiguate a comma use\n var commas = this[\"if\"]('@hasComma').notIf('@hasComma @hasComma') //fun, cool...\n .notIf('@hasComma . .? (and|or) .') //cool, and fun\n .notIf('(#City && @hasComma) #Country') //'toronto, canada'\n .notIf('(#WeekDay && @hasComma) #Date') //'tuesday, march 2nd'\n .notIf('(#Date && @hasComma) #Year') //'july 6, 1992'\n .notIf('@hasComma (too|also)$') //at end of sentence\n .match('@hasComma');\n var found = this.splitAfter(commas);\n var quotes = found.quotations();\n found = found.splitOn(quotes);\n var parentheses = found.parentheses();\n found = found.splitOn(parentheses); // it is cool and it is ..\n\n var conjunctions = found[\"if\"]('#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb').match('#Conjunction');\n found = found.splitBefore(conjunctions); // if it is this then that\n\n var condition = found[\"if\"]('if .{2,9} then .').match('then');\n found = found.splitBefore(condition); // misc clause partitions\n\n found = found.splitBefore('as well as .');\n found = found.splitBefore('such as .');\n found = found.splitBefore('in addition to .'); // semicolons, dashes\n\n found = found.splitAfter('@hasSemicolon');\n found = found.splitAfter('@hasDash'); // passive voice verb - '.. which was robbed is empty'\n // let passive = found.match('#Noun (which|that) (was|is) #Adverb? #PastTense #Adverb?')\n // if (passive.found) {\n // found = found.splitAfter(passive)\n // }\n // //which the boy robbed\n // passive = found.match('#Noun (which|that) the? #Noun+ #Adverb? #PastTense #Adverb?')\n // if (passive.found) {\n // found = found.splitAfter(passive)\n // }\n // does there appear to have relative/subordinate clause still?\n\n var tooLong = found.filter(function (d) {\n return d.wordCount() > 5 && d.match('#Verb+').length >= 2;\n });\n\n if (tooLong.found) {\n var m = tooLong.splitAfter('#Noun .* #Verb .* #Noun+');\n found = found.splitOn(m.eq(0));\n }\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Doc(found.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Clauses = addMethod$8;\n\nvar addMethod$7 = function addMethod(Doc) {\n /** */\n var Contractions = /*#__PURE__*/function (_Doc) {\n _inherits(Contractions, _Doc);\n\n var _super = _createSuper(Contractions);\n\n function Contractions(list, from, world) {\n var _this;\n\n _classCallCheck(this, Contractions);\n\n _this = _super.call(this, list, from, world);\n _this.contracted = null;\n return _this;\n }\n /** turn didn't into 'did not' */\n\n\n _createClass(Contractions, [{\n key: \"expand\",\n value: function expand() {\n this.list.forEach(function (p) {\n var terms = p.terms(); //change the case?\n\n var isTitlecase = terms[0].isTitleCase();\n terms.forEach(function (t, i) {\n //use the implicit text\n t.set(t.implicit || t.text);\n t.implicit = undefined; //add whitespace\n\n if (i < terms.length - 1 && t.post === '') {\n t.post += ' ';\n }\n }); //set titlecase\n\n if (isTitlecase) {\n terms[0].toTitleCase();\n }\n });\n return this;\n }\n }]);\n\n return Contractions;\n }(Doc); //find contractable, expanded-contractions\n // const findExpanded = r => {\n // let remain = r.not('#Contraction')\n // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)')\n // m.concat(remain.match('(they|we|you|i) have'))\n // m.concat(remain.match('i am'))\n // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not'))\n // return m\n // }\n\n\n Doc.prototype.contractions = function (n) {\n //find currently-contracted\n var found = this.match('@hasContraction+'); //(may want to split these up)\n //todo: split consecutive contractions\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Contractions(found.list, this, this.world);\n }; //aliases\n\n\n Doc.prototype.expanded = Doc.prototype.isExpanded;\n Doc.prototype.contracted = Doc.prototype.isContracted;\n return Doc;\n};\n\nvar Contractions = addMethod$7;\n\nvar addMethod$6 = function addMethod(Doc) {\n //pull it apart..\n var parse = function parse(doc) {\n var things = doc.splitAfter('@hasComma').splitOn('(and|or) not?').not('(and|or) not?');\n var beforeLast = doc.match('[.] (and|or)', 0);\n return {\n things: things,\n conjunction: doc.match('(and|or) not?'),\n beforeLast: beforeLast,\n hasOxford: beforeLast.has('@hasComma')\n };\n };\n /** cool, fun, and nice */\n\n\n var Lists = /*#__PURE__*/function (_Doc) {\n _inherits(Lists, _Doc);\n\n var _super = _createSuper(Lists);\n\n function Lists() {\n _classCallCheck(this, Lists);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Lists, [{\n key: \"conjunctions\",\n value:\n /** coordinating conjunction */\n function conjunctions() {\n return this.match('(and|or)');\n }\n /** split-up by list object */\n\n }, {\n key: \"parts\",\n value: function parts() {\n return this.splitAfter('@hasComma').splitOn('(and|or) not?');\n }\n /** remove the conjunction */\n\n }, {\n key: \"items\",\n value: function items() {\n return parse(this).things;\n }\n /** add a new unit to the list */\n\n }, {\n key: \"add\",\n value: function add(str) {\n this.forEach(function (p) {\n var beforeLast = parse(p).beforeLast;\n beforeLast.append(str); //add a comma to it\n\n beforeLast.termList(0).addPunctuation(',');\n });\n return this;\n }\n /** remove any matching unit from the list */\n\n }, {\n key: \"remove\",\n value: function remove(match) {\n return this.items()[\"if\"](match).remove();\n }\n /** return only lists that use a serial comma */\n\n }, {\n key: \"hasOxfordComma\",\n value: function hasOxfordComma() {\n return this.filter(function (doc) {\n return parse(doc).hasOxford;\n });\n }\n }, {\n key: \"addOxfordComma\",\n value: function addOxfordComma() {\n var items = this.items();\n var needsComma = items.eq(items.length - 2);\n\n if (needsComma.found && needsComma.has('@hasComma') === false) {\n needsComma.post(', ');\n }\n\n return this;\n }\n }, {\n key: \"removeOxfordComma\",\n value: function removeOxfordComma() {\n var items = this.items();\n var needsComma = items.eq(items.length - 2);\n\n if (needsComma.found && needsComma.has('@hasComma') === true) {\n needsComma.post(' ');\n }\n\n return this;\n }\n }]);\n\n return Lists;\n }(Doc); // aliases\n\n\n Lists.prototype.things = Lists.prototype.items;\n\n Doc.prototype.lists = function (n) {\n var m = this[\"if\"]('@hasComma+ .? (and|or) not? .'); // person-list\n\n var nounList = m.match('(#Noun|#Adjective|#Determiner|#Article)+ #Conjunction not? (#Article|#Determiner)? #Adjective? #Noun+')[\"if\"]('#Noun');\n var adjList = m.match('(#Adjective|#Adverb)+ #Conjunction not? #Adverb? #Adjective+');\n var verbList = m.match('(#Verb|#Adverb)+ #Conjunction not? #Adverb? #Verb+');\n var result = nounList.concat(adjList);\n result = result.concat(verbList);\n result = result[\"if\"]('@hasComma');\n\n if (typeof n === 'number') {\n result = m.get(n);\n }\n\n return new Lists(result.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Lists = addMethod$6;\n\nvar noPlural = '(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)'; //certain words can't be plural, like 'peace'\n\nvar hasPlural = function hasPlural(doc) {\n if (doc.has('#Plural') === true) {\n return true;\n } // these can't be plural\n\n\n if (doc.has(noPlural) === true) {\n return false;\n }\n\n return true;\n};\n\nvar hasPlural_1 = hasPlural;\n\nvar irregulars = {\n hour: 'an',\n heir: 'an',\n heirloom: 'an',\n honest: 'an',\n honour: 'an',\n honor: 'an',\n uber: 'an' //german u\n\n}; //pronounced letters of acronyms that get a 'an'\n\nvar an_acronyms = {\n a: true,\n e: true,\n f: true,\n h: true,\n i: true,\n l: true,\n m: true,\n n: true,\n o: true,\n r: true,\n s: true,\n x: true\n}; //'a' regexes\n\nvar a_regexs = [/^onc?e/i, //'wu' sound of 'o'\n/^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u'\n/^eul/i];\n\nvar makeArticle = function makeArticle(doc) {\n //no 'the john smith', but 'a london hotel'\n if (doc.has('#Person') || doc.has('#Place')) {\n return '';\n } //no a/an if it's plural\n\n\n if (doc.has('#Plural')) {\n return 'the';\n }\n\n var str = doc.text('normal').trim(); //explicit irregular forms\n\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str];\n } //spelled-out acronyms\n\n\n var firstLetter = str.substr(0, 1);\n\n if (doc.has('^@isAcronym') && an_acronyms.hasOwnProperty(firstLetter)) {\n return 'an';\n } //'a' regexes\n\n\n for (var i = 0; i < a_regexs.length; i++) {\n if (a_regexs[i].test(str)) {\n return 'a';\n }\n } //basic vowel-startings\n\n\n if (/^[aeiou]/i.test(str)) {\n return 'an';\n }\n\n return 'a';\n};\n\nvar getArticle = makeArticle;\n\n//similar to plural/singularize rules, but not the same\nvar isPlural$2 = [/(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /men$/i, /.tia$/i, /(m|l)ice$/i]; //similar to plural/singularize rules, but not the same\n\nvar isSingular = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i];\nvar _rules = {\n isSingular: isSingular,\n isPlural: isPlural$2\n};\n\nvar endS = /s$/; // double-check this term, if it is not plural, or singular.\n// (this is a partial copy of ./tagger/fallbacks/plural)\n// fallback plural if it ends in an 's'.\n\nvar isPlural$1 = function isPlural(str) {\n // isSingular suffix rules\n if (_rules.isSingular.find(function (reg) {\n return reg.test(str);\n })) {\n return false;\n } // does it end in an s?\n\n\n if (endS.test(str) === true) {\n return true;\n } // is it a plural like 'fungi'?\n\n\n if (_rules.isPlural.find(function (reg) {\n return reg.test(str);\n })) {\n return true;\n }\n\n return null;\n};\n\nvar isPlural_1$1 = isPlural$1;\n\nvar exceptions = {\n he: 'his',\n she: 'hers',\n they: 'theirs',\n we: 'ours',\n i: 'mine',\n you: 'yours',\n her: 'hers',\n their: 'theirs',\n our: 'ours',\n my: 'mine',\n your: 'yours'\n}; // turn \"David\" to \"David's\"\n\nvar toPossessive = function toPossessive(doc) {\n var str = doc.text('text').trim(); // exceptions\n\n if (exceptions.hasOwnProperty(str)) {\n doc.replaceWith(exceptions[str], true);\n doc.tag('Possessive', 'toPossessive');\n return;\n } // flanders'\n\n\n if (/s$/.test(str)) {\n str += \"'\";\n doc.replaceWith(str, true);\n doc.tag('Possessive', 'toPossessive');\n return;\n } //normal form:\n\n\n str += \"'s\";\n doc.replaceWith(str, true);\n doc.tag('Possessive', 'toPossessive');\n return;\n};\n\nvar toPossessive_1 = toPossessive;\n\n// .nouns() supports some noun-phrase-ish groupings\n// pull these apart, if necessary\nvar parse$1 = function parse(doc) {\n var res = {\n main: doc\n }; //support 'mayor of chicago' as one noun-phrase\n\n if (doc.has('#Noun (of|by|for) .')) {\n var m = doc.splitAfter('[#Noun+]', 0);\n res.main = m.eq(0);\n res.post = m.eq(1);\n }\n\n return res;\n};\n\nvar parse_1 = parse$1;\n\nvar methods$2 = {\n /** overload the original json with noun information */\n json: function json(options) {\n var n = null;\n\n if (typeof options === 'number') {\n n = options;\n options = null;\n }\n\n options = options || {\n text: true,\n normal: true,\n trim: true,\n terms: true\n };\n var res = [];\n this.forEach(function (doc) {\n var json = doc.json(options)[0];\n json.article = getArticle(doc);\n res.push(json);\n });\n\n if (n !== null) {\n return res[n];\n }\n\n return res;\n },\n\n /** get all adjectives describing this noun*/\n adjectives: function adjectives() {\n var list = this.lookAhead('^(that|who|which)? (was|is|will)? be? #Adverb? #Adjective+');\n list = list.concat(this.lookBehind('#Adjective+ #Adverb?$'));\n list = list.match('#Adjective');\n return list.sort('index');\n },\n isPlural: function isPlural() {\n return this[\"if\"]('#Plural'); //assume tagger has run?\n },\n hasPlural: function hasPlural() {\n return this.filter(function (d) {\n return hasPlural_1(d);\n });\n },\n toPlural: function toPlural(agree) {\n var _this = this;\n\n var toPlural = this.world.transforms.toPlural;\n this.forEach(function (doc) {\n if (doc.has('#Plural') || hasPlural_1(doc) === false) {\n return;\n } // double-check it isn't an un-tagged plural\n\n\n var main = parse_1(doc).main;\n var str = main.text('reduced');\n\n if (!main.has('#Singular') && isPlural_1$1(str) === true) {\n return;\n }\n\n str = toPlural(str, _this.world);\n main.replace(str).tag('#Plural'); // 'an apple' -> 'apples'\n\n if (agree) {\n var an = main.lookBefore('(an|a) #Adjective?$').not('#Adjective');\n\n if (an.found === true) {\n an.remove();\n }\n }\n });\n return this;\n },\n toSingular: function toSingular(agree) {\n var _this2 = this;\n\n var toSingular = this.world.transforms.toSingular;\n this.forEach(function (doc) {\n if (doc.has('^#Singular+$') || hasPlural_1(doc) === false) {\n return;\n } // double-check it isn't an un-tagged plural\n\n\n var main = parse_1(doc).main;\n var str = main.text('reduced');\n\n if (!main.has('#Plural') && isPlural_1$1(str) !== true) {\n return;\n }\n\n str = toSingular(str, _this2.world);\n main.replace(str).tag('#Singular'); // add an article\n\n if (agree) {\n // 'apples' -> 'an apple'\n var start = doc;\n var adj = doc.lookBefore('#Adjective');\n\n if (adj.found) {\n start = adj;\n }\n\n var article = getArticle(start);\n start.insertBefore(article);\n }\n });\n return this;\n },\n toPossessive: function toPossessive() {\n this.forEach(function (d) {\n toPossessive_1(d);\n });\n return this;\n }\n};\nvar methods_1 = methods$2;\n\nvar addMethod$5 = function addMethod(Doc) {\n /** */\n var Nouns = /*#__PURE__*/function (_Doc) {\n _inherits(Nouns, _Doc);\n\n var _super = _createSuper(Nouns);\n\n function Nouns() {\n _classCallCheck(this, Nouns);\n\n return _super.apply(this, arguments);\n }\n\n return Nouns;\n }(Doc); // add-in our methods\n\n\n Object.assign(Nouns.prototype, methods_1);\n\n Doc.prototype.nouns = function (n) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // don't split 'paris, france'\n var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas\n\n var m = this.not(keep).splitAfter('@hasComma'); // combine them back together\n\n m = m.concat(keep); // don't combine over scare-quotes\n\n var quotes = m.quotations();\n\n if (quotes.found) {\n m = m.splitOn(quotes.eq(0));\n }\n\n m = m.match('#Noun+ (of|by)? the? #Noun+?'); //nouns that we don't want in these results, for weird reasons\n\n if (opts.keep_anaphora !== true) {\n m = m.not('#Pronoun');\n m = m.not('(there|these)');\n m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays\n // //allow possessives like \"spencer's\", but not generic ones like,\n\n m = m.not('(my|our|your|their|her|his)');\n }\n\n m = m.not('(of|for|by|the)$');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return new Nouns(m.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Nouns = addMethod$5;\n\nvar open = /\\(/;\nvar close = /\\)/;\n\nvar addMethod$4 = function addMethod(Doc) {\n /** anything between (these things) */\n var Parentheses = /*#__PURE__*/function (_Doc) {\n _inherits(Parentheses, _Doc);\n\n var _super = _createSuper(Parentheses);\n\n function Parentheses() {\n _classCallCheck(this, Parentheses);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Parentheses, [{\n key: \"unwrap\",\n value:\n /** remove the parentheses characters */\n function unwrap() {\n this.list.forEach(function (p) {\n var first = p.terms(0);\n first.pre = first.pre.replace(open, '');\n var last = p.lastTerm();\n last.post = last.post.replace(close, '');\n });\n return this;\n }\n }]);\n\n return Parentheses;\n }(Doc);\n\n Doc.prototype.parentheses = function (n) {\n var list = [];\n this.list.forEach(function (p) {\n var terms = p.terms(); //look for opening brackets\n\n for (var i = 0; i < terms.length; i += 1) {\n var t = terms[i];\n\n if (open.test(t.pre)) {\n //look for the closing bracket..\n for (var o = i; o < terms.length; o += 1) {\n if (close.test(terms[o].post)) {\n var len = o - i + 1;\n list.push(p.buildFrom(t.id, len));\n i = o;\n break;\n }\n }\n }\n }\n }); //support nth result\n\n if (typeof n === 'number') {\n if (list[n]) {\n list = [list[n]];\n } else {\n list = [];\n }\n\n return new Parentheses(list, this, this.world);\n }\n\n return new Parentheses(list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Parentheses = addMethod$4;\n\nvar addMethod$3 = function addMethod(Doc) {\n /** */\n var Possessives = /*#__PURE__*/function (_Doc) {\n _inherits(Possessives, _Doc);\n\n var _super = _createSuper(Possessives);\n\n function Possessives(list, from, world) {\n var _this;\n\n _classCallCheck(this, Possessives);\n\n _this = _super.call(this, list, from, world);\n _this.contracted = null;\n return _this;\n }\n /** turn didn't into 'did not' */\n\n\n _createClass(Possessives, [{\n key: \"strip\",\n value: function strip() {\n this.list.forEach(function (p) {\n var terms = p.terms();\n terms.forEach(function (t) {\n var str = t.text.replace(/'s$/, '');\n t.set(str || t.text);\n });\n });\n return this;\n }\n }]);\n\n return Possessives;\n }(Doc); //find contractable, expanded-contractions\n // const findExpanded = r => {\n // let remain = r.not('#Contraction')\n // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)')\n // m.concat(remain.match('(they|we|you|i) have'))\n // m.concat(remain.match('i am'))\n // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not'))\n // return m\n // }\n\n\n Doc.prototype.possessives = function (n) {\n //find currently-contracted\n var found = this.match('#Noun+? #Possessive'); //todo: split consecutive contractions\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Possessives(found.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar Possessives = addMethod$3;\n\nvar pairs = {\n \"\\\"\": \"\\\"\",\n // 'StraightDoubleQuotes'\n \"\\uFF02\": \"\\uFF02\",\n // 'StraightDoubleQuotesWide'\n \"'\": \"'\",\n // 'StraightSingleQuotes'\n \"\\u201C\": \"\\u201D\",\n // 'CommaDoubleQuotes'\n \"\\u2018\": \"\\u2019\",\n // 'CommaSingleQuotes'\n \"\\u201F\": \"\\u201D\",\n // 'CurlyDoubleQuotesReversed'\n \"\\u201B\": \"\\u2019\",\n // 'CurlySingleQuotesReversed'\n \"\\u201E\": \"\\u201D\",\n // 'LowCurlyDoubleQuotes'\n \"\\u2E42\": \"\\u201D\",\n // 'LowCurlyDoubleQuotesReversed'\n \"\\u201A\": \"\\u2019\",\n // 'LowCurlySingleQuotes'\n \"\\xAB\": \"\\xBB\",\n // 'AngleDoubleQuotes'\n \"\\u2039\": \"\\u203A\",\n // 'AngleSingleQuotes'\n // Prime 'non quotation'\n \"\\u2035\": \"\\u2032\",\n // 'PrimeSingleQuotes'\n \"\\u2036\": \"\\u2033\",\n // 'PrimeDoubleQuotes'\n \"\\u2037\": \"\\u2034\",\n // 'PrimeTripleQuotes'\n // Prime 'quotation' variation\n \"\\u301D\": \"\\u301E\",\n // 'PrimeDoubleQuotes'\n \"`\": \"\\xB4\",\n // 'PrimeSingleQuotes'\n \"\\u301F\": \"\\u301E\" // 'LowPrimeDoubleQuotesReversed'\n\n};\nvar hasOpen = RegExp('(' + Object.keys(pairs).join('|') + ')');\n\nvar addMethod$2 = function addMethod(Doc) {\n /** \"these things\" */\n var Quotations = /*#__PURE__*/function (_Doc) {\n _inherits(Quotations, _Doc);\n\n var _super = _createSuper(Quotations);\n\n function Quotations() {\n _classCallCheck(this, Quotations);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Quotations, [{\n key: \"unwrap\",\n value:\n /** remove the quote characters */\n function unwrap() {\n return this;\n }\n }]);\n\n return Quotations;\n }(Doc);\n\n Doc.prototype.quotations = function (n) {\n var list = [];\n this.list.forEach(function (p) {\n var terms = p.terms(); //look for opening quotes\n\n for (var i = 0; i < terms.length; i += 1) {\n var t = terms[i];\n\n if (hasOpen.test(t.pre)) {\n var _char = (t.pre.match(hasOpen) || [])[0];\n var want = pairs[_char]; // if (!want) {\n // console.warn('missing quote char ' + char)\n // }\n //look for the closing bracket..\n\n for (var o = i; o < terms.length; o += 1) {\n if (terms[o].post.indexOf(want) !== -1) {\n var len = o - i + 1;\n list.push(p.buildFrom(t.id, len));\n i = o;\n break;\n }\n }\n }\n }\n }); //support nth result\n\n if (typeof n === 'number') {\n if (list[n]) {\n list = [list[n]];\n } else {\n list = [];\n }\n\n return new Quotations(list, this, this.world);\n }\n\n return new Quotations(list, this, this.world);\n }; // alias\n\n\n Doc.prototype.quotes = Doc.prototype.quotations;\n return Doc;\n};\n\nvar Quotations = addMethod$2;\n\n// walked => walk - turn a verb into it's root form\nvar toInfinitive = function toInfinitive(parsed, world) {\n var verb = parsed.verb; // console.log(parsed)\n // verb.debug()\n //1. if it's already infinitive\n\n var str = verb.text('reduced');\n\n if (verb.has('#Infinitive')) {\n return str;\n } // 2. world transform does the heavy-lifting\n\n\n var tense = null;\n\n if (verb.has('#PastTense')) {\n tense = 'PastTense';\n } else if (verb.has('#Gerund')) {\n tense = 'Gerund';\n } else if (verb.has('#PresentTense')) {\n tense = 'PresentTense';\n } else if (verb.has('#Participle')) {\n tense = 'Participle';\n } else if (verb.has('#Actor')) {\n tense = 'Actor';\n }\n\n return world.transforms.toInfinitive(str, world, tense);\n};\n\nvar toInfinitive_1 = toInfinitive;\n\n// spencer walks -> singular\n// we walk -> plural\n// the most-recent noun-phrase, before this verb.\nvar findNoun = function findNoun(vb) {\n var noun = vb.lookBehind('#Noun+').last();\n return noun;\n}; //sometimes you can tell if a verb is plural/singular, just by the verb\n// i am / we were\n// othertimes you need its subject 'we walk' vs 'i walk'\n\n\nvar isPlural = function isPlural(parsed) {\n var vb = parsed.verb;\n\n if (vb.has('(are|were|does)') || parsed.auxiliary.has('(are|were|does)')) {\n return true;\n }\n\n if (vb.has('(is|am|do|was)') || parsed.auxiliary.has('(is|am|do|was)')) {\n return false;\n } //consider its prior noun\n\n\n var noun = findNoun(vb);\n\n if (noun.has('(we|they|you)')) {\n return true;\n }\n\n if (noun.has('#Plural')) {\n return true;\n }\n\n if (noun.has('#Singular')) {\n return false;\n }\n\n return null;\n};\n\nvar isPlural_1 = isPlural;\n\n// #Copula : is -> 'is not'\n// #PastTense : walked -> did not walk\n// #PresentTense : walks -> does not walk\n// #Gerund : walking: -> not walking\n// #Infinitive : walk -> do not walk\n\nvar toNegative = function toNegative(parsed, world) {\n var vb = parsed.verb; // if it's already negative...\n\n if (parsed.negative.found) {\n return;\n } // would walk -> would not walk\n\n\n if (parsed.auxiliary.found) {\n parsed.auxiliary.eq(0).append('not'); // 'would not have' ➔ 'would not have'\n\n if (parsed.auxiliary.has('#Modal have not')) {\n parsed.auxiliary.replace('have not', 'not have');\n }\n\n return;\n } // is walking -> is not walking\n\n\n if (vb.has('(#Copula|will|has|had|do)')) {\n vb.append('not');\n return;\n } // walked -> did not walk\n\n\n if (vb.has('#PastTense')) {\n var inf = toInfinitive_1(parsed, world);\n vb.replaceWith(inf, true);\n vb.prepend('did not');\n return;\n } // walks -> does not walk\n\n\n if (vb.has('#PresentTense')) {\n var _inf = toInfinitive_1(parsed, world);\n\n vb.replaceWith(_inf, true);\n\n if (isPlural_1(parsed)) {\n vb.prepend('do not');\n } else {\n vb.prepend('does not');\n }\n\n return;\n } //walking -> not walking\n\n\n if (vb.has('#Gerund')) {\n var _inf2 = toInfinitive_1(parsed, world);\n\n vb.replaceWith(_inf2, true);\n vb.prepend('not');\n return;\n } //fallback 1: walk -> does not walk\n\n\n if (isPlural_1(parsed)) {\n vb.prepend('does not');\n return;\n } //fallback 2: walk -> do not walk\n\n\n vb.prepend('do not');\n return;\n};\n\nvar toNegative_1 = toNegative;\n\n// who/what is doing this verb?\n// get the prior verb most-likely doing this action\n// (it can not-exist - 'close the door')\nvar getSubject = function getSubject(vb) {\n var behind = vb.lookBehind();\n var lastNoun = behind.nouns(null, {\n keep_anaphora: true\n }).last(); // support 'that' and 'this'\n\n if (!lastNoun.found) {\n lastNoun = behind.match('(that|this|each)').last();\n lastNoun = lastNoun.tag('#Noun').nouns();\n }\n\n return lastNoun;\n};\n\nvar getSubject_1 = getSubject;\n\nvar parseVerb = function parseVerb(vb) {\n var parsed = {\n adverb: vb.match('#Adverb+'),\n // 'really'\n negative: vb.match('#Negative'),\n // 'not'\n auxiliary: vb.match('#Auxiliary+').not('(#Negative|#Adverb)'),\n // 'will' of 'will go'\n particle: vb.match('#Particle'),\n // 'up' of 'pull up'\n verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)'),\n original: vb,\n subject: getSubject_1(vb)\n }; // fallback, if no verb found\n\n if (!parsed.verb.found) {\n // blank-everything\n Object.keys(parsed).forEach(function (k) {\n parsed[k] = parsed[k].not('.');\n }); // it's all the verb\n\n parsed.verb = vb;\n return parsed;\n } //\n\n\n if (parsed.adverb && parsed.adverb.found) {\n var match = parsed.adverb.text('reduced') + '$';\n\n if (vb.has(match)) {\n parsed.adverbAfter = true;\n }\n }\n\n return parsed;\n};\n\nvar parse = parseVerb;\n\n/** too many special cases for is/was/will be*/\n\nvar toBe = function toBe(parsed) {\n var isI = false;\n var plural = isPlural_1(parsed);\n var isNegative = parsed.negative.found; //account for 'i is' -> 'i am' irregular\n // if (vb.parent && vb.parent.has('i #Adverb? #Copula')) {\n // isI = true;\n // }\n // 'i look', not 'i looks'\n\n if (parsed.verb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) {\n isI = true;\n }\n\n var obj = {\n PastTense: 'was',\n PresentTense: 'is',\n FutureTense: 'will be',\n Infinitive: 'is',\n Gerund: 'being',\n Actor: '',\n PerfectTense: 'been',\n Pluperfect: 'been'\n }; //\"i is\" -> \"i am\"\n\n if (isI === true) {\n obj.PresentTense = 'am';\n obj.Infinitive = 'am';\n }\n\n if (plural) {\n obj.PastTense = 'were';\n obj.PresentTense = 'are';\n obj.Infinitive = 'are';\n }\n\n if (isNegative) {\n obj.PastTense += ' not';\n obj.PresentTense += ' not';\n obj.FutureTense = 'will not be';\n obj.Infinitive += ' not';\n obj.PerfectTense = 'not ' + obj.PerfectTense;\n obj.Pluperfect = 'not ' + obj.Pluperfect;\n obj.Gerund = 'not ' + obj.Gerund;\n }\n\n return obj;\n};\n\nvar toBe_1 = toBe;\n\n// 'may/could/should' -> 'may/could/should have'\nvar doModal = function doModal(parsed) {\n var str = parsed.verb.text();\n var res = {\n PastTense: str + ' have',\n PresentTense: str,\n FutureTense: str,\n Infinitive: str // Gerund: ,\n // Actor: '',\n // PerfectTense: '',\n // Pluperfect: '',\n\n };\n return res;\n};\n\nvar doModal_1 = doModal;\n\nvar conjugate = function conjugate(parsed, world) {\n var verb = parsed.verb; //special handling of 'is', 'will be', etc.\n\n if (verb.has('#Copula') || verb.out('normal') === 'be' && parsed.auxiliary.has('will')) {\n return toBe_1(parsed);\n } // special handling of 'are walking'\n\n\n if (parsed.auxiliary.has('are') && verb.has('#Gerund')) {\n var og = parsed.original.clone();\n var past = og.clone().replace('are', 'were');\n var fut = og.clone().replace('are', 'will be');\n\n var _infinitive = toInfinitive_1(parsed, world);\n\n var res = {\n PastTense: past.text(),\n PresentTense: og.text(),\n FutureTense: fut.text(),\n Infinitive: _infinitive\n };\n return res;\n } // special handling of 'he could.'\n\n\n if (verb.has('#Modal')) {\n return doModal_1(parsed);\n } // dont conjugate imperative form - 'close the door'\n // if (parsed.auxiliary.has('do')) {\n // let str = parsed.original.text()\n // let res = {\n // PastTense: str,\n // PresentTense: str,\n // FutureTense: str,\n // Infinitive: str,\n // }\n // return res\n // }\n\n\n var hasHyphen = parsed.verb.termList(0).hasHyphen();\n var infinitive = toInfinitive_1(parsed, world);\n\n if (!infinitive) {\n return {};\n }\n\n var forms = world.transforms.conjugate(infinitive, world);\n forms.Infinitive = infinitive; // add particle to phrasal verbs ('fall over')\n\n if (parsed.particle.found) {\n var particle = parsed.particle.text();\n var space = hasHyphen === true ? '-' : ' ';\n Object.keys(forms).forEach(function (k) {\n return forms[k] += space + particle;\n });\n } //put the adverb at the end?\n // if (parsed.adverb.found) {\n // let adverb = parsed.adverb.text()\n // let space = hasHyphen === true ? '-' : ' '\n // if (parsed.adverbAfter === true) {\n // Object.keys(forms).forEach(k => (forms[k] += space + adverb))\n // } else {\n // Object.keys(forms).forEach(k => (forms[k] = adverb + space + forms[k]))\n // }\n // }\n //apply negative\n\n\n var isNegative = parsed.negative.found;\n\n if (isNegative) {\n forms.PastTense = 'did not ' + forms.Infinitive;\n forms.PresentTense = 'does not ' + forms.Infinitive;\n forms.Gerund = 'not ' + forms.Gerund;\n } //future Tense is pretty straightforward\n\n\n if (!forms.FutureTense) {\n if (isNegative) {\n forms.FutureTense = 'will not ' + forms.Infinitive;\n } else {\n forms.FutureTense = 'will ' + forms.Infinitive;\n }\n }\n\n if (isNegative) {\n forms.Infinitive = 'not ' + forms.Infinitive;\n }\n\n return forms;\n};\n\nvar conjugate_1 = conjugate;\n\n// if something is 'modal-ish' we are forced to use past-participle\n// ('i could drove' is wrong)\n\nvar useParticiple$1 = function useParticiple(parsed) {\n if (parsed.auxiliary.has('(could|should|would|may|can|must)')) {\n return true;\n }\n\n if (parsed.auxiliary.has('am .+? being')) {\n return true;\n }\n\n if (parsed.auxiliary.has('had .+? been')) {\n return true;\n }\n\n return false;\n}; // conjugate 'drive' ➔ 'have driven'\n\n\nvar toParticiple = function toParticiple(parsed, world) {\n //is it already a participle?\n if (parsed.auxiliary.has('(have|had)') && parsed.verb.has('#Participle')) {\n return;\n } // try to swap the main verb to its participle form\n\n\n var obj = conjugate_1(parsed, world);\n var str = obj.Participle || obj.PastTense;\n\n if (str) {\n parsed.verb.replaceWith(str, false);\n } // 'am being driven' ➔ 'have been driven'\n\n\n if (parsed.auxiliary.has('am .+? being')) {\n parsed.auxiliary.remove('am');\n parsed.auxiliary.replace('being', 'have been');\n } // add a 'have'\n\n\n if (!parsed.auxiliary.has('have')) {\n parsed.auxiliary.append('have');\n } // tag it as a participle\n\n\n parsed.verb.tag('Participle', 'toParticiple'); // turn 'i can swim' to -> 'i could swim'\n\n parsed.auxiliary.replace('can', 'could'); //'must be' ➔ 'must have been'\n\n parsed.auxiliary.replace('be have', 'have been'); //'not have' ➔ 'have not'\n\n parsed.auxiliary.replace('not have', 'have not'); // ensure all new words are tagged right\n\n parsed.auxiliary.tag('Auxiliary');\n};\n\nvar participle = {\n useParticiple: useParticiple$1,\n toParticiple: toParticiple\n};\n\nvar _toParticiple = participle.toParticiple,\n useParticiple = participle.useParticiple; // remove any tense-information in auxiliary verbs\n\nvar makeNeutral = function makeNeutral(parsed) {\n //remove tense-info from auxiliaries\n parsed.auxiliary.remove('(will|are|am|being)');\n parsed.auxiliary.remove('(did|does)');\n parsed.auxiliary.remove('(had|has|have)'); //our conjugation includes the 'not' and the phrasal-verb particle\n\n parsed.particle.remove();\n parsed.negative.remove();\n return parsed;\n};\n\nvar methods$1 = {\n /** overload the original json with verb information */\n json: function json(options) {\n var _this = this;\n\n var n = null;\n\n if (typeof options === 'number') {\n n = options;\n options = null;\n }\n\n options = options || {\n text: true,\n normal: true,\n trim: true,\n terms: true\n };\n var res = [];\n this.forEach(function (p) {\n var json = p.json(options)[0];\n var parsed = parse(p);\n json.parts = {};\n Object.keys(parsed).forEach(function (k) {\n if (parsed[k] && parsed[k].isA === 'Doc') {\n json.parts[k] = parsed[k].text('normal');\n } else {\n json.parts[k] = parsed[k];\n }\n });\n json.isNegative = p.has('#Negative');\n json.conjugations = conjugate_1(parsed, _this.world);\n res.push(json);\n });\n\n if (n !== null) {\n return res[n];\n }\n\n return res;\n },\n\n /** grab the adverbs describing these verbs */\n adverbs: function adverbs() {\n var list = []; // look at internal adverbs\n\n this.forEach(function (vb) {\n var advb = parse(vb).adverb;\n\n if (advb.found) {\n list = list.concat(advb.list);\n }\n }); // look for leading adverbs\n\n var m = this.lookBehind('#Adverb+$');\n\n if (m.found) {\n list = m.list.concat(list);\n } // look for trailing adverbs\n\n\n m = this.lookAhead('^#Adverb+');\n\n if (m.found) {\n list = list.concat(m.list);\n }\n\n return this.buildFrom(list);\n },\n /// Verb Inflection\n\n /**return verbs like 'we walk' and not 'spencer walks' */\n isPlural: function isPlural() {\n var _this2 = this;\n\n var list = [];\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n if (isPlural_1(parsed, _this2.world) === true) {\n list.push(vb.list[0]);\n }\n });\n return this.buildFrom(list);\n },\n\n /** return verbs like 'spencer walks' and not 'we walk' */\n isSingular: function isSingular() {\n var _this3 = this;\n\n var list = [];\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n if (isPlural_1(parsed, _this3.world) === false) {\n list.push(vb.list[0]);\n }\n });\n return this.buildFrom(list);\n },\n /// Conjugation\n\n /** return all forms of this verb */\n conjugate: function conjugate() {\n var _this4 = this;\n\n var result = [];\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var forms = conjugate_1(parsed, _this4.world);\n\n result.push(forms);\n });\n return result;\n },\n\n /** walk ➔ walked*/\n toPastTense: function toPastTense() {\n var _this5 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb); // should we support 'would swim' ➔ 'would have swam'\n\n if (useParticiple(parsed)) {\n _toParticiple(parsed, _this5.world);\n\n return;\n }\n\n if (vb.has('#Imperative')) {\n return;\n } // don't conjugate 'to be'\n\n\n if (vb.has('be') && vb.lookBehind('to$').found) {\n return;\n } // handle 'is raining' -> 'was raining'\n\n\n if (parsed.verb.has('#Gerund') && parsed.auxiliary.has('(is|will|was)')) {\n vb.replace('is', 'was');\n return;\n }\n\n var str = conjugate_1(parsed, _this5.world).PastTense;\n\n if (str) {\n parsed = makeNeutral(parsed);\n parsed.verb.replaceWith(str, false); // vb.tag('PastTense')\n }\n });\n return this;\n },\n\n /** walk ➔ walks */\n toPresentTense: function toPresentTense() {\n var _this6 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var obj = conjugate_1(parsed, _this6.world);\n\n var str = obj.PresentTense; // 'i look', not 'i looks'\n\n if (vb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) {\n str = obj.Infinitive;\n }\n\n if (str) {\n //awkward support for present-participle form\n // -- should we support 'have been swimming' ➔ 'am swimming'\n if (parsed.auxiliary.has('(have|had) been')) {\n parsed.auxiliary.replace('(have|had) been', 'am being');\n\n if (obj.Particle) {\n str = obj.Particle || obj.PastTense;\n }\n\n return;\n }\n\n parsed.verb.replaceWith(str, false);\n parsed.verb.tag('PresentTense');\n parsed = makeNeutral(parsed); // avoid 'he would walks'\n\n parsed.auxiliary.remove('#Modal');\n }\n });\n return this;\n },\n\n /** walk ➔ will walk*/\n toFutureTense: function toFutureTense() {\n var _this7 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb); // 'i should drive' is already future-enough\n\n if (useParticiple(parsed)) {\n return;\n }\n\n var str = conjugate_1(parsed, _this7.world).FutureTense;\n\n if (str) {\n parsed = makeNeutral(parsed); // avoid 'he would will go'\n\n parsed.auxiliary.remove('#Modal');\n parsed.verb.replaceWith(str, false);\n parsed.verb.tag('FutureTense');\n }\n });\n return this;\n },\n\n /** walks ➔ walk */\n toInfinitive: function toInfinitive() {\n var _this8 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var str = conjugate_1(parsed, _this8.world).Infinitive;\n\n if (str) {\n vb.replaceWith(str, false);\n vb.tag('Infinitive');\n }\n });\n return this;\n },\n\n /** walk ➔ walking */\n toGerund: function toGerund() {\n var _this9 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n\n var str = conjugate_1(parsed, _this9.world).Gerund;\n\n if (str) {\n vb.replaceWith(str, false);\n vb.tag('Gerund');\n }\n });\n return this;\n },\n\n /** drive ➔ driven - naked past-participle if it exists, otherwise past-tense */\n toParticiple: function toParticiple() {\n var _this10 = this;\n\n this.forEach(function (vb) {\n var parsed = parse(vb);\n var noAux = !parsed.auxiliary.found;\n\n _toParticiple(parsed, _this10.world); // dirty trick to ensure our new auxiliary is found\n\n\n if (noAux) {\n parsed.verb.prepend(parsed.auxiliary.text());\n parsed.auxiliary.remove();\n }\n });\n return this;\n },\n /// Negation\n\n /** return only verbs with 'not'*/\n isNegative: function isNegative() {\n return this[\"if\"]('#Negative');\n },\n\n /** return only verbs without 'not'*/\n isPositive: function isPositive() {\n return this.ifNo('#Negative');\n },\n\n /** return only commands - verbs in imperative mood */\n isImperative: function isImperative() {\n return this[\"if\"]('#Imperative');\n },\n\n /** add a 'not' to these verbs */\n toNegative: function toNegative() {\n var _this11 = this;\n\n this.list.forEach(function (p) {\n var doc = _this11.buildFrom([p]);\n\n var parsed = parse(doc);\n\n toNegative_1(parsed, doc.world);\n });\n return this;\n },\n\n /** remove 'not' from these verbs */\n toPositive: function toPositive() {\n var m = this.match('do not #Verb');\n\n if (m.found) {\n m.remove('do not');\n }\n\n return this.remove('#Negative');\n },\n\n /** who, or what is doing this action? */\n subject: function subject() {\n var list = [];\n this.forEach(function (p) {\n var found = getSubject_1(p);\n\n if (found.list[0]) {\n list.push(found.list[0]);\n }\n });\n return this.buildFrom(list);\n }\n};\n\nvar addMethod$1 = function addMethod(Doc) {\n /** */\n var Verbs = /*#__PURE__*/function (_Doc) {\n _inherits(Verbs, _Doc);\n\n var _super = _createSuper(Verbs);\n\n function Verbs() {\n _classCallCheck(this, Verbs);\n\n return _super.apply(this, arguments);\n }\n\n return Verbs;\n }(Doc); // add-in our methods\n\n\n Object.assign(Verbs.prototype, methods$1); // aliases\n\n Verbs.prototype.negate = Verbs.prototype.toNegative;\n\n Doc.prototype.verbs = function (n) {\n var match = this.match('(#Adverb|#Auxiliary|#Verb|#Negative|#Particle)+'); // try to ignore leading and trailing adverbs\n\n match = match.not('^#Adverb+');\n match = match.not('#Adverb+$'); // handle commas:\n // don't split 'really, really'\n\n var keep = match.match('(#Adverb && @hasComma) #Adverb'); // // but split the other commas\n\n var m = match.not(keep).splitAfter('@hasComma'); // i was shocked looking at...\n\n var gerund = m.match('#PastTense #Gerund');\n\n if (!gerund.has('(been|am|#Auxiliary) #Gerund')) {\n m = m.splitBefore(gerund.match('#Gerund'));\n } // combine them back together\n\n\n m = m.concat(keep);\n m.sort('index'); //handle slashes?\n //ensure there's actually a verb\n\n m = m[\"if\"]('#Verb'); // the reason he will is ...\n\n if (m.has('(is|was)$')) {\n m = m.splitBefore('(is|was)$');\n } //ensure it's not two verbs\n\n\n if (m.has('#PresentTense #Adverb #PresentTense')) {\n m = m.splitBefore('#Adverb #PresentTense');\n } //grab (n)th result\n\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n var vb = new Verbs(m.list, this, this.world);\n return vb;\n };\n\n return Doc;\n};\n\nvar Verbs = addMethod$1;\n\nvar addMethod = function addMethod(Doc) {\n /** */\n var People = /*#__PURE__*/function (_Doc) {\n _inherits(People, _Doc);\n\n var _super = _createSuper(People);\n\n function People() {\n _classCallCheck(this, People);\n\n return _super.apply(this, arguments);\n }\n\n return People;\n }(Doc);\n\n Doc.prototype.people = function (n) {\n var match = this.splitAfter('@hasComma');\n match = match.match('#Person+'); //grab (n)th result\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new People(match.list, this, this.world);\n };\n\n return Doc;\n};\n\nvar People = addMethod;\n\nvar subclass = [Abbreviations, Acronyms, Clauses, Contractions, Lists, Nouns, Parentheses, Possessives, Quotations, Verbs, People];\n\nvar extend = function extend(Doc) {\n // add basic methods\n Object.keys(_simple).forEach(function (k) {\n return Doc.prototype[k] = _simple[k];\n }); // add subclassed methods\n\n subclass.forEach(function (addFn) {\n return addFn(Doc);\n });\n return Doc;\n};\n\nvar Subset = extend;\n\nvar methods = {\n misc: methods$4,\n selections: _simple\n};\n/** a parsed text object */\n\nvar Doc = /*#__PURE__*/function () {\n function Doc(list, from, world) {\n var _this = this;\n\n _classCallCheck(this, Doc);\n\n this.list = list; // this.reasons = []\n //quiet these properties in console.logs\n\n Object.defineProperty(this, 'from', {\n enumerable: false,\n value: from,\n writable: true\n }); //borrow some missing data from parent\n\n if (world === undefined && from !== undefined) {\n world = from.world;\n } //'world' getter\n\n\n Object.defineProperty(this, 'world', {\n enumerable: false,\n value: world,\n writable: true\n }); //fast-scans for our data\n\n Object.defineProperty(this, '_cache', {\n enumerable: false,\n writable: true,\n value: {}\n }); //'found' getter\n\n Object.defineProperty(this, 'found', {\n get: function get() {\n return _this.list.length > 0;\n }\n }); //'length' getter\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return _this.list.length;\n }\n }); // this is way easier than .constructor.name...\n\n Object.defineProperty(this, 'isA', {\n get: function get() {\n return 'Doc';\n }\n });\n }\n /** run part-of-speech tagger on all results*/\n\n\n _createClass(Doc, [{\n key: \"tagger\",\n value: function tagger() {\n return _02Tagger(this);\n }\n /** pool is stored on phrase objects */\n\n }, {\n key: \"pool\",\n value: function pool() {\n if (this.list.length > 0) {\n return this.list[0].pool;\n }\n\n return this.all().list[0].pool;\n }\n }]);\n\n return Doc;\n}();\n/** create a new Document object */\n\n\nDoc.prototype.buildFrom = function (list) {\n list = list.map(function (p) {\n return p.clone(true);\n }); // new this.constructor()\n\n var doc = new Doc(list, this, this.world);\n return doc;\n};\n/** create a new Document from plaintext. */\n\n\nDoc.prototype.fromText = function (str) {\n var list = _01Tokenizer(str, this.world, this.pool());\n return this.buildFrom(list);\n};\n\nObject.assign(Doc.prototype, methods.misc);\nObject.assign(Doc.prototype, methods.selections); //add sub-classes\n\nSubset(Doc); //aliases\n\nvar aliases = {\n untag: 'unTag',\n and: 'match',\n notIf: 'ifNo',\n only: 'if',\n onlyIf: 'if'\n};\nObject.keys(aliases).forEach(function (k) {\n return Doc.prototype[k] = Doc.prototype[aliases[k]];\n});\nvar Doc_1 = Doc;\n\nvar smallTagger = function smallTagger(doc) {\n var terms = doc.termList();\n _01Lexicon(terms, doc.world); // run any user-given tagger functions\n\n doc.world.taggers.forEach(function (fn) {\n fn(doc);\n });\n return doc;\n};\n\nvar tiny = smallTagger;\n\nfunction instance(worldInstance) {\n //blast-out our word-lists, just once\n var world = worldInstance;\n /** parse and tag text into a compromise object */\n\n var nlp = function nlp() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var lexicon = arguments.length > 1 ? arguments[1] : undefined;\n\n if (lexicon) {\n world.addWords(lexicon);\n }\n\n var list = _01Tokenizer(text, world);\n var doc = new Doc_1(list, null, world);\n doc.tagger();\n return doc;\n };\n /** parse text into a compromise object, without running POS-tagging */\n\n\n nlp.tokenize = function () {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var lexicon = arguments.length > 1 ? arguments[1] : undefined;\n var w = world;\n\n if (lexicon) {\n w = w.clone();\n w.words = {};\n w.addWords(lexicon);\n }\n\n var list = _01Tokenizer(text, w);\n var doc = new Doc_1(list, null, w);\n\n if (lexicon || doc.world.taggers.length > 0) {\n tiny(doc);\n }\n\n return doc;\n };\n /** mix in a compromise-plugin */\n\n\n nlp.extend = function (fn) {\n fn(Doc_1, world, this, Phrase_1, Term_1, Pool_1);\n return this;\n };\n /** create a compromise Doc object from .json() results */\n\n\n nlp.fromJSON = function (json) {\n var list = fromJSON_1(json, world);\n return new Doc_1(list, null, world);\n };\n /** make a deep-copy of the library state */\n\n\n nlp.clone = function () {\n return instance(world.clone());\n };\n /** log our decision-making for debugging */\n\n\n nlp.verbose = function () {\n var bool = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n world.verbose(bool);\n return this;\n };\n /** grab currently-used World object */\n\n\n nlp.world = function () {\n return world;\n };\n /** pre-parse any match statements */\n\n\n nlp.parseMatch = function (str, opts) {\n return matchSyntax(str, opts);\n };\n /** current version of the library */\n\n\n nlp.version = _version; // aliases\n\n nlp[\"import\"] = nlp.load;\n nlp.plugin = nlp.extend;\n return nlp;\n}\n\nvar src = instance(new World_1());\n\nexport default src;\n","const fromTemplate = function (doc) {\n let tmpl = doc.template('short description')\n if (tmpl) {\n let json = tmpl.json() || {}\n return json.description || ''\n }\n return null\n}\nmodule.exports = fromTemplate\n","const preProcess = function (doc) {\n doc.parentheses().remove()\n return doc\n}\nmodule.exports = preProcess\n","const cleanUp = function (s) {\n // 'an actor and was a politician'\n s.remove('and #Copula .*')\n return s\n}\n\n// founded in 1952 as the flagship ..\nconst findPivot = function (s) {\n let m = s.matchOne('#Copula+ (a|an|the|any|one) of?')\n if (!m.found) {\n m = s.matchOne('#Copula+')\n }\n if (!m.found) {\n m = s.matchOne('refers to (a|an|the|any)? of?')\n }\n if (!m.found) {\n m = s.matchOne('(constitutes|describes) (a|an|the|any)? of?')\n }\n if (!m.found) {\n return null\n }\n let f = s.splitOn(m)\n let verb = f.eq(1)\n let article = verb.match(`(a|an|the|any)? of?`)\n verb.remove(`(a|an|the|any)? of?`)\n return {\n before: f.eq(0),\n verb: f.eq(1),\n article: article,\n after: cleanUp(f.eq(2))\n }\n}\nmodule.exports = findPivot\n","const byClause = function (s) {\n // 'an actor and also a politician'\n s.remove('and (also|eventually) (a|an|the|#Possessive) .*')\n // 'an actor who was a politician'\n s.remove('!of (who|that|which) #Adverb? (#Copula|form|comprise|forms|comprises) .*')\n // past-tense verbs 'located in spain'\n s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*')\n //\n s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*')\n\n return s\n}\nmodule.exports = byClause\n","const safeCuts = function (s) {\n // 'in hamilton, Canada'\n if (s.has('(#Place && @hasComma) #Country+$')) {\n s.remove('#Country+$')\n }\n // 'which spans the '\n if (s.has('#Noun (that|which|who) #PresentTense the .*')) {\n s.remove(' that #PresentTense the .*')\n }\n // 'owned by the ...'\n if (s.has('#Noun #PastTense by the .*')) {\n s.remove('#PastTense by the .*')\n }\n // 'an american actress'\n s.remove('#Demonym')\n // professional hockey player\n s.remove('(professional|former)')\n\n //event-templates\n s.remove('and? held annually .*')\n s.remove('taking place each .*')\n\n // ordinal templates - the fifth fastest ..\n s.remove('^one of (the|many|several|#Value)+')\n s.remove('^(a|an|the)? #Ordinal? #Superlative')\n s.remove('^(a|an|the)? #Ordinal? most #Adjective')\n\n //\n s.remove('born in .*')\n s.remove('born #Date+ in? #Place+?')\n s.remove('(first|initially|originally)? (located|founded|started|based|formed) in .*')\n s.remove('(which|who|that) (is|was) .*')\n s.remove('^the name of')\n\n return s\n}\nmodule.exports = safeCuts\n","const isIndependent = function (c) {\n if (c.has('^(and|the|which|who|whom|also|a|an|the)')) {\n return true\n }\n // 'part of abu dabi'\n if (c.has('^(west|north|south|east|part) of')) {\n return true\n }\n // 'written by .'\n if (c.has('^#PastTense by .')) {\n return true\n }\n // 'sometimes called ..'\n if (c.has('^(occasionally|sometimes|frequently)')) {\n return true\n }\n // 'such as ..'\n if (c.has('^such as')) {\n return true\n }\n // 'featuring gold feathers ..'\n if (c.has('^(including|featuring|depicting)')) {\n return true\n }\n return false\n}\n\nconst hardCuts = function (s) {\n // .. in san fransisco\n if (s.has('#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$')) {\n s.remove('(located|based) in #Place+$')\n } else if (\n s.has(\n '(#Noun|#Value) (in|on) the #Adjective? (region|province|district|coast|city) of #Place+$'\n )\n ) {\n s.remove('(in|on) the #Adjective? (region|province|district|coast|city) of #Place+$')\n } else if (s.has('(#Noun|#Value) in #Place+$')) {\n s.remove('in #Place+$')\n } else {\n s.remove('and? part of #Place+$')\n s.remove('and? near #Place+$')\n }\n\n // by clause\n let clauses = s.clauses()\n if (clauses.length > 1) {\n let first = clauses.eq(0)\n let second = clauses.eq(1)\n //can we just choose the first clause?\n if (isIndependent(second)) {\n s = clauses.eq(0)\n } else if (second.has('^(#PastTense)') && first.has('(#Noun|#Value)$')) {\n // 'produced by...'\n s = clauses.eq(0)\n } else if (second.has('^(#Gerund)') && first.has('#Noun$')) {\n // 'featuring a ...'\n s = clauses.eq(0)\n } else {\n // can we remove the last clause, atleast?\n let last = clauses.last()\n if (isIndependent(last)) {\n clauses.list.pop()\n s = clauses.join()\n }\n }\n }\n\n //.. writen by sandro leonardo\n if (s.has('(#Noun|and) #PastTense by')) {\n s.remove('#PastTense by .*')\n }\n //\n s.remove('and? designed to .*')\n s.remove('and? owned by .*')\n s.remove('and? consisting of .*')\n // , which collapsed\n if (s.has('@hasComma (which|who) #Verb')) {\n s.remove('(which|who) .*')\n }\n // , then\n // if (s.has('@hasComma (then)')) {\n // s.remove('(which|who) .*')\n // }\n return s\n}\nmodule.exports = hardCuts\n","const lastTry = function (s) {\n s.remove('(small|large|minor|major)')\n s.remove('(extinct|retired|annual|biweekly|monthly|daily)')\n s.remove('(female|male)')\n s.remove('(private|independent|official|unofficial|officially)')\n s.remove('(southern|northern|eastern|western|northeastern|northwestern)')\n\n //\n s.remove('^(family|clade|genus|species|order) of')\n return s\n}\nmodule.exports = lastTry\n","//check text is appropriate length\nconst isGood = function (doc, options) {\n if (doc && typeof doc.text === 'function') {\n let text = doc.text()\n if (text && text.length > options.min && text.length < options.max) {\n return true\n }\n }\n return false\n}\nmodule.exports = isGood\n","const nlp = require('compromise')\nconst preProcess = require('./00-preProcess')\nconst findPivot = require('./01-pivot')\nconst byClause = require('./02-byClause')\nconst safeCut = require('./03-safeCuts')\nconst hardCut = require('./04-hardCuts')\nconst lastTry = require('./05-lastTry')\nconst isGood = require('./_isGood')\n\nconst post = function (s) {\n s.remove('^(and|or|but)')\n s.remove('(and|or|but)$')\n s.post('') // remove trailing comma\n return s.text()\n}\n\n// let count = 0\nconst doSentence = function (doc, options) {\n let sentence = doc.sentence(0)\n if (!sentence) {\n return ''\n }\n let txt = sentence.text()\n let s = nlp(txt)\n preProcess(s)\n\n let pivot = findPivot(s)\n // if we can't pivot it properly, don't bother\n if (!pivot || !pivot.verb || !pivot.verb.found) {\n return ''\n }\n let after = pivot.after\n if (options.article && pivot.article && pivot.article.found) {\n after.prepend(pivot.article.text())\n }\n // maybe it's good already\n if (isGood(after, options)) {\n return post(after)\n }\n // parse major chunks\n after = byClause(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // perform some modifications\n after = safeCut(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // really give it a go\n after = hardCut(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // atleast we tried\n after = lastTry(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // console.log(after.text())\n // count += 1\n // console.log(count)\n // console.log(after.match('#PastTense').text())\n // console.log(after.text())\n // console.log('\\n')\n return ''\n}\nmodule.exports = doSentence\n","const bad = [\n 'living',\n 'births',\n 'former',\n 'deceased',\n 'missing',\n 'with',\n 'descent',\n 'award',\n 'winners',\n 'nominees',\n 'alumni',\n 'other'\n].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst good = ['male', 'female'].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst like = ['male', 'female', 'century'].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst dislike = ['people', 'place', 'from', 'in', 'people from'].map(\n (str) => new RegExp(`\\\\b${str}\\\\b`),\n 'i'\n)\n\nmodule.exports = {\n good: good,\n bad: bad,\n like: like,\n dislike: dislike\n}\n","const { like, dislike, good, bad } = require('./regs')\nconst hasYear = /[0-9]{4}/\nconst isPlural = /s$/\n\nconst fromCategory = function (doc) {\n let cats = doc.categories()\n\n // try to focus on the best ones, first\n let tmp = cats.filter((cat) => {\n return good.find((reg) => reg.test(cat))\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n\n // remove bad ones\n cats = cats.filter((cat) => {\n if (bad.find((reg) => reg.test(cat))) {\n return false\n }\n if (hasYear.test(cat)) {\n return false\n }\n return true\n })\n\n if (cats.length === 0) {\n return ''\n }\n // look at sorting by preferences\n tmp = cats.filter((cat) => {\n return like.find((reg) => reg.test(cat))\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n // remove disliked ones\n tmp = cats.filter((cat) => {\n // not a plural ending\n if (isPlural.test(cat) === false) {\n return false\n }\n // just one word\n if (cat.slice(' ').length === 1) {\n return false\n }\n return dislike.find((reg) => reg.test(cat)) === undefined\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n\n // sort them by most words\n cats = cats.sort((a, b) => {\n let aWords = a.split(' ').length\n let bWords = b.split(' ').length\n if (aWords > bWords) {\n return -1\n } else if (aWords < bWords) {\n return 1\n }\n return 0\n })\n // console.log(cats)\n\n return cats[0]\n}\nmodule.exports = fromCategory\n","const nlp = require('compromise')\nconst titleCase = (str) => {\n return str.charAt(0).toUpperCase() + str.substr(1)\n}\n\nconst useAn = function (str) {\n const a_regexs = [\n /^onc?e/i, //'wu' sound of 'o'\n /^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u'\n /^eul/i\n ]\n for (let i = 0; i < a_regexs.length; i++) {\n if (a_regexs[i].test(str)) {\n return false\n }\n }\n //basic vowel-startings\n if (/^[aeiou]/i.test(str)) {\n return true\n }\n return false\n}\n\n// 'American songwriters' to 'an American songwriter'\nconst changeCat = function (cat, options) {\n let c = nlp(cat)\n c.nouns().toSingular()\n // add article to the front\n if (options.article) {\n let article = 'A'\n // let noun = c.nouns(0)\n if (useAn(cat) === true) {\n // console.log(c.nouns(0))\n // article = c.nouns(0).json({ terms: false })[0].article || article\n article = 'An'\n }\n let first = c.terms(0)\n if (first.has('#ProperNoun') === false) {\n first.toLowerCase()\n }\n c.prepend(article)\n }\n // remove any parentheses\n c.parentheses().remove()\n return c.text()\n}\nmodule.exports = changeCat\n","const chooseCat = require('./01-choose')\nconst change = require('./02-change')\n\nconst byCategory = function (doc, options) {\n let cat = chooseCat(doc, options)\n if (!cat) {\n return ''\n }\n return change(cat, options)\n}\nmodule.exports = byCategory\n","const nlp = require('compromise')\nconst fromTemplate = require('./template')\nconst fromSentence = require('./sentence')\nconst fromCategory = require('./category')\n\nconst defaults = {\n article: true,\n template: true,\n sentence: true,\n category: true,\n max: 80,\n min: 3\n}\n\nconst seemsGood = function (txt, options) {\n return txt && txt.length > 5 && txt.length < options.max\n}\n\nconst plugin = function (models) {\n // add a new method to main class\n models.Doc.prototype.summary = function (options) {\n let doc = this\n options = options || {}\n options = Object.assign({}, defaults, options)\n\n // generate from {{short description}} template\n let txt = ''\n if (options.template) {\n txt = fromTemplate(doc, options)\n if (seemsGood(txt, options)) {\n return txt.trim()\n }\n }\n // generate from first-sentence\n if (options.sentence) {\n txt = fromSentence(doc, options)\n if (seemsGood(txt, options)) {\n return txt.trim()\n }\n }\n if (options.category) {\n return fromCategory(doc, options)\n }\n return ''\n }\n\n // should we use 'it', 'he', 'they'...\n models.Doc.prototype.article = function () {\n let txt = ''\n // prefer the 2nd sentence\n if (this.sentence(1)) {\n txt = this.sentence(1).text()\n } else {\n txt = this.sentence(0).text()\n }\n let doc = nlp(txt)\n let found = doc.match('(#Pronoun|#Article)').eq(0).text().toLowerCase()\n return found || 'it'\n }\n\n // was event in past? is person dead?\n models.Doc.prototype.tense = function () {\n let txt = this.sentence().text()\n let doc = nlp(txt)\n let copula = doc.match('#Copula+').first()\n if (copula.has('was')) {\n return 'Past'\n }\n let vb = doc.verbs(0)\n if (vb.has('#PastTense')) {\n return 'Past'\n }\n if (doc.has('will #Adverb? be') || doc.has('(a|an) (upcoming|planned)')) {\n return 'Future'\n }\n return 'Present'\n }\n}\nmodule.exports = plugin\n"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","protoProps","staticProps","_inherits","subClass","superClass","create","value","_setPrototypeOf","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","p","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","call","e","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","_createSuper","Derived","hasNativeReflectConstruct","_createSuperInternal","Super","result","NewTarget","arguments","apply","chars","split","makeId","str","text","Math","floor","random","_id","compact","a","b","c","d","f","g","h","I","j","k","l","m","n","q","r","s","t","u","v","w","x","y","z","unicode","keys","forEach","killUnicode","join","unicode_1","periodAcronym","oneLetterAcronym$1","noPeriodAcronym","lowerCaseAcronym","isAcronym$2","isAcronym","test","isAcronym_1$1","hasSlash$1","clean","toLowerCase","trim","original","replace","clean_1","reduced","reduce","startings","endings","hasSlash","hasApostrophe","hasAcronym","minusNumber","shortYear","parseTerm","pre","post","found","after","parsed","word","alias","parse$2","createCommonjsModule","fn","module","exports","_01Case","titleCase","upperCase","toUpperCase","toTitleCase","isUpperCase","isTitleCase","_02Punctuation$1","startQuote","endQuote","hasPost","punct","indexOf","hasPre","hasQuote","hasQuotation","hasComma","hasPeriod","hasExclamation","hasQuestionMark","hasEllipses","hasSemicolon","hasHyphen","hyphen","hasDash","hasContraction","implicit","addPunctuation","editDistance","strA","strB","aLength","bLength","limit","abs","matrix","_i","a_index","b_index","cost","min","_i2","shouldUpdate","fuzzyMatch","minLength","undefined","steps","max","relative","similarity","_fuzzy","wrapMatch","doesMatch","reg","index","id","anything","start","end","hasOwnProperty","soft","root","fuzzy","score","tag","tags","method","regex","fastOr","choices","operator","every","some","negative","_doesMatch","boring","doesMatch_1","isAcronym_1","isImplicit","isKnown","setRoot","world","transform","transforms","Plural","toSingular","Verb","Negative","Infinitive","tense","PastTense","Gerund","PresentTense","Participle","Actor","toInfinitive","_03Misc","hasSpace$1","textOut","options","showPre","showPost","before","normal","titlecase","ProperNoun","Acronym","lowercase","acronyms","whitespace","last","punctuation","abbreviations","Abbreviation","_04Text","boringTags","Auxiliary","Possessive","rankTags","term","tagSet","sort","lineage","isA","_bestTag","jsonDefault","offset","bestTag","json$1","json","assign","_05Json$1","methods$8","isClientSide","window","document","padEnd","width","toString","logTag","reason","console","log","logUntag","isArray$3","isArray","arr","titleCase$4","charAt","substr","fns$1","addTag","tagset","isVerbose","down","unTag","notA","addTags","add","lowerCase","titleCase$3","unTag$1","untagAll","unTag_1$1","canBe$2","canBe","enemies","canBe_1$1","tag_1","tagSafe$1","tagSafe","unTag_1","canBe_1","tag$1","Term","String","prev","next","set","clone","Term_1","terms","cache","pool","get","error","push","clone$1","isShallow","_this","buildFrom","newTerms","map","lastTerm","hasId","wantId","_terms","lastId","concat","wordCount","filter","fullSentence","len","_01Utils$1","trimEnd","text$1","isFirst","isLast","isFull","txt","_02Text","_03Change","endOfSentence","combinePost","match","addWhitespace$1","addWhitespace","beforeTerms","newTerm","stitchIn$1","stitchIn","lastBefore","lastNew","afterId","afterTerm","beforeId","unique$5","unique","list","appendPhrase","newPhrase","doc","toStretch","docs","parents","parent","shouldChange","append","hasSpace","main","unique$4","joinPhrase","starterId","prepend","shrinkAll","deleteLength","phrase","find","deletePhrase","_delete$1","append_1","prepend_1","_delete","replace$1","firstLength","tmp","splitOn","findIndex","slice","_04Insert","res","_05Json","lookAhead","regs","getAfter","all","lookBehind","getBefore","_06Lookahead","methods$7","failFast$1","failFast","optional","_02FailFast","_matchLogic","getGreedy","state","endReg","start_i","phrase_length","count","greedyTo","nextReg","isEndGreedy","greedy","tmpReg","doOrBlock","skipN","block","wasFound","cr","w_index","extra","foundBlock","keepGoing","doAndBlock","longest","allDidMatch","allWords","tryTerm","getGroup","term_index","name","groups","groupId","termId","group","tryHere","hasGroup","previousGroup","named","haveNeeds","remain","skipto","skipNum","_g","_skipNum","_g2","startAt","nextRegMatched","nextTerm","_g3","foundNeg","_03TryMatch","postProcess$1","postProcess","matches","atEnd","_ref","_04PostProcess","bySlashes","byParentheses","byWord","isBlock","isReg","cleanUp","parseBlocks","_final","_01ParseBlocks","hasMinMax","andSign","captureName","RegExp","titleCase$2","stripStart","stripEnd","stripBoth","parseToken","groupType","exec","Number","_02ParseToken","nameGroups","tokens","convert","current","token","doFastOrMode","shouldPack","oneOf","opts","_03PostProcess","isArray$2","byArray","blocks","fromDoc","ids","idBlocks","addOptions","syntax","input","matchSyntax","idLookup","blocklist","_loop","_t","foundAll","idLookup_1","matchAll","matchOne","_res","_res2","_01MatchAll","notMatch","ts","not$1","match_1","justOne","has","not","_this2","canBe$1","_this3","results","previous","can","Phrase","aliases$1","Phrase_1","Pool","words","remove","merge","stats","Pool_1","linkTerms","_linkTerms","initSplit","hasSomething","isAcronym$1","hasEllipse","newLine","hasLetter","startWhitespace","naiive_split","lines","isSentence","abbrevs","lastWord","splitSentences","sentences","chunks","splits","ws","_01Sentences","wordlike","isBoundary","naiiveSplit","isSlash","notWord","reg2","combineSlashes","splitHyphens","hyphens","whichDash","isArray$1","splitWords","carry","_02Words","fromText","phrases","_01Tokenizer","fromJSON","fromJSON_1","_version","entity","nouns$1","Noun","Singular","Person","FirstName","MaleName","FemaleName","LastName","NickName","Honorific","Place","Country","City","Region","Address","Organization","SportsTeam","School","Company","Uncountable","Pronoun","Activity","Unit","Demonym","verbs$1","Imperative","FutureTense","Copula","Modal","PerfectTense","Pluperfect","PhrasalVerb","Particle","values","Value","Ordinal","Cardinal","Fraction","RomanNumeral","TextValue","NumericValue","Money","Percent","misc$1","Adjective","Comparable","Comparative","Superlative","NumberRange","Adverb","Date","Month","WeekDay","Timezone","Time","Determiner","Conjunction","Preposition","QuestionWord","Currency","Expression","Url","PhoneNumber","HashTag","AtMention","Emoji","Emoticon","Email","Condition","colorMap","addColors","color","_color","unique$3","inferIsA","_isA","unique$2","inferNotA","_notA","inferLineage","_lineage","validate","inferTags","inference","addIn","build","_data","seq","cache$1","toAlphaCode","_o","fromCharCode","fromAlphaCode","_e","charCodeAt","encoding","symbols","nodes","symCount","syms","indexFromRef","toArray","_s","unpack","unpack_1$1","unpack_1$1$1","_o2","Array","efrtUnpack_min","misc","g8","vh1","q1","q2","q3","q4","her","his","their","themselves","your","our","my","its","fancy","lex","TextOrdinal","plural","toPlural","conj","conjugate","adjectives","hasCompound","addWords","wordsObj","multi","buildOut","lexicon","unpack_1","addIrregulars","nouns","irregulars","verbs","inf","forms","addIrregulars_1","plurals","addendum","alga","alumna","alumnus","analysis","antenna","appendix","avocado","axis","bacillus","barracks","beau","bus","cactus","chateau","child","circus","clothes","corpus","criterion","curriculum","database","deer","diagnosis","echo","embargo","epoch","foot","formula","fungus","genus","goose","halo","hippopotamus","larva","leaf","libretto","loaf","man","memorandum","modulus","mosquito","mouse","nebula","nucleus","octopus","opus","ovum","ox","parenthesis","person","phenomenon","prognosis","quiz","radius","referendum","rodeo","sex","shoe","sombrero","stimulus","stomach","syllabus","synopsis","tableau","thesis","thief","tooth","tornado","tuxedo","vertebra","mapping$1","prt","perf","pst","fut","pres","pluperf","conjugations","act","ache","age","aim","arise","babysit","ban","be","beat","become","begin","being","bend","bet","bind","bite","bleed","blow","boil","brake","breed","bring","broadcast","budget","burn","burst","buy","choose","cling","come","compete","creep","cut","deal","develop","die","dig","dive","draw","dream","drink","drive","drop","eat","edit","egg","fall","feed","feel","fight","flee","fling","fly","forbid","forget","forgive","free","freeze","give","go","grow","guide","hang","have","hear","hide","hit","hold","hurt","ice","imply","is","keep","kneel","know","lay","lead","leap","leave","lend","lie","light","loose","lose","make","mean","meet","miss","patrol","pay","prove","puke","put","quit","read","ride","reside","ring","rise","rub","run","say","seat","see","seek","sell","send","sew","shake","shave","shed","shine","shoot","show","shut","sing","sink","sit","ski","slay","sleep","slide","smash","sneak","speak","speed","spend","spill","spin","spit","spread","spring","stand","steal","stick","sting","stink","stream","strew","strike","suit","sware","swear","sweep","swim","swing","take","teach","tear","tell","think","thrive","tie","undergo","understand","upset","wait","wake","wear","weave","wed","weep","win","wind","withdraw","wring","write","full","conjugations_1","endsWith$1","repl","pr","pa","gr","ar","suffixes$1","posMap","doTransform","pos","checkSuffix","_01Suffixes","hasY","generic","_02Generic","conjugate$2","conjugate_1$1","do_rules$1","dont_rules$1","irregulars$5","nice","late","hard","inner","outer","far","worse","bad","good","big","large","transforms$2","to_superlative","toSuperlative","do_rules","dont_rules","irregulars$4","grey","gray","green","yellow","red","well","sad","transforms$1","to_comparative","toComparative","fns","conjugate$1","sup","comp","adjectives$2","suffixes","_rules$2","addE","trySuffix","pluralize","_rules$1","invertObj","invert","toSingular_1","rules","to","_transform","guessVerb","_guess","guessTense","three","two","one","toInfinitive$1","irregs","rule","toInfinitive_1$1","irregulars$3","_isVerbose","World","verbose","bool","wordObj","cleaned","addConjugations","addPlurals","taggers","compounds","postProcessors","JSON","parse","stringify","w2","World_1","_01Utils","from","addParent","reverse","doShallow","wordcount","_02Accessors","first","eq","firstTerms","firstTerm","lastTerms","termList","num","getGroups","allGroups","_groups$j","getOneName","_loop2","sentence","cacheRequired$1","cacheRequired","needTags","needWords","_cache","_cacheRequired","_failFast","_03Match","ifNo","lookAfter","lookBefore","befores","hasAfter","hasBefore","tagTerms","safe","tagList","_setTag","why","_04Tag","detachParent","sub","_this4","_this5","_05Loops","tokenize","buildTree","val","more","rest","fastLookup","everyTerm","_lookup","_06Lookup","isObject","lookup","isObj","byVal","lookUp","uncache","_07Cache","titleCase$1","replaceWith","keepTags","newPhrases","keepCase","tmpDoc","tagger","oldTags","_replace","_01Replace","_02Insert","makeNew","insertAfter","insertAt","insertBefore","arg","toRemove","shouldTrim","showFull","trimPre","trimPost","_01Text","termOffsets","elapsed","offsets","calcOffset","_offset","_02Json","jsonDefaults","setOptions","frequency","freq","already","data","_debug","reset","css","blue","magenta","cyan","black","logClientSide","cli","tagString","debug","topk","_topk","debug_1","out","_03Out","methods$6","alpha","left","right","byFreq","counts","sortSequential","order","alphabetical","seqNames","sequence","sequential","chron","chronological","unique$1","_01Sort","isPunct","quotes","methods$5","termArr","quotations","adverbs","_methods","defaults","emoji","contractions","parentheses","possessives","honorifics","mapping","medium","heavy","normalize","strip","contraction","expand","unwrap","possessive","_02Normalize","_03Split","foundEm","parts","splitAfter","splitBefore","segment","eachTerm","toCamelCase","_04Case","_05Whitespace","hyphenate","dehyphenate","deHyphenate","toQuotations","toQuotation","toParentheses","removed","increase","_06Join","postPunct","setContraction","suffix","contract","_07Contract","methods$4","methods$3","emojis","atmentions","atMentions","phoneNumbers","money","places","organizations","clauses","entities","yup","people","ignore","things","topics","_simple","underOver","tryMultiple","checkLexicon","foundWords","noPrefix","_01Lexicon","apostrophes","perSec","checkPunctuation","endChar","_02Punctuation","startsWith","romanNumeral","romanNumValid","checkRegex$1","checkRegex","_03Prefixes","Adj$1","Inf$1","Pres$1","Sing$1","Past$1","Exp","Actor$1","Noun$1","Last$1","endsWith","Adj","Inf","Pres","Sing","Past","Avb","Plrl","Vb","Last","suffixMap","ea","ia","ic","ly","oed","ued","xed","azy","eer","ped","ffy","ify","ing","ize","lar","mum","nes","nny","oid","ous","que","rol","sis","zes","amed","aped","ched","lked","nded","cted","dged","akis","cede","chuk","czyk","ects","ends","enko","ette","fies","fore","gate","gone","ices","ints","ines","ions","less","llen","made","nsen","oses","ould","sson","tage","teen","tion","tive","tors","vice","tized","urned","eased","ances","bound","ettes","fully","ishes","ities","marek","nssen","ology","ports","rough","tches","tieth","tures","wards","where","auskas","keeper","logist","teenth","opoulos","borough","sdottir","endRegexs","_char","knownSuffixes","_04Suffixes","emoticons","emojiReg","isCommaEmoji","raw","isEmoticon","tagEmoji","_05Emoji","lookups","_01Init","afterThisWord","it","there","because","but","who","when","you","very","old","never","beforeThisWord","me","only","him","were","took","himself","went","jr","afterThisPOS","beforeThisPOS","markov","beforeThisPos","afterThisPos","afterKeys","beforeKeys","checkNeighbours","foundTag","_tag","_tag2","_foundTag","_tag3","_ret","_01Neighbours","hasNumber","checkCase","_02Case","hasPrefix","prefix","checkPrefix","stem","_03Stem","isPlural$3","isSingular$1","isPlural_1$2","isSingular","isPlural","noPlurals","notPlural","notSingular","checkPlural","_04Plurals","orgWords","maybeOrg","Comma","tagOrgs","_05Organizations","oneLetterAcronym","periodSeperated","oneLetterWord","A","checkAcronym","_06Acronyms","step","neighbours","fallbacks","_02Fallbacks","hasNegative","irregulars$2","wont","cant","cannot","dont","dun","doAint","noun","checkNegative","_01Negative","contraction$1","easy","ll","ve","re","checkApostrophe","_02Simple","irregulars$1","wanna","gonna","im","alot","ive","imma","whered","whend","howd","whatd","dunno","brb","gtg","irl","tbh","imo","til","rn","twas","checkIrregulars","_03Irregulars","hasApostropheS","banList","that","hereThere","here","everywhere","isPossessive","twoTerm","isHas","checkPossessive","_04Possessive","hasPerfect","useDid","how","what","checkPerfect","_05PerfectTense","isRange","timeRange","checkRange","_06Ranges","french","qu","checkFrench","_07French","isNumber","isOrdinal","isTime","createPhrase","_03Contractions","hasWord","hasTag","miscCorrection","notIf","fixMisc","_unique","list$5","_01Misc","_ambig","adverbAdjective","personDate","personMonth","personAdjective","personVerb","personPlace","personNoun","dates","list$4","_02Dates","adjectives$1","list$3","_03Adjective","_04Noun","_05Adverb","_06Value","list$2","_07Verbs","list$1","_08Place","_09Org","months","_10People","allLists","lists","newM","enumerated","required","matches_1","hasEvery","chances","runner","allChances","worthIt","tryDoc","runner_1","corrections","_04Correction","_02Tagger","addMethod$a","addMethod","Doc","Abbreviations","_Doc","_super","stripPeriods","addPeriods","addMethod$9","Acronyms","addMethod$8","commas","conjunctions","condition","tooLong","Clauses","addMethod$7","Contractions","contracted","isTitlecase","expanded","isExpanded","isContracted","addMethod$6","beforeLast","conjunction","hasOxford","Lists","items","hasOxfordComma","addOxfordComma","needsComma","removeOxfordComma","nounList","adjList","verbList","noPlural","hasPlural","hasPlural_1","hour","heir","heirloom","honest","honour","honor","uber","an_acronyms","a_regexs","makeArticle","firstLetter","getArticle","isPlural$2","_rules","endS","isPlural$1","isPlural_1$1","exceptions","he","she","they","we","toPossessive","toPossessive_1","parse$1","parse_1","methods$2","article","agree","an","adj","methods_1","addMethod$5","Nouns","keep_anaphora","open","close","addMethod$4","Parentheses","addMethod$3","Possessives","pairs","hasOpen","addMethod$2","Quotations","want","verb","toInfinitive_1","findNoun","vb","auxiliary","isPlural_1","toNegative","_inf","_inf2","toNegative_1","getSubject","behind","lastNoun","getSubject_1","parseVerb","adverb","particle","subject","adverbAfter","toBe","isI","isNegative","toBe_1","doModal","doModal_1","og","past","_infinitive","infinitive","space","conjugate_1","useParticiple$1","useParticiple","toParticiple","participle","_toParticiple","makeNeutral","methods$1","advb","toPastTense","toPresentTense","_this6","toFutureTense","_this7","_this8","toGerund","_this9","_this10","noAux","isPositive","isImperative","_this11","toPositive","addMethod$1","Verbs","negate","gerund","People","subclass","extend","addFn","Subset","methods","selections","aliases","untag","and","onlyIf","Doc_1","smallTagger","tiny","worldInstance","nlp","parseMatch","version","load","plugin","src","fromTemplate","tmpl","template","description","preProcess","findPivot","byClause","safeCuts","isIndependent","hardCuts","second","pop","lastTry","isGood","doSentence","pivot","safeCut","hardCut","like","dislike","require$$0","hasYear","fromCategory","cats","categories","cat","aWords","bWords","useAn","changeCat","byCategory","chooseCat","change","category","seemsGood","models","summary","fromSentence","copula"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-summary.js","sources":["../node_modules/compromise/builds/compromise.js","../src/template/index.js","../src/sentence/00-preProcess.js","../src/sentence/01-pivot.js","../src/sentence/02-byClause.js","../src/sentence/03-safeCuts.js","../src/sentence/04-hardCuts.js","../src/sentence/05-lastTry.js","../src/sentence/_isGood.js","../src/sentence/index.js","../src/category/regs.js","../src/category/01-choose.js","../src/category/02-change.js","../src/category/index.js","../src/index.js"],"sourcesContent":["/* compromise 13.11.4 MIT */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.nlp = factory());\n}(this, (function () { 'use strict';\n\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.split(''); //generates a unique id for this term\n\n function makeId$2(str) {\n str = str || '_';\n let text = str + '-';\n\n for (let i = 0; i < 7; i++) {\n text += chars[Math.floor(Math.random() * chars.length)];\n }\n\n return text;\n }\n\n var _id = makeId$2;\n\n //approximate visual (not semantic or phonetic) relationship between unicode and ascii characters\n //http://en.wikipedia.org/wiki/List_of_Unicode_characters\n //https://docs.google.com/spreadsheet/ccc?key=0Ah46z755j7cVdFRDM1A2YVpwa1ZYWlpJM2pQZ003M0E\n\n let compact = {\n '!': '¡',\n '?': '¿Ɂ',\n '\"': '“”\"❝❞',\n \"'\": '‘‛❛❜',\n '-': '—–',\n a: 'ªÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАадѦѧӐӑӒӓƛɅæ',\n b: 'ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ',\n c: '¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼͽϲϹϽϾСсєҀҁҪҫ',\n d: 'ÐĎďĐđƉƊȡƋƌǷ',\n e: 'ÈÉÊËèéêëĒēĔĕĖėĘęĚěƎƏƐǝȄȅȆȇȨȩɆɇΈΕΞΣέεξϱϵ϶ЀЁЕЭеѐёҼҽҾҿӖӗӘәӚӛӬӭ',\n f: 'ƑƒϜϝӺӻҒғſ',\n g: 'ĜĝĞğĠġĢģƓǤǥǦǧǴǵ',\n h: 'ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ',\n I: 'ÌÍÎÏ',\n i: 'ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇії',\n j: 'ĴĵǰȷɈɉϳЈј',\n k: 'ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ',\n l: 'ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ',\n m: 'ΜϺϻМмӍӎ',\n n: 'ÑñŃńŅņŇňʼnŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ',\n o: 'ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϭϴОФоѲѳӦӧӨөӪӫ',\n p: 'ƤƿΡρϷϸϼРрҎҏÞ',\n q: 'Ɋɋ',\n r: 'ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ',\n s: 'ŚśŜŝŞşŠšƧƨȘșȿЅѕ',\n t: 'ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт',\n u: 'µÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰμυϋύ',\n v: 'νѴѵѶѷ',\n w: 'ŴŵƜωώϖϢϣШЩшщѡѿ',\n x: '×ΧχϗϰХхҲҳӼӽӾӿ',\n y: 'ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ',\n z: 'ŹźŻżŽžƩƵƶȤȥɀΖζ'\n }; //decompress data into two hashes\n\n let unicode = {};\n Object.keys(compact).forEach(function (k) {\n compact[k].split('').forEach(function (s) {\n unicode[s] = k;\n });\n });\n\n const killUnicode$3 = str => {\n let chars = str.split('');\n chars.forEach((s, i) => {\n if (unicode[s]) {\n chars[i] = unicode[s];\n }\n });\n return chars.join('');\n };\n\n var unicode_1 = killUnicode$3; // console.log(killUnicode('bjŏȒk—Ɏó'));\n\n const periodAcronym = /([A-Z]\\.)+[A-Z]?,?$/;\n const oneLetterAcronym$1 = /^[A-Z]\\.,?$/;\n const noPeriodAcronym = /[A-Z]{2,}('s|,)?$/;\n const lowerCaseAcronym = /([a-z]\\.)+[a-z]\\.?$/;\n\n const isAcronym$4 = function (str) {\n //like N.D.A\n if (periodAcronym.test(str) === true) {\n return true;\n } //like c.e.o\n\n\n if (lowerCaseAcronym.test(str) === true) {\n return true;\n } //like 'F.'\n\n\n if (oneLetterAcronym$1.test(str) === true) {\n return true;\n } //like NDA\n\n\n if (noPeriodAcronym.test(str) === true) {\n return true;\n }\n\n return false;\n };\n\n var isAcronym_1 = isAcronym$4;\n\n const killUnicode$2 = unicode_1;\n const isAcronym$3 = isAcronym_1;\n const hasSlash$1 = /[a-z\\u00C0-\\u00FF] ?\\/ ?[a-z\\u00C0-\\u00FF]/;\n /** some basic operations on a string to reduce noise */\n\n const clean = function (str) {\n str = str || '';\n str = str.toLowerCase();\n str = str.trim();\n let original = str; //(very) rough ASCII transliteration - bjŏrk -> bjork\n\n str = killUnicode$2(str); //rough handling of slashes - 'see/saw'\n\n if (hasSlash$1.test(str) === true) {\n str = str.replace(/\\/.*/, '');\n } //#tags, @mentions\n\n\n str = str.replace(/^[#@]/, ''); //punctuation\n\n str = str.replace(/[,;.!?]+$/, ''); // coerce single curly quotes\n\n str = str.replace(/[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]+/g, \"'\"); // coerce double curly quotes\n\n str = str.replace(/[\\u0022\\u00AB\\u00BB\\u201C\\u201D\\u201E\\u201F\\u2033\\u2034\\u2036\\u2037\\u2E42\\u301D\\u301E\\u301F\\uFF02]+/g, '\"'); //coerce Unicode ellipses\n\n str = str.replace(/\\u2026/g, '...'); //en-dash\n\n str = str.replace(/\\u2013/g, '-'); //lookin'->looking (make it easier for conjugation)\n\n str = str.replace(/([aeiou][ktrp])in$/, '$1ing'); //turn re-enactment to reenactment\n\n if (/^(re|un)-?[^aeiou]./.test(str) === true) {\n str = str.replace('-', '');\n } //compact acronyms\n\n\n if (isAcronym$3(str)) {\n str = str.replace(/\\./g, '');\n } //strip leading & trailing grammatical punctuation\n\n\n if (/^[:;]/.test(str) === false) {\n str = str.replace(/\\.{3,}$/g, '');\n str = str.replace(/[\",\\.!:;\\?\\)]+$/g, '');\n str = str.replace(/^['\"\\(]+/g, '');\n } // remove zero-width characters\n\n\n str = str.replace(/[\\u200B-\\u200D\\uFEFF]/g, ''); //do this again..\n\n str = str.trim(); //oh shucks,\n\n if (str === '') {\n str = original;\n } //nice-numbers\n\n\n str = str.replace(/([0-9]),([0-9])/g, '$1$2');\n return str;\n };\n\n var clean_1 = clean; // console.log(normalize('Dr. V Cooper'));\n\n /** reduced is one step further than clean */\n\n const reduced = function (str) {\n // remove apostrophes\n str = str.replace(/['’]s$/, '');\n str = str.replace(/s['’]$/, 's');\n return str;\n };\n\n var reduce$1 = reduced;\n\n const normalize = clean_1;\n const reduce = reduce$1; // basically, tokenize for terms.\n //all punctuation marks, from https://en.wikipedia.org/wiki/Punctuation\n //we have slightly different rules for start/end - like #hashtags.\n\n const startings = /^[ \\n\\t\\.\\[\\](){}⟨⟩:,،、‒–—―…!‹›«»‐\\-?‘’;\\/⁄·&*•^†‡°¡¿※№÷׺ª%‰+−=‱¶′″‴§~\\|‖¦©℗®℠™¤₳฿\\u0022\\uFF02\\u0027\\u201C\\u201F\\u201B\\u201E\\u2E42\\u201A\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F]+/;\n const endings = /[ \\n\\t\\.'\\[\\](){}⟨⟩:,،、‒–—―…!‹›«»‐\\-?‘’;\\/⁄·&*@•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~\\|‖¦©℗®℠™¤₳฿\\u0022\\uFF02\\u201D\\u00B4\\u301E]+$/; //money = ₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥\n\n const hasSlash = /\\//;\n const hasApostrophe = /['’]/;\n const hasAcronym = /^[a-z]\\.([a-z]\\.)+/i;\n const minusNumber = /^[-+\\.][0-9]/;\n const shortYear = /^'[0-9]{2}/;\n /** turn given text into a parsed-up object\n * seperate the 'meat' of the word from the whitespace+punctuation\n */\n\n const parseTerm$1 = str => {\n let original = str;\n let pre = '';\n let post = '';\n str = str.replace(startings, found => {\n pre = found; // support '-40'\n\n if ((pre === '-' || pre === '+' || pre === '.') && minusNumber.test(str)) {\n pre = '';\n return found;\n } // support years like '97\n\n\n if (pre === `'` && shortYear.test(str)) {\n pre = '';\n return found;\n }\n\n return '';\n });\n str = str.replace(endings, found => {\n post = found; // keep s-apostrophe - \"flanders'\" or \"chillin'\"\n\n if (hasApostrophe.test(found) && /[sn]['’]$/.test(original) && hasApostrophe.test(pre) === false) {\n post = post.replace(hasApostrophe, '');\n return `'`;\n } //keep end-period in acronym\n\n\n if (hasAcronym.test(str) === true) {\n post = post.replace(/\\./, '');\n return '.';\n }\n\n return '';\n }); //we went too far..\n\n if (str === '') {\n // do a very mild parse, and hope for the best.\n original = original.replace(/ *$/, after => {\n post = after || '';\n return '';\n });\n str = original;\n pre = '';\n post = post;\n } // create the various forms of our text,\n\n\n let clean = normalize(str);\n const parsed = {\n text: str,\n clean: clean,\n reduced: reduce(clean),\n pre: pre,\n post: post\n }; // support aliases for slashes\n\n if (hasSlash.test(str)) {\n str.split(hasSlash).forEach(word => {\n parsed.alias = parsed.alias || {};\n parsed.alias[word.trim()] = true;\n });\n }\n\n return parsed;\n };\n\n var parse$3 = parseTerm$1;\n\n var _01Case = {};\n\n (function (exports) {\n const titleCase = /^[A-Z][a-z'\\u00C0-\\u00FF]/;\n const upperCase = /^[A-Z]+s?$/;\n /** convert all text to uppercase */\n\n exports.toUpperCase = function () {\n this.text = this.text.toUpperCase();\n return this;\n };\n /** convert all text to lowercase */\n\n\n exports.toLowerCase = function () {\n this.text = this.text.toLowerCase();\n return this;\n };\n /** only set the first letter to uppercase\n * leave any existing uppercase alone\n */\n\n\n exports.toTitleCase = function () {\n this.text = this.text.replace(/^ *[a-z\\u00C0-\\u00FF]/, x => x.toUpperCase()); //support unicode?\n\n return this;\n };\n /** if all letters are uppercase */\n\n\n exports.isUpperCase = function () {\n return upperCase.test(this.text);\n };\n /** if the first letter is uppercase, and the rest are lowercase */\n\n\n exports.isTitleCase = function () {\n return titleCase.test(this.text);\n };\n\n exports.titleCase = exports.isTitleCase;\n })(_01Case);\n\n var _02Punctuation$1 = {};\n\n (function (exports) {\n // these methods are called with '@hasComma' in the match syntax\n // various unicode quotation-mark formats\n const startQuote = /(\\u0022|\\uFF02|\\u0027|\\u201C|\\u2018|\\u201F|\\u201B|\\u201E|\\u2E42|\\u201A|\\u00AB|\\u2039|\\u2035|\\u2036|\\u2037|\\u301D|\\u0060|\\u301F)/;\n const endQuote = /(\\u0022|\\uFF02|\\u0027|\\u201D|\\u2019|\\u201D|\\u2019|\\u201D|\\u201D|\\u2019|\\u00BB|\\u203A|\\u2032|\\u2033|\\u2034|\\u301E|\\u00B4|\\u301E)/;\n /** search the term's 'post' punctuation */\n\n exports.hasPost = function (punct) {\n return this.post.indexOf(punct) !== -1;\n };\n /** search the term's 'pre' punctuation */\n\n\n exports.hasPre = function (punct) {\n return this.pre.indexOf(punct) !== -1;\n };\n /** does it have a quotation symbol? */\n\n\n exports.hasQuote = function () {\n return startQuote.test(this.pre) || endQuote.test(this.post);\n };\n\n exports.hasQuotation = exports.hasQuote;\n /** does it have a comma? */\n\n exports.hasComma = function () {\n return this.hasPost(',');\n };\n /** does it end in a period? */\n\n\n exports.hasPeriod = function () {\n return this.hasPost('.') === true && this.hasPost('...') === false;\n };\n /** does it end in an exclamation */\n\n\n exports.hasExclamation = function () {\n return this.hasPost('!');\n };\n /** does it end with a question mark? */\n\n\n exports.hasQuestionMark = function () {\n return this.hasPost('?') || this.hasPost('¿');\n };\n /** is there a ... at the end? */\n\n\n exports.hasEllipses = function () {\n return this.hasPost('..') || this.hasPost('…') || this.hasPre('..') || this.hasPre('…');\n };\n /** is there a semicolon after this word? */\n\n\n exports.hasSemicolon = function () {\n return this.hasPost(';');\n };\n /** is there a slash '/' in this word? */\n\n\n exports.hasSlash = function () {\n return /\\//.test(this.text);\n };\n /** a hyphen connects two words like-this */\n\n\n exports.hasHyphen = function () {\n const hyphen = /^(-|–|—)$/;\n return hyphen.test(this.post) || hyphen.test(this.pre);\n };\n /** a dash separates words - like that */\n\n\n exports.hasDash = function () {\n const hyphen = / (-|–|—) /;\n return hyphen.test(this.post) || hyphen.test(this.pre);\n };\n /** is it multiple words combinded */\n\n\n exports.hasContraction = function () {\n return Boolean(this.implicit);\n };\n /** try to sensibly put this punctuation mark into the term */\n\n\n exports.addPunctuation = function (punct) {\n // dont add doubles\n if (punct === ',' || punct === ';') {\n this.post = this.post.replace(punct, '');\n }\n\n this.post = punct + this.post;\n return this;\n };\n })(_02Punctuation$1);\n\n var _03Misc = {};\n\n // Based on tad-lispy /node-damerau-levenshtein\n // https://github.com/tad-lispy/node-damerau-levenshtein/blob/master/index.js\n // count steps (insertions, deletions, substitutions, or transpositions)\n\n const editDistance = function (strA, strB) {\n let aLength = strA.length,\n bLength = strB.length; // fail-fast\n\n if (aLength === 0) {\n return bLength;\n }\n\n if (bLength === 0) {\n return aLength;\n } // If the limit is not defined it will be calculate from this and that args.\n\n\n let limit = (bLength > aLength ? bLength : aLength) + 1;\n\n if (Math.abs(aLength - bLength) > (limit || 100)) {\n return limit || 100;\n } // init the array\n\n\n let matrix = [];\n\n for (let i = 0; i < limit; i++) {\n matrix[i] = [i];\n matrix[i].length = limit;\n }\n\n for (let i = 0; i < limit; i++) {\n matrix[0][i] = i;\n } // Calculate matrix.\n\n\n let j, a_index, b_index, cost, min, t;\n\n for (let i = 1; i <= aLength; ++i) {\n a_index = strA[i - 1];\n\n for (j = 1; j <= bLength; ++j) {\n // Check the jagged distance total so far\n if (i === j && matrix[i][j] > 4) {\n return aLength;\n }\n\n b_index = strB[j - 1];\n cost = a_index === b_index ? 0 : 1; // Step 5\n // Calculate the minimum (much faster than Math.min(...)).\n\n min = matrix[i - 1][j] + 1; // Deletion.\n\n if ((t = matrix[i][j - 1] + 1) < min) min = t; // Insertion.\n\n if ((t = matrix[i - 1][j - 1] + cost) < min) min = t; // Substitution.\n // Update matrix.\n\n let shouldUpdate = i > 1 && j > 1 && a_index === strB[j - 2] && strA[i - 2] === b_index && (t = matrix[i - 2][j - 2] + cost) < min;\n\n if (shouldUpdate) {\n matrix[i][j] = t;\n } else {\n matrix[i][j] = min;\n }\n }\n } // return number of steps\n\n\n return matrix[aLength][bLength];\n }; // score similarity by from 0-1 (steps/length)\n\n\n const fuzzyMatch = function (strA, strB, minLength = 3) {\n if (strA === strB) {\n return 1;\n } //don't even bother on tiny strings\n\n\n if (strA.length < minLength || strB.length < minLength) {\n return 0;\n }\n\n const steps = editDistance(strA, strB);\n let length = Math.max(strA.length, strB.length);\n let relative = length === 0 ? 0 : steps / length;\n let similarity = 1 - relative;\n return similarity;\n };\n\n var _fuzzy = fuzzyMatch; // console.log(fuzzyMatch('test', 'test')) //exact match\n\n const fuzzy = _fuzzy; //declare it up here\n\n let wrapMatch = function () {};\n /** ignore optional/greedy logic, straight-up term match*/\n\n\n const doesMatch$1 = function (t, reg, index, length) {\n // support id matches\n if (reg.id === t.id) {\n return true;\n } // support '.'\n\n\n if (reg.anything === true) {\n return true;\n } // support '^' (in parentheses)\n\n\n if (reg.start === true && index !== 0) {\n return false;\n } // support '$' (in parentheses)\n\n\n if (reg.end === true && index !== length - 1) {\n return false;\n } //support a text match\n\n\n if (reg.word !== undefined) {\n //match contractions\n if (t.implicit !== null && t.implicit === reg.word) {\n return true;\n } // term aliases for slashes and things\n\n\n if (t.alias !== undefined && t.alias.hasOwnProperty(reg.word)) {\n return true;\n } // support ~ match\n\n\n if (reg.soft === true && reg.word === t.root) {\n return true;\n } // support fuzzy match param\n\n\n if (reg.fuzzy !== undefined) {\n let score = fuzzy(reg.word, t.reduced);\n\n if (score > reg.fuzzy) {\n return true;\n } // support fuzzy + soft match\n\n\n if (reg.soft === true) {\n score = fuzzy(reg.word, t.root);\n\n if (score > reg.fuzzy) {\n return true;\n }\n }\n } //match either .clean or .text\n\n\n return reg.word === t.clean || reg.word === t.text || reg.word === t.reduced;\n } //support #Tag\n\n\n if (reg.tag !== undefined) {\n return t.tags[reg.tag] === true;\n } //support @method\n\n\n if (reg.method !== undefined) {\n if (typeof t[reg.method] === 'function' && t[reg.method]() === true) {\n return true;\n }\n\n return false;\n } //support /reg/\n\n\n if (reg.regex !== undefined) {\n return reg.regex.test(t.clean);\n } // support optimized (one|two)\n\n\n if (reg.fastOr !== undefined) {\n if (t.implicit && reg.fastOr.hasOwnProperty(t.implicit) === true) {\n return true;\n }\n\n return reg.fastOr.hasOwnProperty(t.reduced) || reg.fastOr.hasOwnProperty(t.text);\n } //support slower (one|two)\n\n\n if (reg.choices !== undefined) {\n // try to support && operator\n if (reg.operator === 'and') {\n // must match them all\n return reg.choices.every(r => wrapMatch(t, r, index, length));\n } // or must match one\n\n\n return reg.choices.some(r => wrapMatch(t, r, index, length));\n }\n\n return false;\n }; // wrap result for !negative match logic\n\n\n wrapMatch = function (t, reg, index, length) {\n let result = doesMatch$1(t, reg, index, length);\n\n if (reg.negative === true) {\n return !result;\n }\n\n return result;\n };\n\n var _doesMatch = wrapMatch;\n\n const doesMatch = _doesMatch;\n const isAcronym$2 = isAcronym_1; // these tags aren't juicy-enough\n\n const boring = {};\n /** check a match object against this term */\n\n _03Misc.doesMatch = function (reg, index, length) {\n return doesMatch(this, reg, index, length);\n };\n /** does this term look like an acronym? */\n\n\n _03Misc.isAcronym = function () {\n return isAcronym$2(this.text);\n };\n /** is this term implied by a contraction? */\n\n\n _03Misc.isImplicit = function () {\n return this.text === '' && Boolean(this.implicit);\n };\n /** does the term have at least one good tag? */\n\n\n _03Misc.isKnown = function () {\n return Object.keys(this.tags).some(t => boring[t] !== true);\n };\n /** cache the root property of the term */\n\n\n _03Misc.setRoot = function (world) {\n let transform = world.transforms;\n let str = this.implicit || this.clean;\n\n if (this.tags.Plural) {\n str = transform.toSingular(str, world);\n }\n\n if (this.tags.Verb && !this.tags.Negative && !this.tags.Infinitive) {\n let tense = null;\n\n if (this.tags.PastTense) {\n tense = 'PastTense';\n } else if (this.tags.Gerund) {\n tense = 'Gerund';\n } else if (this.tags.PresentTense) {\n tense = 'PresentTense';\n } else if (this.tags.Participle) {\n tense = 'Participle';\n } else if (this.tags.Actor) {\n tense = 'Actor';\n }\n\n str = transform.toInfinitive(str, world, tense);\n }\n\n this.root = str;\n };\n\n var _04Text = {};\n\n const killUnicode$1 = unicode_1;\n const hasSpace$1 = /[\\s-]/;\n const isUpperCase = /^[A-Z-]+$/; // const titleCase = str => {\n // return str.charAt(0).toUpperCase() + str.substr(1)\n // }\n\n /** return various text formats of this term */\n\n _04Text.textOut = function (options, showPre, showPost) {\n options = options || {};\n let word = this.text;\n let before = this.pre;\n let after = this.post; // -word-\n\n if (options.reduced === true) {\n word = this.reduced || '';\n }\n\n if (options.root === true) {\n word = this.root || '';\n }\n\n if (options.implicit === true && this.implicit) {\n word = this.implicit || '';\n }\n\n if (options.normal === true) {\n word = this.clean || this.text || '';\n }\n\n if (options.root === true) {\n word = this.root || this.reduced || '';\n }\n\n if (options.unicode === true) {\n word = killUnicode$1(word);\n } // cleanup case\n\n\n if (options.titlecase === true) {\n if (this.tags.ProperNoun && !this.titleCase()) ; else if (this.tags.Acronym) {\n word = word.toUpperCase(); //uppercase acronyms\n } else if (isUpperCase.test(word) && !this.tags.Acronym) {\n // lowercase everything else\n word = word.toLowerCase();\n }\n }\n\n if (options.lowercase === true) {\n word = word.toLowerCase();\n } // remove the '.'s from 'F.B.I.' (safely)\n\n\n if (options.acronyms === true && this.tags.Acronym) {\n word = word.replace(/\\./g, '');\n } // -before/after-\n\n\n if (options.whitespace === true || options.root === true) {\n before = '';\n after = ' ';\n\n if ((hasSpace$1.test(this.post) === false || options.last) && !this.implicit) {\n after = '';\n }\n }\n\n if (options.punctuation === true && !options.root) {\n //normalized end punctuation\n if (this.hasPost('.') === true) {\n after = '.' + after;\n } else if (this.hasPost('?') === true) {\n after = '?' + after;\n } else if (this.hasPost('!') === true) {\n after = '!' + after;\n } else if (this.hasPost(',') === true) {\n after = ',' + after;\n } else if (this.hasEllipses() === true) {\n after = '...' + after;\n }\n }\n\n if (showPre !== true) {\n before = '';\n }\n\n if (showPost !== true) {\n // let keep = after.match(/\\)/) || ''\n after = ''; //keep //after.replace(/[ .?!,]+/, '')\n } // remove the '.' from 'Mrs.' (safely)\n\n\n if (options.abbreviations === true && this.tags.Abbreviation) {\n after = after.replace(/^\\./, '');\n }\n\n return before + word + after;\n };\n\n var _05Json$1 = {};\n\n const boringTags = {\n Auxiliary: 1,\n Possessive: 1\n };\n /** a subjective ranking of tags kinda tfidf-based */\n\n const rankTags$1 = function (term, world) {\n let tags = Object.keys(term.tags);\n const tagSet = world.tags;\n tags = tags.sort((a, b) => {\n //bury the tags we dont want\n if (boringTags[b] || !tagSet[b]) {\n return -1;\n } // unknown tags are interesting\n\n\n if (!tagSet[b]) {\n return 1;\n }\n\n if (!tagSet[a]) {\n return 0;\n } // then sort by #of parent tags (most-specific tags first)\n\n\n if (tagSet[a].lineage.length > tagSet[b].lineage.length) {\n return 1;\n }\n\n if (tagSet[a].isA.length > tagSet[b].isA.length) {\n return -1;\n }\n\n return 0;\n });\n return tags;\n };\n\n var _bestTag = rankTags$1;\n\n const rankTags = _bestTag;\n const jsonDefault = {\n text: true,\n tags: true,\n implicit: true,\n whitespace: true,\n clean: false,\n id: false,\n index: false,\n offset: false,\n bestTag: false\n };\n /** return various metadata for this term */\n\n _05Json$1.json = function (options, world) {\n options = options || {};\n options = Object.assign({}, jsonDefault, options);\n let result = {}; // default on\n\n if (options.text) {\n result.text = this.text;\n }\n\n if (options.normal) {\n result.normal = this.clean;\n }\n\n if (options.tags) {\n result.tags = Object.keys(this.tags);\n } // default off\n\n\n if (options.clean) {\n result.clean = this.clean;\n }\n\n if (options.id || options.offset) {\n result.id = this.id;\n }\n\n if (options.implicit && this.implicit !== null) {\n result.implicit = this.implicit;\n }\n\n if (options.whitespace) {\n result.pre = this.pre;\n result.post = this.post;\n }\n\n if (options.bestTag) {\n result.bestTag = rankTags(this, world)[0];\n }\n\n return result;\n };\n\n var methods$d = Object.assign({}, _01Case, _02Punctuation$1, _03Misc, _04Text, _05Json$1);\n\n var tag = {};\n\n var fns$3 = {};\n\n function isClientSide() {\n return typeof window !== 'undefined' && window.document;\n }\n /** add spaces at the end */\n\n\n const padEnd = function (str, width) {\n str = str.toString();\n\n while (str.length < width) {\n str += ' ';\n }\n\n return str;\n };\n /** output for verbose-mode */\n\n\n fns$3.logTag = function (t, tag, reason) {\n if (isClientSide()) {\n console.log('%c' + padEnd(t.clean, 3) + ' + ' + tag + ' ', 'color: #6accb2;');\n return;\n } //server-side\n\n\n let log = '\\x1b[33m' + padEnd(t.clean, 15) + '\\x1b[0m + \\x1b[32m' + tag + '\\x1b[0m ';\n\n if (reason) {\n log = padEnd(log, 35) + ' ' + reason + '';\n }\n\n console.log(log);\n };\n /** output for verbose mode */\n\n\n fns$3.logUntag = function (t, tag, reason) {\n if (isClientSide()) {\n console.log('%c' + padEnd(t.clean, 3) + ' - ' + tag + ' ', 'color: #AB5850;');\n return;\n } //server-side\n\n\n let log = '\\x1b[33m' + padEnd(t.clean, 3) + ' \\x1b[31m - #' + tag + '\\x1b[0m ';\n\n if (reason) {\n log = padEnd(log, 35) + ' ' + reason;\n }\n\n console.log(log);\n };\n\n fns$3.isArray = function (arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n };\n\n fns$3.titleCase = str => {\n return str.charAt(0).toUpperCase() + str.substr(1);\n };\n\n const fns$2 = fns$3;\n /** add a tag, and its descendents, to a term */\n\n const addTag = function (t, tag, reason, world) {\n let tagset = world.tags; //support '.' or '-' notation for skipping the tag\n\n if (tag === '' || tag === '.' || tag === '-') {\n return;\n }\n\n if (tag[0] === '#') {\n tag = tag.replace(/^#/, '');\n }\n\n tag = fns$2.titleCase(tag); //if we already got this one\n\n if (t.tags[tag] === true) {\n return;\n } // log it?\n\n\n const isVerbose = world.isVerbose();\n\n if (isVerbose === true) {\n fns$2.logTag(t, tag, reason);\n } //add tag\n\n\n t.tags[tag] = true; //whee!\n //check tagset for any additional things to do...\n\n if (tagset.hasOwnProperty(tag) === true) {\n //add parent Tags\n tagset[tag].isA.forEach(down => {\n t.tags[down] = true;\n\n if (isVerbose === true) {\n fns$2.logTag(t, '→ ' + down);\n }\n }); //remove any contrary tags\n\n t.unTag(tagset[tag].notA, '←', world);\n }\n };\n /** support an array of tags */\n\n\n const addTags = function (term, tags, reason, world) {\n if (typeof tags !== 'string') {\n for (let i = 0; i < tags.length; i++) {\n addTag(term, tags[i], reason, world);\n } // tags.forEach(tag => addTag(term, tag, reason, world))\n\n } else {\n addTag(term, tags, reason, world);\n }\n };\n\n var add$1 = addTags;\n\n const fns$1 = fns$3;\n const lowerCase = /^[a-z]/;\n\n const titleCase$3 = str => {\n return str.charAt(0).toUpperCase() + str.substr(1);\n };\n /** remove this tag, and its descentents from the term */\n\n\n const unTag$1 = function (t, tag, reason, world) {\n const isVerbose = world.isVerbose(); //support '*' for removing all tags\n\n if (tag === '*') {\n t.tags = {};\n return t;\n }\n\n tag = tag.replace(/^#/, '');\n\n if (lowerCase.test(tag) === true) {\n tag = titleCase$3(tag);\n } // remove the tag\n\n\n if (t.tags[tag] === true) {\n delete t.tags[tag]; //log in verbose-mode\n\n if (isVerbose === true) {\n fns$1.logUntag(t, tag, reason);\n }\n } //delete downstream tags too\n\n\n const tagset = world.tags;\n\n if (tagset[tag]) {\n let lineage = tagset[tag].lineage;\n\n for (let i = 0; i < lineage.length; i++) {\n if (t.tags[lineage[i]] === true) {\n delete t.tags[lineage[i]];\n\n if (isVerbose === true) {\n fns$1.logUntag(t, ' - ' + lineage[i]);\n }\n }\n }\n }\n\n return t;\n }; //handle an array of tags\n\n\n const untagAll = function (term, tags, reason, world) {\n if (typeof tags !== 'string' && tags) {\n for (let i = 0; i < tags.length; i++) {\n unTag$1(term, tags[i], reason, world);\n }\n\n return;\n }\n\n unTag$1(term, tags, reason, world);\n };\n\n var unTag_1 = untagAll;\n\n const canBe$1 = function (term, tag, world) {\n const tagset = world.tags; // cleanup tag\n\n if (tag[0] === '#') {\n tag = tag.replace(/^#/, '');\n } //fail-fast\n\n\n if (tagset[tag] === undefined) {\n return true;\n } //loop through tag's contradictory tags\n\n\n let enemies = tagset[tag].notA || [];\n\n for (let i = 0; i < enemies.length; i++) {\n if (term.tags[enemies[i]] === true) {\n return false;\n }\n }\n\n if (tagset[tag].isA !== undefined) {\n return canBe$1(term, tagset[tag].isA, world); //recursive\n }\n\n return true;\n };\n\n var canBe_1 = canBe$1;\n\n const add = add$1;\n const unTag = unTag_1;\n const canBe = canBe_1;\n /** add a tag or tags, and their descendents to this term\n * @param {string | string[]} tags - a tag or tags\n * @param {string?} [reason] a clue for debugging\n */\n\n tag.tag = function (tags, reason, world) {\n add(this, tags, reason, world);\n return this;\n };\n /** only tag this term if it's consistent with it's current tags */\n\n\n tag.tagSafe = function (tags, reason, world) {\n if (canBe(this, tags, world)) {\n add(this, tags, reason, world);\n }\n\n return this;\n };\n /** remove a tag or tags, and their descendents from this term\n * @param {string | string[]} tags - a tag or tags\n * @param {string?} [reason] a clue for debugging\n */\n\n\n tag.unTag = function (tags, reason, world) {\n unTag(this, tags, reason, world);\n return this;\n };\n /** is this tag consistent with the word's current tags?\n * @param {string | string[]} tags - a tag or tags\n * @returns {boolean}\n */\n\n\n tag.canBe = function (tags, world) {\n return canBe(this, tags, world);\n };\n\n const makeId$1 = _id;\n const parseTerm = parse$3;\n const methods$c = methods$d;\n const tagMethods = tag;\n\n class Term$3 {\n constructor(text = '') {\n text = String(text);\n let obj = parseTerm(text); // the various forms of our text\n\n this.text = obj.text || '';\n this.clean = obj.clean;\n this.reduced = obj.reduced;\n this.root = null;\n this.implicit = null;\n this.pre = obj.pre || '';\n this.post = obj.post || '';\n this.tags = {};\n this.prev = null;\n this.next = null;\n this.id = makeId$1(obj.clean);\n this.isA = 'Term'; // easier than .constructor...\n // support alternative matches\n\n if (obj.alias) {\n this.alias = obj.alias;\n }\n }\n /** set the text of the Term to something else*/\n\n\n set(str) {\n let obj = parseTerm(str);\n this.text = obj.text;\n this.clean = obj.clean;\n this.reduced = obj.reduced;\n this.root = null;\n this.implicit = null;\n return this;\n }\n\n }\n /** create a deep-copy of this term */\n\n\n Term$3.prototype.clone = function () {\n let term = new Term$3(this.text);\n term.pre = this.pre;\n term.post = this.post;\n term.clean = this.clean;\n term.reduced = this.reduced;\n term.root = this.root;\n term.implicit = this.implicit;\n term.tags = Object.assign({}, this.tags); //use the old id, so it can be matched with .match(doc)\n // term.id = this.id\n\n return term;\n };\n\n Object.assign(Term$3.prototype, methods$c);\n Object.assign(Term$3.prototype, tagMethods);\n var Term_1 = Term$3;\n\n var _01Utils$1 = {};\n\n /** return a flat array of Term objects */\n\n _01Utils$1.terms = function (n) {\n if (this.length === 0) {\n return [];\n } // use cache, if it exists\n\n\n if (this.cache.terms) {\n if (n !== undefined) {\n return this.cache.terms[n];\n }\n\n return this.cache.terms;\n }\n\n let terms = [this.pool.get(this.start)];\n\n for (let i = 0; i < this.length - 1; i += 1) {\n let id = terms[terms.length - 1].next;\n\n if (id === null) {\n // throw new Error('linked-list broken')\n console.error(\"Compromise error: Linked list broken in phrase '\" + this.start + \"'\");\n break;\n }\n\n let term = this.pool.get(id);\n terms.push(term); //return this one?\n\n if (n !== undefined && n === i) {\n return terms[n];\n }\n }\n\n if (n === undefined) {\n this.cache.terms = terms;\n }\n\n if (n !== undefined) {\n return terms[n];\n }\n\n return terms;\n };\n /** return a shallow or deep copy of this phrase */\n\n\n _01Utils$1.clone = function (isShallow) {\n if (isShallow) {\n let p = this.buildFrom(this.start, this.length);\n p.cache = this.cache;\n return p;\n } //how do we clone part of the pool?\n\n\n let terms = this.terms();\n let newTerms = terms.map(t => t.clone()); // console.log(newTerms)\n //connect these new ids up\n\n newTerms.forEach((t, i) => {\n //add it to the pool..\n this.pool.add(t);\n\n if (newTerms[i + 1]) {\n t.next = newTerms[i + 1].id;\n }\n\n if (newTerms[i - 1]) {\n t.prev = newTerms[i - 1].id;\n }\n });\n return this.buildFrom(newTerms[0].id, newTerms.length);\n };\n /** return last term object */\n\n\n _01Utils$1.lastTerm = function () {\n let terms = this.terms();\n return terms[terms.length - 1];\n };\n /** quick lookup for a term id */\n\n\n _01Utils$1.hasId = function (wantId) {\n if (this.length === 0 || !wantId) {\n return false;\n }\n\n if (this.start === wantId) {\n return true;\n } // use cache, if available\n\n\n if (this.cache.terms) {\n let terms = this.cache.terms;\n\n for (let i = 0; i < terms.length; i++) {\n if (terms[i].id === wantId) {\n return true;\n }\n }\n\n return false;\n } // otherwise, go through each term\n\n\n let lastId = this.start;\n\n for (let i = 0; i < this.length - 1; i += 1) {\n let term = this.pool.get(lastId);\n\n if (term === undefined) {\n console.error(`Compromise error: Linked list broken. Missing term '${lastId}' in phrase '${this.start}'\\n`); // throw new Error('linked List error')\n\n return false;\n }\n\n if (term.next === wantId) {\n return true;\n }\n\n lastId = term.next;\n }\n\n return false;\n };\n /** how many seperate, non-empty words is it? */\n\n\n _01Utils$1.wordCount = function () {\n return this.terms().filter(t => t.text !== '').length;\n };\n /** get the full-sentence this phrase belongs to */\n\n\n _01Utils$1.fullSentence = function () {\n let t = this.terms(0); //find first term in sentence\n\n while (t.prev) {\n t = this.pool.get(t.prev);\n }\n\n let start = t.id;\n let len = 1; //go to end of sentence\n\n while (t.next) {\n t = this.pool.get(t.next);\n len += 1;\n }\n\n return this.buildFrom(start, len);\n };\n\n var _02Text = {};\n\n const trimEnd = function (str) {\n return str.replace(/ +$/, '');\n };\n /** produce output in the given format */\n\n\n _02Text.text = function (options = {}, isFirst, isLast) {\n if (typeof options === 'string') {\n if (options === 'normal') {\n options = {\n whitespace: true,\n unicode: true,\n lowercase: true,\n punctuation: true,\n acronyms: true,\n abbreviations: true,\n implicit: true,\n normal: true\n };\n } else if (options === 'clean') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n normal: true\n };\n } else if (options === 'reduced') {\n options = {\n punctuation: false,\n //Hmm: is this reversed?\n titlecase: false,\n lowercase: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n reduced: true\n };\n } else if (options === 'implicit') {\n options = {\n punctuation: true,\n implicit: true,\n whitespace: true,\n trim: true\n };\n } else if (options === 'root') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n root: true\n };\n } else {\n options = {};\n }\n }\n\n let terms = this.terms(); //this this phrase a complete sentence?\n\n let isFull = false;\n\n if (terms[0] && terms[0].prev === null && terms[terms.length - 1].next === null) {\n isFull = true;\n }\n\n let text = terms.reduce((str, t, i) => {\n // don't output intro space for a contraction-match i'm good => \"[am] good\"\n if (i === 0 && t.text === '' && t.implicit !== null && !options.implicit) {\n return str;\n }\n\n options.last = isLast && i === terms.length - 1;\n let showPre = true;\n let showPost = true;\n\n if (isFull === false) {\n // dont show beginning whitespace\n if (i === 0 && isFirst) {\n showPre = false;\n } // dont show end-whitespace\n\n\n if (i === terms.length - 1 && isLast) {\n showPost = false;\n }\n }\n\n let txt = t.textOut(options, showPre, showPost); // console.log(terms)\n // if (options.titlecase && i === 0) {\n // txt = titleCase(txt)\n // }\n\n return str + txt;\n }, ''); //full-phrases show punctuation, but not whitespace\n\n if (isFull === true && isLast) {\n text = trimEnd(text);\n }\n\n if (options.trim === true) {\n text = text.trim();\n }\n\n return text;\n };\n\n var _03Change = {};\n\n /** remove start and end whitespace */\n\n _03Change.trim = function () {\n let terms = this.terms();\n\n if (terms.length > 0) {\n //trim starting\n terms[0].pre = terms[0].pre.replace(/^\\s+/, ''); //trim ending\n\n let lastTerm = terms[terms.length - 1];\n lastTerm.post = lastTerm.post.replace(/\\s+$/, '');\n }\n\n return this;\n };\n\n var _04Insert = {};\n\n const endOfSentence = /[.?!]\\s*$/; // replacing a 'word.' with a 'word!'\n\n const combinePost = function (before, after) {\n //only transfer the whitespace\n if (endOfSentence.test(after)) {\n let whitespace = before.match(/\\s*$/);\n return after + whitespace;\n }\n\n return before;\n }; //add whitespace to the start of the second bit\n\n\n const addWhitespace$1 = function (beforeTerms, newTerms) {\n // add any existing pre-whitespace to beginning\n newTerms[0].pre = beforeTerms[0].pre;\n let lastTerm = beforeTerms[beforeTerms.length - 1]; //add any existing punctuation to end of our new terms\n\n let newTerm = newTerms[newTerms.length - 1];\n newTerm.post = combinePost(lastTerm.post, newTerm.post); // remove existing punctuation\n\n lastTerm.post = ''; //before ←[space] - after\n\n if (lastTerm.post === '') {\n lastTerm.post += ' ';\n }\n }; //insert this segment into the linked-list\n\n\n const stitchIn$1 = function (beforeTerms, newTerms, pool) {\n let lastBefore = beforeTerms[beforeTerms.length - 1];\n let lastNew = newTerms[newTerms.length - 1];\n let afterId = lastBefore.next; //connect ours in (main → newPhrase)\n\n lastBefore.next = newTerms[0].id; //stich the end in (newPhrase → after)\n\n lastNew.next = afterId; //do it backwards, too\n\n if (afterId) {\n // newPhrase ← after\n let afterTerm = pool.get(afterId);\n afterTerm.prev = lastNew.id;\n } // before ← newPhrase\n\n\n let beforeId = beforeTerms[0].id;\n\n if (beforeId) {\n let newTerm = newTerms[0];\n newTerm.prev = beforeId;\n }\n }; // avoid stretching a phrase twice.\n\n\n const unique$6 = function (list) {\n return list.filter((o, i) => {\n return list.indexOf(o) === i;\n });\n }; //append one phrase onto another.\n\n\n const appendPhrase = function (before, newPhrase, doc) {\n let beforeTerms = before.terms();\n let newTerms = newPhrase.terms(); //spruce-up the whitespace issues\n\n addWhitespace$1(beforeTerms, newTerms); //insert this segment into the linked-list\n\n stitchIn$1(beforeTerms, newTerms, before.pool); // stretch!\n // make each effected phrase longer\n\n let toStretch = [before];\n let hasId = before.start;\n let docs = [doc];\n docs = docs.concat(doc.parents()); // find them all!\n\n docs.forEach(parent => {\n // only the phrases that should change\n let shouldChange = parent.list.filter(p => {\n return p.hasId(hasId);\n });\n toStretch = toStretch.concat(shouldChange);\n }); // don't double-count a phrase\n\n toStretch = unique$6(toStretch);\n toStretch.forEach(p => {\n p.length += newPhrase.length;\n });\n before.cache = {};\n return before;\n };\n\n var append$1 = appendPhrase;\n\n const hasSpace = / /; //a new space needs to be added, either on the new phrase, or the old one\n // '[new] [◻old]' -or- '[old] [◻new] [old]'\n\n const addWhitespace = function (newTerms) {\n //add a space before our new text?\n // add a space after our text\n let lastTerm = newTerms[newTerms.length - 1];\n\n if (hasSpace.test(lastTerm.post) === false) {\n lastTerm.post += ' ';\n }\n\n return;\n }; //insert this segment into the linked-list\n\n\n const stitchIn = function (main, newPhrase, newTerms) {\n // [newPhrase] → [main]\n let lastTerm = newTerms[newTerms.length - 1];\n lastTerm.next = main.start; // [before] → [main]\n\n let pool = main.pool;\n let start = pool.get(main.start);\n\n if (start.prev) {\n let before = pool.get(start.prev);\n before.next = newPhrase.start;\n } //do it backwards, too\n // before ← newPhrase\n\n\n newTerms[0].prev = main.terms(0).prev; // newPhrase ← main\n\n main.terms(0).prev = lastTerm.id;\n };\n\n const unique$5 = function (list) {\n return list.filter((o, i) => {\n return list.indexOf(o) === i;\n });\n }; //append one phrase onto another\n\n\n const joinPhrase = function (original, newPhrase, doc) {\n const starterId = original.start;\n let newTerms = newPhrase.terms(); //spruce-up the whitespace issues\n\n addWhitespace(newTerms); //insert this segment into the linked-list\n\n stitchIn(original, newPhrase, newTerms); //increase the length of our phrases\n\n let toStretch = [original];\n let docs = [doc];\n docs = docs.concat(doc.parents());\n docs.forEach(d => {\n // only the phrases that should change\n let shouldChange = d.list.filter(p => {\n return p.hasId(starterId) || p.hasId(newPhrase.start);\n });\n toStretch = toStretch.concat(shouldChange);\n }); // don't double-count\n\n toStretch = unique$5(toStretch); // stretch these phrases\n\n toStretch.forEach(p => {\n p.length += newPhrase.length; // change the start too, if necessary\n\n if (p.start === starterId) {\n p.start = newPhrase.start;\n }\n\n p.cache = {};\n });\n return original;\n };\n\n var prepend$1 = joinPhrase;\n\n const shrinkAll = function (doc, id, deleteLength, after) {\n let arr = doc.parents();\n arr.push(doc);\n arr.forEach(d => {\n //find our phrase to shrink\n let phrase = d.list.find(p => p.hasId(id));\n\n if (!phrase) {\n return;\n }\n\n phrase.length -= deleteLength; // does it start with this soon-removed word?\n\n if (phrase.start === id) {\n phrase.start = after.id;\n }\n\n phrase.cache = {};\n }); // cleanup empty phrase objects\n\n doc.list = doc.list.filter(p => {\n if (!p.start || !p.length) {\n return false;\n }\n\n return true;\n });\n };\n /** wrap the linked-list around these terms\n * so they don't appear any more\n */\n\n\n const deletePhrase$1 = function (phrase, doc) {\n let pool = doc.pool();\n let terms = phrase.terms(); //grab both sides of the chain,\n\n let prev = pool.get(terms[0].prev) || {};\n let after = pool.get(terms[terms.length - 1].next) || {};\n\n if (terms[0].implicit && prev.implicit) {\n prev.set(prev.implicit);\n prev.post += ' ';\n } // //first, change phrase lengths\n\n\n shrinkAll(doc, phrase.start, phrase.length, after); // connect [prev]->[after]\n\n if (prev) {\n prev.next = after.id;\n } // connect [prev]<-[after]\n\n\n if (after) {\n after.prev = prev.id;\n } // lastly, actually delete the terms from the pool?\n // for (let i = 0; i < terms.length; i++) {\n // pool.remove(terms[i].id)\n // }\n\n };\n\n var _delete = deletePhrase$1;\n\n const append = append$1;\n const prepend = prepend$1;\n const deletePhrase = _delete; // const tokenize = require('../../01-tokenizer')\n\n /** put this text at the end */\n\n _04Insert.append = function (newPhrase, doc) {\n append(this, newPhrase, doc);\n return this;\n };\n /** add this text to the beginning */\n\n\n _04Insert.prepend = function (newPhrase, doc) {\n prepend(this, newPhrase, doc);\n return this;\n };\n\n _04Insert.delete = function (doc) {\n deletePhrase(this, doc);\n return this;\n }; // stich-in newPhrase, stretch 'doc' + parents\n\n\n _04Insert.replace = function (newPhrase, doc) {\n //add it do the end\n let firstLength = this.length;\n append(this, newPhrase, doc); //delete original terms\n\n let tmp = this.buildFrom(this.start, this.length);\n tmp.length = firstLength;\n deletePhrase(tmp, doc);\n };\n /**\n * Turn this phrase object into 3 phrase objects\n */\n\n\n _04Insert.splitOn = function (p) {\n let terms = this.terms();\n let result = {\n before: null,\n match: null,\n after: null\n };\n let index = terms.findIndex(t => t.id === p.start);\n\n if (index === -1) {\n return result;\n } //make all three sections into phrase-objects\n\n\n let start = terms.slice(0, index);\n\n if (start.length > 0) {\n result.before = this.buildFrom(start[0].id, start.length);\n }\n\n let match = terms.slice(index, index + p.length);\n\n if (match.length > 0) {\n result.match = this.buildFrom(match[0].id, match.length);\n }\n\n let end = terms.slice(index + p.length, terms.length);\n\n if (end.length > 0) {\n result.after = this.buildFrom(end[0].id, end.length, this.pool);\n }\n\n return result;\n };\n\n var _05Json = {};\n\n /** return json metadata for this phrase */\n\n _05Json.json = function (options = {}, world) {\n let res = {}; // text data\n\n if (options.text) {\n res.text = this.text();\n }\n\n if (options.normal) {\n res.normal = this.text('normal');\n }\n\n if (options.clean) {\n res.clean = this.text('clean');\n }\n\n if (options.reduced) {\n res.reduced = this.text('reduced');\n }\n\n if (options.implicit) {\n res.implicit = this.text('implicit');\n }\n\n if (options.root) {\n res.root = this.text('root');\n }\n\n if (options.trim) {\n if (res.text) {\n res.text = res.text.trim();\n }\n\n if (res.normal) {\n res.normal = res.normal.trim();\n }\n\n if (res.reduced) {\n res.reduced = res.reduced.trim();\n }\n } // terms data\n\n\n if (options.terms) {\n if (options.terms === true) {\n options.terms = {};\n }\n\n res.terms = this.terms().map(t => t.json(options.terms, world));\n }\n\n return res;\n };\n\n var _06Lookahead = {};\n\n /** match any terms after this phrase */\n\n _06Lookahead.lookAhead = function (regs) {\n // if empty match string, return everything after\n if (!regs) {\n regs = '.*';\n }\n\n let pool = this.pool; // get a list of all terms preceding our start\n\n let terms = [];\n\n const getAfter = function (id) {\n let term = pool.get(id);\n\n if (!term) {\n return;\n }\n\n terms.push(term);\n\n if (term.prev) {\n getAfter(term.next); //recursion\n }\n };\n\n let all = this.terms();\n let lastTerm = all[all.length - 1];\n getAfter(lastTerm.next);\n\n if (terms.length === 0) {\n return [];\n } // got the terms, make a phrase from them\n\n\n let p = this.buildFrom(terms[0].id, terms.length);\n return p.match(regs);\n };\n /** match any terms before this phrase */\n\n\n _06Lookahead.lookBehind = function (regs) {\n // if empty match string, return everything before\n if (!regs) {\n regs = '.*';\n }\n\n let pool = this.pool; // get a list of all terms preceding our start\n\n let terms = [];\n\n const getBefore = function (id) {\n let term = pool.get(id);\n\n if (!term) {\n return;\n }\n\n terms.push(term);\n\n if (term.prev) {\n getBefore(term.prev); //recursion\n }\n };\n\n let term = pool.get(this.start);\n getBefore(term.prev);\n\n if (terms.length === 0) {\n return [];\n } // got the terms, make a phrase from them\n\n\n let p = this.buildFrom(terms[terms.length - 1].id, terms.length);\n return p.match(regs);\n };\n\n var methods$b = Object.assign({}, _01Utils$1, _02Text, _03Change, _04Insert, _05Json, _06Lookahead);\n\n var match = {};\n\n const failFast$2 = function (p, regs) {\n if (regs.length === 0) {\n return true;\n }\n\n for (let i = 0; i < regs.length; i += 1) {\n let reg = regs[i]; //logical quick-ones\n\n if (reg.optional !== true && reg.negative !== true) {\n //start/end impossibilites\n if (reg.start === true && i > 0) {\n return true;\n }\n } //this is not possible\n\n\n if (reg.anything === true && reg.negative === true) {\n return true;\n }\n }\n\n return false;\n };\n\n var _02FailFast = failFast$2;\n\n var _matchLogic = {};\n\n (function (exports) {\n //found a match? it's greedy? keep going!\n exports.getGreedy = function (state, endReg) {\n // for greedy checking, we no longer care about the reg.start\n // value, and leaving it can cause failures for anchored greedy\n // matches. ditto for end-greedy matches: we need an earlier non-\n // ending match to succceed until we get to the actual end.\n let reg = Object.assign({}, state.regs[state.r], {\n start: false,\n end: false\n });\n let start = state.t;\n\n for (; state.t < state.terms.length; state.t += 1) {\n //stop for next-reg match\n if (endReg && state.terms[state.t].doesMatch(endReg, state.start_i + state.t, state.phrase_length)) {\n return state.t;\n }\n\n let count = state.t - start + 1; // is it max-length now?\n\n if (reg.max !== undefined && count === reg.max) {\n return state.t;\n } //stop here\n\n\n if (state.terms[state.t].doesMatch(reg, state.start_i + state.t, state.phrase_length) === false) {\n // is it too short?\n if (reg.min !== undefined && count < reg.min) {\n return null;\n }\n\n return state.t;\n }\n }\n\n return state.t;\n }; //'unspecific greedy' is a weird situation.\n\n\n exports.greedyTo = function (state, nextReg) {\n let t = state.t; //if there's no next one, just go off the end!\n\n if (!nextReg) {\n return state.terms.length;\n } //otherwise, we're looking for the next one\n\n\n for (; t < state.terms.length; t += 1) {\n if (state.terms[t].doesMatch(nextReg, state.start_i + t, state.phrase_length) === true) {\n return t;\n }\n } //guess it doesn't exist, then.\n\n\n return null;\n }; //we have a special case where an end-anchored greedy match may need to\n //start matching before the actual end; we do this by (temporarily!)\n //removing the \"end\" property from the matching token... since this is\n //very situation-specific, we *only* do this when we really need to.\n\n\n exports.isEndGreedy = function (reg, state) {\n if (reg.end === true && reg.greedy === true) {\n if (state.start_i + state.t < state.phrase_length - 1) {\n let tmpReg = Object.assign({}, reg, {\n end: false\n });\n\n if (state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length) === true) {\n return true;\n }\n }\n }\n\n return false;\n }; // match complex OR cases like (a|b|foo bar)\n\n\n exports.doOrBlock = function (state, skipN = 0) {\n let block = state.regs[state.r];\n let wasFound = false; // do each multiword sequence\n\n for (let c = 0; c < block.choices.length; c += 1) {\n // try to match this list of tokens\n let regs = block.choices[c];\n wasFound = regs.every((cr, w_index) => {\n let extra = 0;\n let t = state.t + w_index + skipN + extra;\n\n if (state.terms[t] === undefined) {\n return false;\n }\n\n let foundBlock = state.terms[t].doesMatch(cr, t + state.start_i, state.phrase_length); // this can be greedy - '(foo+ bar)'\n\n if (foundBlock === true && cr.greedy === true) {\n for (let i = 1; i < state.terms.length; i += 1) {\n let term = state.terms[t + i];\n\n if (term) {\n let keepGoing = term.doesMatch(cr, state.start_i + i, state.phrase_length);\n\n if (keepGoing === true) {\n extra += 1;\n } else {\n break;\n }\n }\n }\n }\n\n skipN += extra;\n return foundBlock;\n });\n\n if (wasFound) {\n skipN += regs.length;\n break;\n }\n } // we found a match - is it greedy though?\n\n\n if (wasFound && block.greedy === true) {\n return exports.doOrBlock(state, skipN); // try it again!\n }\n\n return skipN;\n }; // match AND cases like (#Noun && foo)\n\n\n exports.doAndBlock = function (state) {\n let longest = 0; // all blocks must match, and we return the greediest match\n\n let reg = state.regs[state.r];\n let allDidMatch = reg.choices.every(block => {\n // for multi-word blocks, all must match\n let allWords = block.every((cr, w_index) => {\n let tryTerm = state.t + w_index;\n\n if (state.terms[tryTerm] === undefined) {\n return false;\n }\n\n return state.terms[tryTerm].doesMatch(cr, tryTerm, state.phrase_length);\n });\n\n if (allWords === true && block.length > longest) {\n longest = block.length;\n }\n\n return allWords;\n });\n\n if (allDidMatch === true) {\n return longest;\n }\n\n return false;\n }; // get or create named group\n\n\n exports.getGroup = function (state, term_index, name) {\n if (state.groups[state.groupId]) {\n return state.groups[state.groupId];\n }\n\n const termId = state.terms[term_index].id;\n state.groups[state.groupId] = {\n group: String(name),\n start: termId,\n length: 0\n };\n return state.groups[state.groupId];\n };\n })(_matchLogic);\n\n const makeId = _id;\n const logic = _matchLogic; // i formally apologize for how complicated this is.\n\n /** tries to match a sequence of terms, starting from here */\n\n const tryHere = function (terms, regs, start_i, phrase_length) {\n // all the variables that matter\n let state = {\n t: 0,\n //the term index we're on\n terms: terms,\n //the working slice of term objects\n r: 0,\n // the reg index we're on\n regs: regs,\n //our match conditions\n groups: {},\n //all named-group matches\n start_i: start_i,\n // term index we're starting from\n phrase_length: phrase_length,\n // # of terms in the sentence\n hasGroup: false,\n groupId: null,\n previousGroup: null\n }; // we must satisfy each rule in 'regs'\n\n for (; state.r < regs.length; state.r += 1) {\n let reg = regs[state.r]; // Check if this reg has a named capture group\n\n state.hasGroup = typeof reg.named === 'string' || typeof reg.named === 'number'; // Reuse previous capture group if same\n\n if (state.hasGroup === true) {\n const prev = regs[state.r - 1];\n\n if (prev && prev.named === reg.named && state.previousGroup) {\n state.groupId = state.previousGroup;\n } else {\n state.groupId = makeId(reg.named);\n state.previousGroup = state.groupId;\n }\n } //have we run-out of terms?\n\n\n if (!state.terms[state.t]) {\n //are all remaining regs optional or negative?\n const haveNeeds = regs.slice(state.r).some(remain => !remain.optional);\n\n if (haveNeeds === false) {\n break; //done!\n }\n\n return null; // die\n } //support 'unspecific greedy' .* properly\n\n\n if (reg.anything === true && reg.greedy === true) {\n let skipto = logic.greedyTo(state, regs[state.r + 1]); //maybe we couldn't find it\n\n if (skipto === null || skipto === 0) {\n return null;\n } // ensure it's long enough\n\n\n if (reg.min !== undefined && skipto - state.t < reg.min) {\n return null;\n } // reduce it back, if it's too long\n\n\n if (reg.max !== undefined && skipto - state.t > reg.max) {\n state.t = state.t + reg.max;\n continue;\n } // is it really this easy?....\n\n\n if (state.hasGroup === true) {\n const g = logic.getGroup(state, state.t, reg.named);\n g.length = skipto - state.t;\n }\n\n state.t = skipto;\n continue;\n } // support multi-word OR (a|b|foo bar)\n\n\n if (reg.choices !== undefined && reg.operator === 'or') {\n let skipNum = logic.doOrBlock(state);\n\n if (skipNum) {\n // handle 'not' logic\n if (reg.negative === true) {\n return null; // die\n }\n\n if (state.hasGroup === true) {\n const g = logic.getGroup(state, state.t, reg.named);\n g.length += skipNum;\n }\n\n state.t += skipNum;\n continue;\n } else if (!reg.optional) {\n return null; //die\n }\n } // support AND (#Noun && foo) blocks\n\n\n if (reg.choices !== undefined && reg.operator === 'and') {\n let skipNum = logic.doAndBlock(state);\n\n if (skipNum) {\n // handle 'not' logic\n if (reg.negative === true) {\n return null; // die\n }\n\n if (state.hasGroup === true) {\n const g = logic.getGroup(state, state.t, reg.named);\n g.length += skipNum;\n }\n\n state.t += skipNum;\n continue;\n } else if (!reg.optional) {\n return null; //die\n }\n } // ok, finally test the term/reg\n\n\n let term = state.terms[state.t];\n let doesMatch = term.doesMatch(reg, state.start_i + state.t, state.phrase_length);\n\n if (reg.anything === true || doesMatch === true || logic.isEndGreedy(reg, state)) {\n let startAt = state.t; // if it's a negative optional match... :0\n\n if (reg.optional && regs[state.r + 1] && reg.negative) {\n continue;\n } // okay, it was a match, but if it's optional too,\n // we should check the next reg too, to skip it?\n\n\n if (reg.optional && regs[state.r + 1]) {\n // does the next reg match it too?\n let nextRegMatched = term.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length);\n\n if (reg.negative || nextRegMatched) {\n // but does the next reg match the next term??\n // only skip if it doesn't\n let nextTerm = state.terms[state.t + 1];\n\n if (!nextTerm || !nextTerm.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length)) {\n state.r += 1;\n }\n }\n } //advance to the next term!\n\n\n state.t += 1; //check any ending '$' flags\n\n if (reg.end === true) {\n //if this isn't the last term, refuse the match\n if (state.t !== state.terms.length && reg.greedy !== true) {\n return null; //die\n }\n } //try keep it going!\n\n\n if (reg.greedy === true) {\n state.t = logic.getGreedy(state, regs[state.r + 1]);\n\n if (state.t === null) {\n return null; //greedy was too short\n }\n\n if (reg.min && reg.min > state.t) {\n return null; //greedy was too short\n } // if this was also an end-anchor match, check to see we really\n // reached the end\n\n\n if (reg.end === true && state.start_i + state.t !== phrase_length) {\n return null; //greedy didn't reach the end\n }\n }\n\n if (state.hasGroup === true) {\n // Get or create capture group\n const g = logic.getGroup(state, startAt, reg.named); // Update group - add greedy or increment length\n\n if (state.t > 1 && reg.greedy) {\n g.length += state.t - startAt;\n } else {\n g.length++;\n }\n }\n\n continue;\n } // ok, it doesn't match.\n // did it *actually match* a negative?\n\n\n if (reg.negative) {\n let tmpReg = Object.assign({}, reg);\n tmpReg.negative = false; // try removing it\n\n let foundNeg = state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length);\n\n if (foundNeg === true) {\n return null; //bye!\n }\n } //bah, who cares, keep going\n\n\n if (reg.optional === true) {\n continue;\n } // should we skip-over an implicit word?\n\n\n if (state.terms[state.t].isImplicit() && regs[state.r - 1] && state.terms[state.t + 1]) {\n // if the last match was implicit too, we're missing a word.\n if (state.terms[state.t - 1] && state.terms[state.t - 1].implicit === regs[state.r - 1].word) {\n return null;\n } // does the next one match?\n\n\n if (state.terms[state.t + 1].doesMatch(reg, state.start_i + state.t, state.phrase_length)) {\n state.t += 2;\n continue;\n }\n }\n\n return null; //die\n } //return our result\n\n\n return {\n match: state.terms.slice(0, state.t),\n groups: state.groups\n };\n };\n\n var _03TryMatch = tryHere;\n\n const postProcess$3 = function (terms, regs, matches) {\n if (!matches || matches.length === 0) {\n return matches;\n } // ensure end reg has the end term\n\n\n let atEnd = regs.some(r => r.end);\n\n if (atEnd) {\n let lastTerm = terms[terms.length - 1];\n matches = matches.filter(({\n match: arr\n }) => arr.indexOf(lastTerm) !== -1);\n }\n\n return matches;\n };\n\n var _04PostProcess = postProcess$3;\n\n // suffixes: ? ] + * $ {2,6} ~\n // [\\?\\]\\+\\*\\$~]*\n // prefixes: ! [ ^\n // [\\!\\[\\^]*\n // match 'foo /yes/' and not 'foo/no/bar'\n\n const bySlashes = /(?:^|\\s)([\\!\\[\\^]*(?:<[^<]*>)?\\/.*?[^\\\\\\/]\\/[\\?\\]\\+\\*\\$~]*)(?:\\s|$)/; // match '(yes) but not foo(no)bar'\n\n const byParentheses = /([\\!\\[\\^]*(?:<[^<]*>)?\\([^\\)]+[^\\\\\\)]\\)[\\?\\]\\+\\*\\$~]*)(?:\\s|$)/; // okay\n\n const byWord = / /g;\n\n const isBlock = str => {\n return /^[\\!\\[\\^]*(<[^<]*>)?\\(/.test(str) && /\\)[\\?\\]\\+\\*\\$~]*$/.test(str);\n };\n\n const isReg = str => {\n return /^[\\!\\[\\^]*(<[^<]*>)?\\//.test(str) && /\\/[\\?\\]\\+\\*\\$~]*$/.test(str);\n };\n\n const cleanUp = function (arr) {\n arr = arr.map(str => str.trim());\n arr = arr.filter(str => str);\n return arr;\n };\n\n const parseBlocks$1 = function (txt) {\n // parse by /regex/ first\n let arr = txt.split(bySlashes);\n let res = []; // parse by (blocks), next\n\n arr.forEach(str => {\n if (isReg(str)) {\n res.push(str);\n return;\n }\n\n res = res.concat(str.split(byParentheses));\n });\n res = cleanUp(res); // split by spaces, now\n\n let final = [];\n res.forEach(str => {\n if (isBlock(str)) {\n final.push(str);\n } else if (isReg(str)) {\n final.push(str);\n } else {\n final = final.concat(str.split(byWord));\n }\n });\n final = cleanUp(final);\n return final;\n };\n\n var _01ParseBlocks = parseBlocks$1; // console.log('(one two) (upto) [#Date+]'.split(byParentheses))\n\n /* break-down a match expression into this:\n {\n word:'',\n tag:'',\n regex:'',\n\n start:false,\n end:false,\n negative:false,\n anything:false,\n greedy:false,\n optional:false,\n\n named:'',\n choices:[],\n }\n */\n const hasMinMax = /\\{([0-9]+,?[0-9]*)\\}/;\n const andSign = /&&/;\n const captureName = new RegExp(/^<\\s*?(\\S+)\\s*?>/);\n\n const titleCase$2 = str => {\n return str.charAt(0).toUpperCase() + str.substr(1);\n };\n\n const end = function (str) {\n return str[str.length - 1];\n };\n\n const start = function (str) {\n return str[0];\n };\n\n const stripStart = function (str) {\n return str.substr(1);\n };\n\n const stripEnd = function (str) {\n return str.substr(0, str.length - 1);\n };\n\n const stripBoth = function (str) {\n str = stripStart(str);\n str = stripEnd(str);\n return str;\n }; //\n\n\n const parseToken$1 = function (w) {\n let obj = {}; //collect any flags (do it twice)\n\n for (let i = 0; i < 2; i += 1) {\n //end-flag\n if (end(w) === '$') {\n obj.end = true;\n w = stripEnd(w);\n } //front-flag\n\n\n if (start(w) === '^') {\n obj.start = true;\n w = stripStart(w);\n } //capture group (this one can span multiple-terms)\n\n\n if (start(w) === '[' || end(w) === ']') {\n obj.named = true;\n\n if (start(w) === '[') {\n obj.groupType = end(w) === ']' ? 'single' : 'start';\n } else {\n obj.groupType = 'end';\n }\n\n w = w.replace(/^\\[/, '');\n w = w.replace(/\\]$/, ''); // Use capture group name\n\n if (start(w) === '<') {\n const res = captureName.exec(w);\n\n if (res.length >= 2) {\n obj.named = res[1];\n w = w.replace(res[0], '');\n }\n }\n } //back-flags\n\n\n if (end(w) === '+') {\n obj.greedy = true;\n w = stripEnd(w);\n }\n\n if (w !== '*' && end(w) === '*' && w !== '\\\\*') {\n obj.greedy = true;\n w = stripEnd(w);\n }\n\n if (end(w) === '?') {\n obj.optional = true;\n w = stripEnd(w);\n }\n\n if (start(w) === '!') {\n obj.negative = true; // obj.optional = true\n\n w = stripStart(w);\n } //wrapped-flags\n\n\n if (start(w) === '(' && end(w) === ')') {\n // support (one && two)\n if (andSign.test(w)) {\n obj.choices = w.split(andSign);\n obj.operator = 'and';\n } else {\n obj.choices = w.split('|');\n obj.operator = 'or';\n } //remove '(' and ')'\n\n\n obj.choices[0] = stripStart(obj.choices[0]);\n let last = obj.choices.length - 1;\n obj.choices[last] = stripEnd(obj.choices[last]); // clean up the results\n\n obj.choices = obj.choices.map(s => s.trim());\n obj.choices = obj.choices.filter(s => s); //recursion alert!\n\n obj.choices = obj.choices.map(str => {\n return str.split(/ /g).map(parseToken$1);\n });\n w = '';\n } //regex\n\n\n if (start(w) === '/' && end(w) === '/') {\n w = stripBoth(w);\n obj.regex = new RegExp(w); //potential vuln - security/detect-non-literal-regexp\n\n return obj;\n } //soft-match\n\n\n if (start(w) === '~' && end(w) === '~') {\n w = stripBoth(w);\n obj.soft = true;\n obj.word = w;\n return obj;\n }\n } // support #Tag{1,9}\n\n\n if (hasMinMax.test(w) === true) {\n w = w.replace(hasMinMax, (a, b) => {\n let arr = b.split(/,/g);\n\n if (arr.length === 1) {\n // '{3}'\tExactly three times\n obj.min = Number(arr[0]);\n obj.max = Number(arr[0]);\n } else {\n // '{2,4}' Two to four times\n // '{3,}' Three or more times\n obj.min = Number(arr[0]);\n obj.max = Number(arr[1] || 999);\n } // use same method as '+'\n\n\n obj.greedy = true; // 0 as min means the same as '?'\n\n obj.optional = true;\n return '';\n });\n } //do the actual token content\n\n\n if (start(w) === '#') {\n obj.tag = stripStart(w);\n obj.tag = titleCase$2(obj.tag);\n return obj;\n } //dynamic function on a term object\n\n\n if (start(w) === '@') {\n obj.method = stripStart(w);\n return obj;\n }\n\n if (w === '.') {\n obj.anything = true;\n return obj;\n } //support alone-astrix\n\n\n if (w === '*') {\n obj.anything = true;\n obj.greedy = true;\n obj.optional = true;\n return obj;\n }\n\n if (w) {\n //somehow handle encoded-chars?\n w = w.replace('\\\\*', '*');\n w = w.replace('\\\\.', '.');\n obj.word = w.toLowerCase();\n }\n\n return obj;\n };\n\n var _02ParseToken = parseToken$1;\n\n const nameGroups = function (tokens) {\n let convert = false;\n let index = -1;\n let current; //'fill in' capture groups between start-end\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i]; // Give name to un-named single tokens\n\n if (token.groupType === 'single' && token.named === true) {\n index += 1;\n token.named = index;\n continue;\n } // Start converting tokens\n\n\n if (token.groupType === 'start') {\n convert = true;\n\n if (typeof token.named === 'string' || typeof token.named === 'number') {\n current = token.named;\n } else {\n index += 1;\n current = index;\n }\n } // Ensure this token has the right name\n\n\n if (convert) {\n token.named = current;\n } // Stop converting tokens\n\n\n if (token.groupType === 'end') {\n convert = false;\n }\n }\n\n return tokens;\n }; // optimize an 'or' lookup, when the (a|b|c) list is simple or multi-word\n\n\n const doFastOrMode = function (tokens) {\n return tokens.map(token => {\n if (token.choices !== undefined) {\n // are they all straight-up words? then optimize them.\n let shouldPack = token.choices.every(block => {\n if (block.length !== 1) {\n return false;\n }\n\n let reg = block[0];\n\n if (reg.word !== undefined && reg.negative !== true && reg.optional !== true && reg.method !== true) {\n return true; //reg is simple-enough\n }\n\n return false;\n });\n\n if (shouldPack === true) {\n let oneOf = {};\n token.choices.forEach(block => {\n oneOf[block[0].word] = true;\n });\n token.fastOr = oneOf;\n delete token.choices;\n }\n }\n\n return token;\n });\n }; // allow multiword OR (foo|one two)\n // const doMultiWord = function (tokens) {\n // return tokens.map(token => {\n // if (token.choices !== undefined) {\n // let isMulti = token.choices.find(o => hasASpace.test(o.word)) || false\n // if (isMulti !== false) {\n // token.multiword = true\n // // turn all choices into arrays\n // token.choices = token.choices.map(choice => {\n // if (choice.word) {\n // choice.sequence = choice.word.split(hasASpace)\n // delete choice.word\n // }\n // return choice\n // })\n // }\n // }\n // return token\n // })\n // }\n // const doBlockMode = function (tokens) {\n // return tokens.map(token => {\n // // we've already setup fastOr mode\n // if (token.choices !== undefined) {\n // // console.log(token)\n // }\n // return token\n // })\n // }\n\n\n const postProcess$2 = function (tokens, opts = {}) {\n // ensure all capture groups are filled between start and end\n // give all capture groups names\n let count = tokens.filter(t => t.groupType).length;\n\n if (count > 0) {\n tokens = nameGroups(tokens);\n } // convert 'choices' format to 'fastOr' format\n\n\n if (!opts.fuzzy) {\n tokens = doFastOrMode(tokens);\n } // support multiword OR (foo bar|baz)\n // tokens = doMultiWord(tokens)\n // support (one two three)\n // tokens = doBlockMode(tokens)\n\n\n return tokens;\n };\n\n var _03PostProcess = postProcess$2;\n\n const parseBlocks = _01ParseBlocks;\n const parseToken = _02ParseToken;\n const postProcess$1 = _03PostProcess;\n\n const isArray$2 = function (arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n }; //turn an array into a 'choices' list\n\n\n const byArray = function (arr) {\n let blocks = arr.map(s => {\n return [{\n word: s\n }];\n });\n return [{\n choices: blocks,\n operator: 'or'\n }];\n }; // turn a Doc object into a reg of ids to lookup\n\n\n const fromDoc = function (doc) {\n if (!doc || !doc.list || !doc.list[0]) {\n return [];\n }\n\n let regs = [];\n doc.list.forEach(p => {\n let ids = [];\n p.terms().forEach(t => {\n ids.push(t.id);\n });\n regs.push(ids);\n });\n return [{\n idBlocks: regs\n }];\n }; // add fuzziness etc to each reg\n\n\n const addOptions = function (tokens, opts) {\n // add default fuzzy-search limit\n if (opts.fuzzy === true) {\n opts.fuzzy = 0.85;\n }\n\n if (typeof opts.fuzzy === 'number') {\n tokens = tokens.map(reg => {\n // add a fuzzy-match on 'word' tokens\n if (opts.fuzzy > 0 && reg.word) {\n reg.fuzzy = opts.fuzzy;\n } //add it to or|and choices too\n\n\n if (reg.choices) {\n reg.choices.forEach(block => {\n block.forEach(r => {\n r.fuzzy = opts.fuzzy;\n });\n });\n }\n\n return reg;\n });\n }\n\n return tokens;\n };\n /** parse a match-syntax string into json */\n\n\n const syntax$1 = function (input, opts = {}) {\n // fail-fast\n if (input === null || input === undefined || input === '') {\n return [];\n } //try to support a ton of different formats:\n\n\n if (typeof input === 'object') {\n if (isArray$2(input)) {\n if (input.length === 0 || !input[0]) {\n return [];\n } //is it a pre-parsed reg-list?\n\n\n if (typeof input[0] === 'object') {\n return input;\n } //support a flat array of normalized words\n\n\n if (typeof input[0] === 'string') {\n return byArray(input);\n }\n } //support passing-in a compromise object as a match\n\n\n if (input && input.isA === 'Doc') {\n return fromDoc(input);\n }\n\n return [];\n }\n\n if (typeof input === 'number') {\n input = String(input); //go for it?\n }\n\n let tokens = parseBlocks(input); //turn them into objects\n\n tokens = tokens.map(str => parseToken(str)); //clean up anything weird\n\n tokens = postProcess$1(tokens, opts); // add fuzzy limits, etc\n\n tokens = addOptions(tokens, opts); // console.log(tokens)\n\n return tokens;\n };\n\n var matchSyntax = syntax$1; // console.log(syntax('[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)'))\n\n // take a phrase and find any of the idBlocks in it\n\n const idLookup$1 = function (terms, regs) {\n let matches = [];\n let blocklist = regs[0].idBlocks;\n\n for (let t = 0; t < terms.length; t += 1) {\n blocklist.forEach(block => {\n if (block.length === 0) {\n return;\n }\n\n let foundAll = block.every((id, i) => {\n return terms[t + i].id === id;\n });\n\n if (foundAll) {\n matches.push({\n match: terms.slice(t, t + block.length)\n }); // skip top-loop forward\n\n t += block.length - 1;\n }\n });\n }\n\n return matches;\n };\n\n var idLookup_1 = idLookup$1;\n\n const failFast$1 = _02FailFast;\n const tryMatch = _03TryMatch;\n const postProcess = _04PostProcess;\n const syntax = matchSyntax;\n const idLookup = idLookup_1;\n /** returns a simple array of arrays */\n\n const matchAll$2 = function (p, regs, matchOne = false) {\n //if we forgot to parse it..\n if (typeof regs === 'string') {\n regs = syntax(regs);\n } //try to dismiss it, at-once\n\n\n if (failFast$1(p, regs) === true) {\n return [];\n } //any match needs to be this long, at least\n\n\n const minLength = regs.filter(r => r.optional !== true && r.negative !== true).length;\n let terms = p.terms();\n let matches = []; // these id-lookups can be super-fast\n\n if (regs[0].idBlocks) {\n let res = idLookup(terms, regs);\n\n if (res && res.length > 0) {\n return postProcess(terms, regs, res);\n }\n } //optimisation for '^' start logic\n\n\n if (regs[0].start === true) {\n let res = tryMatch(terms, regs, 0, terms.length);\n\n if (res && res.match && res.match.length > 0) {\n res.match = res.match.filter(m => m);\n matches.push(res);\n }\n\n return postProcess(terms, regs, matches);\n } //try starting, from every term\n\n\n for (let i = 0; i < terms.length; i += 1) {\n // slice may be too short\n if (i + minLength > terms.length) {\n break;\n } //try it!\n\n\n let res = tryMatch(terms.slice(i), regs, i, terms.length);\n\n if (res && res.match && res.match.length > 0) {\n //zoom forward!\n i += res.match.length - 1; //[capture-groups] return some null responses\n\n res.match = res.match.filter(m => m);\n matches.push(res); //ok, maybe that's enough?\n\n if (matchOne === true) {\n return postProcess(terms, regs, matches);\n }\n }\n }\n\n return postProcess(terms, regs, matches);\n };\n\n var _01MatchAll = matchAll$2;\n\n const matchAll$1 = _01MatchAll;\n /** return anything that doesn't match.\n * returns a simple array of arrays\n */\n\n const notMatch$1 = function (p, regs) {\n let found = {};\n let arr = matchAll$1(p, regs);\n arr.forEach(({\n match: ts\n }) => {\n ts.forEach(t => {\n found[t.id] = true;\n });\n }); //return anything not found\n\n let terms = p.terms();\n let result = [];\n let current = [];\n terms.forEach(t => {\n if (found[t.id] === true) {\n if (current.length > 0) {\n result.push(current);\n current = [];\n }\n\n return;\n }\n\n current.push(t);\n });\n\n if (current.length > 0) {\n result.push(current);\n }\n\n return result;\n };\n\n var not = notMatch$1;\n\n const matchAll = _01MatchAll;\n const notMatch = not;\n /** return an array of matching phrases */\n\n match.match = function (regs, justOne = false) {\n let matches = matchAll(this, regs, justOne); //make them phrase objects\n\n matches = matches.map(({\n match,\n groups\n }) => {\n let p = this.buildFrom(match[0].id, match.length, groups);\n p.cache.terms = match;\n return p;\n });\n return matches;\n };\n /** return boolean if one match is found */\n\n\n match.has = function (regs) {\n let matches = matchAll(this, regs, true);\n return matches.length > 0;\n };\n /** remove all matches from the result */\n\n\n match.not = function (regs) {\n let matches = notMatch(this, regs); //make them phrase objects\n\n matches = matches.map(list => {\n return this.buildFrom(list[0].id, list.length);\n });\n return matches;\n };\n /** return a list of phrases that can have this tag */\n\n\n match.canBe = function (tag, world) {\n let results = [];\n let terms = this.terms();\n let previous = false;\n\n for (let i = 0; i < terms.length; i += 1) {\n let can = terms[i].canBe(tag, world);\n\n if (can === true) {\n if (previous === true) {\n //add it to the end\n results[results.length - 1].push(terms[i]);\n } else {\n results.push([terms[i]]); //make a new one\n }\n\n previous = can;\n }\n } //turn them into Phrase objects\n\n\n results = results.filter(a => a.length > 0).map(arr => {\n return this.buildFrom(arr[0].id, arr.length);\n });\n return results;\n };\n\n const methods$a = methods$b;\n const matchMethods = match; // const tokenize = require('../01-tokenizer')\n\n class Phrase$3 {\n constructor(id, length, pool) {\n this.start = id;\n this.length = length;\n this.isA = 'Phrase'; // easier than .constructor...\n\n Object.defineProperty(this, 'pool', {\n enumerable: false,\n writable: true,\n value: pool\n });\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, 'groups', {\n enumerable: false,\n writable: true,\n value: {}\n });\n }\n\n }\n /** create a new Phrase object from an id and length */\n\n\n Phrase$3.prototype.buildFrom = function (id, length, groups) {\n let p = new Phrase$3(id, length, this.pool); //copy-over or replace capture-groups too\n\n if (groups && Object.keys(groups).length > 0) {\n p.groups = groups;\n } else {\n p.groups = this.groups;\n }\n\n return p;\n }; //apply methods\n\n\n Object.assign(Phrase$3.prototype, matchMethods);\n Object.assign(Phrase$3.prototype, methods$a); //apply aliases\n\n const aliases$1 = {\n term: 'terms'\n };\n Object.keys(aliases$1).forEach(k => Phrase$3.prototype[k] = Phrase$3.prototype[aliases$1[k]]);\n var Phrase_1 = Phrase$3;\n\n /** a key-value store of all terms in our Document */\n\n class Pool$3 {\n constructor(words = {}) {\n //quiet this property in console.logs\n Object.defineProperty(this, 'words', {\n enumerable: false,\n value: words\n });\n }\n /** throw a new term object in */\n\n\n add(term) {\n this.words[term.id] = term;\n return this;\n }\n /** find a term by it's id */\n\n\n get(id) {\n return this.words[id];\n }\n /** find a term by it's id */\n\n\n remove(id) {\n delete this.words[id];\n }\n\n merge(pool) {\n Object.assign(this.words, pool.words);\n return this;\n }\n /** helper method */\n\n\n stats() {\n return {\n words: Object.keys(this.words).length\n };\n }\n\n }\n /** make a deep-copy of all terms */\n\n\n Pool$3.prototype.clone = function () {\n let keys = Object.keys(this.words);\n let words = keys.reduce((h, k) => {\n let t = this.words[k].clone();\n h[t.id] = t;\n return h;\n }, {});\n return new Pool$3(words);\n };\n\n var Pool_1 = Pool$3;\n\n const linkTerms$2 = terms => {\n terms.forEach((term, i) => {\n if (i > 0) {\n term.prev = terms[i - 1].id;\n }\n\n if (terms[i + 1]) {\n term.next = terms[i + 1].id;\n }\n });\n };\n\n var _linkTerms = linkTerms$2;\n\n // Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc.\n // @spencermountain 2017 MIT\n //proper nouns with exclamation marks\n // const blacklist = {\n // yahoo: true,\n // joomla: true,\n // jeopardy: true,\n // }\n //regs-\n\n const initSplit = /(\\S.+?[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049])(?=\\s+|$)/g;\n const hasSomething = /\\S/;\n const isAcronym$1 = /[ .][A-Z]\\.? *$/i;\n const hasEllipse = /(?:\\u2026|\\.{2,}) *$/;\n const newLine = /((?:\\r?\\n|\\r)+)/; // Match different new-line formats\n\n const hasLetter = /[a-z0-9\\u00C0-\\u00FF\\u00a9\\u00ae\\u2000-\\u3300\\ud000-\\udfff]/i;\n const startWhitespace = /^\\s+/; // Start with a regex:\n\n const naiive_split = function (text) {\n let all = []; //first, split by newline\n\n let lines = text.split(newLine);\n\n for (let i = 0; i < lines.length; i++) {\n //split by period, question-mark, and exclamation-mark\n let arr = lines[i].split(initSplit);\n\n for (let o = 0; o < arr.length; o++) {\n all.push(arr[o]);\n }\n }\n\n return all;\n };\n\n const testIsAcronym = function (str, suffix) {\n // early exit\n if (suffix.indexOf('.') === -1) {\n return false;\n }\n\n return isAcronym$1.test(str);\n };\n\n const testHasEllipse = function (str, suffix) {\n // early exit\n if (suffix.indexOf('.') === -1) {\n return false;\n }\n\n return hasEllipse.test(str);\n };\n\n const testHasLetter = function (suffix, prefixHasLetter) {\n return prefixHasLetter || hasLetter.test(suffix);\n };\n /** does this look like a sentence? */\n\n\n const isSentence = function (str, suffix, abbrevs, prefixContext) {\n // must have a letter\n prefixContext.hasLetter = testHasLetter(suffix, prefixContext.hasLetter);\n\n if (!prefixContext.hasLetter) {\n return false;\n } // check for 'F.B.I.'\n\n\n if (testIsAcronym(str, suffix)) {\n return false;\n } //check for '...'\n\n\n if (testHasEllipse(str, suffix)) {\n return false;\n }\n\n let txt = str.replace(/[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049] *$/, '');\n let words = txt.split(' ');\n let lastWord = words[words.length - 1].toLowerCase(); // check for 'Mr.'\n\n if (abbrevs.hasOwnProperty(lastWord)) {\n return false;\n } // //check for jeopardy!\n // if (blacklist.hasOwnProperty(lastWord)) {\n // return false\n // }\n\n\n return true;\n };\n\n const splitSentences$1 = function (text, world) {\n let abbrevs = world.cache.abbreviations;\n text = text || '';\n text = String(text);\n let sentences = []; // First do a greedy-split..\n\n let chunks = []; // Ensure it 'smells like' a sentence\n\n if (!text || typeof text !== 'string' || hasSomething.test(text) === false) {\n return sentences;\n } // cleanup unicode-spaces\n\n\n text = text.replace('\\xa0', ' '); // Start somewhere:\n\n let splits = naiive_split(text); // Filter-out the crap ones\n\n for (let i = 0; i < splits.length; i++) {\n let s = splits[i];\n\n if (s === undefined || s === '') {\n continue;\n } //this is meaningful whitespace\n\n\n if (hasSomething.test(s) === false) {\n //add it to the last one\n if (chunks[chunks.length - 1]) {\n chunks[chunks.length - 1] += s;\n continue;\n } else if (splits[i + 1]) {\n //add it to the next one\n splits[i + 1] = s + splits[i + 1];\n continue;\n }\n } //else, only whitespace, no terms, no sentence\n\n\n chunks.push(s);\n } //detection of non-sentence chunks:\n //loop through these chunks, and join the non-sentence chunks back together..\n\n\n let suffix = chunks[0] || '';\n const prefixContext = {\n hasLetter: false\n };\n\n for (let i = 0; i < chunks.length; i++) {\n let c = chunks[i]; //should this chunk be combined with the next one?\n\n if (chunks[i + 1] && isSentence(c, suffix, abbrevs, prefixContext) === false) {\n suffix = chunks[i + 1] || '';\n chunks[i + 1] = c + suffix;\n } else if (c && c.length > 0) {\n //&& hasLetter.test(c)\n //this chunk is a proper sentence..\n sentences.push(c);\n suffix = chunks[i + 1] || '';\n prefixContext.hasLetter = false;\n }\n\n chunks[i] = '';\n } //if we never got a sentence, return the given text\n\n\n if (sentences.length === 0) {\n return [text];\n } //move whitespace to the ends of sentences, when possible\n //['hello',' world'] -> ['hello ','world']\n\n\n for (let i = 1; i < sentences.length; i += 1) {\n let ws = sentences[i].match(startWhitespace);\n\n if (ws !== null) {\n sentences[i - 1] += ws[0];\n sentences[i] = sentences[i].replace(startWhitespace, '');\n }\n }\n\n return sentences;\n };\n\n var _01Sentences = splitSentences$1; // console.log(sentence_parser('john f. kennedy'));\n\n const wordlike = /\\S/;\n const isBoundary = /^[!?.]+$/;\n const naiiveSplit = /(\\S+)/;\n const isSlash = /[a-z] ?\\/ ?[a-z]*$/;\n let notWord = ['.', '?', '!', ':', ';', '-', '–', '—', '--', '...', '(', ')', '[', ']', '\"', \"'\", '`'];\n notWord = notWord.reduce((h, c) => {\n h[c] = true;\n return h;\n }, {});\n\n const hasHyphen = function (str) {\n //dont split 're-do'\n if (/^(re|un|micro|macro|trans|bi|mono|over)-?[^aeiou]./.test(str) === true) {\n return false;\n } //dont split 'bat-like'\n\n\n if (/^([a-z\\u00C0-\\u00FF/]+)(-|–|—)(like|ish|less|able)/i.test(str) === true) {\n return false;\n } //letter-number 'aug-20'\n\n\n let reg = /^([a-z\\u00C0-\\u00FF`\"'/]+)(-|–|—)([a-z0-9\\u00C0-\\u00FF].*)/i;\n\n if (reg.test(str) === true) {\n return true;\n } //number-letter '20-aug'\n\n\n let reg2 = /^([0-9]{1,4})(-|–|—)([a-z\\u00C0-\\u00FF`\"'/-]+$)/i;\n\n if (reg2.test(str) === true) {\n return true;\n }\n\n return false;\n }; // combine '2 - 5' like '2-5' is\n\n\n const combineRanges = function (arr) {\n const startRange = /^[0-9]{1,4}(:[0-9][0-9])?([a-z]{1,2})? ?(-|–|—) ?$/;\n const endRange = /^[0-9]{1,4}([a-z]{1,2})? ?$/;\n\n for (let i = 0; i < arr.length - 1; i += 1) {\n if (arr[i + 1] && startRange.test(arr[i]) && endRange.test(arr[i + 1])) {\n arr[i] = arr[i] + arr[i + 1];\n arr[i + 1] = null;\n }\n }\n\n return arr;\n }; // 'he / she' should be one word\n\n\n const combineSlashes = function (arr) {\n for (let i = 1; i < arr.length - 1; i++) {\n if (isSlash.test(arr[i])) {\n arr[i - 1] += arr[i] + arr[i + 1];\n arr[i] = null;\n arr[i + 1] = null;\n }\n }\n\n return arr;\n };\n\n const splitHyphens = function (word) {\n let arr = []; //support multiple-hyphenated-terms\n\n const hyphens = word.split(/[-–—]/);\n let whichDash = '-';\n let found = word.match(/[-–—]/);\n\n if (found && found[0]) {\n whichDash = found;\n }\n\n for (let o = 0; o < hyphens.length; o++) {\n if (o === hyphens.length - 1) {\n arr.push(hyphens[o]);\n } else {\n arr.push(hyphens[o] + whichDash);\n }\n }\n\n return arr;\n };\n\n const isArray$1 = function (arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n }; //turn a string into an array of strings (naiive for now, lumped later)\n\n\n const splitWords = function (str) {\n let result = [];\n let arr = []; //start with a naiive split\n\n str = str || '';\n\n if (typeof str === 'number') {\n str = String(str);\n }\n\n if (isArray$1(str)) {\n return str;\n }\n\n const words = str.split(naiiveSplit);\n\n for (let i = 0; i < words.length; i++) {\n //split 'one-two'\n if (hasHyphen(words[i]) === true) {\n arr = arr.concat(splitHyphens(words[i]));\n continue;\n }\n\n arr.push(words[i]);\n } //greedy merge whitespace+arr to the right\n\n\n let carry = '';\n\n for (let i = 0; i < arr.length; i++) {\n let word = arr[i]; //if it's more than a whitespace\n\n if (wordlike.test(word) === true && notWord.hasOwnProperty(word) === false && isBoundary.test(word) === false) {\n //put whitespace on end of previous term, if possible\n if (result.length > 0) {\n result[result.length - 1] += carry;\n result.push(word);\n } else {\n //otherwise, but whitespace before\n result.push(carry + word);\n }\n\n carry = '';\n } else {\n carry += word;\n }\n } //handle last one\n\n\n if (carry) {\n if (result.length === 0) {\n result[0] = '';\n }\n\n result[result.length - 1] += carry; //put it on the end\n } // combine 'one / two'\n\n\n result = combineSlashes(result);\n result = combineRanges(result); // remove empty results\n\n result = result.filter(s => s);\n return result;\n };\n\n var _02Words = splitWords;\n\n const Term$2 = Term_1;\n const Phrase$2 = Phrase_1;\n const Pool$2 = Pool_1;\n const linkTerms$1 = _linkTerms;\n const splitSentences = _01Sentences;\n const splitTerms = _02Words;\n\n const isArray = function (arr) {\n return Object.prototype.toString.call(arr) === '[object Array]';\n };\n /** turn a string into an array of Phrase objects */\n\n\n const fromText = function (text = '', world, pool) {\n let sentences = null; //a bit of validation, first\n\n if (typeof text !== 'string') {\n if (typeof text === 'number') {\n text = String(text);\n } else if (isArray(text)) {\n sentences = text;\n }\n } //tokenize into words\n\n\n sentences = sentences || splitSentences(text, world);\n sentences = sentences.map(str => splitTerms(str)); //turn them into proper objects\n\n pool = pool || new Pool$2();\n let phrases = sentences.map(terms => {\n terms = terms.map(str => {\n let term = new Term$2(str);\n pool.add(term);\n return term;\n }); //add next/previous ids\n\n linkTerms$1(terms); //return phrase objects\n\n let p = new Phrase$2(terms[0].id, terms.length, pool);\n p.cache.terms = terms;\n return p;\n }); //return them ready for a Document object\n\n return phrases;\n };\n\n var _01Tokenizer = fromText;\n\n const Term$1 = Term_1;\n const Phrase$1 = Phrase_1;\n const Pool$1 = Pool_1;\n const linkTerms = _linkTerms;\n\n const fromJSON$1 = function (json, world) {\n let pool = new Pool$1();\n let phrases = json.map((p, k) => {\n let terms = p.terms.map((o, i) => {\n let term = new Term$1(o.text);\n term.pre = o.pre !== undefined ? o.pre : '';\n\n if (o.post === undefined) {\n o.post = ' '; //no given space for very last term\n\n if (i >= p.terms.length - 1) {\n o.post = '. ';\n\n if (k >= p.terms.length - 1) {\n o.post = '.';\n }\n }\n }\n\n term.post = o.post !== undefined ? o.post : ' ';\n\n if (o.tags) {\n o.tags.forEach(tag => term.tag(tag, '', world));\n }\n\n pool.add(term);\n return term;\n }); //add prev/next links\n\n linkTerms(terms); // return a proper Phrase object\n\n return new Phrase$1(terms[0].id, terms.length, pool);\n });\n return phrases;\n };\n\n var fromJSON_1 = fromJSON$1;\n\n var _version = '13.11.4';\n\n const entity = ['Person', 'Place', 'Organization'];\n var nouns$2 = {\n Noun: {\n notA: ['Verb', 'Adjective', 'Adverb']\n },\n // - singular\n Singular: {\n isA: 'Noun',\n notA: 'Plural'\n },\n //a specific thing that's capitalized\n ProperNoun: {\n isA: 'Noun'\n },\n // -- people\n Person: {\n isA: ['ProperNoun', 'Singular'],\n notA: ['Place', 'Organization', 'Date']\n },\n FirstName: {\n isA: 'Person'\n },\n MaleName: {\n isA: 'FirstName',\n notA: ['FemaleName', 'LastName']\n },\n FemaleName: {\n isA: 'FirstName',\n notA: ['MaleName', 'LastName']\n },\n LastName: {\n isA: 'Person',\n notA: ['FirstName']\n },\n NickName: {\n isA: 'Person',\n notA: ['FirstName', 'LastName']\n },\n Honorific: {\n isA: 'Noun',\n notA: ['FirstName', 'LastName', 'Value']\n },\n // -- places\n Place: {\n isA: 'Singular',\n notA: ['Person', 'Organization']\n },\n Country: {\n isA: ['Place', 'ProperNoun'],\n notA: ['City']\n },\n City: {\n isA: ['Place', 'ProperNoun'],\n notA: ['Country']\n },\n Region: {\n isA: ['Place', 'ProperNoun']\n },\n Address: {\n isA: 'Place'\n },\n //---Orgs---\n Organization: {\n isA: ['Singular', 'ProperNoun'],\n notA: ['Person', 'Place']\n },\n SportsTeam: {\n isA: 'Organization'\n },\n School: {\n isA: 'Organization'\n },\n Company: {\n isA: 'Organization'\n },\n // - plural\n Plural: {\n isA: 'Noun',\n notA: ['Singular']\n },\n //(not plural or singular)\n Uncountable: {\n isA: 'Noun'\n },\n Pronoun: {\n isA: 'Noun',\n notA: entity\n },\n //a word for someone doing something -'plumber'\n Actor: {\n isA: 'Noun',\n notA: entity\n },\n //a gerund-as-noun - 'swimming'\n Activity: {\n isA: 'Noun',\n notA: ['Person', 'Place']\n },\n //'kilograms'\n Unit: {\n isA: 'Noun',\n notA: entity\n },\n //'Canadians'\n Demonym: {\n isA: ['Noun', 'ProperNoun'],\n notA: entity\n },\n //`john's`\n Possessive: {\n isA: 'Noun' // notA: 'Pronoun',\n\n }\n };\n\n var verbs$2 = {\n Verb: {\n notA: ['Noun', 'Adjective', 'Adverb', 'Value', 'Expression']\n },\n // walks\n PresentTense: {\n isA: 'Verb',\n notA: ['PastTense', 'FutureTense']\n },\n // neutral form - 'walk'\n Infinitive: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Gerund']\n },\n //close the door!\n Imperative: {\n isA: 'Infinitive' // notA: ['PresentTense', 'PastTense', 'FutureTense', 'Gerund'],\n\n },\n // walking\n Gerund: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Copula', 'FutureTense']\n },\n // walked\n PastTense: {\n isA: 'Verb',\n notA: ['FutureTense']\n },\n // will walk\n FutureTense: {\n isA: 'Verb'\n },\n // is\n Copula: {\n isA: 'Verb'\n },\n // would have\n Modal: {\n isA: 'Verb',\n notA: ['Infinitive']\n },\n // had walked\n PerfectTense: {\n isA: 'Verb',\n notA: 'Gerund'\n },\n Pluperfect: {\n isA: 'Verb'\n },\n // shown\n Participle: {\n isA: 'PastTense'\n },\n // show up\n PhrasalVerb: {\n isA: 'Verb'\n },\n //'up' part\n Particle: {\n isA: 'PhrasalVerb'\n },\n //this can be an adverb\n Auxiliary: {\n notA: ['Noun', 'Adjective', 'Value']\n }\n };\n\n var values$1 = {\n Value: {\n notA: ['Verb', 'Adjective', 'Adverb']\n },\n Ordinal: {\n isA: 'Value',\n notA: ['Cardinal']\n },\n Cardinal: {\n isA: 'Value',\n notA: ['Ordinal']\n },\n Fraction: {\n isA: 'Value',\n notA: ['Noun']\n },\n RomanNumeral: {\n isA: 'Cardinal',\n //can be a person, too\n notA: ['Ordinal', 'TextValue']\n },\n TextValue: {\n isA: 'Value',\n notA: ['NumericValue']\n },\n NumericValue: {\n isA: 'Value',\n notA: ['TextValue']\n },\n Money: {\n isA: 'Cardinal'\n },\n Percent: {\n isA: 'Value'\n }\n };\n\n const anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value', 'QuestionWord'];\n var misc$3 = {\n //--Adjectives--\n Adjective: {\n notA: ['Noun', 'Verb', 'Adverb', 'Value']\n },\n // adjectives that can conjugate\n Comparable: {\n isA: ['Adjective']\n },\n // better\n Comparative: {\n isA: ['Adjective']\n },\n // best\n Superlative: {\n isA: ['Adjective'],\n notA: ['Comparative']\n },\n NumberRange: {// isA: ['Contraction'],\n },\n Adverb: {\n notA: ['Noun', 'Verb', 'Adjective', 'Value']\n },\n // Dates:\n //not a noun, but usually is\n Date: {\n notA: ['Verb', 'Adverb', 'Preposition', 'Adjective']\n },\n Month: {\n isA: ['Date', 'Singular'],\n notA: ['Year', 'WeekDay', 'Time']\n },\n WeekDay: {\n isA: ['Date', 'Noun']\n },\n // 'PST'\n Timezone: {\n isA: ['Date', 'Noun'],\n notA: ['Adjective', 'ProperNoun']\n },\n // '9:20pm'\n Time: {\n isA: ['Date'],\n notA: ['AtMention']\n },\n //glue\n Determiner: {\n notA: anything\n },\n Conjunction: {\n notA: anything\n },\n Preposition: {\n notA: anything\n },\n // what, who, why\n QuestionWord: {\n notA: ['Determiner']\n },\n // peso, euro\n Currency: {\n isA: ['Noun']\n },\n // ughh\n Expression: {\n notA: ['Noun', 'Adjective', 'Verb', 'Adverb']\n },\n // dr.\n Abbreviation: {},\n // internet tags\n Url: {\n notA: ['HashTag', 'PhoneNumber', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email']\n },\n PhoneNumber: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email']\n },\n HashTag: {},\n AtMention: {\n isA: ['Noun'],\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'Email']\n },\n Emoji: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n Emoticon: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n Email: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention']\n },\n //non-exclusive\n Acronym: {\n notA: ['Plural', 'RomanNumeral']\n },\n Negative: {\n notA: ['Noun', 'Adjective', 'Value']\n },\n // if, unless, were\n Condition: {\n notA: ['Verb', 'Adjective', 'Noun', 'Value']\n }\n };\n\n const colorMap = {\n Noun: 'blue',\n Verb: 'green',\n Negative: 'green',\n Date: 'red',\n Value: 'red',\n Adjective: 'magenta',\n Preposition: 'cyan',\n Conjunction: 'cyan',\n Determiner: 'cyan',\n Adverb: 'cyan'\n };\n /** add a debug color to some tags */\n\n const addColors = function (tags) {\n Object.keys(tags).forEach(k => {\n // assigned from plugin, for example\n if (tags[k].color) {\n tags[k].color = tags[k].color;\n return;\n } // defined above\n\n\n if (colorMap[k]) {\n tags[k].color = colorMap[k];\n return;\n }\n\n tags[k].isA.some(t => {\n if (colorMap[t]) {\n tags[k].color = colorMap[t];\n return true;\n }\n\n return false;\n });\n });\n return tags;\n };\n\n var _color = addColors;\n\n const unique$4 = function (arr) {\n return arr.filter((v, i, a) => a.indexOf(v) === i);\n }; //add 'downward' tags (that immediately depend on this one)\n\n\n const inferIsA$1 = function (tags) {\n Object.keys(tags).forEach(k => {\n let tag = tags[k];\n let len = tag.isA.length;\n\n for (let i = 0; i < len; i++) {\n let down = tag.isA[i];\n\n if (tags[down]) {\n tag.isA = tag.isA.concat(tags[down].isA);\n }\n } // clean it up\n\n\n tag.isA = unique$4(tag.isA);\n });\n return tags;\n };\n\n var _isA = inferIsA$1;\n\n const unique$3 = function (arr) {\n return arr.filter((v, i, a) => a.indexOf(v) === i);\n }; // crawl the tag-graph and infer any conflicts\n // faster than doing this at tag-time\n\n\n const inferNotA$1 = function (tags) {\n let keys = Object.keys(tags);\n keys.forEach(k => {\n let tag = tags[k];\n tag.notA = tag.notA || [];\n tag.isA.forEach(down => {\n if (tags[down] && tags[down].notA) {\n // borrow its conflicts\n let notA = typeof tags[down].notA === 'string' ? [tags[down].isA] : tags[down].notA || [];\n tag.notA = tag.notA.concat(notA);\n }\n }); // any tag that lists us as a conflict, we conflict it back.\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n\n if (tags[key].notA.indexOf(k) !== -1) {\n tag.notA.push(key);\n }\n } // clean it up\n\n\n tag.notA = unique$3(tag.notA);\n });\n return tags;\n };\n\n var _notA = inferNotA$1;\n\n const inferLineage = function (tags) {\n let keys = Object.keys(tags);\n keys.forEach(k => {\n let tag = tags[k];\n tag.lineage = []; // find all tags with it in their 'isA' set\n\n for (let i = 0; i < keys.length; i++) {\n if (tags[keys[i]].isA.indexOf(k) !== -1) {\n tag.lineage.push(keys[i]);\n }\n }\n });\n return tags;\n };\n\n var _lineage = inferLineage;\n\n const inferColor = _color;\n const inferIsA = _isA;\n const inferNotA = _notA;\n const lineage = _lineage;\n\n const validate = function (tags) {\n // cleanup format\n Object.keys(tags).forEach(k => {\n let tag = tags[k]; // ensure isA is an array\n\n tag.isA = tag.isA || [];\n\n if (typeof tag.isA === 'string') {\n tag.isA = [tag.isA];\n } // ensure notA is an array\n\n\n tag.notA = tag.notA || [];\n\n if (typeof tag.notA === 'string') {\n tag.notA = [tag.notA];\n }\n });\n return tags;\n }; // build-out the tag-graph structure\n\n\n const inferTags$1 = function (tags) {\n // validate data\n tags = validate(tags); // build its 'down tags'\n\n tags = inferIsA(tags); // infer the conflicts\n\n tags = inferNotA(tags); // debug tag color\n\n tags = inferColor(tags); // find incoming links\n\n tags = lineage(tags);\n return tags;\n };\n\n var inference = inferTags$1;\n\n const nouns$1 = nouns$2;\n const verbs$1 = verbs$2;\n const values = values$1;\n const misc$2 = misc$3;\n const inferTags = inference; //extend tagset with new tags\n\n const addIn = function (obj, tags) {\n Object.keys(obj).forEach(k => {\n tags[k] = obj[k];\n });\n };\n\n const build = () => {\n let tags = {};\n addIn(nouns$1, tags);\n addIn(verbs$1, tags);\n addIn(values, tags);\n addIn(misc$2, tags); // do the graph-stuff\n\n tags = inferTags(tags);\n return tags;\n };\n\n var tags = build();\n\n var _data = {\n \"Comparative\": \"true¦better\",\n \"Superlative\": \"true¦earlier\",\n \"PresentTense\": \"true¦is,sounds\",\n \"Value\": \"true¦a few\",\n \"Noun\": \"true¦a5b4c2f1here,ie,lit,m0no doubt,pd,tce;a,d;t,y;a,ca,o0;l,rp;a,l;d,l,rc\",\n \"Copula\": \"true¦a1is,w0;as,ere;m,re\",\n \"PastTense\": \"true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan\",\n \"Condition\": \"true¦if,lest,unless\",\n \"Preposition\": \"true¦'o,-,aLbIcHdGexcept,fFiDmidQnotwithstandiRoBpSqua,sAt6u3vi2w0;/o,hereNith0;!in,oR;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oJ;ans,ince,o that;',f0n2ut;!f;f,n0;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut\",\n \"Gerund\": \"true¦accord0be0develop0go0result0stain0;ing\",\n \"Negative\": \"true¦n0;ever,o0;!n,t\",\n \"QuestionWord\": \"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s\",\n \"Plural\": \"true¦records\",\n \"Conjunction\": \"true¦&,aFbBcuz,how9in caEno8o7p5supposing,t2v1wh0yet;eth9ile;ers4s;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh\",\n \"Abbreviation\": \"true¦a0Jb0Gc0Ad08e05f02g01h00iYjWkanVlTmNnKoJpFque,rDs8t6u5v2w0;is0r,y0B;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;ce,e0;l,mp,nn,x;ask,e2fc,gt,i1q,r,s,t,u0;pt,rg;r,tu;c,nJp0;!t;b,d,e0;pGs,v;a,d,ennNhd,l,p,r1s0vt;!eud;ef,o0;b,f,n;ct,kla,nt;e0ov;b0e;!r;a4d,essrs,i1lle,me,r7s0t;!tr;n1s0;c,ter;!n;!j,r,sc;at,it,lb,ng,t0;!d;!s;an,d,r,u0;l,n;a,da,e,n0;c,f;on,wy;a,en,ov;e1ig,l0m,r,t,y;!a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0ist,r;c,f,pt,t;a3ca,l,m2o0pl,res,yn;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v\",\n \"Pronoun\": \"true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s\",\n \"Singular\": \"true¦0:16;1:13;2:19;a16b0Tc0Kd0De0Af05g00hWiVjel0kitty,lTmPnOoNpHquestionGrEs9t6u4w3;ay,om03;nc10s 3;doll0Lst0N; rex,a4h3ic,ragedy,v show;ere,i2;l0x return;i6ky,omeoNt3uper bowl,yst15;ep4ri2u3;de0Yff;faTmoT;st1ze;al0i2o3;om,se;! mark;a7i1la6r4u3;dQrpoI;e3ie0Hobl0V;roga00ss releaG;te,y1;rt,te0N;bjWceJthers,verview;othi2umb1;a5ee08o3;del,m3nopo0rni2th1;!my;n,yf0;i3unch;ne;ci2nsect;ead start,o3uman right;l0me4u3;se;! run;adf0entlem6irl02laci1od,rand4u3;l0y; slam,fa3mo3;th1;an;a6ella,ly,ol0r4un3;di2;ee market,iWo3;nti1sP;mi0th1;conomy,gg,ner7ven4x3;ampTecu9;i2t;ad8e5inn1o3ragonf0ude;cumentGg3i0l0or;gy;ath,t3;ec3;tive;!dy;a9eili2h7i5o3redit card;ttage,u3;ri1sin;ty,vil w3;ar;andeli1ocol3;ate;n3rF;ary;aCel0lesJo8r5u3;n3tterf0;ti2;eakfa4o3;!th1;st;dy,tt5y3;!fri3;end;le;nki2r3;ri1;er;d5l0noma0u3;nt;ly; homin5verti3;si2;ng;em\",\n \"FemaleName\": \"true¦0:J3;1:J7;2:IG;3:IF;4:IX;5:IK;6:JO;7:H0;8:JG;9:JK;A:HN;B:HY;C:IT;D:IP;E:JD;F:HC;G:I0;aGRbFLcDPdCYeBOfB4gADh9Ti9Gj8Gk7Gl60m49n3No3Jp37qu36r2Ds16t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof2;e3Uf2la,ra;h3iKlIna,ynH;ab,ep;da,ma;da,h3iHra;nab;aKeJi0Fol5BuIvH;etAonDO;i0na;le0sen2;el,gm3Jn,rGJs8W;aoHme0nyi;m62yAE;aMendDYhiDFiH;dele8lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;cIktoriBMlAole7viH;anC3enJ0;kF9tor2;da,lA9nus,rHs0;a,nHoniH4;a,iFQ;leHnesH4;nIHrH;i1y;g8rHxH5;su5te;aYeUhRiNoLrIuHy3;i,la;acIZiHu0L;c2na,sH;hBPta;nHr0H;iBNya;aJffaEOnHs6;a,gtiH;ng;!nFQra;aIeHomasi0;a,l9Po8Ares1;l2ndolwethu;g9Go88rIssH;!a,ie;eHi,ri9;sa,za;bPlNmLnJrIs6tHwa0;ia0um;a63yn;iHya;a,ka,s6;arB6e3iHmEDra;!ka;a,iH;a,t6;at6it6;a0Fcarlet3We0BhXiTkye,neza0oRtNuIyH;bIBlvi1;e,ha,mayIEni7sIzH;an3MetAie,y;anHi9;!a,e,nH;aDe;aJeH;fHl5GphH;an4;cHZr5;b2fiA8m0OnHphi1;d3ia,ja,ya;er3lJmon1nIobh8PtH;a,i;dy;lEPv2;aMeIirHo0risF7y5;a,lDK;ba,e0i5lJrH;iHrDOyl;!d8Hfa;ia,lDX;hd,iMki3nJrIu0w0yH;la,ma,na;i,le8on,ron;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye81vH;da,inj;e0ife;en1i0ma;anA5bNd3Nh1RiBkMlLmJndIrHs6vannaD;aDi0;ra,y;aHi3;nt6ra;lDKma,ome;ee0in8Ru3;in1ri0;a05e00hYiVoIuH;by,thDH;bScRghQl2KnPsJwIxH;anAXie,y;an,e0;aIeHie,lE; merBLann9ll1marDBt7;!lHnn1;iHyn;e,nH;a,d9K;da,i,na;ayy8D;hel62io;bDKer7yn;a,cIkHmas,n9Fta,ya;ki,o;helGki;ea,iannGDoH;da,n1K;an0bJem9Agi0iInHta,y0;a88ee;han83na;a,eH;cEAkaD;bi0chIe,i0mo0nHquEKvCy0;di,ia;aEIelHiB;!e,le;een4ia0;aNeMhKipaluk,oJrHute66;iHudenCQ;scil3LyamvaB;lly,rt2;ilome0oebe,ylH;is,lis;arl,ggy,nelope,r5t3;ige,m0TnKo5rvaDGtIulH;a,etAin1;ricHsy,tBY;a,e,ia;do3i06;ctav2dIfCZis6lHphCZumC3yunbileg;a,ga,iv2;eHvAC;l2tA;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aDeCma;ll1mi;aNcLhariBOkKlaJna,sHta,vi;anHha;ur;!y;a,iDTki;hoGk9VolH;a,eDJ;!mh;hir,lHna,risFsreC;!a,lBT;asuLdKh2i6CnJomi9rgEPtHzanin zah3;aHhal4;li1s6;cy,etA;a,e8iEV;nngu30;a09ckenz4e01iMoJrignayani,uriDDyH;a,rH;a,lNna,tG;bi0i3llBInH;a,iH;ca,ka,qD3;a,cTkaSlNmi,nLrItzi,yH;ar;aIiam,lH;anEO;!l,nB;dy,eHh,n4;nhGrva;aKdJiCPlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5EgNi,lKrH;edi79iIjem,on,yH;em,l;em,sF;an4iHliF;nHsCE;a,da;!an,han;b0DcASd0Be,g09ha,i08ja,l06n04rLsoum60tKuIv82x9IyHz4;a,bell,ra,soB9;de,rH;a,eC;h8Fild1t4;a,cYgUiKjor4l7Sn4s6tJwa,yH;!aHbe6Wja8lAE;m,nBH;a,ha,in1;!aJbCBeIja,lEna,sHt64;!a,ol,sa;!l1H;! Jh,mInH;!a,e,n1;!awit,i;aliAHcJeduarBfernIjHlui5Y;o6Ful2;anB;ecil2la3;arJeIie,oHr44ueriA;!t;!ry;et42i37;el4Ui76y;dHon,ue5;akran7y;ak,en,iHk,lo3O;a,ka,nB;a,re,s4te;daHg4;!l3A;alEd4elHge,isDBon0;ei8in1yn;el,le;a0Ne0CiYoQuLyH;d2la,nH;!a,dIeBGnHsCL;!a,eBF;a,sCJ;aCWcJel0PiFlIna,pHz;e,i7;a,u,wa;iHy;a0Se,ja,l2JnB;is,l1SrJttIuHvel4;el5is1;e,ie;aKeIi9na,rH;a86i9;lHn1t7;ei;!in1;aSbb9CdRepa,lMnJsIv2zH;!a,be5LetAz4;a,etA;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lHy;iHy;aA0e;!aH;!n5F;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx4y5;iHt4;c2t2;e2LlCG;la,nHra;a,ie,o3;a,or1;a,gh,laH;!ni;!h,nH;a,d3e,n5P;cOdon97iNkes6mi9Ana,rMtJurIvHxmi,y5;ern1in2;a,e54ie,yn;as6iIoH;nya,ya;fa,s6;a,isF;a,la;ey,ie,y;a04eZhXiOlAKoNrJyH;lHra;a,ee,ie;istHy6D;a,en,iIyH;!na;!e,n59;nul,ri,urtnB0;aOerNlAZmJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stC;!na,ra;aHei3ongordzol;dij1w5;el7QiKjsi,lJnIrH;a,i,ri;d3na,za;ey,i,lBDs4y;ra,s6;bi7cAJdiat7IeB2iRlQmPnyakuma19rNss6KtKvi7yH;!e,lH;a,eH;e,i8L;a6DeIhHi4NlEri0y;ar6Ber6Bie,leCrB2y;!lyn8Gri0;a,en,iHl5Soli0yn;!ma,n3VsF;a5il1;ei8Ei,l4;a,tl6L;a07eYiVoNuH;anLdKliHst63;a8HeHsF;!n8tH;!a,te;e5Ji3Jy;a,i7;!anNcelEd6RelGhan7RlLni,sIva0yH;a,ce;eHie;fHlEph5U;a,in1;eHie;en,n1;!a,e,n41;lHng;!i1ClH;!i1B;anMle0nJrIsH;i8Csi8C;i,ri;!a,elGif2CnH;a,etAiHy;!e,f2A;a,e8EiInH;a,e8DiH;e,n1;cMd1mi,nIque4Xsmin3Ovie3y8zH;min9;a9eIiH;ce,e,n1s;!lHsFt0F;e,le;inIk4lEquelH;in1yn;da,ta;lRmPnOo0rNsIvaHzaro;!a0lu,na;aJiIlaHob84;!n9N;do3;!belHdo3;!a,e,l39;a77en1i0ma;a,di3es,gr6Yji;a8elBogH;en1;a,e8iHo0se;a0na;aSeOiJoHusFyacin2B;da,ll4rten23snH;a,i9Q;lImaH;ri;aIdHlaI;a,egard;ry;ath1CiJlInriet7rmi8sH;sa,t1B;en2Sga,mi;di;bi2Dil8IlNnMrJsItHwa,yl8Iz7H;i5St4;n5Yti;iHmo51ri52;etH;!te;aDnaD;a,ey,l4;a03eXiSlQoOrKunJwH;enHyne1Q;!dolE;ay,el;acIetHiselB;a,chC;e,ieH;!la;ld1AogooH;sh;adys,enHor2yn2H;a,da,na;aKgi,lIna,ov89selHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald3Pi,m3Ctru8B;etAi4W;a,eHna;s26vieve;ma;bIil,le,mHrnet,yG;al5Ni5;i5FrielH;a,l1;aVeSiRloOoz2rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0O;n1s61;!ca;!rH;a,encH;e,ia;en,o0;lIn0rnH;!anB;ec2ic2;jr,n7rKtHy9;emIiHma,ouma7;ha,ma,n;eh;ah,iBrah,za0;cr4Nd0Ne0Mi0Lk7l04mWn4YrTsNtMuLvH;aJelIiH;!e,ta;in0Gyn;!ngel2S;geni1la,ni45;h5Sta;mLperanKtH;eIhHrel5;er;l30r9;za;a,eralB;iHma,nest2Jyn;cHka,n;a,ka;a,eMiJmH;aHie,y;!li8;lHn1;ee,iHy;a,e,ja;lHrald;da,y;aWeUiNlMma,no3oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c2da,f,nMsJzaH;!betHve7;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a;!in1na;leCs6;vi;eIiHna,wi0;e,th;l,n;aYeMh2iLjeneKoHul30;lor5Tminiq4In3FrHtt4;a,eCis,la,othHthy;ea,y;ba;an0AnaDon8x4ya;anQbPde,eOiMja,lJmetr2nHsir5K;a,iH;ce,se;a,iIla,orHphi8;es,is;a,l6D;dHrdH;re;!d5Cna;!b2HoraDra;a,d3nH;!a,e;hl2i0l0HmNnLphn1rIvi1XyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,etAiH;!ca,el1Cka,z;arHia;is;a0Se0Oh05i03lVoKrIynH;di,th2;istHy05;al,i0;lPnMrIurH;tn1E;aJd2NiHn2Nri8;!nH;a,e,n1;!l1X;cepci59n4sH;tanHuelo;ce,za;eHleC;en,tA;aJeoIotH;il51;!pat3;ir9rJudH;etAiH;a,ne;a,e,iH;ce,sZ;a3er3ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Ren,iHy;!an1e,n1;deJlseIrH;!i9yl;a,y;li8;nMrH;isKlImH;ai8;a,eHotA;n1tA;!sa;d3elGtH;al,elG;cIlH;esAi44;el2ilH;e,ia,y;itlZlYmilXndWrOsMtHy5;aKeJhHri0;erHleCrEy;in1;ri0;li0ri0;a33sH;a32ie;a,iNlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eHie,o7y;ne,y;na,sF;a0Hi0H;a,e,l1;is7l4;in,yn;a0Ie02iZlXoUrH;andSeQiJoIyH;an0nn;nwEok9;an3DdgLg0XtH;n2XtH;!aInH;ey,i,y;ny;etH;!t9;an0e,nH;da,na;i9y;bbi9glarIlo05nH;i7n4;ka;ancHossom,ythe;a,he;an17lja0nHsm3I;i7tH;ou;aUcky,linTni7rPssOtJulaDvH;!erlH;ey,y;hJsy,tH;e,iHy9;e,na;!anH;ie,y;!ie;nHt6yl;adIiH;ce;etAi8;ay,da;!triH;ce,z;rbJyaH;rmH;aa;a3ie,o3ra;a2Sb2Md23g1Zi1Qj5l16m0Xn09oi,r04sUtTuPvOwa,yIzH;ra,u0;aKes6gJlIseH;!l;in;un;!nH;a,na;a,i2Ir2J;drJgus1RrIsteH;ja;el2;a,ey,i,y;aahua,he0;hIi2Gja,mi7s2DtrH;id;aMlIraqHt21;at;eIi9yH;!n;e,iHy;gh;!nH;ti;iJleIo6pi7;ta;en,n1tA;aHelG;!n1J;a00dje5eYgUiSjQnJohito,toHya;inetAnH;el5ia;!aKeIiHmJ;e,ka;!mHtA;ar4;!belIliFmU;sa;!le;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tA;te;! JbImHstasiNya;ar2;el;cla3jul2pau5;aLberKeliJiHy;e,l2naH;!ta;a,ja;!ly;hGiIl2nB;da;a,ra;le;aWba,ePiMlKma,thJyH;a,c2sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c2is6jaKksaKna,sJxH;aHia;!nd3;ia,saH;nd3;ra;ia;i0nIyH;ah,na;a,is,naDoud;la;c6da,leCmNnLsH;haDlH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lEsH;on;yn;!lH;i8yn;ne;aKbIiHrL;!gaK;ey,i9y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya\",\n \"Actor\": \"true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJecretary,oldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt\",\n \"Honorific\": \"true¦a01bYcQdPeOfiJgIhon,jr,king,lHmCoffic00p7queen,r3s0taoiseach,vice6;e1fc,gt,ir,r,u0;ltRpt,rg;cond liInBrgeaJ;abbi,e0;ar1p9s,v0;!erend; admirX;astOhd,r0vt;esideDi1of0;!essM;me mini4nce0;!ss;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al\",\n \"SportsTeam\": \"true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls\",\n \"Uncountable\": \"true¦0:1J;a1Qb1Ic19d16e0Zf0Tg0Mh0Hi0Dj0Cknowled1Pl07mXnWoVpRrMsBt6vi5w1;a3ea0Ai2oo1;d,l;ldlife,ne;rmth,t0;neg16ol0Btae;e4h3oothpaste,r1una;affSou1;ble,sers,t;ermod1Lund0;a,nnis;a9cene09eri0Wh8il7kittl0Wnow,o6p4t2u1;g0Znshi0P;ati1Ke1;am,el;ace1De1;ci0Red;ap,cc0;k,v0;eep,ingl0O;d0Cfe17l1nd,tish;m10t;a4e2ic1;e,ke0L;c1laxa0Hsearch;ogni0Grea0G;bi0Hin;aOe3hys17last8o1ress03;l1rk,w0;it15y9;a11trY;bstetr13il,xygen;ational securi0Vews;a8e6ilk,o3u1;mps,s1;ic;n1o0G;ey,o1;gamy;a1chan0V;sl03t;chine1il,themat0T; learn09ry;aught0e3i2ogi0Qu1;ck,g0G;ce,ghtn06ngui0OteratL;a1isK;th0;ewel8usti0J;ce,mp1nformaStself;a1ortan0H;ti1;en0F;a4isto3o1;ck1mework,n1spitali09;ey;ry;ir,libut,ppiB;ene4o2r1um,ymna0B;aAound;l1ssip;d,f; 1t08;editOpo1;ol;i5lour,o2urnit1;ure;od,rgive1uri0wl;ne1;ss;c7sh;conomZduca6lectr5n3quip4thZvery1;body,o1thF;ne;joy1tertain1;ment;iciNonU;tiG;ar2iabet1raugh2;es;ts;a8elcius,h4ivPl3o1urrency;al,ld w1nfusiBttB;ar;assMoth3;aos,e1;e2w1;ing;se;r5sh;a5eef,i2lood,owls,read,utt0;er;lliar2s1;on;ds;g1ss;ga1;ge;c6dvi5ero3ir2mnes1rt,thlet8;ty;craft;b5d1naut5;ynam4;ce;id,ou1;st1;ics\",\n \"Infinitive\": \"true¦0:6S;1:76;2:5C;3:74;4:73;5:67;6:6F;7:6Y;8:6Q;9:72;A:70;B:5X;C:6X;D:6L;E:77;F:5B;a6Kb66c57d4De3Xf3Jg3Dh37i2Uj2Sk2Ql2Hm26n23o1Yp1Jr0Rs06tYuTvOwHyG;awn,e31ield;aJe1Zhist6iIoGre6D;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raE;d0t;aJiHoG;te,w;eGsC;!w;l6Jry;nHpGr4se;gra4Pli41;dGi9lo5Zpub3Q;erGo;mi5Cw1I;aMeLhKig5SoJrHuGwi7;ne,rn;aGe0Mi5Uu7y;de,in,nsf0p,v5J;r2ZuD;ank,reatB;nd,st;ke pa53lk,rg1Qs9;aZcWeVhTi4Dkip,lSmRnee3Lo52pQtJuGwitD;bmCck,ff0gge7ppHrGspe5;ge,pri1rou4Zvi3;ly,o36;aLeKoJrHuG;dy,mb6;aFeGi3;ngthBss,tD;p,re;m,p;in,ke,r0Qy;la58oil,rink6;e1Zi6o3J;am,ip;a2iv0oG;ck,rtBut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu8fYgXje5lUmTnt,pQquPsKtJvGwa5V;eGiew,o36;al,l,rG;se,t;aFi2u44;eJi7oItG;!o2rG;i5uc20;l3rt;mb6nt,r3;e7i2;air,eHlGo43r0K;a8y;at;aFemb0i3Zo3;aHeGi3y;a1nt;te,x;a5Dr0J;act1Yer,le5u1;a13ei3k5PoGyc6;gni2Cnci6rd;ch,li2Bs5N;i1nG;ge,k;aTerSiRlOoMrIuG;b21ll,mp,rGsh;cha1s4Q;ai1eIiEoG;cGdu8greAhibCmi1te7vi2W;eAlaim;di5pa2ss,veE;iEp,rtr46sGur;e,t;aHead,uG;g,n4;n,y;ck,le;fo34mCsi7;ck,iErt4Mss,u1;bJccur,ff0pera9utweIverGwe;co47lap,ta22u1wG;helm;igh;ser3taF;eHotG;e,i8;ed,gle5;aMeLiIoHuG;ltip3Grd0;nit13ve;nHrr12sreprG;eseE;d,g6us;asu2lt,n0Nr4;intaFna4rHtG;ch,t0;ch,kGry;et;aMeLiJoGu1C;aHck,oGve;k,sB;d,n;ft,g35ke,mCnk,st2YveG;!n;a2Fc0Et;b0Nck,uG;gh,nD;iGno34;ck,ll,ss;am,oFuG;d4mp;gno2mQnGss3H;cOdica9flu0MhNsKtIvG;eGol3;nt,st;erGrodu8;a5fe2;i7tG;aGru5;ll;abCibC;lu1Fr1D;agi24pG;lemeEo22ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppBrm,te;aKloAove1PrIuG;arGeAi15;ant39d;aGip,ow,umb6;b,sp;in,th0ze;aReaQiOlMoJrHuncG;ti3J;acGeshB;tu2;cus,lHrG;ce,eca7m,s30;d,l24;a1ZoG;at,od,w;gu2lGni1Xt,x;e,l;r,tu2;il,stBvG;or;a15cho,le5mSnPstNvalua9xG;a0AcLerKi7pGte19;a18eHi2laFoGreA;rt,se;ct,riG;en8;ci1t;el,han4;abGima9;li1J;ab6couXdHfor8ga4han8j03riDsu2t0vG;isi2Vy;!u2;body,er4pG;hasiGow0;ze;a07eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iZor8;aKcHliGmiApl1Btingui14;ke;oGuA;uGv0;ra4;gr1YppG;ear,ro3;cOeNfLliv0ma0Fny,pKsHterG;mi0G;cribe,er3iHtrG;oy;gn,re;a0Be0Ai5osC;eGi0By;at,ct;m,pB;iIlHrG;ea1;a2i06;de;ma4n8rGte;e,kB;a0Ae09h06i9l04oJrG;aHeGoAu0Hy;a9dC;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin8;rt,y;aFin0VrG;a7ibu9ol;iGtitu9;d0st;iHoGroE;rm;gu2rm;rn;biLfoKmaJpG;a2laF;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aSePloOoMrIuG;lGry;ly;igHuG;sh;htB;en;a7mb,o7rrGth0un8;ow;ck;ar,lHnefCtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waC;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia9uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun8sw0tG;icipa9;ce;lHt0;er;e4ow;ee;rd;aRdIju7mCoR;it;st;!reA;ss;cJhie3knowled4tiva9;te;ge;ve;eIouEu1;se;nt;pt;on\",\n \"Unit\": \"true¦0:19;a14b12c0Od0Ne0Lf0Gg0Ch09in0Hjoule0k02l00mNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Nb,d0Dears old,o1;tt0H;att0b;able4b3d,e2on1sp;!ne0;a2r0D;!l,sp;spo04; ft,uare 1;c0Id0Hf3i0Fkilo0Jm1ya0E;e0Mil1;e0li0H;eet0o0D;t,uart0;ascals,e2i1ou0Pt;c0Mnt0;rcent,t02;hms,uYz;an0JewtT;/s,b,e9g,i3l,m2p1²,³;h,s;!²;!/h,cro5l1;e1li08;! pFs1²;! 1;anEpD;g06s0B;gQter1;! 2s1;! 1;per second;b,i00m,u1x;men0x0;b,elvin0g,ilo2m1nR;!/h,ph,²;byZgXmeter1;! p2s1;! p1;er1; hour;e1g,r0z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s\",\n \"Organization\": \"true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c\",\n \"Demonym\": \"true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an\",\n \"Possessive\": \"true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne\",\n \"Currency\": \"true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s\",\n \"City\": \"true¦0:73;1:61;2:6G;3:5U;4:5R;a68b54c4Id4Ae46f3Yg3Jh38i2Zj2Uk2Dl22m1Kn19o16p0Uq0Sr0Ls01tPuOvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3J;greb,nzib5G;ang2e5okoha3Uunfu;katerin3Jrev0;a5n0O;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1K;hi5Zkl3C;l63xford;aw;a6ern2i5ladivost5Molgogr6K;en3lni6R;lenc6Dncouv2Yr3ughn;lan bat1Drumqi,trecht;aDbilisi,eCheBi9o8r7u5;l21n63r5;in,ku;ipoli,ondh62;kyo,m34ron1QulouS;an5jua3l2Zmisoa6Era3;j4Xshui; hag65ssaloni2L;gucigal28hr0l av1W;briz,i6llinn,mpe5Ang5rtu,shk2X;i2Msh0;an,chu1n0p2Iyu0;aEeDh8kopje,owe1It7u5ydney;ra5zh51;ba0Jt;aten is59ockholm,rasbou6Auttga31;an8e6i5;jiazhua1llo1m60y0;f54n5;ya1zh4L;gh3Ot4U;att4Ao1Yv49;cramen18int DlBn5o paulo,ppo3Wrajevo; 7aa,t5;a 5ia3Io domin3I;a3fe,m1O;antonCdie3Gfrancisco,j5ped3Ssalv8;o5u0;se;em,v5z2B;ad0I;lou59peters29;aAe9i7o5;me,sar5t5A;io;ga,o5yadh;! de janei3I;cife,ykjavik;b4Uip4lei2Mnc2Swalpindi;ingdao,u5;ez2i0Q;aEeDhCiBo8r7u6yong5;ya1;eb5Aya1;ag54etor53;rt5zn0; 5la4Fo;au prin0Nelizabe29sa05;ls3Srae5Ctts2B;iladelph4Ynom pe1Doenix;r26tah tik3I;ler00naji,r4Pt5;na,r36;ak47des0Lm1Rr6s5ttawa;a3Ylo;an,d07;a8ew6i5ovosibir1Oyc;ng2Hs; 5cast39;del27orlea46taip16york;g8iro4Xn5pl2Zshv36v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0Y;aFeCi9o6u5;mb2Cni28sc40;gadishu,nt6s5;c17ul;evideo,re31;ami,l6n18s5;kolc,sissauga;an,waukee;cca,d5lbour2Pmph41;an,ell5i3;in,ín;cau,drAkass2Tl9n8r5shh4A;aca6ib5rakesh,se2N;or;i1Ty;a4EchEdal12i47;mo;id;aCeiAi8o6u5vRy2;anLckn0Rdhia3;n5s angel28;d2g bea1O;brev2De3Kma5nz,sb2verpo2A;!ss29;c5pzig;est0C; p6g5ho2Yn0Gusan27;os;az,la35;aHharFiClaipeBo9rak0Hu7y5;iv,o5;to;ala lump4n5;mi1sh0;be,hi0Llka2Zpavog4si5wlo2;ce;da;ev,n5rkuk;gSsha5;sa;k5toum;iv;bIdu3llakuric0Tmpa3Gn6ohsiu1ra5un1Lwaguc0T;c0Sj;d5o,p4;ah1Vy;a7e6i5ohannesZ;l1Xn0;dd37rusalem;ip4k5;ar2J;bad0mph1QnBrkutYs8ta01z5̇zm7;m6tapala5;pa;ir;fah0l6tanb5;ul;am2Zi2I;che2d5;ianap2Lo21;aBe8o5yder2W; chi mi6ms,nolulu,u5;st2;nh;f6lsin5rakli2;ki;ei;ifa,lifax,m7n5rb1Dva3;gAnov5oi;er;bu2Wilt2;aFdanEenDhCiPlasgBo9raz,u5;a5jr21;dal6ng5yaquil;zh1H;aja2Lupe;ld coa18then5;bu2P;ow;ent;e0Toa;sk;lw7n5za;dhi5gt1C;nag0S;ay;aisal26es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Nl paso;in5mont2;bur5;gh;aAe8ha0Visp4o7resd0Ju5;b5esseldorf,rb0shanbe;ai,l0G;ha,nggu0rtmu11;hradRl5troit;hi;donghHe5k08li0masc1Xr es sala1HugavpiY;gu,je2;aKebu,hAo5raio03uriti1P;lo7n6penhag0Ar5;do1Nk;akLst0V;gVm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;n5ttogr12;digarh,g5;ch8sha,zh06;i9lga8mayenJn6pe town,r5;acCdiff;ber18c5;un;ry;ro;aUeMhJirmingh0ToIr9u5;chareRdapeRenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil0Mtisla7zzav5;il5;le;va;goZst2;op6ubaneshw5;ar;al;iBl9ng8r5;g6l5n;in;en;aluru,hazi;fa5grade,o horizonte;st;ji1rut;ghd0BkGnAot9r7s6yan n4;ur;el,r07;celo3ranquil09;na;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a04b01cc00ddis abaZgartaYhmedWizawl,lQmNnHqaZrEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a6chora5kaNtwerp;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 8buquerq7e5giers,maty;ppo,xandr5;ia;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg\",\n \"Country\": \"true¦0:39;1:2M;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om3DpZqat1KrXsKtCu6v4wal3yemTz2;a25imbabwe;es,lis and futu2Y;a2enezue32ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2Y;k.,s.2; 28a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Ys and caic1U; and 2-2;toba1K;go,kel0Znga;iw2Wji2nz2S;ki2U;aCcotl1eBi8lov7o5pa2Cri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Rriname;lomon1Wmal0uth 2;afr2JkLsud2P;ak0en0;erra leoEn2;gapo1Xt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele25luc0mart20;epublic of ir0Dom2Duss0w2;an26;a3eHhilippinTitcairn1Lo2uerto riM;l1rtugE;ki2Cl3nama,pua new0Ura2;gu6;au,esti2;ne;aAe8i6or2;folk1Hth3w2;ay; k2ern mariana1C;or0N;caragua,ger2ue;!ia;p2ther19w zeal1;al;mib0u2;ru;a6exi5icro0Ao2yanm05;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagasc00l6r4urit3yot2;te;an0i15;shall0Wtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed01;a5e4i2uxembourg;b2echtenste11thu1F;er0ya;ban0Hsotho;os,tv0;azakh1Ee3iriba03o2uwait,yrgyz1E;rWsovo;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an\",\n \"Region\": \"true¦0:2M;1:2S;2:2J;a2Pb2Cc1Yd1Tes1Sf1Qg1Kh1Gi1Bj17k12l0Zm0On07o05pZqWrTsKtFuCv9w5y3zacatec2T;akut0o0Du3;cat2k07;a4est 3isconsin,yomi1L;bengal,vi6;rwick2Ashington3;! dc;er4i3;rgin0;acruz,mont;dmurt0t3;ah,tar3; 2Ka0W;a5e4laxca1Qripu1Wu3;scaDva;langa1nnessee,x2E;bas0Um3smNtar24;aulip2Cil nadu;a8i6o4taf10u3ylh1E;ffYrr03s19;me1Bno1Puth 3;cVdU;ber0c3kkim,naloa;hu2ily;n4skatchew2xo3;ny; luis potosi,ta catari1;a3hode9;j3ngp06;asth2shahi;ingh24u3;e3intana roo;bec,en5reta0Q;ara7e5rince edward3unjab; i3;sl0A;i,nnsylv3rnambu0A;an0;!na;axa0Xdisha,h3klaho1Zntar3reg6ss0Ax0F;io;aIeDo5u3;evo le3nav0V;on;r3tt16va scot0;f8mandy,th3; 3ampton15;c5d4yo3;rk13;ako1M;aroli1;olk;bras1Lva0Bw3; 4foundland3;! and labrador;brunswick,hamp0Wjers3mexiRyork state;ey;galOyarit;a9eghala0Mi5o3;nta1r3;dov0elos;ch5dlanCn4ss3zor11;issippi,ouri;as geraOneso18;ig2oac2;dhy12harasht0Gine,ni4r3ssachusetts;anhao,i el,ylF;p3toba;ur;anca0Ie3incoln0IouisH;e3iR;ds;a5e4h3omi;aka06ul1;ntucky,ra01;bardino,lmyk0ns0Qr3;achay,el0nata0X;alis5har3iangxi;kh3;and;co;daho,llino6n3owa;d4gush3;et0;ia1;is;a5ert4i3un2;dalFm0D;fordZ;mpYrya1waii;ansu,eorg0lou7oa,u3;an4erre3izhou,jarat;ro;ajuato,gdo3;ng;cesterS;lori3uji2;da;sex;ageTe6o4uran3;go;rs3;et;lawaLrbyK;aEeaDh8o3rimea ,umbr0;ahui6l5nnectic4rsi3ventry;ca;ut;i02orado;la;e4hattisgarh,i3uvash0;apQhuahua;chn4rke3;ss0;ya;ra;lFm3;bridge6peche;a8ihar,r7u3;ck3ryat0;ingham3;shi3;re;emen,itish columb0;h0ja cal7lk6s3v6;hkorto3que;st2;an;ar0;iforn0;ia;dygea,guascalientes,lAndhr8r4ss3;am;izo1kans4un3;achal 6;as;na;a 3;pradesh;a5ber4t3;ai;ta;ba4s3;ka;ma\",\n \"Place\": \"true¦a0Eb0Bc04d03e02f00gVhUiRjfk,kOlMmJneGoFpBque,rd,s9t6u5v4w1y0;akutOyz;ake isFis1y0;!o;!c;a,ostok,t;laanbaatar,p02safa,t;ahiti,e1he 0;bronx,hamptons;nn,x;a0fo,oho,t,under7yd;khalNsk;a2e1h0itcairn;l,x;k,nnN;!cif04;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dNnn;gadZlibu,nhattZ;a0gw,hr;s,x;an1osrae,rasnoyar0ul;sk;!s;a1cn,da,nd0st;ianRochina;!x;arlem,kg,nd,oHwy;a3re0;at 0enwich;brita0lakH;in;!y village;co,l0ra;!a;urope,vergladC;ak,en,fw,ist,own4xb;al5dg,gk,h2l1o0rA;lo,nn;!t;a1ina0uuk;town;morro,tham;!if;cn,e1kk,l0rooklyn;vd;l air,verly hills;frica,lta,m7n3r2sia,tl1ve,zor0;es;!ant2;ct1iz;adyr,tarct0;ic0; oce0;an;ericas,s\",\n \"MaleName\": \"true¦0:E4;1:D5;2:DN;3:AX;4:D1;5:CF;6:B5;7:CV;8:C7;9:DJ;A:DK;B:A5;C:C1;aCNbBKcAId9Ge8Mf84g7Hh6Ti6Dj5Dk51l4Cm34n2So2Mp2Equ2Cr1Ls11t0Eu0Dv07wTxSyIzD;aDor0;cDh9Skaria,n5V;hEkD;!aCL;ar5VeCK;aLoFuD;sDu2JvBX;if,uf;nFsEusD;ouf,sD;ef;aDg;s,tD;an,h0;hli,nBLssX;avi3ho4;aMeKiFoDyaC1;jcie8Blfgang,odrow,utD;!er;lDnst1;bFey,frD0lD;aBCiD;am,e,s;e9Eur;i,nde6sD;!l8t1;de,lErrAyD;l1ne;lDt3;aA9y;aGiDladimir,ojte7Y;cEha0kt68nceDrgAIva0;!nt;e3Ut66;lentDnA4;in4X;ghBUlyss5Bnax,sm0;aXeShOiMoHrFuEyD;!l3ro7s1;n9r5B;avAVeDist0oy,um0;ntANv5Yy;bGdFmDny;!as,mDoharu;aCSie,y;!d;iBy;mDt5;!my,othy;adFeoEia8FomD;!as;!do8O;!de5;dGrD;en9KrD;an9JeDy;ll,n9I;!dy;dgh,ha,iDnn3req,tsu4S;cB4ka;aTcotRePhLiJoHpenc3tDur1Uylve9Jzym1;anFeDua8C;f0phBSvDwa8B;e61ie;!islaw,l8;lom1nBEuD;leyma7ta;dDlBm1yabonga;!dhart7An8;aFeD;lDrm0;d1t1;h7Tne,qu0Zun,wn,y7;aDbasti0k29l4Qrg4Nth,ymoAT;m5n;!tD;!ie,y;lEmDnti2Dq5Aul;!ke5LmCu4;ik,vato7W;aXeTheA9iPoHuEyD;an,ou;b7MdEf5pe7RssD;!elBY;ol3Ey;an,bJc66dIel,geHh0landBPmGnFry,sEyD;!ce;coe,s;!aAGnC;an,eo;l46r;e5Ng3n8olfo,ri79;bCeB7;cDl8;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ubAx,yDza;an1InY;gA8iD;naA4s;ch70fa4lHmGndFpha4sEul,wi2HyD;an,mo82;h7Vm5;alBDol2Uy;iATon;f,ph;ent2inD;cy,t1;aIeGhilFier72ol,rD;aka16eD;m,st1;!ip,lip;dALrcy,tD;ar,e3Gr1X;b4Kdra7Ft4ZulD;!o17;ctav3Fi3liv3mAFndrej,rHsEtDum9wA;is,to;aEc9k9m0vD;al5Z;ma;i,l53vL;aLeJiFoDu3A;aDel,j5l0ma0r3K;h,m;cEg4i49kD;!au,h7Uola;holBkDolB;!olB;al,d,il,ls1vD;il8Y;hom,thD;anDy;!a4i4;aZeWiMoHuEyD;l2Jr1;hamEr6XstaD;fa,p5C;ed,mH;di0We,hamFis2FntEsDussa;es,he;e,y;ad,ed,mD;ad,ed;cIgu4hai,kGlFnEtchD;!e6;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk8;aEeD;al,l;el,l;hElv2rD;le,ri6v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe6;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha6tDv2;iDy;!m,n;in,on;!el,oPus;!el9IoOus;iGu4;achDcolm,ik;ai,y;amEdi,eDmoud;sh;adDm5T;ou;aXeQiOlo3EoKuEyD;le,nd1;cGiFkDth3uk;aDe;!s;gi,s,z;as,iaD;no;g0nn7SrenFuDv8Jwe6;!iD;e,s;!zo;am,oD;n4r;a8Cevi,la5JnIoGst3thaFvD;eDi;nte;bo;!nD;!a6Sel;!ny;mFnErDur5Hwr5H;ry,s;ce,d1;ar,o5A;aLeGhaled,iDrist5Iu4Vy6X;er0p,rD;by,k,ollD;os;en0iGnDrmit,v44;!dEnDt5Z;e1Ay;a6ri59;r,th;cp3j5m66na73rEsp9them,uD;ri;im,l;a02eUiSoGuD;an,lDst2;en,iD;an,en,o,us;aNeLhnKkubBnIrGsD;eEhDi8Bue;!ua;!ph;dDge;an,i,on;!aDny;h,s,th5I;!ath5Hie,nC;!l,sDy;ph;o,qu2;an,mD;!mC;d,ffIrFsD;sDus;!e;a6BemEmai7oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKdAkImHrFsEvi3yD;!dAs1;on,p3;ed,od,rDv56;e5Nod;al,es4Xis1;a,e,oDub;b,v;k,ob,quD;es;aWbQchiPgNkeMlija,nuLonut,rJsFtDv0;ai,suD;ki;aEha0i7DmaDsac;el,il;ac,iaD;h,s;a,vinDw2;!g;k,nngu5S;!r;nacDor;io;ka;ai,rahD;im;aPeJoIuDyd9;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4JdA;an,s0;lGo50rFuDv8;hi4Gki,tD;a,o;is1y;an,ey;k,s;!im;ib;aVeRiPlenOoLrHuD;ilEsD;!tavo;herme,lerD;mo;aFegDov3;!g,orD;io,y;dy,h5Wnt;nzaErD;an,d1;lo;!n;lbe5Ano,oD;rg3Hvan5A;ne,oFrD;aDry;ld,rd5H;ffr8rge;brElArDv2;la28r3Sth,y;e3EielD;!i5;aTePiNlLorr0NrD;anFedDitz;!dCeDri2B;ri2A;cFkD;!ie,lD;in,yn;esLisD;!co,z36;etch3oD;yd;d4lDnn,onn;ip;deriFliEng,rnD;an06;pe,x;co;bi0di,hd;ar04dZfrYit0lSmKnHo2rFsteb0th0uge7vDymAzra;an,eD;ns,re36;gi,i0DnDrol,v2w2;est4Pie;oEriqDzo;ue;ch;aJerIiEmD;aIe2Z;lErD;!h0;!iD;o,s;s1y;nu4;be0Cd1iGliFmEt1viDwood;n,s;er,o;ot1Ys;!as,j4NsD;ha;a2en;!dCg9mGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay7ight;a7dl8nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e6ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay7ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne6rDyl;eDin,yl;l3Bn;n,o,us;!e,i4ny;iDon;an,en,on;e,lB;as;a09e07hYiar0lNoIrGuEyrD;il,us;rtD;!is;aDistob0U;ig;dy,lGnErD;ey,neli5y;or,rD;ad;by,e,in,l2t1;aIeFiDyK;fDnt;fo0Ft1;meEt5velaD;nd;nt;rFuEyD;!t1;de;enD;ce;aIeGrisEuD;ck;!tD;i0oph3;st3;er;d,rDs;b4leD;s,y;cDdric,s9;il;lGmer1rD;ey,lEro6y;ll;!os,t1;eb,v2;a07eZiVlaUoRrEuDyr1;ddy,rtK;aLeGiFuEyD;an,ce,on;ce,no;an,ce;nEtD;!t;dEtD;!on;an,on;dEndD;en,on;!foDl8y;rd;bErDyd;is;!by;i7ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n8rDt;eDy;tt;ey;dDeE;ar,iD;le;ar17b0Vd0Rf0Pgust2hm0Mi0Jja0Il04m00nSputsiRrIsaHuFveEyDziz;a0kh0;ry;gust5st2;us;hi;aKchJiIjun,maHnFon,tDy0;hDu09;ur;av,oD;ld;an,nd0H;!el,ki;ie;ta;aq;as,dIgel0CtD;hoGoD;i7nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePdAeJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;dAm9;ar;en;ad,eD;d,t;in;onD;so;aEi,olfDri0vik;!o;mDn;!a;dHeGraEuD;!bakr,lfazl;hDm;am;!l;allIelFoulaye,ulD;!lDrF;ah,o;! rD;ahm0;an;ah;av,on\",\n \"LastName\": \"true¦0:9F;1:9V;2:9H;3:9X;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:6E;B:77;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaB;aBhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsB;liA1s3;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukA;lk5roby5;dAllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisB;dor95lst31m2rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps3s0Y;hirAkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot2lliv4zuB;aEein0oD;i67j3Lyan8V;l6rm0;kol5lovy5re6Psa,to,uD;ng,sa;iDy5Z;rn5tD;!h;l5YmDngh,rbu;mo6Do6J;aFeDimizu;hu,vchD;en7Cuk;la,r17;gu8mDoh,pulve8Trra4R;jDyD;on5;evi6Filtz,miDneid0roed0ulz,warz;dEtD;!z;!t;ar42h6ito,lFnDr2saBto,v2;ch7d0AtDz;a4Pe,os;as,ihAm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins3;!on;bei0LcEes,vDzzo;as,e8;ci,hards3;ag4es,it0ut0y9;dFmEnDsmu7Zv5F;tan1;ir7os;ic,u;aSeLhJiGoErDut6;asad,if5Zochazk1W;lishc24pDrti62u55we66;e2Tov48;cEe09nD;as,to;as60hl0;aDillips;k,m,n5K;de3AetIna,rGtD;ersErovDtersC;!a,ic;en,on;eDic,ry,ss3;i8ra,tz,z;ers;h71k,rk0tEvD;ic,l3T;el,t2O;bJconnor,g2ClGnei5PrEzD;demir,turk;ella3MtDwe5N;ega,iz;iDof6GsC;vDyn1F;ei8;aPri1;aLeJguy1iFoDune44ym4;rodahl,vDwak;ak3Uik5otn56;eEkolDlsCx3;ic,ov6X;ls1miD;!n1;ils3mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov2;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dAti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkAqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k2nDo;d,gu;mbarDpe2Rvr2;di;!nDu,yana1R;coln,dD;bDholm;erg;bed5TfeGhtFitn0kaEn6rDw2G;oy;!j;in1on1;bvDvD;re;iDmmy,rsCu,voie;ne,t11;aTennedy,h4iSlQnez46oJrGuEvar4woD;k,n;cerDmar58znets5;a,o2G;aDem0i2Zyeziu;sni3PvD;ch3U;bay4Frh0Jsk0TvaFwalDzl5;czDsB;yk;cFlD;!cDen3Q;huk;!ev2ic,s;e6uiveD;rt;eff0l2mu8nnun1;hn,lloe,minsBrEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r2;e2JhFnErge2Ju2NvD;anA;es,ss3;anEnsD;en,on,t3;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks3obs1;brahimAglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz2fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers3;kkiEnD;on1;la,n1;dz2g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw3;o,staf2Utierr7zm4;ayDg2iffitUub0;li1G;lub3Rme0JnD;calv9zale0I;aj,i;l,mDordaL;en7;iev3B;gnJlGmaFnd2No,rDs2Nuthi0;cDza;ia;ge;eaElD;agh0i,o;no;e,on;ab0erMiIjeldsted,lor9oGrFuD;cDent9ji3F;hs;an1Wiedm4;ntaDrt6st0urni0;na;lipEsD;ch0;ovD;!ic;hatAnandeVrD;arDei8;a,i;ov2;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s3;er,is3wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov2;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e3uD;ca;hl,mcevsBnErw6t2EviD;d5es,s;ieDku1S;ls1;ki;a05e00hNiobMlarkLoFrD;ivDuz;elli;h1lGntFop0rDs26x;byn,reD;a,ia;i,rer0O;em4liD;ns;!e;anu;aLeIiu,oGriDuJwe;stD;eDiaD;ns1;i,ng,uFwDy;!dhury;!n,onEuD;ng;!g;kEnDtterjee,v7;!d,g;ma,raboD;rty;bGl09ng2rD;eghetEnD;a,y;ti;an,ota0M;cer9lder3mpbeIrFstDvadi08;iDro;llo;doEt0uDvalho;so;so,zo;ll;es;a09eXhUiSlNoGrFyD;rne,tyD;qi;ank5iem,ooks,yant;gdan5nFruya,su,uchEyHziD;c,n5;ard;darDik;enD;ko;ov;aEondD;al;nEzD;ev2;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss3;asD;hi;er,ham;b2ch,ez,hMiley,kk0nHrDu0;bEnDua;es,i0;ieDosa;ri;dDik;a8yopadhyD;ay;ra;er;k,ng;ic;cosZdYguilXkhtXlSnJrGsl4yD;aEd6;in;la;aEsl4;an;ujo,ya;dFgelD;ovD;!a;ersGov,reD;aDjL;ss1;en;en,on,s3;on;eksejGiyGmeiFvD;ar7es;ez;da;ev;ar;ams;ta\",\n \"WeekDay\": \"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s\",\n \"Month\": \"true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il\",\n \"Date\": \"true¦ago,t2week0yesterd4; e0e0;nd;mr2o0;d0morrow;ay;!w\",\n \"FirstName\": \"true¦aLblair,cHdevGgabrieFhinaEjCk9l8m4nelly,quinn,re3s0;h0umit;ay,e0iloh;a,lby;g6ne;a1el0ina,org5;!okuh9;naia,r0;ion,lo;ashawn,uca;asCe1ir0rE;an;lsAnyat2rry;am0ess6ie,ude;ie,m5;ta;le;an,on;as2h0;arl0eyenne;ie;ey,sidy;lex2ndr1ubr0;ey;a,ea;is\",\n \"Person\": \"true¦ashton kutchTbScNdLeJgastOhHinez,jFkEleDmCnettKoBp9r4s3t2v0;a0irgin maH;lentino rossi,n go3;aylor,heresa may,iger woods,yra banks;addam hussain,carlett johanssKlobodan milosevic,uC;ay romano,e3o1ush limbau0;gh;d stewart,nald0;inho,o;ese witherspoFilly;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0;on;dinal wols1son0;! palm2;ey;arack obama,rock;er\",\n \"Verb\": \"true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en\",\n \"PhrasalVerb\": \"true¦0:7L;1:79;2:7X;3:7N;4:72;5:80;6:7P;7:6V;8:78;9:7J;A:6W;B:5Z;C:7S;D:7K;a81b6Lc5Rd5Me5Lf4Kg41h3Kiron0j3Gk3Bl2Vm2Jn2Ho2Fp1Wquiet7Ar1Js0CtSuQvacuum 1wHyammer9zE;eroBip FonE;e0k0;by,up;aLeHhGiForErit5G;d 1k33;mp0n2Vpe0r7s7;eel Dip 85;aFiEn2J;gh 09rd0;n Dr E;d2in,o5J;it 61k7lk6rm 6Csh 7Nt6Qv51;rge9sE;e AherB;aTeRhPiLoJrGuEype 69;ckBrn E;d2in,o3Sup;aFiEot0y 2I;ckle6Rp 7T;ck6Qde Y;ne6Pp Es4O;d2o73up;ck GdFe Egh6Bme0p o0Gre0;aw3ba4d2in,up;e 61y 1;by,o7D;ink Erow 6D;ba4ov8up;aEe 5Zll53;m 1r X;ck9ke Flk E;ov8u54;aEba4d2in,o3Cup;ba4ft8p59w3;a0Jc0Ie0Ch08i05l01m00nZoYpTquare StKuIwE;earGiE;ngFtch E;aw3ba4o77; by;ck Eit 1m 1ss0;in,up;aJe0WiIoGrEuc3G;aigh1WiE;ke 6Gn3A;p Erm1Z;by,in,o6T;n3Br 1tc3T;c3Amp0nd Er6Zve6y 1;ba4d2up;d2o6Pup;ar37eHiGlFrEur9;ing9uc7;a3Fit 5B;l13n 1;e5Sll0;be2Wrt0;ap 4Sow D;ash 5Foke0;eep FiEow A;c3Wp 1;in,oE;ff,v8;gn 4XngFt Ez7;d2o5up; al54le0;aGoEu4T;ot Eut0w 6D;aw3ba4f3Go67;c2PdeBk58ve6;e Ill1And HtE; Etl4H;d2in,o5upE;!on;aw3ba4d2in,o27up;o5Mto;al51out0rap51;il6v7;aPeMiLoHuE;b 4Ule0n Estl7;aEba4d2in5Jo3Ut39u3S;c26w3;ll Got FuE;g2Tnd6;a27f30o5;arCin,o5;ng 53p6;aEel6inBnt0;c5Dd E;o31u0I;c24t0;aSeRiPlNoLrIsyc2HuE;ll Gt E;aEba4d2in,o1Ot3Gup;p3Lw3;ap3Kd2in,o5t3Eup;attle9ess FiHoE;p 1;ah1Oon;iEp 5Hr3Yur4Jwer 5H;nt0;ay4DuE;gBmp A;ck Eg0le9n Ap4A;o2Yup;el 4KncilB;c42ir 3Un0ss GtFy E;ba4o54; d2c24;aw3ba4o18;pEw3X;e3Wt D;arrow46erd0oE;d6te45;aMeJiIoGuE;ddl7lE;l 3I;c1Dp 1uth6ve E;al3Nd2in,o5up;ss0x 1;asur7lFss E;a1Gup;t A;ke Fn ArEs1Px0;k Ary6;do,o48up;aRePiKoEuck0;aIc3Hg HoEse0;k Ese3F;aft8ba4d2forw2Jin46ov8uE;nd8p;in,o0M;d A;e HghtGnFsEv1V;ten 4M;e 1k 1; 1e37;arCd2;av1Jt 37velE; o3U;c7p 1sh Etch9ugh6y20;in3Uo5;eFick6nock E;d2o3Q;eEyB;l 2Pp E;aw3ba4d2fTin,o07to,up;aGoFuE;ic7mpB;ke31t35;c3Azz 1;aQeLiIoFuE;nker32rry 1s0W;lEneBrse2X;d Ee 1;ba4d2fast,o01up;de Ft E;ba4on,up;aw3o5;aElp0;d Gl 2Ar Et 1;fEof;rom;in,oTu1H;c02m 1nFve Ez25;it,to;d Eg 2FkerG;d2in,o5;aTeMive Kloss 22oGrFunE; f0N;in3How 2B; Eof 21;aFb1Dit,oErCt0Pu18;ff,n,v8;bo5ft8hKw3;aw3ba4d2in,oEup,w3;ff,n,ut;aJek0t E;aFb17d2oErCup;ff,n,ut,v8;cFhEl1XrCt,w3;ead;ross;r 1;d aFnE;g 1;bo5;a08e01iSlOoKrGuE;cEel 1;k 1;eFighten Eown9y 1;aw3o2S;eEshe1N; 1z7;lGol E;aEwi1G;bo5rC;d Alow 1;aFeEip0;sh0;g Ake0mErE;e 2R;gLlJnHrFsEzzle0;h 2P;e Em 1;aw3ba4up;d0isE;h 1;e El 19;aw3fJ;ht ba4ure0;eJnFsE;s 1;cGd E;fEo25;or;e D;dVl 1;cIll Erm0t0W;ap04bGd2in,oFtE;hrough;ff,ut,v8;a4ehi20;e 0L;at0dge0nd 0Ky7;oHrE;aFess Aop E;aw3bUin,o1E;g9w9; 0Dubl7;aXhUlean AoHrEut 10;ack9eep Eoss D;by,d2oEup;n,ut;me HoFuntE; o1Q;k 1l E;d2o1I;aKbJforHin,oGtFuE;nd8;ogeth8;ut,v8;th,wE;ard;a4y;pErCw3;art;eEipB;ck Der E;on,up;lKncel0rHsGtch FveB; in;o19up;h Dt6;ry FvE;e Y;aw3o15;l Em05;aEba4d2o13up;rCw3;a0Ke0Bl04oVrJuE;bblGcklWil02lk AndlWrn 08st FtEy 13zz6;t D;in,o5up;e E;ov8;anOeaMiFush E;o0Oup;ghIng E;aFba4d2forEin,o5up;th;bo5lErCw3;ong;teE;n 1;k E;d2in,o5up;ch0;arLgKil An7oHssGttlFunce Ex D;aw3ba4;e A; arC;k Dt 1;e 1;d2up; d2;d 1;aJeed0oEurt0;cGw E;aw3ba4d2o5up;ck;k E;in,oL;ck0nk0st6; oKaHef 1nd E;d2ov8up;er;up;r0t E;d2in,oEup;ff,ut;ff,nE;to;ck Kil0nGrgFsE;h D;ain9e D;g Dk9; on;in,o5; o5;aw3d2o5up;ay;cNdJsk Guction6; oE;ff;arCo5;ouE;nd;d E;d2oEup;ff,n;own;t E;o5up;ut\",\n \"Modal\": \"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld\",\n \"Adjective\": \"true¦0:7P;1:84;2:83;3:8A;4:7W;5:5S;6:4N;7:4O;8:58;9:6I;A:81;a6Wb6Gc63d5Je54f4Hg49h3Wi39j37k36l2Vm2Ln2Bo1Wp1Dquack,r12s0Ft07uMvJwByear5;arp0eFholeEiDoB;man5oBu6P;d6Rzy;despr7Ls5S;!sa7;eClBste2A;co1Nl o4W;!k5;aCiBola4M;b89ce versa,ol5H;ca3gabo6Gnilla;ltUnHpCrb5Msu4tterB;!mo7G; Eb1SpDsBti1M;ca7etBide dKtairs;!ti2;er,i3U;f36to da1;aLbeco75convin29deIeHfair,ivers4knGprecedVrEsCwB;iel3Nritt6A;i1XuB;pervis0spec3Y;eBu5;cognHgul6Tl6T;own;ndi2v64xpect0;cid0rB;!grou5ZsB;iz0tood;b7pp0Dssu6UuthorB;iz0;i26ra;aGeEhDi6AoCrB;i1oubl0us3M;geth8p,rp6Vuc67;ough4Wril33;en60l32mpBrr2X;o6Ati2;boo,lBn;ent0;aWcVeThSiQmug,nobbi3LoOpNqueami3LtFuBymb6H;bDi gener5DpBrpri6D;erBre0N;! dup8b,i2C;du0seq52;anda77eGiFrBunni2y3F;aightCiB;ki2p0; fBfB;or5K;ll,r5S;aBreotyp0;dfa6Cmi2;a55ec2Gir1Hlend6Cot on; call0le,mb8phist1XrBu0Vvi48;d6Ary;gnifica3nB;ce51g7;am2Re8ocki2ut;cBda1em5lfi32ni1Wpa6Jre6;o1Er42;at5Gient28reec5G;cr0me;aJeEiCoB;bu60tt51uQy4;ghtBv4;!-2Bf9;ar,bel,condi1du6Dfres5AlEpublic42sCtard0vB;ea26;is4CoB;lu1na3;aQe1Cuc4A;b5TciBllyi2;al,st;aOeLicayu6lac5Ropuli5QrCuB;bl5Jmp0n51;eGiDoB;!b07fu5RmiBp8;ne3si2;mCor,sBva1;ti6;a53e;ci5MmB;a0EiB;er,um;ac20rBti1;feAma2XpleBv38;xi2;rBst;allelDtB;-tiBi4;me;!ed;bLffJkIld fashion0nHpGrg1Eth8utFvB;al,erB;!all,niCt,wB;eiBrouB;ght;do0Ter,g2Qsi4B;en,posi1; boa5Og2Oli6;!ay; gua5MbBli6;eat;eDsB;cBer0Eole1;e6u3O;d2Xse;aJeIiHoBua4X;nFrCtB;ab7;thB;!eB;rn;chala3descri58stop;ght5;arby,cessa44ighbor5xt;k0usia1A;aIeGiDoBultip7;bi7derBl0Vnth5ot,st;a1n;nBx0;dblo0RiaBor;tu37;ande3Qdi4NnaBre;ci2;cBgenta,in,j01keshift,le,mmoth,ny,sculi6;ab33ho;aKeFiCoBu15;uti14vi2;mCteraB;l,te;it0;ftEgBth4;al,eCitiB;ma1;nda3K;!-0C;ngu3Zst,tt8;ap1Xind5no0A;agg0uB;niMstifi0veni7;de4gno4Klleg4mQnEpso 20rB;a1rB;eleBita0J;va3; KaJbr0corIdGfluenQiQnFsEtCviB;go0Fti2;aAen3SoxB;ic3B;a6i2Vul0D;a1er,oce3;iCoB;or;reA;deq3Qppr33;fBsitu,vitro;ro3;mFpB;arDerfeAoBrop8;li1rtB;a3ed;ti4;eBi0S;d2Vn3C;aIeFiDoBumdr3I;ne36ok0rrBs08ur5;if2Z;ghfalut1QspB;an2X;aClB;liYpf9;li2;lEnDrB;d04roB;wi2;dy;f,low0;ainf9ener2Oiga24lHoGraDuB;ilBng ho;ty;cCtB;ef9is;ef9;ne,od;ea2Iob4;aTeNinMlKoFrB;a1VeDoz1MustB;raB;ti2;e2Gq10tf9;oDrB; keeps,eBm8tuna1;g03ign;liB;sh;aBue3;g31tte1P;al,i1;dFmCrB;ti7;a7ini6;ne;le; up;bl0i3l27r Cux,voB;ri1uri1;oBreac1E;ff;aLfficie3lKmHnFreAthere4veExB;aAcess,pe1QtraCuB;be2Nl0E;!va1E;n,ryday; BcouraEti0O;rou1sui1;erCiB;ne3;gi2;abo23dMe17i1;g8sB;t,ygB;oi2;er;aReJiDoBrea14ue;mina3ne,ubB;le,tf9;dact1Bfficu1OsCvB;er1K;creDeas0gruntl0hone1FordCtB;a3ressM;er5;et; HadpGfFgene1PliDrang0spe1PtCvoB;ut;ail0ermin0;be1Mca1ghB;tf9;ia3;an;facto;i5magBngeroUs0G;ed,i2;ly;ertaMhief,ivil,oDrB;aBowd0u0G;mp0vZz0;loImGnCrrBve0P;eAu1I;cre1fu0LgrDsCtB;empo0Dra0E;ta3;ue3;mer08pleB;te,x;ni4ss4;in;aNeIizarHlFoCrB;and new,isk,okN;gCna fiUttom,urgeoB;is;us;ank,indB;!i2;re;autif9hiDloCnBst,yoD;eUt;v0w;nd;ul;ckCnkru0WrrB;en;!wards; priori,b0Mc0Jd09fra08g04h03lYmWntiquVppSrMsIttracti06utheHvEwB;aCkB;wa0T;ke,re;ant garCerB;age;de;ntU;leep,piDsuDtonB;isB;hi2;ri2;ab,bitEroDtiB;fiB;ci4;ga3;raB;ry;are3etiNrB;oprB;ia1;at0;aJuB;si2;arEcohCeBiIl,oof;rt;olB;ic;mi2;ead;ainDgressiConiB;zi2;ve;st;id; IeGuFvB;aCerB;se;nc0;ed;lt;pt,qB;ua1;hoc,infinitB;um;cuCtu4u1;al;ra1;erLlKoIruHsCuB;nda3;e3oCtraA;ct;lu1rbi2;ng;te;pt;aBve;rd;aze,e;ra3;nt\",\n \"Comparable\": \"true¦0:41;1:4I;2:45;3:2Y;4:4B;5:3X;a4Ob44c3Od3De35f2Rg2Fh24i1Vj1Uk1Rl1Jm1Dn17o15p0Vqu0Tr0KsTtMuIvFw7y6za13;ell27ou4;aBe9hi1Yi7r6;o4y;ck0Ode,l6n1ry,se;d,y;a6i4Mt;k,ry;n1Tr6sK;m,y;a7e6ulgar;nge5rda2xi4;g9in,st;g0n6pco3Mse5;like0t6;i1r6;ue;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te5;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft3;aAe9iff,r7u6;pXr1;a6ict,o4;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi4;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp3;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p3;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in5le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b3isy,rm15sy;ce,mb3;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt3ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti4;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b3id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te5;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t3uiY;u1y;aIeeb3iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get5mG;my;erce8n6rm;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi4;gey,lm8r6;e5i4;ful;!i4;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i4;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd\",\n \"TextOrdinal\": \"true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th\",\n \"Cardinal\": \"true¦bHeEf8hundred,mHnineAone,qu6s4t0zero;en,h2rGw0;e0o;lve,n8;irt9ousandEree;e0ix5;pt1ven4xt1;adr0int0;illion;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion0;!s\",\n \"Expression\": \"true¦a02b01dXeVfuck,gShLlImHnGoDpBshAtsk,u7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la\",\n \"Adverb\": \"true¦a08by 06d02eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,well,ye0;p,s; to,wards5;h1iny bit,o0wiO;o,t6ward;en,us;eldom,o0uch;!me1rt0; of;hYtimes,w09;a1e0;alT;ndomSthN;ar excellDer0oint blank; Nhaps;f3n0;ce0ly;! 0;ag02moW; courIten;ewKo0; longEt 0;onIwithstanding;aybe,eanwhiAore0;!ovB;! aboU;deed,steV;en0;ce;or2u0;lArther0;!moJ; 0ev3;examp0good,suH;le;n1v0;er; mas0ough;se;e0irect1; 1finite0;ly;ju8trop;far,n0;ow; DbroCd nauseam,gBl6ny3part,s2t 0w4;be6l0mo6wor6;arge,ea5; soon,ide;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori\",\n \"Determiner\": \"true¦aBboth,d9e6few,l4mu8neiDown,plenty,s3th2various,wh0;at0ich0;evC;at,e4is,ose;everal,ome;a,e0;!ast,s;a1i6l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er\"\n };\n\n const seq = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",\n cache = seq.split(\"\").reduce(function (n, o, e) {\n return n[o] = e, n;\n }, {}),\n toAlphaCode = function (n) {\n if (void 0 !== seq[n]) return seq[n];\n let o = 1,\n e = 36,\n t = \"\";\n\n for (; n >= e; n -= e, o++, e *= 36);\n\n for (; o--;) {\n const o = n % 36;\n t = String.fromCharCode((o < 10 ? 48 : 55) + o) + t, n = (n - o) / 36;\n }\n\n return t;\n },\n fromAlphaCode = function (n) {\n if (void 0 !== cache[n]) return cache[n];\n let o = 0,\n e = 1,\n t = 36,\n r = 1;\n\n for (; e < n.length; o += t, e++, t *= 36);\n\n for (let e = n.length - 1; e >= 0; e--, r *= 36) {\n let t = n.charCodeAt(e) - 48;\n t > 10 && (t -= 7), o += t * r;\n }\n\n return o;\n };\n\n var encoding = {\n toAlphaCode: toAlphaCode,\n fromAlphaCode: fromAlphaCode\n },\n symbols = function (n) {\n const o = new RegExp(\"([0-9A-Z]+):([0-9A-Z]+)\");\n\n for (let e = 0; e < n.nodes.length; e++) {\n const t = o.exec(n.nodes[e]);\n\n if (!t) {\n n.symCount = e;\n break;\n }\n\n n.syms[encoding.fromAlphaCode(t[1])] = encoding.fromAlphaCode(t[2]);\n }\n\n n.nodes = n.nodes.slice(n.symCount, n.nodes.length);\n };\n\n const indexFromRef = function (n, o, e) {\n const t = encoding.fromAlphaCode(o);\n return t < n.symCount ? n.syms[t] : e + t + 1 - n.symCount;\n },\n toArray = function (n) {\n const o = [],\n e = (t, r) => {\n let s = n.nodes[t];\n \"!\" === s[0] && (o.push(r), s = s.slice(1));\n const c = s.split(/([A-Z0-9,]+)/g);\n\n for (let s = 0; s < c.length; s += 2) {\n const u = c[s],\n i = c[s + 1];\n if (!u) continue;\n const l = r + u;\n\n if (\",\" === i || void 0 === i) {\n o.push(l);\n continue;\n }\n\n const f = indexFromRef(n, i, t);\n e(f, l);\n }\n };\n\n return e(0, \"\"), o;\n },\n unpack$2 = function (n) {\n const o = {\n nodes: n.split(\";\"),\n syms: [],\n symCount: 0\n };\n return n.match(\":\") && symbols(o), toArray(o);\n };\n\n var unpack_1$1 = unpack$2,\n unpack_1$1$1 = function (n) {\n const o = n.split(\"|\").reduce((n, o) => {\n const e = o.split(\"¦\");\n return n[e[0]] = e[1], n;\n }, {}),\n e = {};\n return Object.keys(o).forEach(function (n) {\n const t = unpack_1$1(o[n]);\n \"true\" === n && (n = !0);\n\n for (let o = 0; o < t.length; o++) {\n const r = t[o];\n !0 === e.hasOwnProperty(r) ? !1 === Array.isArray(e[r]) ? e[r] = [e[r], n] : e[r].push(n) : e[r] = n;\n }\n }), e;\n };\n\n var efrtUnpack_min = unpack_1$1$1;\n\n var misc$1 = {\n // numbers\n '20th century fox': 'Organization',\n // '3m': 'Organization',\n '7 eleven': 'Organization',\n 'motel 6': 'Organization',\n g8: 'Organization',\n vh1: 'Organization',\n q1: 'Date',\n q2: 'Date',\n q3: 'Date',\n q4: 'Date',\n her: ['Possessive', 'Pronoun'],\n his: ['Possessive', 'Pronoun'],\n their: ['Possessive', 'Pronoun'],\n themselves: ['Possessive', 'Pronoun'],\n your: ['Possessive', 'Pronoun'],\n our: ['Possessive', 'Pronoun'],\n my: ['Possessive', 'Pronoun'],\n its: ['Possessive', 'Pronoun']\n };\n\n const lexData = _data;\n const unpack$1 = efrtUnpack_min;\n let misc = misc$1;\n const fancy = {\n Unit: (lex, w) => {\n lex[w] = ['Abbreviation', 'Unit'];\n },\n Cardinal: (lex, w) => {\n lex[w] = ['TextValue', 'Cardinal'];\n },\n TextOrdinal: (lex, w) => {\n lex[w] = ['Ordinal', 'TextValue'];\n lex[w + 's'] = ['TextValue', 'Fraction']; // add 'millionths'\n },\n // add plural/singular forms\n Singular: (lex, w, world) => {\n lex[w] = 'Singular';\n let plural = world.transforms.toPlural(w, world);\n lex[plural] = lex[plural] || 'Plural';\n },\n // conjugate these verbs\n Infinitive: (lex, w, world) => {\n lex[w] = 'Infinitive';\n let conj = world.transforms.conjugate(w, world);\n let tags = Object.keys(conj);\n\n for (let i = 0; i < tags.length; i++) {\n let str = conj[tags[i]];\n lex[str] = lex[str] || tags[i]; // only if it's safe\n }\n },\n // conjugate other Adjectival forms\n Comparable: (lex, w, world) => {\n lex[w] = 'Comparable';\n let conj = world.transforms.adjectives(w);\n let tags = Object.keys(conj);\n\n for (let i = 0; i < tags.length; i++) {\n let word = conj[tags[i]];\n lex[word] = lex[word] || tags[i]; // only if it's safe\n }\n },\n //conjugate phrasal-verbs\n PhrasalVerb: (lex, w, world) => {\n // whole thing\n lex[w] = ['PhrasalVerb', 'Infinitive']; //add original form\n\n let words = w.split(' '); // lex[words[0]] = lex[words[0]] || 'Infinitive'\n // //conjugate first word\n\n let conj = world.transforms.conjugate(words[0], world);\n let tags = Object.keys(conj);\n\n for (let i = 0; i < tags.length; i++) {\n let str = conj[tags[i]] + ' ' + words[1];\n lex[str] = lex[str] || ['PhrasalVerb', tags[i]];\n world.hasCompound[conj[tags[i]]] = true;\n }\n },\n // inflect our demonyms - 'germans'\n Demonym: (lex, w, world) => {\n lex[w] = 'Demonym';\n let plural = world.transforms.toPlural(w, world);\n lex[plural] = lex[plural] || ['Demonym', 'Plural']; // only if it's safe\n }\n }; // let a user explode their lexicon, too\n\n const addWords = function (wordsObj, lex, world) {\n Object.keys(wordsObj).forEach(word => {\n let tag = wordsObj[word]; // abbreviation-words are used in our tokenizer\n\n if (tag === 'Abbreviation' || tag === 'Unit') {\n world.cache.abbreviations[word] = true;\n } // cache multi-words\n\n\n let multi = word.split(' ');\n\n if (multi.length > 1) {\n world.hasCompound[multi[0]] = true;\n } // do some ad-hoc work before adding it\n\n\n if (fancy[tag] !== undefined) {\n fancy[tag](lex, word, world);\n return;\n } //set it in our lexicon, basic\n\n\n if (lex[word] === undefined) {\n lex[word] = tag;\n return;\n } // if we already have that word\n\n\n if (typeof lex[word] === 'string') {\n lex[word] = [lex[word]];\n }\n\n if (typeof tag === 'string') {\n lex[word].push(tag);\n } else {\n lex[word] = lex[word].concat(tag);\n }\n });\n }; // we do some ad-hoc stuff here, building-up our word-list\n\n\n const buildOut = function (world) {\n //our bag of words\n let lexicon = Object.assign({}, misc); // start adding words to the lex\n\n Object.keys(lexData).forEach(tag => {\n let wordsObj = unpack$1(lexData[tag]); // this part sucks\n\n Object.keys(wordsObj).forEach(w => {\n wordsObj[w] = tag;\n });\n addWords(wordsObj, lexicon, world);\n }); // console.log(Object.keys(lexicon).length)\n\n return lexicon;\n };\n\n var unpack_1 = {\n buildOut: buildOut,\n addWords: addWords\n };\n\n const addIrregulars$1 = function (world) {\n //add irregular plural nouns\n let nouns = world.irregulars.nouns;\n let words = Object.keys(nouns);\n\n for (let i = 0; i < words.length; i++) {\n const w = words[i];\n world.words[w] = 'Singular';\n world.words[nouns[w]] = 'Plural';\n } // add irregular verb conjugations\n\n\n let verbs = world.irregulars.verbs;\n let keys = Object.keys(verbs);\n\n for (let i = 0; i < keys.length; i++) {\n const inf = keys[i]; //add only if it it's safe...\n\n world.words[inf] = world.words[inf] || 'Infinitive';\n let forms = world.transforms.conjugate(inf, world);\n forms = Object.assign(forms, verbs[inf]); //add the others\n\n Object.keys(forms).forEach(tag => {\n world.words[forms[tag]] = world.words[forms[tag]] || tag; // lexicon should prefer other tags, over participle\n\n if (world.words[forms[tag]] === 'Participle') {\n world.words[forms[tag]] = tag;\n }\n });\n }\n };\n\n var addIrregulars_1 = addIrregulars$1;\n\n //used in noun.inflect, and also in the lexicon.\n\n var plurals = {\n addendum: 'addenda',\n alga: 'algae',\n alumna: 'alumnae',\n alumnus: 'alumni',\n analysis: 'analyses',\n antenna: 'antennae',\n appendix: 'appendices',\n avocado: 'avocados',\n axis: 'axes',\n bacillus: 'bacilli',\n barracks: 'barracks',\n beau: 'beaux',\n bus: 'buses',\n cactus: 'cacti',\n chateau: 'chateaux',\n child: 'children',\n circus: 'circuses',\n clothes: 'clothes',\n corpus: 'corpora',\n criterion: 'criteria',\n curriculum: 'curricula',\n database: 'databases',\n deer: 'deer',\n diagnosis: 'diagnoses',\n echo: 'echoes',\n embargo: 'embargoes',\n epoch: 'epochs',\n foot: 'feet',\n formula: 'formulae',\n fungus: 'fungi',\n genus: 'genera',\n goose: 'geese',\n halo: 'halos',\n hippopotamus: 'hippopotami',\n index: 'indices',\n larva: 'larvae',\n leaf: 'leaves',\n libretto: 'libretti',\n loaf: 'loaves',\n man: 'men',\n matrix: 'matrices',\n memorandum: 'memoranda',\n modulus: 'moduli',\n mosquito: 'mosquitoes',\n mouse: 'mice',\n // move: 'moves',\n nebula: 'nebulae',\n nucleus: 'nuclei',\n octopus: 'octopi',\n opus: 'opera',\n ovum: 'ova',\n ox: 'oxen',\n parenthesis: 'parentheses',\n person: 'people',\n phenomenon: 'phenomena',\n prognosis: 'prognoses',\n quiz: 'quizzes',\n radius: 'radii',\n referendum: 'referenda',\n rodeo: 'rodeos',\n sex: 'sexes',\n shoe: 'shoes',\n sombrero: 'sombreros',\n stimulus: 'stimuli',\n stomach: 'stomachs',\n syllabus: 'syllabi',\n synopsis: 'synopses',\n tableau: 'tableaux',\n thesis: 'theses',\n thief: 'thieves',\n tooth: 'teeth',\n tornado: 'tornados',\n tuxedo: 'tuxedos',\n vertebra: 'vertebrae' // virus: 'viri',\n // zero: 'zeros',\n\n };\n\n // used in verbs().conjugate()\n // but also added to our lexicon\n //use shorter key-names\n\n const mapping$1 = {\n g: 'Gerund',\n prt: 'Participle',\n perf: 'PerfectTense',\n pst: 'PastTense',\n fut: 'FuturePerfect',\n pres: 'PresentTense',\n pluperf: 'Pluperfect',\n a: 'Actor'\n }; // '_' in conjugations is the infinitive form\n // (order matters, to the lexicon)\n\n let conjugations = {\n act: {\n a: '_or'\n },\n ache: {\n pst: 'ached',\n g: 'aching'\n },\n age: {\n g: 'ageing',\n pst: 'aged',\n pres: 'ages'\n },\n aim: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n arise: {\n prt: '_n',\n pst: 'arose'\n },\n babysit: {\n a: '_ter',\n pst: 'babysat'\n },\n ban: {\n a: '',\n g: '_ning',\n pst: '_ned'\n },\n be: {\n a: '',\n g: 'am',\n prt: 'been',\n pst: 'was',\n pres: 'is'\n },\n beat: {\n a: '_er',\n g: '_ing',\n prt: '_en'\n },\n become: {\n prt: '_'\n },\n begin: {\n g: '_ning',\n prt: 'begun',\n pst: 'began'\n },\n being: {\n g: 'are',\n pst: 'were',\n pres: 'are'\n },\n bend: {\n prt: 'bent'\n },\n bet: {\n a: '_ter',\n prt: '_'\n },\n bind: {\n pst: 'bound'\n },\n bite: {\n g: 'biting',\n prt: 'bitten',\n pst: 'bit'\n },\n bleed: {\n pst: 'bled',\n prt: 'bled'\n },\n blow: {\n prt: '_n',\n pst: 'blew'\n },\n boil: {\n a: '_er'\n },\n brake: {\n prt: 'broken'\n },\n break: {\n pst: 'broke'\n },\n breed: {\n pst: 'bred'\n },\n bring: {\n pst: 'brought',\n prt: 'brought'\n },\n broadcast: {\n pst: '_'\n },\n budget: {\n pst: '_ed'\n },\n build: {\n pst: 'built',\n prt: 'built'\n },\n burn: {\n prt: '_ed'\n },\n burst: {\n prt: '_'\n },\n buy: {\n pst: 'bought',\n prt: 'bought'\n },\n can: {\n a: '',\n fut: '_',\n g: '',\n pst: 'could',\n perf: 'could',\n pluperf: 'could',\n pres: '_'\n },\n catch: {\n pst: 'caught'\n },\n choose: {\n g: 'choosing',\n prt: 'chosen',\n pst: 'chose'\n },\n cling: {\n prt: 'clung'\n },\n come: {\n prt: '_',\n pst: 'came',\n g: 'coming'\n },\n compete: {\n a: 'competitor',\n g: 'competing',\n pst: '_d'\n },\n cost: {\n pst: '_'\n },\n creep: {\n prt: 'crept'\n },\n cut: {\n prt: '_'\n },\n deal: {\n pst: '_t',\n prt: '_t'\n },\n develop: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n die: {\n g: 'dying',\n pst: '_d'\n },\n dig: {\n g: '_ging',\n pst: 'dug',\n prt: 'dug'\n },\n dive: {\n prt: '_d'\n },\n do: {\n pst: 'did',\n pres: '_es'\n },\n draw: {\n prt: '_n',\n pst: 'drew'\n },\n dream: {\n prt: '_t'\n },\n drink: {\n prt: 'drunk',\n pst: 'drank'\n },\n drive: {\n g: 'driving',\n prt: '_n',\n pst: 'drove'\n },\n drop: {\n g: '_ping',\n pst: '_ped'\n },\n eat: {\n a: '_er',\n g: '_ing',\n prt: '_en',\n pst: 'ate'\n },\n edit: {\n pst: '_ed',\n g: '_ing'\n },\n egg: {\n pst: '_ed'\n },\n fall: {\n prt: '_en',\n pst: 'fell'\n },\n feed: {\n prt: 'fed',\n pst: 'fed'\n },\n feel: {\n a: '_er',\n pst: 'felt'\n },\n fight: {\n pst: 'fought',\n prt: 'fought'\n },\n find: {\n pst: 'found'\n },\n flee: {\n g: '_ing',\n prt: 'fled'\n },\n fling: {\n prt: 'flung'\n },\n fly: {\n prt: 'flown',\n pst: 'flew'\n },\n forbid: {\n pst: 'forbade'\n },\n forget: {\n g: '_ing',\n prt: 'forgotten',\n pst: 'forgot'\n },\n forgive: {\n g: 'forgiving',\n prt: '_n',\n pst: 'forgave'\n },\n free: {\n a: '',\n g: '_ing'\n },\n freeze: {\n g: 'freezing',\n prt: 'frozen',\n pst: 'froze'\n },\n get: {\n pst: 'got',\n prt: 'gotten'\n },\n give: {\n g: 'giving',\n prt: '_n',\n pst: 'gave'\n },\n go: {\n prt: '_ne',\n pst: 'went',\n pres: 'goes'\n },\n grow: {\n prt: '_n'\n },\n guide: {\n pst: '_d'\n },\n hang: {\n pst: 'hung',\n prt: 'hung'\n },\n have: {\n g: 'having',\n pst: 'had',\n prt: 'had',\n pres: 'has'\n },\n hear: {\n pst: '_d',\n prt: '_d'\n },\n hide: {\n prt: 'hidden',\n pst: 'hid'\n },\n hit: {\n prt: '_'\n },\n hold: {\n pst: 'held',\n prt: 'held'\n },\n hurt: {\n pst: '_',\n prt: '_'\n },\n ice: {\n g: 'icing',\n pst: '_d'\n },\n imply: {\n pst: 'implied',\n pres: 'implies'\n },\n is: {\n a: '',\n g: 'being',\n pst: 'was',\n pres: '_'\n },\n keep: {\n prt: 'kept'\n },\n kneel: {\n prt: 'knelt'\n },\n know: {\n prt: '_n'\n },\n lay: {\n pst: 'laid',\n prt: 'laid'\n },\n lead: {\n pst: 'led',\n prt: 'led'\n },\n leap: {\n prt: '_t'\n },\n leave: {\n pst: 'left',\n prt: 'left'\n },\n lend: {\n prt: 'lent'\n },\n lie: {\n g: 'lying',\n pst: 'lay'\n },\n light: {\n pst: 'lit',\n prt: 'lit'\n },\n log: {\n g: '_ging',\n pst: '_ged'\n },\n loose: {\n prt: 'lost'\n },\n lose: {\n g: 'losing',\n pst: 'lost'\n },\n make: {\n pst: 'made',\n prt: 'made'\n },\n mean: {\n pst: '_t',\n prt: '_t'\n },\n meet: {\n a: '_er',\n g: '_ing',\n pst: 'met',\n prt: 'met'\n },\n miss: {\n pres: '_'\n },\n name: {\n g: 'naming'\n },\n patrol: {\n g: '_ling',\n pst: '_led'\n },\n pay: {\n pst: 'paid',\n prt: 'paid'\n },\n prove: {\n prt: '_n'\n },\n puke: {\n g: 'puking'\n },\n put: {\n prt: '_'\n },\n quit: {\n prt: '_'\n },\n read: {\n pst: '_',\n prt: '_'\n },\n ride: {\n prt: 'ridden'\n },\n reside: {\n pst: '_d'\n },\n ring: {\n pst: 'rang',\n prt: 'rung'\n },\n rise: {\n fut: 'will have _n',\n g: 'rising',\n prt: '_n',\n pst: 'rose',\n pluperf: 'had _n'\n },\n rub: {\n g: '_bing',\n pst: '_bed'\n },\n run: {\n g: '_ning',\n prt: '_',\n pst: 'ran'\n },\n say: {\n pst: 'said',\n prt: 'said',\n pres: '_s'\n },\n seat: {\n pst: 'sat',\n prt: 'sat'\n },\n see: {\n g: '_ing',\n prt: '_n',\n pst: 'saw'\n },\n seek: {\n prt: 'sought'\n },\n sell: {\n pst: 'sold',\n prt: 'sold'\n },\n send: {\n prt: 'sent'\n },\n set: {\n prt: '_'\n },\n sew: {\n prt: '_n'\n },\n shake: {\n prt: '_n'\n },\n shave: {\n prt: '_d'\n },\n shed: {\n g: '_ding',\n pst: '_',\n pres: '_s'\n },\n shine: {\n pst: 'shone',\n prt: 'shone'\n },\n shoot: {\n pst: 'shot',\n prt: 'shot'\n },\n show: {\n pst: '_ed'\n },\n shut: {\n prt: '_'\n },\n sing: {\n prt: 'sung',\n pst: 'sang'\n },\n sink: {\n pst: 'sank',\n pluperf: 'had sunk'\n },\n sit: {\n pst: 'sat'\n },\n ski: {\n pst: '_ied'\n },\n slay: {\n prt: 'slain'\n },\n sleep: {\n prt: 'slept'\n },\n slide: {\n pst: 'slid',\n prt: 'slid'\n },\n smash: {\n pres: '_es'\n },\n sneak: {\n prt: 'snuck'\n },\n speak: {\n fut: 'will have spoken',\n prt: 'spoken',\n pst: 'spoke',\n perf: 'have spoken',\n pluperf: 'had spoken'\n },\n speed: {\n prt: 'sped'\n },\n spend: {\n prt: 'spent'\n },\n spill: {\n prt: '_ed',\n pst: 'spilt'\n },\n spin: {\n g: '_ning',\n pst: 'spun',\n prt: 'spun'\n },\n spit: {\n prt: 'spat'\n },\n split: {\n prt: '_'\n },\n spread: {\n pst: '_'\n },\n spring: {\n prt: 'sprung'\n },\n stand: {\n pst: 'stood'\n },\n steal: {\n a: '_er',\n pst: 'stole'\n },\n stick: {\n pst: 'stuck'\n },\n sting: {\n pst: 'stung'\n },\n stink: {\n pst: 'stunk',\n prt: 'stunk'\n },\n stream: {\n a: '_er'\n },\n strew: {\n prt: '_n'\n },\n strike: {\n g: 'striking',\n pst: 'struck'\n },\n suit: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n sware: {\n prt: 'sworn'\n },\n swear: {\n pst: 'swore'\n },\n sweep: {\n prt: 'swept'\n },\n swim: {\n g: '_ming',\n pst: 'swam'\n },\n swing: {\n pst: 'swung'\n },\n take: {\n fut: 'will have _n',\n pst: 'took',\n perf: 'have _n',\n pluperf: 'had _n'\n },\n teach: {\n pst: 'taught',\n pres: '_es'\n },\n tear: {\n pst: 'tore'\n },\n tell: {\n pst: 'told'\n },\n think: {\n pst: 'thought'\n },\n thrive: {\n prt: '_d'\n },\n tie: {\n g: 'tying',\n pst: '_d'\n },\n undergo: {\n prt: '_ne'\n },\n understand: {\n pst: 'understood'\n },\n upset: {\n prt: '_'\n },\n wait: {\n a: '_er',\n g: '_ing',\n pst: '_ed'\n },\n wake: {\n pst: 'woke'\n },\n wear: {\n pst: 'wore'\n },\n weave: {\n prt: 'woven'\n },\n wed: {\n pst: 'wed'\n },\n weep: {\n prt: 'wept'\n },\n win: {\n g: '_ning',\n pst: 'won'\n },\n wind: {\n prt: 'wound'\n },\n withdraw: {\n pst: 'withdrew'\n },\n wring: {\n prt: 'wrung'\n },\n write: {\n g: 'writing',\n prt: 'written',\n pst: 'wrote'\n }\n }; //uncompress our ad-hoc compression scheme\n\n let keys = Object.keys(conjugations);\n\n for (let i = 0; i < keys.length; i++) {\n const inf = keys[i];\n let final = {};\n Object.keys(conjugations[inf]).forEach(key => {\n let str = conjugations[inf][key]; //swap-in infinitives for '_'\n\n str = str.replace('_', inf);\n let full = mapping$1[key];\n final[full] = str;\n }); //over-write original\n\n conjugations[inf] = final;\n }\n\n var conjugations_1 = conjugations;\n\n const endsWith$2 = {\n b: [{\n reg: /([^aeiou][aeiou])b$/i,\n repl: {\n pr: '$1bs',\n pa: '$1bbed',\n gr: '$1bbing'\n }\n }],\n d: [{\n reg: /(end)$/i,\n repl: {\n pr: '$1s',\n pa: 'ent',\n gr: '$1ing',\n ar: '$1er'\n }\n }, {\n reg: /(eed)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n ar: '$1er'\n }\n }, {\n reg: /(ed)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ded',\n ar: '$1der',\n gr: '$1ding'\n }\n }, {\n reg: /([^aeiou][ou])d$/i,\n repl: {\n pr: '$1ds',\n pa: '$1dded',\n gr: '$1dding'\n }\n }],\n e: [{\n reg: /(eave)$/i,\n repl: {\n pr: '$1s',\n pa: '$1d',\n gr: 'eaving',\n ar: '$1r'\n }\n }, {\n reg: /(ide)$/i,\n repl: {\n pr: '$1s',\n pa: 'ode',\n gr: 'iding',\n ar: 'ider'\n }\n }, {\n //shake\n reg: /(t|sh?)(ake)$/i,\n repl: {\n pr: '$1$2s',\n pa: '$1ook',\n gr: '$1aking',\n ar: '$1$2r'\n }\n }, {\n //awake\n reg: /w(ake)$/i,\n repl: {\n pr: 'w$1s',\n pa: 'woke',\n gr: 'waking',\n ar: 'w$1r'\n }\n }, {\n //make\n reg: /m(ake)$/i,\n repl: {\n pr: 'm$1s',\n pa: 'made',\n gr: 'making',\n ar: 'm$1r'\n }\n }, {\n reg: /(a[tg]|i[zn]|ur|nc|gl|is)e$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing' // prt: '$1en',\n\n }\n }, {\n reg: /([bd]l)e$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(om)e$/i,\n repl: {\n pr: '$1es',\n pa: 'ame',\n gr: '$1ing'\n }\n }],\n g: [{\n reg: /([^aeiou][aou])g$/i,\n repl: {\n pr: '$1gs',\n pa: '$1gged',\n gr: '$1gging'\n }\n }],\n h: [{\n reg: /(..)([cs]h)$/i,\n repl: {\n pr: '$1$2es',\n pa: '$1$2ed',\n gr: '$1$2ing'\n }\n }],\n k: [{\n reg: /(ink)$/i,\n repl: {\n pr: '$1s',\n pa: 'unk',\n gr: '$1ing',\n ar: '$1er'\n }\n }],\n m: [{\n reg: /([^aeiou][aeiou])m$/i,\n repl: {\n pr: '$1ms',\n pa: '$1mmed',\n gr: '$1mming'\n }\n }],\n n: [{\n reg: /(en)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n p: [{\n reg: /(e)(ep)$/i,\n repl: {\n pr: '$1$2s',\n pa: '$1pt',\n gr: '$1$2ing',\n ar: '$1$2er'\n }\n }, {\n reg: /([^aeiou][aeiou])p$/i,\n repl: {\n pr: '$1ps',\n pa: '$1pped',\n gr: '$1pping'\n }\n }, {\n reg: /([aeiu])p$/i,\n repl: {\n pr: '$1ps',\n pa: '$1p',\n gr: '$1pping'\n }\n }],\n r: [{\n reg: /([td]er)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(er)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n s: [{\n reg: /(ish|tch|ess)$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }],\n t: [{\n reg: /(ion|end|e[nc]t)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /(.eat)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing'\n }\n }, {\n reg: /([aeiu])t$/i,\n repl: {\n pr: '$1ts',\n pa: '$1t',\n gr: '$1tting'\n }\n }, {\n reg: /([^aeiou][aeiou])t$/i,\n repl: {\n pr: '$1ts',\n pa: '$1tted',\n gr: '$1tting'\n }\n }],\n w: [{\n reg: /(.llow)$/i,\n //follow, allow\n repl: {\n pr: '$1s',\n pa: '$1ed'\n }\n }, {\n reg: /(..)(ow)$/i,\n //grow\n repl: {\n pr: '$1$2s',\n pa: '$1ew',\n gr: '$1$2ing',\n prt: '$1$2n'\n }\n }],\n y: [{\n reg: /(i|f|rr)y$/i,\n repl: {\n pr: '$1ies',\n pa: '$1ied',\n gr: '$1ying'\n }\n }],\n z: [{\n reg: /([aeiou]zz)$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing'\n }\n }]\n };\n var suffixes$2 = endsWith$2;\n\n const suffixes$1 = suffixes$2;\n const posMap = {\n pr: 'PresentTense',\n pa: 'PastTense',\n gr: 'Gerund',\n prt: 'Participle',\n ar: 'Actor'\n };\n\n const doTransform = function (str, obj) {\n let found = {};\n let keys = Object.keys(obj.repl);\n\n for (let i = 0; i < keys.length; i += 1) {\n let pos = keys[i];\n found[posMap[pos]] = str.replace(obj.reg, obj.repl[pos]);\n }\n\n return found;\n }; //look at the end of the word for clues\n\n\n const checkSuffix$1 = function (str = '') {\n let c = str[str.length - 1];\n\n if (suffixes$1.hasOwnProperty(c) === true) {\n for (let r = 0; r < suffixes$1[c].length; r += 1) {\n const reg = suffixes$1[c][r].reg;\n\n if (reg.test(str) === true) {\n return doTransform(str, suffixes$1[c][r]);\n }\n }\n }\n\n return {};\n };\n\n var _01Suffixes = checkSuffix$1;\n\n const hasY = /[bcdfghjklmnpqrstvwxz]y$/;\n const generic = {\n Gerund: inf => {\n if (inf.charAt(inf.length - 1) === 'e') {\n return inf.replace(/e$/, 'ing');\n }\n\n return inf + 'ing';\n },\n PresentTense: inf => {\n if (inf.charAt(inf.length - 1) === 's') {\n return inf + 'es';\n }\n\n if (hasY.test(inf) === true) {\n return inf.slice(0, -1) + 'ies';\n }\n\n return inf + 's';\n },\n PastTense: inf => {\n if (inf.charAt(inf.length - 1) === 'e') {\n return inf + 'd';\n }\n\n if (inf.substr(-2) === 'ed') {\n return inf;\n }\n\n if (hasY.test(inf) === true) {\n return inf.slice(0, -1) + 'ied';\n }\n\n return inf + 'ed';\n }\n };\n var _02Generic = generic;\n\n const checkSuffix = _01Suffixes;\n const genericFill = _02Generic; //we run this on every verb in the lexicon, so please keep it fast\n //we assume the input word is a proper infinitive\n\n const conjugate$4 = function (inf = '', world) {\n let found = {}; // 1. look at irregulars\n //the lexicon doesn't pass this in\n\n if (world && world.irregulars) {\n if (world.irregulars.verbs.hasOwnProperty(inf) === true) {\n found = Object.assign({}, world.irregulars.verbs[inf]);\n }\n } //2. rule-based regex\n\n\n found = Object.assign({}, checkSuffix(inf), found); //3. generic transformations\n //'buzzing'\n\n if (found.Gerund === undefined) {\n found.Gerund = genericFill.Gerund(inf);\n } //'buzzed'\n\n\n if (found.PastTense === undefined) {\n found.PastTense = genericFill.PastTense(inf);\n } //'buzzes'\n\n\n if (found.PresentTense === undefined) {\n found.PresentTense = genericFill.PresentTense(inf);\n }\n\n return found;\n };\n\n var conjugate_1$1 = conjugate$4; // console.log(conjugate('bake'))\n\n const do_rules$1 = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/];\n const dont_rules$1 = [/ary$/];\n const irregulars$5 = {\n nice: 'nicest',\n late: 'latest',\n hard: 'hardest',\n inner: 'innermost',\n outer: 'outermost',\n far: 'furthest',\n worse: 'worst',\n bad: 'worst',\n good: 'best',\n big: 'biggest',\n large: 'largest'\n };\n const transforms$2 = [{\n reg: /y$/i,\n repl: 'iest'\n }, {\n reg: /([aeiou])t$/i,\n repl: '$1ttest'\n }, {\n reg: /([aeou])de$/i,\n repl: '$1dest'\n }, {\n reg: /nge$/i,\n repl: 'ngest'\n }, {\n reg: /([aeiou])te$/i,\n repl: '$1test'\n }];\n\n const to_superlative = function (str) {\n //irregulars\n if (irregulars$5.hasOwnProperty(str)) {\n return irregulars$5[str];\n } //known transforms\n\n\n for (let i = 0; i < transforms$2.length; i++) {\n if (transforms$2[i].reg.test(str)) {\n return str.replace(transforms$2[i].reg, transforms$2[i].repl);\n }\n } //dont-rules\n\n\n for (let i = 0; i < dont_rules$1.length; i++) {\n if (dont_rules$1[i].test(str) === true) {\n return null;\n }\n } //do-rules\n\n\n for (let i = 0; i < do_rules$1.length; i++) {\n if (do_rules$1[i].test(str) === true) {\n if (str.charAt(str.length - 1) === 'e') {\n return str + 'st';\n }\n\n return str + 'est';\n }\n }\n\n return str + 'est';\n };\n\n var toSuperlative = to_superlative;\n\n const do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/];\n const dont_rules = [/ary$/, /ous$/];\n const irregulars$4 = {\n grey: 'greyer',\n gray: 'grayer',\n green: 'greener',\n yellow: 'yellower',\n red: 'redder',\n good: 'better',\n well: 'better',\n bad: 'worse',\n sad: 'sadder',\n big: 'bigger'\n };\n const transforms$1 = [{\n reg: /y$/i,\n repl: 'ier'\n }, {\n reg: /([aeiou])t$/i,\n repl: '$1tter'\n }, {\n reg: /([aeou])de$/i,\n repl: '$1der'\n }, {\n reg: /nge$/i,\n repl: 'nger'\n }];\n\n const to_comparative = function (str) {\n //known-irregulars\n if (irregulars$4.hasOwnProperty(str)) {\n return irregulars$4[str];\n } //known-transforms\n\n\n for (let i = 0; i < transforms$1.length; i++) {\n if (transforms$1[i].reg.test(str) === true) {\n return str.replace(transforms$1[i].reg, transforms$1[i].repl);\n }\n } //dont-patterns\n\n\n for (let i = 0; i < dont_rules.length; i++) {\n if (dont_rules[i].test(str) === true) {\n return null;\n }\n } //do-patterns\n\n\n for (let i = 0; i < do_rules.length; i++) {\n if (do_rules[i].test(str) === true) {\n return str + 'er';\n }\n } //easy-one\n\n\n if (/e$/.test(str) === true) {\n return str + 'r';\n }\n\n return str + 'er';\n };\n\n var toComparative = to_comparative;\n\n const fns = {\n toSuperlative: toSuperlative,\n toComparative: toComparative\n };\n /** conjugate an adjective into other forms */\n\n const conjugate$3 = function (w) {\n let res = {}; // 'greatest'\n\n let sup = fns.toSuperlative(w);\n\n if (sup) {\n res.Superlative = sup;\n } // 'greater'\n\n\n let comp = fns.toComparative(w);\n\n if (comp) {\n res.Comparative = comp;\n }\n\n return res;\n };\n\n var adjectives$2 = conjugate$3;\n\n /** patterns for turning 'bus' to 'buses'*/\n const suffixes = {\n a: [[/(antenn|formul|nebul|vertebr|vit)a$/i, '$1ae'], [/([ti])a$/i, '$1a']],\n e: [[/(kn|l|w)ife$/i, '$1ives'], [/(hive)$/i, '$1s'], [/([m|l])ouse$/i, '$1ice'], [/([m|l])ice$/i, '$1ice']],\n f: [[/^(dwar|handkerchie|hoo|scar|whar)f$/i, '$1ves'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i, '$1ves']],\n i: [[/(octop|vir)i$/i, '$1i']],\n m: [[/([ti])um$/i, '$1a']],\n n: [[/^(oxen)$/i, '$1']],\n o: [[/(al|ad|at|er|et|ed|ad)o$/i, '$1oes']],\n s: [[/(ax|test)is$/i, '$1es'], [/(alias|status)$/i, '$1es'], [/sis$/i, 'ses'], [/(bu)s$/i, '$1ses'], [/(sis)$/i, 'ses'], [/^(?!talis|.*hu)(.*)man$/i, '$1men'], [/(octop|vir|radi|nucle|fung|cact|stimul)us$/i, '$1i']],\n x: [[/(matr|vert|ind|cort)(ix|ex)$/i, '$1ices'], [/^(ox)$/i, '$1en']],\n y: [[/([^aeiouy]|qu)y$/i, '$1ies']],\n z: [[/(quiz)$/i, '$1zes']]\n };\n var _rules$2 = suffixes;\n\n const rules$5 = _rules$2;\n const addE = /(x|ch|sh|s|z)$/;\n\n const trySuffix = function (str) {\n let c = str[str.length - 1];\n\n if (rules$5.hasOwnProperty(c) === true) {\n for (let i = 0; i < rules$5[c].length; i += 1) {\n let reg = rules$5[c][i][0];\n\n if (reg.test(str) === true) {\n return str.replace(reg, rules$5[c][i][1]);\n }\n }\n }\n\n return null;\n };\n /** Turn a singular noun into a plural\n * assume the given string is singular\n */\n\n\n const pluralize = function (str = '', world) {\n let irregulars = world.irregulars.nouns; // check irregulars list\n\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str];\n } //we have some rules to try-out\n\n\n let plural = trySuffix(str);\n\n if (plural !== null) {\n return plural;\n } //like 'church'\n\n\n if (addE.test(str)) {\n return str + 'es';\n } // ¯\\_(ツ)_/¯\n\n\n return str + 's';\n };\n\n var toPlural = pluralize;\n\n var _rules$1 = [[/([^v])ies$/i, '$1y'], [/ises$/i, 'isis'], [/(kn|[^o]l|w)ives$/i, '$1ife'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i, '$1f'], [/^(dwar|handkerchie|hoo|scar|whar)ves$/i, '$1f'], [/(antenn|formul|nebul|vertebr|vit)ae$/i, '$1a'], [/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i, '$1us'], [/(buffal|tomat|tornad)(oes)$/i, '$1o'], // [/(analy|diagno|parenthe|progno|synop|the)ses$/i, '$1sis'],\n [/(eas)es$/i, '$1e'], //diseases\n [/(..[aeiou]s)es$/i, '$1'], //geniouses\n [/(vert|ind|cort)(ices)$/i, '$1ex'], [/(matr|append)(ices)$/i, '$1ix'], [/(x|ch|ss|sh|z|o)es$/i, '$1'], [/men$/i, 'man'], [/(n)ews$/i, '$1ews'], [/([ti])a$/i, '$1um'], [/([^aeiouy]|qu)ies$/i, '$1y'], [/(s)eries$/i, '$1eries'], [/(m)ovies$/i, '$1ovie'], [/([m|l])ice$/i, '$1ouse'], [/(cris|ax|test)es$/i, '$1is'], [/(alias|status)es$/i, '$1'], [/(ss)$/i, '$1'], [/(ics)$/i, '$1'], [/s$/i, '']];\n\n const rules$4 = _rules$1;\n\n const invertObj = function (obj) {\n return Object.keys(obj).reduce((h, k) => {\n h[obj[k]] = k;\n return h;\n }, {});\n };\n\n const toSingular = function (str, world) {\n let irregulars = world.irregulars.nouns;\n let invert = invertObj(irregulars); //(not very efficient)\n // check irregulars list\n\n if (invert.hasOwnProperty(str)) {\n return invert[str];\n } // go through our regexes\n\n\n for (let i = 0; i < rules$4.length; i++) {\n if (rules$4[i][0].test(str) === true) {\n str = str.replace(rules$4[i][0], rules$4[i][1]);\n return str;\n }\n }\n\n return str;\n };\n\n var toSingular_1 = toSingular;\n\n let rules$3 = {\n Participle: [{\n reg: /own$/i,\n to: 'ow'\n }, {\n reg: /(.)un([g|k])$/i,\n to: '$1in$2'\n }],\n Actor: [{\n reg: /(er)er$/i,\n to: '$1'\n }],\n PresentTense: [{\n reg: /(..)(ies)$/i,\n to: '$1y'\n }, {\n reg: /(tch|sh)es$/i,\n to: '$1'\n }, {\n reg: /(ss|zz)es$/i,\n to: '$1'\n }, {\n reg: /([tzlshicgrvdnkmu])es$/i,\n to: '$1e'\n }, {\n reg: /(n[dtk]|c[kt]|[eo]n|i[nl]|er|a[ytrl])s$/i,\n to: '$1'\n }, {\n reg: /(ow)s$/i,\n to: '$1'\n }, {\n reg: /(op)s$/i,\n to: '$1'\n }, {\n reg: /([eirs])ts$/i,\n to: '$1t'\n }, {\n reg: /(ll)s$/i,\n to: '$1'\n }, {\n reg: /(el)s$/i,\n to: '$1'\n }, {\n reg: /(ip)es$/i,\n to: '$1e'\n }, {\n reg: /ss$/i,\n to: 'ss'\n }, {\n reg: /s$/i,\n to: ''\n }],\n Gerund: [{\n //popping -> pop\n reg: /(..)(p|d|t|g){2}ing$/i,\n to: '$1$2'\n }, {\n //fuzzing -> fuzz\n reg: /(ll|ss|zz)ing$/i,\n to: '$1'\n }, {\n reg: /([^aeiou])ying$/i,\n to: '$1y'\n }, {\n reg: /([^ae]i.)ing$/i,\n to: '$1e'\n }, {\n //eating, reading\n reg: /(ea[dklnrtv])ing$/i,\n to: '$1'\n }, {\n //washing -> wash\n reg: /(ch|sh)ing$/i,\n to: '$1'\n }, //soft-e forms:\n {\n //z : hazing (not buzzing)\n reg: /(z)ing$/i,\n to: '$1e'\n }, {\n //a : baking, undulating\n reg: /(a[gdkvtc])ing$/i,\n to: '$1e'\n }, {\n //u : conjuring, tubing\n reg: /(u[rtcbn])ing$/i,\n to: '$1e'\n }, {\n //o : forboding, poking, hoping, boring (not hooping)\n reg: /([^o]o[bdknprv])ing$/i,\n to: '$1e'\n }, {\n //ling : tingling, wrinkling, circling, scrambling, bustling\n reg: /([tbckg]l)ing$/i,\n //dp\n to: '$1e'\n }, {\n //cing : bouncing, denouncing\n reg: /(c|s)ing$/i,\n //dp\n to: '$1e'\n }, // {\n // //soft-e :\n // reg: /([ua]s|[dr]g|z|o[rlsp]|cre)ing$/i,\n // to: '$1e',\n // },\n {\n //fallback\n reg: /(..)ing$/i,\n to: '$1'\n }],\n PastTense: [{\n reg: /(ued)$/i,\n to: 'ue'\n }, {\n reg: /ea(rn|l|m)ed$/i,\n //ea - earned, healed, sreamed\n to: 'ea$1'\n }, {\n reg: /a([^aeiouy])ed$/i,\n to: 'a$1e'\n }, {\n reg: /([aeiou]zz)ed$/i,\n to: '$1'\n }, {\n reg: /(e|i)lled$/i,\n to: '$1ll'\n }, {\n reg: /(.)(sh|ch)ed$/i,\n to: '$1$2'\n }, {\n reg: /(tl|gl)ed$/i,\n to: '$1e'\n }, {\n reg: /(um?pt?)ed$/i,\n to: '$1'\n }, {\n reg: /(ss)ed$/i,\n to: '$1'\n }, {\n reg: /pped$/i,\n to: 'p'\n }, {\n reg: /tted$/i,\n to: 't'\n }, {\n reg: /(..)gged$/i,\n to: '$1g'\n }, {\n reg: /(..)lked$/i,\n to: '$1lk'\n }, {\n reg: /([^aeiouy][aeiou])ked$/i,\n to: '$1ke'\n }, {\n reg: /(.[aeiou])led$/i,\n to: '$1l'\n }, {\n reg: /(..)(h|ion|n[dt]|ai.|[cs]t|pp|all|ss|tt|int|ail|ld|en|oo.|er|k|pp|w|ou.|rt|ght|rm)ed$/i,\n to: '$1$2'\n }, {\n reg: /(.ut)ed$/i,\n to: '$1e'\n }, {\n reg: /(.pt)ed$/i,\n to: '$1'\n }, {\n reg: /(us)ed$/i,\n to: '$1e'\n }, {\n reg: /(dd)ed$/i,\n to: '$1'\n }, {\n reg: /(..[^aeiouy])ed$/i,\n to: '$1e'\n }, {\n reg: /(..)ied$/i,\n to: '$1y'\n }, {\n reg: /(.o)ed$/i,\n to: '$1o'\n }, {\n reg: /(..i)ed$/i,\n to: '$1'\n }, {\n reg: /(.a[^aeiou])ed$/i,\n to: '$1'\n }, {\n //owed, aced\n reg: /([aeiou][^aeiou])ed$/i,\n to: '$1e'\n }, {\n reg: /([rl])ew$/i,\n to: '$1ow'\n }, {\n reg: /([pl])t$/i,\n to: '$1t'\n }]\n };\n var _transform = rules$3;\n\n let guessVerb = {\n Gerund: ['ing'],\n Actor: ['erer'],\n Infinitive: ['ate', 'ize', 'tion', 'rify', 'then', 'ress', 'ify', 'age', 'nce', 'ect', 'ise', 'ine', 'ish', 'ace', 'ash', 'ure', 'tch', 'end', 'ack', 'and', 'ute', 'ade', 'ock', 'ite', 'ase', 'ose', 'use', 'ive', 'int', 'nge', 'lay', 'est', 'ain', 'ant', 'ent', 'eed', 'er', 'le', 'own', 'unk', 'ung', 'en'],\n PastTense: ['ed', 'lt', 'nt', 'pt', 'ew', 'ld'],\n PresentTense: ['rks', 'cks', 'nks', 'ngs', 'mps', 'tes', 'zes', 'ers', 'les', 'acks', 'ends', 'ands', 'ocks', 'lays', 'eads', 'lls', 'els', 'ils', 'ows', 'nds', 'ays', 'ams', 'ars', 'ops', 'ffs', 'als', 'urs', 'lds', 'ews', 'ips', 'es', 'ts', 'ns']\n }; //flip it into a lookup object\n\n guessVerb = Object.keys(guessVerb).reduce((h, k) => {\n guessVerb[k].forEach(a => h[a] = k);\n return h;\n }, {});\n var _guess = guessVerb;\n\n const rules$2 = _transform;\n const guess = _guess;\n /** it helps to know what we're conjugating from */\n\n const guessTense = function (str) {\n let three = str.substr(str.length - 3);\n\n if (guess.hasOwnProperty(three) === true) {\n return guess[three];\n }\n\n let two = str.substr(str.length - 2);\n\n if (guess.hasOwnProperty(two) === true) {\n return guess[two];\n }\n\n let one = str.substr(str.length - 1);\n\n if (one === 's') {\n return 'PresentTense';\n }\n\n return null;\n };\n\n const toInfinitive$3 = function (str, world, tense) {\n if (!str) {\n return '';\n } //1. look at known irregulars\n\n\n if (world.words.hasOwnProperty(str) === true) {\n let irregs = world.irregulars.verbs;\n let keys = Object.keys(irregs);\n\n for (let i = 0; i < keys.length; i++) {\n let forms = Object.keys(irregs[keys[i]]);\n\n for (let o = 0; o < forms.length; o++) {\n if (str === irregs[keys[i]][forms[o]]) {\n return keys[i];\n }\n }\n }\n } // give'r!\n\n\n tense = tense || guessTense(str);\n\n if (tense && rules$2[tense]) {\n for (let i = 0; i < rules$2[tense].length; i++) {\n const rule = rules$2[tense][i];\n\n if (rule.reg.test(str) === true) {\n // console.log(rule.reg)\n return str.replace(rule.reg, rule.to);\n }\n }\n }\n\n return str;\n };\n\n var toInfinitive_1$1 = toInfinitive$3;\n\n const defaultTags = tags;\n const unpack = unpack_1;\n const addIrregulars = addIrregulars_1;\n const inferTagSet = inference; //these let users change inflection / verb conjugation\n\n const irregulars$3 = {\n nouns: plurals,\n verbs: conjugations_1\n }; //these behaviours are configurable & shared across some plugins\n\n const transforms = {\n conjugate: conjugate_1$1,\n adjectives: adjectives$2,\n toPlural: toPlural,\n toSingular: toSingular_1,\n toInfinitive: toInfinitive_1$1\n };\n let isVerbose = false;\n /** all configurable linguistic data */\n\n class World$1 {\n constructor() {\n // quiet these properties from a console.log\n Object.defineProperty(this, 'words', {\n enumerable: false,\n value: {},\n writable: true\n });\n Object.defineProperty(this, 'hasCompound', {\n enumerable: false,\n value: {},\n writable: true\n });\n Object.defineProperty(this, 'irregulars', {\n enumerable: false,\n value: irregulars$3,\n writable: true\n });\n Object.defineProperty(this, 'tags', {\n enumerable: false,\n value: Object.assign({}, defaultTags),\n writable: true\n });\n Object.defineProperty(this, 'transforms', {\n enumerable: false,\n value: transforms,\n writable: true\n });\n Object.defineProperty(this, 'taggers', {\n enumerable: false,\n value: [],\n writable: true\n }); // cache our abbreviations for our sentence-parser\n\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n value: {\n abbreviations: {}\n }\n }); // add our compressed data to lexicon\n\n this.words = unpack.buildOut(this); // add our irregulars to lexicon\n\n addIrregulars(this);\n }\n /** more logs for debugging */\n\n\n verbose(bool) {\n isVerbose = bool;\n return this;\n }\n\n isVerbose() {\n return isVerbose;\n }\n /** put new words into our lexicon, properly */\n\n\n addWords(wordObj) {\n // clean them up a bit\n let cleaned = {};\n Object.keys(wordObj).forEach(w => {\n let tag = wordObj[w];\n w = w.toLowerCase().trim();\n cleaned[w] = tag;\n });\n unpack.addWords(cleaned, this.words, this);\n }\n /** add new custom conjugations */\n\n\n addConjugations(obj) {\n Object.assign(this.irregulars.verbs, obj);\n return this;\n }\n /** add new custom plural/singular pairs */\n\n\n addPlurals(obj) {\n Object.assign(this.irregulars.nouns, obj);\n return this;\n }\n /** extend the compromise tagset */\n\n\n addTags(tags) {\n tags = Object.assign({}, tags);\n this.tags = Object.assign(this.tags, tags); // calculate graph implications for the new tags\n\n this.tags = inferTagSet(this.tags);\n return this;\n }\n /** call methods after tagger runs */\n\n\n postProcess(fn) {\n this.taggers.push(fn);\n return this;\n }\n /** helper method for logging + debugging */\n\n\n stats() {\n return {\n words: Object.keys(this.words).length,\n plurals: Object.keys(this.irregulars.nouns).length,\n conjugations: Object.keys(this.irregulars.verbs).length,\n compounds: Object.keys(this.hasCompound).length,\n postProcessors: this.taggers.length\n };\n }\n\n } // ¯\\_(:/)_/¯\n\n\n const clone = function (obj) {\n return JSON.parse(JSON.stringify(obj));\n };\n /** produce a deep-copy of all lingustic data */\n\n\n World$1.prototype.clone = function () {\n let w2 = new World$1(); // these are simple to copy:\n\n w2.words = Object.assign({}, this.words);\n w2.hasCompound = Object.assign({}, this.hasCompound); //these ones are nested:\n\n w2.irregulars = clone(this.irregulars);\n w2.tags = clone(this.tags); // these are functions\n\n w2.transforms = this.transforms;\n w2.taggers = this.taggers;\n return w2;\n };\n\n var World_1 = World$1;\n\n var _01Utils = {};\n\n /** return the root, first document */\n\n (function (exports) {\n exports.all = function () {\n return this.parents()[0] || this;\n };\n /** return the previous result */\n\n\n exports.parent = function () {\n if (this.from) {\n return this.from;\n }\n\n return this;\n };\n /** return a list of all previous results */\n\n\n exports.parents = function (n) {\n let arr = [];\n\n const addParent = function (doc) {\n if (doc.from) {\n arr.push(doc.from);\n addParent(doc.from);\n }\n };\n\n addParent(this);\n arr = arr.reverse();\n\n if (typeof n === 'number') {\n return arr[n];\n }\n\n return arr;\n };\n /** deep-copy the document, so that no references remain */\n\n\n exports.clone = function (doShallow) {\n let list = this.list.map(ts => ts.clone(doShallow));\n let tmp = this.buildFrom(list);\n return tmp;\n };\n /** how many seperate terms does the document have? */\n\n\n exports.wordCount = function () {\n return this.list.reduce((count, p) => {\n count += p.wordCount();\n return count;\n }, 0);\n };\n\n exports.wordcount = exports.wordCount;\n /** turn on logging for decision-debugging */\n // exports.verbose = function(bool) {\n // if (bool === undefined) {\n // bool = true\n // }\n // this.world.verbose = bool\n // }\n })(_01Utils);\n\n var _02Accessors = {};\n\n /** use only the first result(s) */\n\n (function (exports) {\n exports.first = function (n) {\n if (n === undefined) {\n return this.get(0);\n }\n\n return this.slice(0, n);\n };\n /** use only the last result(s) */\n\n\n exports.last = function (n) {\n if (n === undefined) {\n return this.get(this.list.length - 1);\n }\n\n let end = this.list.length;\n return this.slice(end - n, end);\n };\n /** grab a given subset of the results*/\n\n\n exports.slice = function (start, end) {\n let list = this.list.slice(start, end);\n return this.buildFrom(list);\n };\n /* grab nth result */\n\n\n exports.eq = function (n) {\n let p = this.list[n];\n\n if (p === undefined) {\n return this.buildFrom([]);\n }\n\n return this.buildFrom([p]);\n };\n\n exports.get = exports.eq;\n /** grab term[0] for every match */\n\n exports.firstTerms = function () {\n return this.match('^.');\n };\n\n exports.firstTerm = exports.firstTerms;\n /** grab the last term for every match */\n\n exports.lastTerms = function () {\n return this.match('.$');\n };\n\n exports.lastTerm = exports.lastTerms;\n /** return a flat array of term objects */\n\n exports.termList = function (num) {\n let arr = []; //'reduce' but faster\n\n for (let i = 0; i < this.list.length; i++) {\n let terms = this.list[i].terms();\n\n for (let o = 0; o < terms.length; o++) {\n arr.push(terms[o]); //support .termList(4)\n\n if (num !== undefined && arr[num] !== undefined) {\n return arr[num];\n }\n }\n }\n\n return arr;\n };\n /* grab named capture group terms as object */\n\n\n const getGroups = function (doc) {\n let res = {};\n const allGroups = {};\n\n for (let i = 0; i < doc.list.length; i++) {\n const phrase = doc.list[i];\n const groups = Object.keys(phrase.groups).map(k => phrase.groups[k]);\n\n for (let j = 0; j < groups.length; j++) {\n const {\n group,\n start,\n length\n } = groups[j];\n\n if (!allGroups[group]) {\n allGroups[group] = [];\n }\n\n allGroups[group].push(phrase.buildFrom(start, length));\n }\n }\n\n const keys = Object.keys(allGroups);\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n res[key] = doc.buildFrom(allGroups[key]);\n }\n\n return res;\n };\n /** lookup a named-group, by its name */\n\n\n const getOneName = function (doc, name) {\n const arr = [];\n\n for (let i = 0; i < doc.list.length; i++) {\n const phrase = doc.list[i];\n let keys = Object.keys(phrase.groups);\n keys = keys.filter(id => phrase.groups[id].group === name);\n keys.forEach(id => {\n arr.push(phrase.buildFrom(phrase.groups[id].start, phrase.groups[id].length));\n });\n }\n\n return doc.buildFrom(arr);\n };\n /** grab named capture group results */\n\n\n exports.groups = function (target) {\n if (target === undefined) {\n return getGroups(this);\n }\n\n if (typeof target === 'number') {\n target = String(target);\n }\n\n return getOneName(this, target) || this.buildFrom([]);\n };\n\n exports.group = exports.groups;\n /** get the full-sentence each phrase belongs to */\n\n exports.sentences = function (n) {\n let arr = [];\n this.list.forEach(p => {\n arr.push(p.fullSentence());\n });\n\n if (typeof n === 'number') {\n return this.buildFrom([arr[n]]);\n }\n\n return this.buildFrom(arr);\n };\n\n exports.sentence = exports.sentences;\n })(_02Accessors);\n\n var _03Match = {};\n\n const cacheRequired$1 = function (reg) {\n let needTags = [];\n let needWords = [];\n reg.forEach(obj => {\n if (obj.optional === true || obj.negative === true) {\n return;\n }\n\n if (obj.tag !== undefined) {\n needTags.push(obj.tag);\n }\n\n if (obj.word !== undefined) {\n needWords.push(obj.word);\n }\n });\n return {\n tags: needTags,\n words: needWords\n };\n }; // try to pre-fail as many matches as possible, without doing them\n\n\n const failFast = function (doc, regs) {\n if (doc._cache && doc._cache.set === true) {\n let {\n words,\n tags\n } = cacheRequired$1(regs); //check required words\n\n for (let i = 0; i < words.length; i++) {\n if (doc._cache.words[words[i]] === undefined) {\n return false;\n }\n } //check required tags\n\n\n for (let i = 0; i < tags.length; i++) {\n if (doc._cache.tags[tags[i]] === undefined) {\n return false;\n }\n }\n }\n\n return true;\n };\n\n var _failFast = failFast;\n\n (function (exports) {\n const parseSyntax = matchSyntax;\n const checkCache = _failFast;\n /** return a new Doc, with this one as a parent */\n\n exports.match = function (reg, opts = {}) {\n // support '0' shorthand for named-groups\n if (typeof opts === 'string' || typeof opts === 'number' || opts === null) {\n opts = {\n group: opts\n };\n } //parse-up the input expression\n\n\n let regs = parseSyntax(reg, opts);\n\n if (regs.length === 0) {\n return this.buildFrom([]);\n } //check our cache, if it exists\n\n\n if (checkCache(this, regs) === false) {\n return this.buildFrom([]);\n } //try expression on each phrase\n\n\n let matches = this.list.reduce((arr, p) => {\n return arr.concat(p.match(regs));\n }, []); // support returning named groups\n\n if (opts.group !== undefined && opts.group !== null && opts.group !== '') {\n return this.buildFrom(matches).groups(opts.group);\n }\n\n return this.buildFrom(matches);\n };\n /** return all results except for this */\n\n\n exports.not = function (reg, opts = {}) {\n //parse-up the input expression\n let regs = parseSyntax(reg, opts); //if it's empty, return them all!\n\n if (regs.length === 0 || checkCache(this, regs) === false) {\n return this;\n } //try expression on each phrase\n\n\n let matches = this.list.reduce((arr, p) => {\n return arr.concat(p.not(regs));\n }, []);\n return this.buildFrom(matches);\n };\n /** return only the first match */\n\n\n exports.matchOne = function (reg, opts = {}) {\n let regs = parseSyntax(reg, opts); //check our cache, if it exists\n\n if (checkCache(this, regs) === false) {\n return this.buildFrom([]);\n }\n\n for (let i = 0; i < this.list.length; i++) {\n let match = this.list[i].match(regs, true);\n return this.buildFrom(match);\n }\n\n return this.buildFrom([]);\n };\n /** return each current phrase, only if it contains this match */\n\n\n exports.if = function (reg, opts = {}) {\n let regs = parseSyntax(reg, opts); //consult our cache, if it exists\n\n if (checkCache(this, regs) === false) {\n return this.buildFrom([]);\n }\n\n let found = this.list.filter(p => p.has(regs) === true);\n return this.buildFrom(found);\n };\n /** Filter-out any current phrases that have this match*/\n\n\n exports.ifNo = function (reg, opts = {}) {\n let regs = parseSyntax(reg, opts);\n let found = this.list.filter(p => p.has(regs) === false);\n return this.buildFrom(found);\n };\n /**Return a boolean if this match exists */\n\n\n exports.has = function (reg, opts = {}) {\n let regs = parseSyntax(reg, opts); //consult our cache, if it exists\n\n if (checkCache(this, regs) === false) {\n return false;\n }\n\n return this.list.some(p => p.has(regs) === true);\n };\n /** match any terms after our matches, within the sentence */\n\n\n exports.lookAhead = function (reg, opts = {}) {\n // find everything afterwards, by default\n if (!reg) {\n reg = '.*';\n }\n\n let regs = parseSyntax(reg, opts);\n let matches = [];\n this.list.forEach(p => {\n matches = matches.concat(p.lookAhead(regs));\n });\n matches = matches.filter(p => p);\n return this.buildFrom(matches);\n };\n\n exports.lookAfter = exports.lookAhead;\n /** match any terms before our matches, within the sentence */\n\n exports.lookBehind = function (reg, opts = {}) {\n // find everything afterwards, by default\n if (!reg) {\n reg = '.*';\n }\n\n let regs = parseSyntax(reg, opts);\n let matches = [];\n this.list.forEach(p => {\n matches = matches.concat(p.lookBehind(regs));\n });\n matches = matches.filter(p => p);\n return this.buildFrom(matches);\n };\n\n exports.lookBefore = exports.lookBehind;\n /** return all terms before a match, in each phrase */\n\n exports.before = function (reg, opts = {}) {\n let regs = parseSyntax(reg, opts); //only the phrases we care about\n\n let phrases = this.if(regs).list;\n let befores = phrases.map(p => {\n let ids = p.terms().map(t => t.id); //run the search again\n\n let m = p.match(regs)[0];\n let index = ids.indexOf(m.start); //nothing is before a first-term match\n\n if (index === 0 || index === -1) {\n return null;\n }\n\n return p.buildFrom(p.start, index);\n });\n befores = befores.filter(p => p !== null);\n return this.buildFrom(befores);\n };\n /** return all terms after a match, in each phrase */\n\n\n exports.after = function (reg, opts = {}) {\n let regs = parseSyntax(reg, opts); //only the phrases we care about\n\n let phrases = this.if(regs).list;\n let befores = phrases.map(p => {\n let terms = p.terms();\n let ids = terms.map(t => t.id); //run the search again\n\n let m = p.match(regs)[0];\n let index = ids.indexOf(m.start); //skip if nothing is after it\n\n if (index === -1 || !terms[index + m.length]) {\n return null;\n } //create the new phrase, after our match.\n\n\n let id = terms[index + m.length].id;\n let len = p.length - index - m.length;\n return p.buildFrom(id, len);\n });\n befores = befores.filter(p => p !== null);\n return this.buildFrom(befores);\n };\n /** return only results with this match afterwards */\n\n\n exports.hasAfter = function (reg, opts = {}) {\n return this.filter(doc => {\n return doc.lookAfter(reg, opts).found;\n });\n };\n /** return only results with this match before it */\n\n\n exports.hasBefore = function (reg, opts = {}) {\n return this.filter(doc => {\n return doc.lookBefore(reg, opts).found;\n });\n };\n })(_03Match);\n\n var _04Tag = {};\n\n /** apply a tag, or tags to all terms */\n\n const tagTerms = function (tag, doc, safe, reason) {\n let tagList = [];\n\n if (typeof tag === 'string') {\n tagList = tag.split(' ');\n } // doc.parents()[0].reasons.push(reason)\n //do indepenent tags for each term:\n\n\n doc.list.forEach(p => {\n let terms = p.terms(); // tagSafe - apply only to fitting terms\n\n if (safe === true) {\n terms = terms.filter(t => t.canBe(tag, doc.world));\n }\n\n terms.forEach((t, i) => {\n //fancy version:\n if (tagList.length > 1) {\n if (tagList[i] && tagList[i] !== '.') {\n t.tag(tagList[i], reason, doc.world);\n }\n } else {\n //non-fancy version (same tag for all terms)\n t.tag(tag, reason, doc.world);\n }\n });\n });\n return;\n };\n\n var _setTag = tagTerms;\n\n const setTag = _setTag;\n /** Give all terms the given tag */\n\n _04Tag.tag = function (tags, why) {\n if (!tags) {\n return this;\n }\n\n setTag(tags, this, false, why);\n return this;\n };\n /** Only apply tag to terms if it is consistent with current tags */\n\n\n _04Tag.tagSafe = function (tags, why) {\n if (!tags) {\n return this;\n }\n\n setTag(tags, this, true, why);\n return this;\n };\n /** Remove this term from the given terms */\n\n\n _04Tag.unTag = function (tags, why) {\n this.list.forEach(p => {\n p.terms().forEach(t => t.unTag(tags, why, this.world));\n });\n return this;\n };\n /** return only the terms that can be this tag*/\n\n\n _04Tag.canBe = function (tag) {\n if (!tag) {\n return this;\n }\n\n let world = this.world;\n let matches = this.list.reduce((arr, p) => {\n return arr.concat(p.canBe(tag, world));\n }, []);\n return this.buildFrom(matches);\n };\n\n var _05Loops = {};\n\n /* run each phrase through a function, and create a new document */\n\n _05Loops.map = function (fn) {\n if (!fn) {\n return this;\n }\n\n let list = this.list.map((p, i) => {\n let doc = this.buildFrom([p]);\n doc.from = null; //it's not a child/parent\n\n let res = fn(doc, i); // if its a doc, return one result\n\n if (res && res.list && res.list[0]) {\n return res.list[0];\n }\n\n return res;\n }); //remove nulls\n\n list = list.filter(x => x); // return an empty response\n\n if (list.length === 0) {\n return this.buildFrom(list);\n } // if it is not a list of Phrase objects, then don't try to make a Doc object\n\n\n if (typeof list[0] !== 'object' || list[0].isA !== 'Phrase') {\n return list;\n }\n\n return this.buildFrom(list);\n };\n /** run a function on each phrase */\n\n\n _05Loops.forEach = function (fn, detachParent) {\n if (!fn) {\n return this;\n }\n\n this.list.forEach((p, i) => {\n let sub = this.buildFrom([p]); // if we're doing fancy insertions, we may want to skip updating the parent each time.\n\n if (detachParent === true) {\n sub.from = null; //\n }\n\n fn(sub, i);\n });\n return this;\n };\n /** return only the phrases that return true */\n\n\n _05Loops.filter = function (fn) {\n if (!fn) {\n return this;\n }\n\n let list = this.list.filter((p, i) => {\n let doc = this.buildFrom([p]);\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n return this.buildFrom(list);\n };\n /** return a document with only the first phrase that matches */\n\n\n _05Loops.find = function (fn) {\n if (!fn) {\n return this;\n }\n\n let phrase = this.list.find((p, i) => {\n let doc = this.buildFrom([p]);\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n\n if (phrase) {\n return this.buildFrom([phrase]);\n }\n\n return undefined;\n };\n /** return true or false if there is one matching phrase */\n\n\n _05Loops.some = function (fn) {\n if (!fn) {\n return this;\n }\n\n return this.list.some((p, i) => {\n let doc = this.buildFrom([p]);\n doc.from = null; //it's not a child/parent\n\n return fn(doc, i);\n });\n };\n /** sample a subset of the results */\n\n\n _05Loops.random = function (n) {\n if (!this.found) {\n return this;\n }\n\n let r = Math.floor(Math.random() * this.list.length);\n\n if (n === undefined) {\n let list = [this.list[r]];\n return this.buildFrom(list);\n } //prevent it from going over the end\n\n\n if (r + n > this.length) {\n r = this.length - n;\n r = r < 0 ? 0 : r;\n }\n\n return this.slice(r, r + n);\n };\n\n var _06Lookup = {};\n\n const tokenize$4 = function (str) {\n return str.split(/[ -]/g);\n }; // take a list of strings\n // look them up in the document\n\n\n const buildTree = function (termList, values = []) {\n let root = {}; // parse our input\n\n termList.forEach((str, i) => {\n let val = true;\n\n if (values[i] !== undefined) {\n val = values[i];\n } // some rough normalization\n\n\n str = (str || '').toLowerCase();\n str = str.replace(/[,;.!?]+$/, '');\n let arr = tokenize$4(str).map(s => s.trim());\n root[arr[0]] = root[arr[0]] || {};\n\n if (arr.length === 1) {\n root[arr[0]].value = val;\n } else {\n root[arr[0]].more = root[arr[0]].more || [];\n root[arr[0]].more.push({\n rest: arr.slice(1),\n value: val\n });\n }\n }); // sort by longest-first?\n // console.log(JSON.stringify(root, null, 2))\n\n return root;\n };\n\n const fastLookup = function (termList, values, doc) {\n let root = buildTree(termList, values);\n let found = []; // each phrase\n\n for (let i = 0; i < doc.list.length; i++) {\n const p = doc.list[i];\n let terms = p.terms();\n let words = terms.map(t => t.reduced); // each word\n\n for (let w = 0; w < words.length; w++) {\n if (root[words[w]] !== undefined) {\n // is it a multi-word match?\n if (root[words[w]].more !== undefined) {\n root[words[w]].more.forEach(more => {\n // is it too-long?\n if (words[w + more.rest.length] === undefined) {\n return;\n } // compare each subsequent term\n\n\n let everyTerm = more.rest.every((word, r) => {\n return word === words[w + r + 1];\n });\n\n if (everyTerm === true) {\n found.push({\n id: p.terms()[w].id,\n value: more.value,\n length: more.rest.length + 1\n });\n }\n });\n } // is it a single-word match?\n\n\n if (root[words[w]].value !== undefined) {\n found.push({\n id: p.terms()[w].id,\n value: root[words[w]].value,\n length: 1\n });\n }\n }\n }\n }\n\n return found;\n };\n\n var _lookup = fastLookup;\n\n (function (exports) {\n const lookup = _lookup; // compare one term and one match\n // const doesMatch = function(term, str) {\n // if (str === '') {\n // return false\n // }\n // return term.reduced === str || term.implicit === str || term.root === str || term.text.toLowerCase() === str\n // }\n\n const isObject = function (obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]';\n };\n /** lookup an array of words or phrases */\n\n\n exports.lookup = function (arr) {\n let values = []; //is it a {key:val} object?\n\n let isObj = isObject(arr);\n\n if (isObj === true) {\n arr = Object.keys(arr).map(k => {\n values.push(arr[k]);\n return k;\n });\n } // support .lookup('foo')\n\n\n if (typeof arr === 'string') {\n arr = [arr];\n } //make sure we go fast.\n\n\n if (this._cache.set !== true) {\n this.cache();\n }\n\n let found = lookup(arr, values, this);\n let p = this.list[0]; // make object response\n\n if (isObj === true) {\n let byVal = {};\n found.forEach(o => {\n byVal[o.value] = byVal[o.value] || [];\n byVal[o.value].push(p.buildFrom(o.id, o.length));\n });\n Object.keys(byVal).forEach(k => {\n byVal[k] = this.buildFrom(byVal[k]);\n });\n return byVal;\n } // otherwise, make array response:\n\n\n found = found.map(o => p.buildFrom(o.id, o.length));\n return this.buildFrom(found);\n };\n\n exports.lookUp = exports.lookup;\n })(_06Lookup);\n\n var _07Cache = {};\n\n /** freeze the current state of the document, for speed-purposes*/\n\n _07Cache.cache = function (options) {\n options = options || {};\n let words = {};\n let tags = {};\n this._cache.words = words;\n this._cache.tags = tags;\n this._cache.set = true;\n this.list.forEach((p, i) => {\n p.cache = p.cache || {}; //p.terms get cached automatically\n\n let terms = p.terms(); // cache all the terms\n\n terms.forEach(t => {\n if (words[t.reduced] && !words.hasOwnProperty(t.reduced)) {\n return; //skip prototype words\n }\n\n words[t.reduced] = words[t.reduced] || [];\n words[t.reduced].push(i);\n Object.keys(t.tags).forEach(tag => {\n tags[tag] = tags[tag] || [];\n tags[tag].push(i);\n }); // cache root-form on Term, too\n\n if (options.root) {\n t.setRoot(this.world);\n words[t.root] = [i];\n }\n });\n });\n return this;\n };\n /** un-freezes the current state of the document, so it may be transformed */\n\n\n _07Cache.uncache = function () {\n this._cache = {};\n this.list.forEach(p => {\n p.cache = {};\n }); // do parents too?\n\n this.parents().forEach(doc => {\n doc._cache = {};\n doc.list.forEach(p => {\n p.cache = {};\n });\n });\n return this;\n };\n\n var _01Replace = {};\n\n const tokenize$3 = _01Tokenizer;\n\n const titleCase$1 = str => {\n return str.charAt(0).toUpperCase() + str.substr(1);\n };\n /** substitute-in new content */\n\n\n _01Replace.replaceWith = function (replace, options = {}) {\n if (!replace) {\n return this.delete();\n } //support old-style params\n\n\n if (options === true) {\n options = {\n keepTags: true\n };\n }\n\n if (options === false) {\n options = {\n keepTags: false\n };\n }\n\n options = options || {}; // clear the cache\n\n this.uncache(); // return this\n\n this.list.forEach(p => {\n let input = replace; // accept a function for replace\n\n if (typeof replace === 'function') {\n input = replace(p);\n }\n\n let newPhrases; // accept a Doc object to replace\n\n if (input && typeof input === 'object' && input.isA === 'Doc') {\n newPhrases = input.list;\n this.pool().merge(input.pool());\n } else if (typeof input === 'string') {\n //input is a string\n if (options.keepCase !== false && p.terms(0).isTitleCase()) {\n input = titleCase$1(input);\n }\n\n newPhrases = tokenize$3(input, this.world, this.pool()); //tag the new phrases\n\n let tmpDoc = this.buildFrom(newPhrases);\n tmpDoc.tagger();\n newPhrases = tmpDoc.list;\n } else {\n return; //don't even bother\n } // try to keep its old tags, if appropriate\n\n\n if (options.keepTags === true) {\n let oldTags = p.json({\n terms: {\n tags: true\n }\n }).terms;\n newPhrases[0].terms().forEach((t, i) => {\n if (oldTags[i]) {\n t.tagSafe(oldTags[i].tags, 'keptTag', this.world);\n }\n });\n }\n\n p.replace(newPhrases[0], this); //Oneday: support multi-sentence replacements\n });\n return this;\n };\n /** search and replace match with new content */\n\n\n _01Replace.replace = function (match, replace, options) {\n // if there's no 2nd param, use replaceWith\n if (replace === undefined) {\n return this.replaceWith(match, options);\n }\n\n this.match(match).replaceWith(replace, options);\n return this;\n };\n\n var _02Insert = {};\n\n (function (exports) {\n const tokenize = _01Tokenizer;\n\n const isObject = function (obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]';\n }; // if it's empty, just create the phrase\n\n\n const makeNew = function (str, doc) {\n let phrase = tokenize(str, doc.world)[0]; //assume it's one sentence, for now\n\n let tmpDoc = doc.buildFrom([phrase]);\n tmpDoc.tagger();\n doc.list = tmpDoc.list;\n return doc;\n };\n /** add these new terms to the end*/\n\n\n exports.append = function (str = '') {\n if (!str) {\n return this;\n } // if it's empty, just create the phrase\n\n\n if (!this.found) {\n return makeNew(str, this);\n } // clear the cache\n\n\n this.uncache(); //add it to end of every phrase\n\n this.list.forEach(p => {\n //build it\n let phrase;\n\n if (isObject(str) && str.isA === 'Doc') {\n phrase = str.list[0].clone(); //use the first phrase\n } else if (typeof str === 'string') {\n phrase = tokenize(str, this.world, this.pool())[0]; //assume it's one sentence, for now\n } //tag it\n\n\n let tmpDoc = this.buildFrom([phrase]);\n tmpDoc.tagger(); // push it onto the end\n\n p.append(phrase, this);\n });\n return this;\n };\n\n exports.insertAfter = exports.append;\n exports.insertAt = exports.append;\n /** add these new terms to the front*/\n\n exports.prepend = function (str) {\n if (!str) {\n return this;\n } // if it's empty, just create the phrase\n\n\n if (!this.found) {\n return makeNew(str, this);\n } // clear the cache\n\n\n this.uncache(); //add it to start of every phrase\n\n this.list.forEach(p => {\n //build it\n let phrase;\n\n if (isObject(str) && str.isA === 'Doc') {\n phrase = str.list[0].clone(); //use the first phrase\n } else if (typeof str === 'string') {\n phrase = tokenize(str, this.world, this.pool())[0]; //assume it's one sentence, for now\n } //tag it\n\n\n let tmpDoc = this.buildFrom([phrase]);\n tmpDoc.tagger(); // add it to the start\n\n p.prepend(phrase, this);\n });\n return this;\n };\n\n exports.insertBefore = exports.prepend;\n /** add these new things to the end*/\n\n exports.concat = function () {\n // clear the cache\n this.uncache();\n let list = this.list.slice(0); //repeat for any number of params\n\n for (let i = 0; i < arguments.length; i++) {\n let arg = arguments[i]; //support a fresh string\n\n if (typeof arg === 'string') {\n let arr = tokenize(arg, this.world); //TODO: phrase.tagger()?\n\n list = list.concat(arr);\n } else if (arg.isA === 'Doc') {\n list = list.concat(arg.list);\n } else if (arg.isA === 'Phrase') {\n list.push(arg);\n }\n }\n\n return this.buildFrom(list);\n };\n /** fully remove these terms from the document */\n\n\n exports.delete = function (match) {\n // clear the cache\n this.uncache();\n let toRemove = this;\n\n if (match) {\n toRemove = this.match(match);\n }\n\n toRemove.list.forEach(phrase => phrase.delete(this));\n return this;\n }; // aliases\n\n\n exports.remove = exports.delete;\n })(_02Insert);\n\n var _01Text = {};\n\n const shouldTrim = {\n clean: true,\n reduced: true,\n root: true\n };\n /** return the document as text */\n\n _01Text.text = function (options) {\n options = options || {}; //are we showing every phrase?\n\n let showFull = false;\n\n if (this.parents().length === 0) {\n showFull = true;\n } // cache roots, if necessary\n\n\n if (options === 'root' || typeof options === 'object' && options.root) {\n this.list.forEach(p => {\n p.terms().forEach(t => {\n if (t.root === null) {\n t.setRoot(this.world);\n }\n });\n });\n }\n\n let txt = this.list.reduce((str, p, i) => {\n const trimPre = !showFull && i === 0;\n const trimPost = !showFull && i === this.list.length - 1;\n return str + p.text(options, trimPre, trimPost);\n }, ''); // clumsy final trim of leading/trailing whitespace\n\n if (shouldTrim[options] === true || options.reduced === true || options.clean === true || options.root === true) {\n txt = txt.trim();\n }\n\n return txt;\n };\n\n var _02Json = {};\n\n const termOffsets = function (doc) {\n let elapsed = 0;\n let index = 0;\n let offsets = {};\n doc.termList().forEach(term => {\n offsets[term.id] = {\n index: index,\n start: elapsed + term.pre.length,\n length: term.text.length\n };\n elapsed += term.pre.length + term.text.length + term.post.length;\n index += 1;\n });\n return offsets;\n };\n\n const calcOffset = function (doc, result, options) {\n // calculate offsets for each term\n let offsets = termOffsets(doc.all()); // add index values\n\n if (options.terms.index || options.index) {\n result.forEach(o => {\n o.terms.forEach(t => {\n t.index = offsets[t.id].index;\n });\n o.index = o.terms[0].index;\n });\n } // add offset values\n\n\n if (options.terms.offset || options.offset) {\n result.forEach(o => {\n o.terms.forEach(t => {\n t.offset = offsets[t.id] || {};\n }); // let len = o.terms.reduce((n, t, i) => {\n // n += t.offset.length || 0\n // //add whitespace, too\n // console.log(t.post)\n // return n\n // }, 0)\n // The offset information for the entire doc starts at (or just before)\n // the first term, and is as long as the whole text. The code originally\n // copied the entire offset value from terms[0], but since we're now\n // overriding 2 of the three fields, it's cleaner to just create an all-\n // new object and not pretend it's \"just\" the same as terms[0].\n\n o.offset = {\n index: o.terms[0].offset.index,\n start: o.terms[0].offset.start - o.text.indexOf(o.terms[0].text),\n length: o.text.length\n };\n });\n }\n };\n\n var _offset = calcOffset;\n\n (function (exports) {\n const offsets = _offset;\n const jsonDefaults = {\n text: true,\n terms: true,\n trim: true\n }; //some options have dependents\n\n const setOptions = function (options) {\n options = Object.assign({}, jsonDefaults, options);\n\n if (options.unique) {\n options.reduced = true;\n } //offset calculation requires these options to be on\n\n\n if (options.offset) {\n options.text = true;\n\n if (!options.terms || options.terms === true) {\n options.terms = {};\n }\n\n options.terms.offset = true;\n }\n\n if (options.index || options.terms.index) {\n options.terms = options.terms === true ? {} : options.terms;\n options.terms.id = true;\n }\n\n return options;\n };\n /** pull out desired metadata from the document */\n\n\n exports.json = function (options = {}) {\n //support json(3) format\n if (typeof options === 'number' && this.list[options]) {\n return this.list[options].json(jsonDefaults);\n }\n\n options = setOptions(options); // cache root strings beforehand, if necessary\n\n if (options.root === true) {\n this.list.forEach(p => {\n p.terms().forEach(t => {\n if (t.root === null) {\n t.setRoot(this.world);\n }\n });\n });\n }\n\n let result = this.list.map(p => {\n return p.json(options, this.world);\n }); // add offset and index data for each term\n\n if (options.terms.offset || options.offset || options.terms.index || options.index) {\n offsets(this, result, options);\n } // add frequency #s\n\n\n if (options.frequency || options.freq || options.count) {\n let obj = {};\n this.list.forEach(p => {\n let str = p.text('reduced');\n obj[str] = obj[str] || 0;\n obj[str] += 1;\n });\n this.list.forEach((p, i) => {\n result[i].count = obj[p.text('reduced')];\n });\n } // remove duplicates\n\n\n if (options.unique) {\n let already = {};\n result = result.filter(o => {\n if (already[o.reduced] === true) {\n return false;\n }\n\n already[o.reduced] = true;\n return true;\n });\n }\n\n return result;\n }; //aliases\n\n\n exports.data = exports.json;\n })(_02Json);\n\n var _03Out = {};\n\n var _debug = {exports: {}};\n\n (function (module) {\n // https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color\n const reset = '\\x1b[0m';\n\n const padEnd = function (str, width) {\n str = str.toString();\n\n while (str.length < width) {\n str += ' ';\n }\n\n return str;\n };\n\n function isClientSide() {\n return typeof window !== 'undefined' && window.document;\n } // some nice colors for client-side debug\n\n\n const css = {\n green: '#7f9c6c',\n red: '#914045',\n blue: '#6699cc',\n magenta: '#6D5685',\n cyan: '#2D85A8',\n yellow: '#e6d7b3',\n black: '#303b50'\n };\n\n const logClientSide = function (doc) {\n let tagset = doc.world.tags;\n doc.list.forEach(p => {\n console.log('\\n%c\"' + p.text() + '\"', 'color: #e6d7b3;');\n let terms = p.terms();\n terms.forEach(t => {\n let tags = Object.keys(t.tags);\n let text = t.text || '-';\n\n if (t.implicit) {\n text = '[' + t.implicit + ']';\n }\n\n let word = \"'\" + text + \"'\";\n word = padEnd(word, 8);\n let found = tags.find(tag => tagset[tag] && tagset[tag].color);\n let color = 'steelblue';\n\n if (tagset[found]) {\n color = tagset[found].color;\n color = css[color];\n }\n\n console.log(` ${word} - %c${tags.join(', ')}`, `color: ${color || 'steelblue'};`);\n });\n });\n }; //cheaper than requiring chalk\n\n\n const cli = {\n green: function (str) {\n return '\\x1b[32m' + str + reset;\n },\n red: function (str) {\n return '\\x1b[31m' + str + reset;\n },\n blue: function (str) {\n return '\\x1b[34m' + str + reset;\n },\n magenta: function (str) {\n return '\\x1b[35m' + str + reset;\n },\n cyan: function (str) {\n return '\\x1b[36m' + str + reset;\n },\n yellow: function (str) {\n return '\\x1b[33m' + str + reset;\n },\n black: function (str) {\n return '\\x1b[30m' + str + reset;\n }\n };\n\n const tagString = function (tags, world) {\n tags = tags.map(tag => {\n if (!world.tags.hasOwnProperty(tag)) {\n return tag;\n }\n\n const c = world.tags[tag].color || 'blue';\n return cli[c](tag);\n });\n return tags.join(', ');\n }; //output some helpful stuff to the console\n\n\n const debug = function (doc) {\n if (isClientSide()) {\n logClientSide(doc);\n return doc;\n }\n\n console.log(cli.blue('====='));\n doc.list.forEach(p => {\n console.log(cli.blue(' -----'));\n let terms = p.terms();\n terms.forEach(t => {\n let tags = Object.keys(t.tags);\n let text = t.text || '-';\n\n if (t.implicit) {\n text = '[' + t.implicit + ']';\n }\n\n {\n text = cli.yellow(text);\n }\n\n let word = \"'\" + text + \"'\";\n word = padEnd(word, 18);\n let str = cli.blue(' | ') + word + ' - ' + tagString(tags, doc.world);\n console.log(str);\n });\n });\n console.log('');\n return doc;\n };\n\n module.exports = debug;\n })(_debug);\n\n const topk$1 = function (doc) {\n let list = doc.json({\n text: false,\n terms: false,\n reduced: true\n }); // combine them\n\n let obj = {};\n list.forEach(o => {\n if (!obj[o.reduced]) {\n o.count = 0;\n obj[o.reduced] = o;\n }\n\n obj[o.reduced].count += 1;\n });\n let arr = Object.keys(obj).map(k => obj[k]); // sort them\n\n arr.sort((a, b) => {\n if (a.count > b.count) {\n return -1;\n } else if (a.count < b.count) {\n return 1;\n }\n\n return 0;\n });\n return arr;\n };\n\n var _topk = topk$1;\n\n const debug = _debug.exports;\n const topk = _topk;\n /** pretty-print the current document and its tags */\n\n _03Out.debug = function () {\n debug(this);\n return this;\n };\n /** some named output formats */\n\n\n _03Out.out = function (method) {\n if (method === 'text') {\n return this.text();\n }\n\n if (method === 'normal') {\n return this.text('normal');\n }\n\n if (method === 'json') {\n return this.json();\n }\n\n if (method === 'offset' || method === 'offsets') {\n return this.json({\n offset: true\n });\n }\n\n if (method === 'array') {\n return this.json({\n terms: false\n }).map(obj => obj.text).filter(str => str);\n }\n\n if (method === 'freq' || method === 'frequency') {\n return topk(this);\n }\n\n if (method === 'terms') {\n let list = [];\n this.json({\n text: false,\n terms: {\n text: true\n }\n }).forEach(obj => {\n let terms = obj.terms.map(t => t.text);\n terms = terms.filter(t => t);\n list = list.concat(terms);\n });\n return list;\n }\n\n if (method === 'tags') {\n return this.list.map(p => {\n return p.terms().reduce((h, t) => {\n h[t.clean || t.implicit] = Object.keys(t.tags);\n return h;\n }, {});\n });\n }\n\n if (method === 'debug') {\n debug(this);\n return this;\n }\n\n return this.text();\n };\n\n var _01Sort = {};\n\n const methods$9 = {\n /** alphabetical order */\n alpha: (a, b) => {\n let left = a.text('clean');\n let right = b.text('clean');\n\n if (left < right) {\n return -1;\n }\n\n if (left > right) {\n return 1;\n }\n\n return 0;\n },\n\n /** count the # of characters of each match */\n length: (a, b) => {\n let left = a.text().trim().length;\n let right = b.text().trim().length;\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n },\n\n /** count the # of terms in each match */\n wordCount: (a, b) => {\n let left = a.wordCount();\n let right = b.wordCount();\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n }\n };\n /** sort by # of duplicates in the document*/\n\n const byFreq = function (doc) {\n let counts = {};\n const options = {\n case: true,\n punctuation: false,\n whitespace: true,\n unicode: true\n };\n doc.list.forEach(p => {\n let str = p.text(options);\n counts[str] = counts[str] || 0;\n counts[str] += 1;\n }); // sort by freq\n\n doc.list.sort((a, b) => {\n let left = counts[a.text(options)];\n let right = counts[b.text(options)];\n\n if (left < right) {\n return 1;\n }\n\n if (left > right) {\n return -1;\n }\n\n return 0;\n });\n return doc;\n }; // order results 'chronologically', or document-order\n\n\n const sortSequential = function (doc) {\n let order = {};\n doc.json({\n terms: {\n offset: true\n }\n }).forEach(o => {\n order[o.terms[0].id] = o.terms[0].offset.start;\n });\n doc.list = doc.list.sort((a, b) => {\n if (order[a.start] > order[b.start]) {\n return 1;\n } else if (order[a.start] < order[b.start]) {\n return -1;\n }\n\n return 0;\n });\n return doc;\n }; //aliases\n\n\n methods$9.alphabetical = methods$9.alpha;\n methods$9.wordcount = methods$9.wordCount; // aliases for sequential ordering\n\n const seqNames = {\n index: true,\n sequence: true,\n seq: true,\n sequential: true,\n chron: true,\n chronological: true\n };\n /** re-arrange the order of the matches (in place) */\n\n _01Sort.sort = function (input) {\n input = input || 'alpha'; //do this one up-front\n\n if (input === 'freq' || input === 'frequency' || input === 'topk') {\n return byFreq(this);\n }\n\n if (seqNames.hasOwnProperty(input)) {\n return sortSequential(this);\n }\n\n input = methods$9[input] || input; // apply sort method on each phrase\n\n if (typeof input === 'function') {\n this.list = this.list.sort(input);\n return this;\n }\n\n return this;\n };\n /** reverse the order of the matches, but not the words */\n\n\n _01Sort.reverse = function () {\n let list = [].concat(this.list);\n list = list.reverse();\n return this.buildFrom(list);\n };\n /** remove any duplicate matches */\n\n\n _01Sort.unique = function () {\n let list = [].concat(this.list);\n let obj = {};\n list = list.filter(p => {\n let str = p.text('reduced').trim() || p.text('implicit').trim();\n\n if (obj.hasOwnProperty(str) === true) {\n return false;\n }\n\n obj[str] = true;\n return true;\n });\n return this.buildFrom(list);\n };\n\n var _02Normalize = {};\n\n const killUnicode = unicode_1;\n const isPunct = /[\\[\\]{}⟨⟩:,،、‒–—―…‹›«»‐\\-;\\/⁄·*\\•^†‡°¡¿※№÷׺ª%‰=‱¶§~|‖¦©℗®℠™¤₳฿]/g;\n const quotes = /['‘’“”\"′″‴]+/g;\n const methods$8 = {\n // cleanup newlines and extra spaces\n whitespace: function (doc) {\n let termArr = doc.list.map(ts => ts.terms());\n termArr.forEach((terms, o) => {\n terms.forEach((t, i) => {\n // keep dashes between words\n if (t.hasDash() === true) {\n t.post = ' - ';\n return;\n } // remove existing spaces\n\n\n t.pre = t.pre.replace(/\\s/g, '');\n t.post = t.post.replace(/\\s/g, ''); //last word? ensure there's a next sentence.\n\n if (terms.length - 1 === i && !termArr[o + 1]) {\n return;\n } // no extra spaces for contractions\n\n\n if (t.implicit && Boolean(t.text) === true) {\n return;\n } // no extra spaces for hyphenated words\n\n\n if (t.hasHyphen() === true) {\n return;\n }\n\n t.post += ' ';\n });\n });\n },\n punctuation: function (termList) {\n termList.forEach(t => {\n // space between hyphenated words\n if (t.hasHyphen() === true) {\n t.post = ' ';\n }\n\n t.pre = t.pre.replace(isPunct, '');\n t.post = t.post.replace(isPunct, ''); // elipses\n\n t.post = t.post.replace(/\\.\\.\\./, ''); // only allow one exclamation\n\n if (/!/.test(t.post) === true) {\n t.post = t.post.replace(/!/g, '');\n t.post = '!' + t.post;\n } // only allow one question mark\n\n\n if (/\\?/.test(t.post) === true) {\n t.post = t.post.replace(/[\\?!]*/, '');\n t.post = '?' + t.post;\n }\n });\n },\n unicode: function (termList) {\n termList.forEach(t => {\n if (t.isImplicit() === true) {\n return;\n }\n\n t.text = killUnicode(t.text);\n });\n },\n quotations: function (termList) {\n termList.forEach(t => {\n t.post = t.post.replace(quotes, '');\n t.pre = t.pre.replace(quotes, '');\n });\n },\n adverbs: function (doc) {\n doc.match('#Adverb').not('(not|nary|seldom|never|barely|almost|basically|so)').remove();\n },\n // remove the '.' from 'Mrs.' (safely)\n abbreviations: function (doc) {\n doc.list.forEach(ts => {\n let terms = ts.terms();\n terms.forEach((t, i) => {\n if (t.tags.Abbreviation === true && terms[i + 1]) {\n t.post = t.post.replace(/^\\./, '');\n }\n });\n });\n }\n };\n var _methods = methods$8;\n\n const methods$7 = _methods;\n const defaults = {\n // light\n whitespace: true,\n unicode: true,\n punctuation: true,\n emoji: true,\n acronyms: true,\n abbreviations: true,\n // medium\n case: false,\n contractions: false,\n parentheses: false,\n quotations: false,\n adverbs: false,\n // heavy (loose legibility)\n possessives: false,\n verbs: false,\n nouns: false,\n honorifics: false // pronouns: true,\n\n };\n const mapping = {\n light: {},\n medium: {\n case: true,\n contractions: true,\n parentheses: true,\n quotations: true,\n adverbs: true\n }\n };\n mapping.heavy = Object.assign({}, mapping.medium, {\n possessives: true,\n verbs: true,\n nouns: true,\n honorifics: true\n });\n /** common ways to clean-up the document, and reduce noise */\n\n _02Normalize.normalize = function (options) {\n options = options || {}; // support named forms\n\n if (typeof options === 'string') {\n options = mapping[options] || {};\n } // set defaults\n\n\n options = Object.assign({}, defaults, options); // clear the cache\n\n this.uncache();\n let termList = this.termList(); // lowercase things\n\n if (options.case) {\n this.toLowerCase();\n } //whitespace\n\n\n if (options.whitespace) {\n methods$7.whitespace(this);\n } // unicode: é -> e\n\n\n if (options.unicode) {\n methods$7.unicode(termList);\n } //punctuation - keep sentence punctation, quotes, parenths\n\n\n if (options.punctuation) {\n methods$7.punctuation(termList);\n } // remove ':)'\n\n\n if (options.emoji) {\n this.remove('(#Emoji|#Emoticon)');\n } // 'f.b.i.' -> 'FBI'\n\n\n if (options.acronyms) {\n this.acronyms().strip(); // .toUpperCase()\n } // remove period from abbreviations\n\n\n if (options.abbreviations) {\n methods$7.abbreviations(this);\n } // --Medium methods--\n // `isn't` -> 'is not'\n\n\n if (options.contraction || options.contractions) {\n this.contractions().expand();\n } // '(word)' -> 'word'\n\n\n if (options.parentheses) {\n this.parentheses().unwrap();\n } // remove \"\" punctuation\n\n\n if (options.quotations || options.quotes) {\n methods$7.quotations(termList);\n } // remove any un-necessary adverbs\n\n\n if (options.adverbs) {\n methods$7.adverbs(this);\n } // --Heavy methods--\n // `cory hart's -> cory hart'\n\n\n if (options.possessive || options.possessives) {\n this.possessives().strip();\n } // 'he walked' -> 'he walk'\n\n\n if (options.verbs) {\n this.verbs().toInfinitive();\n } // 'three dogs' -> 'three dog'\n\n\n if (options.nouns || options.plurals) {\n this.nouns().toSingular();\n } // remove 'Mr.' from 'Mr John Smith'\n\n\n if (options.honorifics) {\n this.remove('#Honorific');\n }\n\n return this;\n };\n\n var _03Split = {};\n\n (function (exports) {\n const parseSyntax = matchSyntax;\n /** return a Document with three parts for every match\n * seperate everything before the word, as a new phrase\n */\n\n exports.splitOn = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n let parent = this.parent();\n return parent.splitOn(this);\n } //start looking for a match..\n\n\n let regs = parseSyntax(reg);\n let matches = [];\n this.list.forEach(p => {\n let foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n let carry = p;\n foundEm.forEach(found => {\n let parts = carry.splitOn(found); // add em in\n\n if (parts.before) {\n matches.push(parts.before);\n }\n\n if (parts.match) {\n matches.push(parts.match);\n } // start matching now on the end\n\n\n carry = parts.after;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n /** return a Document with two parts for every match\n * seperate everything after the word, as a new phrase\n */\n\n\n exports.splitAfter = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n let parent = this.parent();\n return parent.splitAfter(this);\n } // start looking for our matches\n\n\n let regs = parseSyntax(reg);\n let matches = [];\n this.list.forEach(p => {\n let foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n let carry = p;\n foundEm.forEach(found => {\n let parts = carry.splitOn(found); // add em in\n\n if (parts.before && parts.match) {\n // merge these two together\n parts.before.length += parts.match.length;\n matches.push(parts.before);\n } else if (parts.match) {\n matches.push(parts.match);\n } // start matching now on the end\n\n\n carry = parts.after;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n\n exports.split = exports.splitAfter; //i guess?\n\n /** return a Document with two parts for every match */\n\n exports.splitBefore = function (reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n let parent = this.parent();\n return parent.splitBefore(this);\n } //start looking for a match..\n\n\n let regs = parseSyntax(reg);\n let matches = [];\n this.list.forEach(p => {\n let foundEm = p.match(regs); //no match here, add full sentence\n\n if (foundEm.length === 0) {\n matches.push(p);\n return;\n } // we found something here.\n\n\n let carry = p;\n foundEm.forEach(found => {\n let parts = carry.splitOn(found); // add before part in\n\n if (parts.before) {\n matches.push(parts.before);\n } // merge match+after\n\n\n if (parts.match && parts.after) {\n parts.match.length += parts.after.length;\n } // start matching now on the end\n\n\n carry = parts.match;\n }); // add that last part\n\n if (carry) {\n matches.push(carry);\n }\n });\n return this.buildFrom(matches);\n };\n /** split a document into labeled sections */\n\n\n exports.segment = function (regs, options) {\n regs = regs || {};\n options = options || {\n text: true\n };\n let doc = this;\n let keys = Object.keys(regs); // split em\n\n keys.forEach(k => {\n doc = doc.splitOn(k);\n }); //add labels for each section\n\n doc.list.forEach(p => {\n for (let i = 0; i < keys.length; i += 1) {\n if (p.has(keys[i])) {\n p.segment = regs[keys[i]];\n return;\n }\n }\n });\n return doc.list.map(p => {\n let res = p.json(options);\n res.segment = p.segment || null;\n return res;\n });\n };\n })(_03Split);\n\n var _04Case = {};\n\n const eachTerm = function (doc, fn) {\n let world = doc.world;\n doc.list.forEach(p => {\n p.terms().forEach(t => t[fn](world));\n });\n return doc;\n };\n /** turn every letter of every term to lower-cse */\n\n\n _04Case.toLowerCase = function () {\n return eachTerm(this, 'toLowerCase');\n };\n /** turn every letter of every term to upper case */\n\n\n _04Case.toUpperCase = function () {\n return eachTerm(this, 'toUpperCase');\n };\n /** upper-case the first letter of each term */\n\n\n _04Case.toTitleCase = function () {\n return eachTerm(this, 'toTitleCase');\n };\n /** remove whitespace and title-case each term */\n\n\n _04Case.toCamelCase = function () {\n this.list.forEach(p => {\n //remove whitespace\n let terms = p.terms();\n terms.forEach((t, i) => {\n if (i !== 0) {\n t.toTitleCase();\n }\n\n if (i !== terms.length - 1) {\n t.post = '';\n }\n });\n }); // this.tag('#CamelCase', 'toCamelCase')\n\n return this;\n };\n\n var _05Whitespace = {};\n\n /** add this punctuation or whitespace before each match: */\n\n (function (exports) {\n exports.pre = function (str, concat) {\n if (str === undefined) {\n return this.list[0].terms(0).pre;\n }\n\n this.list.forEach(p => {\n let term = p.terms(0);\n\n if (concat === true) {\n term.pre += str;\n } else {\n term.pre = str;\n }\n });\n return this;\n };\n /** add this punctuation or whitespace after each match: */\n\n\n exports.post = function (str, concat) {\n // return array of post strings\n if (str === undefined) {\n return this.list.map(p => {\n let terms = p.terms();\n let term = terms[terms.length - 1];\n return term.post;\n });\n } // set post string on all ends\n\n\n this.list.forEach(p => {\n let terms = p.terms();\n let term = terms[terms.length - 1];\n\n if (concat === true) {\n term.post += str;\n } else {\n term.post = str;\n }\n });\n return this;\n };\n /** remove start and end whitespace */\n\n\n exports.trim = function () {\n this.list = this.list.map(p => p.trim());\n return this;\n };\n /** connect words with hyphen, and remove whitespace */\n\n\n exports.hyphenate = function () {\n this.list.forEach(p => {\n let terms = p.terms(); //remove whitespace\n\n terms.forEach((t, i) => {\n if (i !== 0) {\n t.pre = '';\n }\n\n if (terms[i + 1]) {\n t.post = '-';\n }\n });\n });\n return this;\n };\n /** remove hyphens between words, and set whitespace */\n\n\n exports.dehyphenate = function () {\n const hasHyphen = /(-|–|—)/;\n this.list.forEach(p => {\n let terms = p.terms(); //remove whitespace\n\n terms.forEach(t => {\n if (hasHyphen.test(t.post)) {\n t.post = ' ';\n }\n });\n });\n return this;\n };\n\n exports.deHyphenate = exports.dehyphenate;\n /** add quotations around these matches */\n\n exports.toQuotations = function (start, end) {\n start = start || `\"`;\n end = end || `\"`;\n this.list.forEach(p => {\n let terms = p.terms();\n terms[0].pre = start + terms[0].pre;\n let last = terms[terms.length - 1];\n last.post = end + last.post;\n });\n return this;\n };\n\n exports.toQuotation = exports.toQuotations;\n /** add brackets around these matches */\n\n exports.toParentheses = function (start, end) {\n start = start || `(`;\n end = end || `)`;\n this.list.forEach(p => {\n let terms = p.terms();\n terms[0].pre = start + terms[0].pre;\n let last = terms[terms.length - 1];\n last.post = end + last.post;\n });\n return this;\n };\n })(_05Whitespace);\n\n var _06Join = {};\n\n /** make all phrases into one phrase */\n\n _06Join.join = function (str) {\n // clear the cache\n this.uncache(); // make one large phrase - 'main'\n\n let main = this.list[0];\n let before = main.length;\n let removed = {};\n\n for (let i = 1; i < this.list.length; i++) {\n const p = this.list[i];\n removed[p.start] = true;\n let term = main.lastTerm(); // add whitespace between them\n\n if (str) {\n term.post += str;\n } // main -> p\n\n\n term.next = p.start; // main <- p\n\n p.terms(0).prev = term.id;\n main.length += p.length;\n main.cache = {};\n } // parents are bigger than than their children.\n // when we increase a child, we increase their parent too.\n\n\n let increase = main.length - before;\n this.parents().forEach(doc => {\n // increase length on each effected phrase\n doc.list.forEach(p => {\n let terms = p.terms();\n\n for (let i = 0; i < terms.length; i++) {\n if (terms[i].id === main.start) {\n p.length += increase;\n break;\n }\n }\n\n p.cache = {};\n }); // remove redundant phrases now\n\n doc.list = doc.list.filter(p => removed[p.start] !== true);\n }); // return one major phrase\n\n return this.buildFrom([main]);\n };\n\n var _07Contract = {};\n\n const postPunct = /[,\\)\"';:\\-–—\\.…]/; // const irregulars = {\n // 'will not': `won't`,\n // 'i am': `i'm`,\n // }\n\n const setContraction = function (m, suffix) {\n if (!m.found) {\n return;\n }\n\n let terms = m.termList(); //avoid any problematic punctuation\n\n for (let i = 0; i < terms.length - 1; i++) {\n const t = terms[i];\n\n if (postPunct.test(t.post)) {\n return;\n }\n } // set them as implict\n\n\n terms.forEach(t => {\n t.implicit = t.clean;\n }); // perform the contraction\n\n terms[0].text += suffix; // clean-up the others\n\n terms.slice(1).forEach(t => {\n t.text = '';\n });\n\n for (let i = 0; i < terms.length - 1; i++) {\n const t = terms[i];\n t.post = t.post.replace(/ /, '');\n }\n };\n /** turn 'i am' into i'm */\n\n\n _07Contract.contract = function () {\n let doc = this.not('@hasContraction'); // we are -> we're\n\n let m = doc.match('(we|they|you) are');\n setContraction(m, `'re`); // they will -> they'll\n\n m = doc.match('(he|she|they|it|we|you) will');\n setContraction(m, `'ll`); // she is -> she's\n\n m = doc.match('(he|she|they|it|we) is');\n setContraction(m, `'s`); // spencer is -> spencer's\n\n m = doc.match('#Person is');\n setContraction(m, `'s`); // spencer would -> spencer'd\n\n m = doc.match('#Person would');\n setContraction(m, `'d`); // would not -> wouldn't\n\n m = doc.match('(is|was|had|would|should|could|do|does|have|has|can) not');\n setContraction(m, `n't`); // i have -> i've\n\n m = doc.match('(i|we|they) have');\n setContraction(m, `'ve`); // would have -> would've\n\n m = doc.match('(would|should|could) have');\n setContraction(m, `'ve`); // i am -> i'm\n\n m = doc.match('i am');\n setContraction(m, `'m`); // going to -> gonna\n\n m = doc.match('going to');\n return this;\n };\n\n var methods$6 = Object.assign({}, _01Utils, _02Accessors, _03Match, _04Tag, _05Loops, _06Lookup, _07Cache, _01Replace, _02Insert, _01Text, _02Json, _03Out, _01Sort, _02Normalize, _03Split, _04Case, _05Whitespace, _06Join, _07Contract);\n\n let methods$5 = {}; // allow helper methods like .adjectives() and .adverbs()\n\n const arr = [['terms', '.'], ['hyphenated', '@hasHyphen .'], ['adjectives', '#Adjective'], ['hashTags', '#HashTag'], ['emails', '#Email'], ['emoji', '#Emoji'], ['emoticons', '#Emoticon'], ['atMentions', '#AtMention'], ['urls', '#Url'], ['adverbs', '#Adverb'], ['pronouns', '#Pronoun'], ['conjunctions', '#Conjunction'], ['prepositions', '#Preposition']];\n arr.forEach(a => {\n methods$5[a[0]] = function (n) {\n let m = this.match(a[1]);\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n };\n }); // aliases\n\n methods$5.emojis = methods$5.emoji;\n methods$5.atmentions = methods$5.atMentions;\n methods$5.words = methods$5.terms;\n /** return anything tagged as a phone number */\n\n methods$5.phoneNumbers = function (n) {\n let m = this.splitAfter('@hasComma');\n m = m.match('#PhoneNumber+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n };\n /** Deprecated: please use compromise-numbers plugin */\n\n\n methods$5.money = function (n) {\n let m = this.match('#Money #Currency?');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n };\n /** return all cities, countries, addresses, and regions */\n\n\n methods$5.places = function (n) {\n // don't split 'paris, france'\n let keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas\n\n let m = this.not(keep).splitAfter('@hasComma'); // combine them back together\n\n m = m.concat(keep);\n m.sort('index');\n m = m.match('#Place+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n };\n /** return all schools, businesses and institutions */\n\n\n methods$5.organizations = function (n) {\n let m = this.clauses();\n m = m.match('#Organization+');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return m;\n }; //combine them with .topics() method\n\n\n methods$5.entities = function (n) {\n let r = this.clauses(); // Find people, places, and organizations\n\n let yup = r.people();\n yup = yup.concat(r.places());\n yup = yup.concat(r.organizations());\n let ignore = ['someone', 'man', 'woman', 'mother', 'brother', 'sister', 'father'];\n yup = yup.not(ignore); //return them to normal ordering\n\n yup.sort('sequence'); // yup.unique() //? not sure\n\n if (typeof n === 'number') {\n yup = yup.get(n);\n }\n\n return yup;\n }; //aliases\n\n\n methods$5.things = methods$5.entities;\n methods$5.topics = methods$5.entities;\n var _simple = methods$5;\n\n const underOver = /^(under|over)-?.{3}/;\n /** match a word-sequence, like 'super bowl' in the lexicon */\n\n const tryMultiple = function (terms, t, world) {\n let lex = world.words; //try a two-word version\n\n let txt = terms[t].reduced + ' ' + terms[t + 1].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-two', world);\n terms[t + 1].tag(lex[txt], 'lexicon-two', world);\n return 1;\n } //try a three-word version?\n\n\n if (t + 2 < terms.length) {\n txt += ' ' + terms[t + 2].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-three', world);\n terms[t + 1].tag(lex[txt], 'lexicon-three', world);\n terms[t + 2].tag(lex[txt], 'lexicon-three', world);\n return 2;\n }\n } //try a four-word version?\n\n\n if (t + 3 < terms.length) {\n txt += ' ' + terms[t + 3].reduced;\n\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-four', world);\n terms[t + 1].tag(lex[txt], 'lexicon-four', world);\n terms[t + 2].tag(lex[txt], 'lexicon-four', world);\n terms[t + 3].tag(lex[txt], 'lexicon-four', world);\n return 3;\n }\n }\n\n return 0;\n };\n /** look at each word in our list of known-words */\n\n\n const checkLexicon$1 = function (terms, world) {\n let lex = world.words;\n let hasCompound = world.hasCompound; // use reduced?\n //go through each term, and check the lexicon\n\n for (let t = 0; t < terms.length; t += 1) {\n let str = terms[t].clean; //is it the start of a compound word, like 'super bowl'?\n\n if (hasCompound[str] === true && t + 1 < terms.length) {\n let foundWords = tryMultiple(terms, t, world);\n\n if (foundWords > 0) {\n t += foundWords; //skip any already-found words\n\n continue;\n }\n } //try one-word lexicon\n\n\n if (lex[str] !== undefined && lex.hasOwnProperty(str) === true) {\n terms[t].tag(lex[str], 'lexicon', world);\n continue;\n } // look at reduced version of term, too\n\n\n if (str !== terms[t].reduced && lex.hasOwnProperty(terms[t].reduced) === true) {\n terms[t].tag(lex[terms[t].reduced], 'lexicon', world);\n continue;\n } // prefix strip: try to match 'take' for 'undertake'\n\n\n if (underOver.test(str) === true) {\n let noPrefix = str.replace(/^(under|over)-?/, '');\n\n if (lex.hasOwnProperty(noPrefix) === true) {\n terms[t].tag(lex[noPrefix], 'noprefix-lexicon', world);\n }\n }\n }\n\n return terms;\n };\n\n var _01Lexicon = checkLexicon$1;\n\n const apostrophes = /[\\'‘’‛‵′`´]$/;\n const perSec = /^(m|k|cm|km|m)\\/(s|h|hr)$/; // '5 k/m'\n //\n\n const checkPunctuation = function (terms, i, world) {\n let term = terms[i]; //check hyphenation\n // if (term.post.indexOf('-') !== -1 && terms[i + 1] && terms[i + 1].pre === '') {\n // term.tag('Hyphenated', 'has-hyphen', world)\n // }\n // support 'head-over'\n // if (term.hasHyphen() === true) {\n // console.log(term.tags)\n // }\n // console.log(term.hasHyphen(), term.text)\n //an end-tick (trailing apostrophe) - flanders', or Carlos'\n\n if (apostrophes.test(term.text)) {\n if (!apostrophes.test(term.pre) && !apostrophes.test(term.post) && term.clean.length > 2) {\n let endChar = term.clean[term.clean.length - 2]; //flanders'\n\n if (endChar === 's') {\n term.tag(['Possessive', 'Noun'], 'end-tick', world);\n return;\n } //chillin'\n\n\n if (endChar === 'n') {\n term.tag(['Gerund'], 'chillin', world);\n }\n }\n } // '5 km/s'\n\n\n if (perSec.test(term.text)) {\n term.tag('Unit', 'per-sec', world);\n } // 'NASA' is, but not 'i REALLY love it.'\n // if (term.tags.Noun === true && isAcronym(term, world)) {\n // term.tag('Acronym', 'acronym-step', world)\n // term.tag('Noun', 'acronym-infer', world)\n // } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) {\n // term.tag('Acronym', 'one-letter-acronym', world)\n // term.tag('Noun', 'one-letter-infer', world)\n // }\n\n };\n\n var _02Punctuation = checkPunctuation;\n\n // order matters.\n\n var startsWith = [//web tags\n [/^[\\w\\.]+@[\\w\\.]+\\.[a-z]{2,3}$/, 'Email'], //not fancy\n [/^#[a-z0-9_\\u00C0-\\u00FF]{2,}$/, 'HashTag'], [/^@1?[0-9](am|pm)$/i, 'Time'], // @6pm\n [/^@1?[0-9]:[0-9]{2}(am|pm)?$/i, 'Time'], // @6:30\n [/^@\\w{2,}$/, 'AtMention'], //@spencermountain\n [/^(https?:\\/\\/|www\\.)+\\w+\\.[a-z]{2,3}/, 'Url'], //with http/www\n [/^[a-z0-9./].+\\.(com|net|gov|org|ly|edu|info|biz|dev|ru|jp|de|in|uk|br|io|ai)/, 'Url'], //http://mostpopularwebsites.net/top-level-domain or Check for domains like .io/.ai/.dev\n //dates/times\n [/^'[0-9]{2}$/, 'Year'], //like '97\n [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/, 'Time'], //4:32:32\n [/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i, 'Time'], //4pm\n [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i, 'Time'], //4:00pm\n [/^[PMCE]ST$/, 'Time'], //PST, time zone abbrevs\n [/^utc ?[+-]?[0-9]+?$/, 'Time'], //UTC 8+\n [/^[a-z0-9]*? o\\'?clock$/, 'Time'], //3 oclock\n [/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i, 'Date'], // 2020-03-02T00:00:00.000Z\n [/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/, 'Date'], // 03-02-89\n [/^[0-9]{1,4}\\/[0-9]{1,2}\\/[0-9]{1,4}$/, 'Date'], // 03/02/89\n [/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i, 'Date'], // 03-March-89\n [/^gmt[+-][0-9][0-9]?$/i, 'Timezone'], // gmt-3\n [/^utc[+-][0-9][0-9]?$/i, 'Timezone'], // utc-3\n //names\n [/^ma?c\\'.*/, 'LastName'], //mc'adams\n [/^o\\'[drlkn].*/, 'LastName'], //o'douggan\n [/^ma?cd[aeiou]/, 'LastName'], //macdonell - Last patterns https://en.wikipedia.org/wiki/List_of_family_name_affixes\n //slang things\n [/^(lol)+[sz]$/, 'Expression'], //lol\n [/^woo+a*?h?$/, 'Expression'], //whoaa, wooo\n [/^(un|de|re)\\\\-[a-z\\u00C0-\\u00FF]{2}/, 'Verb'], // [/^(over|under)[a-z]{2,}/, 'Adjective'],\n [/^[0-9]{1,4}\\.[0-9]{1,2}\\.[0-9]{1,4}$/, 'Date'], // 03-02-89\n //phone numbers\n [/^[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //589-3809\n [/^(\\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //632-589-3809\n //money\n // currency regex\n // /[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6]\n //like $5.30\n [/^[-+]?[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(k|m|b|bn)?\\+?$/, ['Money', 'Value']], //like 5.30$\n [/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6]\\+?$/, ['Money', 'Value']], //like $400usd\n [/^[-+]?[\\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value']], //numbers\n // 50 | -50 | 3.23 | 5,999.0 | 10+\n [/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\+?$/, ['Cardinal', 'NumericValue']], [/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(st|nd|rd|r?th)$/, ['Ordinal', 'NumericValue']], // .73th\n [/^\\.[0-9]+\\+?$/, ['Cardinal', 'NumericValue']], //percent\n [/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?%\\+?$/, ['Percent', 'Cardinal', 'NumericValue']], //7% ..\n [/^\\.[0-9]+%$/, ['Percent', 'Cardinal', 'NumericValue']], //.7% ..\n //fraction\n [/^[0-9]{1,4}\\/[0-9]{1,4}(st|nd|rd|th)?s?$/, ['Fraction', 'NumericValue']], //3/2ths\n //range\n [/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/, ['Value', 'NumberRange']], //7th-8th\n //time-range\n [/^[0-9][0-9]?(:[0-9][0-9])?(am|pm)? ?[-–—] ?[0-9][0-9]?(:[0-9][0-9])?(am|pm)?$/, ['Time', 'NumberRange']], //7pm-8:30\n //with unit\n [/^[0-9.]+([a-z]{1,4})$/, 'Value'] //like 5tbsp\n //ordinal\n // [/^[0-9][0-9,.]*(st|nd|rd|r?th)$/, ['NumericValue', 'Ordinal']], //like 5th\n // [/^[0-9]+(st|nd|rd|th)$/, 'Ordinal'], //like 5th\n ];\n\n const regex = startsWith;\n const romanNumeral = /^[IVXLCDM]{2,}$/;\n const romanNumValid = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/; // https://stackoverflow.com/a/267405/168877\n //try each of the ^regexes in our list\n\n const checkRegex$1 = function (term, world) {\n let str = term.text; // do them all!\n\n for (let r = 0; r < regex.length; r += 1) {\n if (regex[r][0].test(str) === true) {\n term.tagSafe(regex[r][1], 'prefix #' + r, world);\n break;\n }\n } // do some more!\n //roman numberals - XVII\n\n\n if (term.text.length >= 2 && romanNumeral.test(str) && romanNumValid.test(str)) {\n term.tag('RomanNumeral', 'xvii', world);\n }\n };\n\n var _03Prefixes = checkRegex$1;\n\n //built using wordnet, by spencer kelly.\n //this mapping shrinks-down the uglified build\n\n const Adj$1 = 'Adjective';\n const Inf$1 = 'Infinitive';\n const Pres$1 = 'PresentTense';\n const Sing$1 = 'Singular';\n const Past$1 = 'PastTense';\n const Adverb = 'Adverb';\n const Exp = 'Expression';\n const Actor$1 = 'Actor';\n const Verb = 'Verb';\n const Noun$1 = 'Noun';\n const Last$1 = 'LastName'; //the order here matters.\n //regexes indexed by mandated last-character\n\n var endsWith$1 = {\n a: [[/.[aeiou]na$/, Noun$1], [/.[oau][wvl]ska$/, Last$1], //polish (female)\n [/.[^aeiou]ica$/, Sing$1], [/^([hyj]a)+$/, Exp] //hahah\n ],\n c: [[/.[^aeiou]ic$/, Adj$1]],\n d: [//==-ed==\n //double-consonant\n [/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/, Past$1], //popped, planned\n //double-vowel\n [/.[aeo]{2}[bdgmnprvz]ed$/, Past$1], //beeped, mooned, veered\n //-hed\n [/.[aeiou][sg]hed$/, Past$1], //stashed, sighed\n //-rd\n [/.[aeiou]red$/, Past$1], //stored\n [/.[aeiou]r?ried$/, Past$1], //buried\n //-led\n [/.[bcdgtr]led$/, Past$1], //startled, rumbled\n [/.[aoui]f?led$/, Past$1], //impaled, stifled\n //-sed\n [/.[iao]sed$/, Past$1], //franchised\n [/[aeiou]n?[cs]ed$/, Past$1], //laced, lanced\n //-med\n [/[aeiou][rl]?[mnf]ed$/, Past$1], //warmed, attained, engulfed\n //-ked\n [/[aeiou][ns]?c?ked$/, Past$1], //hooked, masked\n //-ged\n [/[aeiou][nl]?ged$/, Past$1], //engaged\n //-ted\n [/.[tdbwxz]ed$/, Past$1], //bribed, boxed\n [/[^aeiou][aeiou][tvx]ed$/, Past$1], //boxed\n //-ied\n [/.[cdlmnprstv]ied$/, Past$1], //rallied\n [/[^aeiou]ard$/, Sing$1], //card\n [/[aeiou][^aeiou]id$/, Adj$1], [/.[vrl]id$/, Adj$1]],\n e: [[/.[lnr]ize$/, Inf$1], [/.[^aeiou]ise$/, Inf$1], [/.[aeiou]te$/, Inf$1], [/.[^aeiou][ai]ble$/, Adj$1], [/.[^aeiou]eable$/, Adj$1], [/.[ts]ive$/, Adj$1], [/[a-z]-like$/, Adj$1]],\n h: [[/.[^aeiouf]ish$/, Adj$1], [/.v[iy]ch$/, Last$1], //east-europe\n [/^ug?h+$/, Exp], //uhh\n [/^uh[ -]?oh$/, Exp], //uhoh\n [/[a-z]-ish$/, Adj$1] //cartoon-ish\n ],\n i: [[/.[oau][wvl]ski$/, Last$1] //polish (male)\n ],\n k: [[/^(k){2}$/, Exp] //kkkk\n ],\n l: [[/.[gl]ial$/, Adj$1], [/.[^aeiou]ful$/, Adj$1], [/.[nrtumcd]al$/, Adj$1], [/.[^aeiou][ei]al$/, Adj$1]],\n m: [[/.[^aeiou]ium$/, Sing$1], [/[^aeiou]ism$/, Sing$1], [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm\n [/^\\d+ ?[ap]m$/, 'Date']],\n n: [[/.[lsrnpb]ian$/, Adj$1], [/[^aeiou]ician$/, Actor$1], [/[aeiou][ktrp]in$/, 'Gerund'] // 'cookin', 'hootin'\n ],\n o: [[/^no+$/, Exp], //noooo\n [/^(yo)+$/, Exp], //yoyo\n [/^woo+[pt]?$/, Exp] //woo\n ],\n r: [[/.[bdfklmst]ler$/, 'Noun'], [/[aeiou][pns]er$/, Sing$1], [/[^i]fer$/, Inf$1], [/.[^aeiou][ao]pher$/, Actor$1], [/.[lk]er$/, 'Noun'], [/.ier$/, 'Comparative']],\n t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj$1], [/[aeiou].*ist$/, Adj$1], [/^[a-z]et$/, Verb]],\n s: [[/.[^aeiou]ises$/, Pres$1], [/.[rln]ates$/, Pres$1], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing$1], [/.[aeiou]sks$/, Pres$1], //masks\n [/.[aeiou]kes$/, Pres$1], //bakes\n [/[aeiou][^aeiou]is$/, Sing$1], [/[a-z]\\'s$/, Noun$1], [/^yes+$/, Exp] //yessss\n ],\n v: [[/.[^aeiou][ai][kln]ov$/, Last$1] //east-europe\n ],\n y: [[/.[cts]hy$/, Adj$1], [/.[st]ty$/, Adj$1], [/.[gk]y$/, Adj$1], [/.[tnl]ary$/, Adj$1], [/.[oe]ry$/, Sing$1], [/[rdntkbhs]ly$/, Adverb], [/...lly$/, Adverb], [/[bszmp]{2}y$/, Adj$1], [/.(gg|bb|zz)ly$/, Adj$1], [/.[ai]my$/, Adj$1], [/[ea]{2}zy$/, Adj$1], [/.[^aeiou]ity$/, Sing$1]]\n };\n\n const Adj = 'Adjective';\n const Inf = 'Infinitive';\n const Pres = 'PresentTense';\n const Sing = 'Singular';\n const Past = 'PastTense';\n const Avb = 'Adverb';\n const Plrl = 'Plural';\n const Actor = 'Actor';\n const Vb = 'Verb';\n const Noun = 'Noun';\n const Last = 'LastName';\n const Modal = 'Modal';\n const Place = 'Place'; // find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup\n\n var suffixMap$1 = [null, //0\n null, //1\n {\n //2-letter\n ea: Sing,\n ia: Noun,\n ic: Adj,\n ly: Avb,\n \"'n\": Vb,\n \"'t\": Vb\n }, {\n //3-letter\n oed: Past,\n ued: Past,\n xed: Past,\n ' so': Avb,\n \"'ll\": Modal,\n \"'re\": 'Copula',\n azy: Adj,\n eer: Noun,\n end: Vb,\n ped: Past,\n ffy: Adj,\n ify: Inf,\n ing: 'Gerund',\n //likely to be converted to Adj after lexicon pass\n ize: Inf,\n lar: Adj,\n mum: Adj,\n nes: Pres,\n nny: Adj,\n oid: Adj,\n ous: Adj,\n que: Adj,\n rol: Sing,\n sis: Sing,\n zes: Pres\n }, {\n //4-letter\n amed: Past,\n aped: Past,\n ched: Past,\n lked: Past,\n nded: Past,\n cted: Past,\n dged: Past,\n akis: Last,\n //greek\n cede: Inf,\n chuk: Last,\n //east-europe\n czyk: Last,\n //polish (male)\n ects: Pres,\n ends: Vb,\n enko: Last,\n //east-europe\n ette: Sing,\n fies: Pres,\n fore: Avb,\n gate: Inf,\n gone: Adj,\n ices: Plrl,\n ints: Plrl,\n ines: Plrl,\n ions: Plrl,\n less: Avb,\n llen: Adj,\n made: Adj,\n nsen: Last,\n //norway\n oses: Pres,\n ould: Modal,\n some: Adj,\n sson: Last,\n //swedish male\n tage: Inf,\n teen: 'Value',\n tion: Sing,\n tive: Adj,\n tors: Noun,\n vice: Sing\n }, {\n //5-letter\n tized: Past,\n urned: Past,\n eased: Past,\n ances: Plrl,\n bound: Adj,\n ettes: Plrl,\n fully: Avb,\n ishes: Pres,\n ities: Plrl,\n marek: Last,\n //polish (male)\n nssen: Last,\n //norway\n ology: Noun,\n ports: Plrl,\n rough: Adj,\n tches: Pres,\n tieth: 'Ordinal',\n tures: Plrl,\n wards: Avb,\n where: Avb\n }, {\n //6-letter\n auskas: Last,\n //lithuania\n keeper: Actor,\n logist: Actor,\n teenth: 'Value'\n }, {\n //7-letter\n opoulos: Last,\n //greek\n borough: Place,\n //Hillsborough\n sdottir: Last //swedish female\n\n }];\n\n const endsWith = endsWith$1;\n const suffixMap = suffixMap$1;\n\n const endRegexs = function (term, world) {\n let str = term.clean;\n let char = str[str.length - 1];\n\n if (endsWith.hasOwnProperty(char) === true) {\n let regs = endsWith[char];\n\n for (let r = 0; r < regs.length; r += 1) {\n if (regs[r][0].test(str) === true) {\n term.tagSafe(regs[r][1], `endReg ${char} #${r}`, world);\n break;\n }\n }\n }\n }; //sweep-through all suffixes\n\n\n const knownSuffixes = function (term, world) {\n const len = term.clean.length;\n let max = 7;\n\n if (len <= max) {\n max = len - 1;\n }\n\n for (let i = max; i > 1; i -= 1) {\n let str = term.clean.substr(len - i, len);\n\n if (suffixMap[str.length].hasOwnProperty(str) === true) {\n let tag = suffixMap[str.length][str];\n term.tagSafe(tag, 'suffix -' + str, world);\n break;\n }\n }\n }; //all-the-way-down!\n\n\n const checkRegex = function (term, world) {\n knownSuffixes(term, world);\n endRegexs(term, world);\n };\n\n var _04Suffixes = checkRegex;\n\n //faster than\n //http://stackoverflow.com/questions/28077049/regex-matching-emoticons\n\n var emoticons = {\n ':(': true,\n ':)': true,\n ':P': true,\n ':p': true,\n ':O': true,\n ':3': true,\n ':|': true,\n ':/': true,\n ':\\\\': true,\n ':$': true,\n ':*': true,\n ':@': true,\n ':-(': true,\n ':-)': true,\n ':-P': true,\n ':-p': true,\n ':-O': true,\n ':-3': true,\n ':-|': true,\n ':-/': true,\n ':-\\\\': true,\n ':-$': true,\n ':-*': true,\n ':-@': true,\n ':^(': true,\n ':^)': true,\n ':^P': true,\n ':^p': true,\n ':^O': true,\n ':^3': true,\n ':^|': true,\n ':^/': true,\n ':^\\\\': true,\n ':^$': true,\n ':^*': true,\n ':^@': true,\n '):': true,\n '(:': true,\n '$:': true,\n '*:': true,\n ')-:': true,\n '(-:': true,\n '$-:': true,\n '*-:': true,\n ')^:': true,\n '(^:': true,\n '$^:': true,\n '*^:': true,\n '<3': true,\n ' {\n if (raw.charAt(0) === ':') {\n //end comma can be last or second-last ':haircut_tone3:‍♀️'\n if (raw.match(/:.?$/) === null) {\n return false;\n } //ensure no spaces\n\n\n if (raw.match(' ')) {\n return false;\n } //reasonably sized\n\n\n if (raw.length > 35) {\n return false;\n }\n\n return true;\n }\n\n return false;\n }; //check against emoticon whitelist\n\n\n const isEmoticon = str => {\n str = str.replace(/^[:;]/, ':'); //normalize the 'eyes'\n\n return emoticon.hasOwnProperty(str);\n };\n\n const tagEmoji = (term, world) => {\n let raw = term.pre + term.text + term.post;\n raw = raw.trim(); //dont double-up on ending periods\n\n raw = raw.replace(/[.!?,]$/, ''); //test for :keyword: emojis\n\n if (isCommaEmoji(raw) === true) {\n term.tag('Emoji', 'comma-emoji', world);\n term.text = raw;\n term.pre = term.pre.replace(':', '');\n term.post = term.post.replace(':', '');\n } //test for unicode emojis\n\n\n if (term.text.match(emojiReg)) {\n term.tag('Emoji', 'unicode-emoji', world);\n term.text = raw;\n } //test for emoticon ':)' emojis\n\n\n if (isEmoticon(raw) === true) {\n term.tag('Emoticon', 'emoticon-emoji', world);\n term.text = raw;\n }\n };\n\n var _05Emoji = tagEmoji;\n\n const steps = {\n lexicon: _01Lexicon,\n punctuation: _02Punctuation,\n regex: _03Prefixes,\n suffix: _04Suffixes,\n emoji: _05Emoji\n }; //'lookups' look at a term by itself\n\n const lookups = function (doc, terms) {\n let world = doc.world; //our list of known-words\n\n steps.lexicon(terms, world); //try these other methods\n\n for (let i = 0; i < terms.length; i += 1) {\n let term = terms[i]; //or maybe some helpful punctuation\n\n steps.punctuation(terms, i, world); //mostly prefix checks\n\n steps.regex(term, world); //maybe we can guess\n\n steps.suffix(term, world); //emoji and emoticons\n\n steps.emoji(term, world);\n }\n\n return doc;\n };\n\n var _01Init = lookups;\n\n //basically, a little-bit better than the noun-fallback\n //just top n-grams from nlp tags, generated from nlp-corpus\n //after this word, here's what happens usually\n\n let afterThisWord = {\n i: 'Verb',\n //44% //i walk..\n first: 'Noun',\n //50% //first principles..\n it: 'Verb',\n //33%\n there: 'Verb',\n //35%\n not: 'Verb',\n //33%\n because: 'Noun',\n //31%\n if: 'Noun',\n //32%\n but: 'Noun',\n //26%\n who: 'Verb',\n //40%\n this: 'Noun',\n //37%\n his: 'Noun',\n //48%\n when: 'Noun',\n //33%\n you: 'Verb',\n //35%\n very: 'Adjective',\n // 39%\n old: 'Noun',\n //51%\n never: 'Verb',\n //42%\n before: 'Noun' //28%\n\n }; //in advance of this word, this is what happens usually\n\n let beforeThisWord = {\n there: 'Verb',\n //23% // be there\n me: 'Verb',\n //31% //see me\n man: 'Adjective',\n // 80% //quiet man\n only: 'Verb',\n //27% //sees only\n him: 'Verb',\n //32% //show him\n were: 'Noun',\n //48% //we were\n took: 'Noun',\n //38% //he took\n himself: 'Verb',\n //31% //see himself\n went: 'Noun',\n //43% //he went\n who: 'Noun',\n //47% //person who\n jr: 'Person'\n }; //following this POS, this is likely\n\n let afterThisPOS = {\n Adjective: 'Noun',\n //36% //blue dress\n Possessive: 'Noun',\n //41% //his song\n Determiner: 'Noun',\n //47%\n Adverb: 'Verb',\n //20%\n Pronoun: 'Verb',\n //40%\n Value: 'Noun',\n //47%\n Ordinal: 'Noun',\n //53%\n Modal: 'Verb',\n //35%\n Superlative: 'Noun',\n //43%\n Demonym: 'Noun',\n //38%\n Honorific: 'Person' //\n\n }; //in advance of this POS, this is likely\n\n let beforeThisPOS = {\n Copula: 'Noun',\n //44% //spencer is\n PastTense: 'Noun',\n //33% //spencer walked\n Conjunction: 'Noun',\n //36%\n Modal: 'Noun',\n //38%\n Pluperfect: 'Noun',\n //40%\n PerfectTense: 'Verb' //32%\n\n };\n var markov$1 = {\n beforeThisWord: beforeThisWord,\n afterThisWord: afterThisWord,\n beforeThisPos: beforeThisPOS,\n afterThisPos: afterThisPOS\n };\n\n const markov = markov$1;\n const afterKeys = Object.keys(markov.afterThisPos);\n const beforeKeys = Object.keys(markov.beforeThisPos);\n\n const checkNeighbours = function (terms, world) {\n for (let i = 0; i < terms.length; i += 1) {\n let term = terms[i]; //do we still need a tag?\n\n if (term.isKnown() === true) {\n continue;\n } //ok, this term needs a tag.\n //look at previous word for clues..\n\n\n let lastTerm = terms[i - 1];\n\n if (lastTerm) {\n // 'foobar term'\n if (markov.afterThisWord.hasOwnProperty(lastTerm.clean) === true) {\n let tag = markov.afterThisWord[lastTerm.clean];\n term.tag(tag, 'after-' + lastTerm.clean, world);\n continue;\n } // 'Tag term'\n // (look at previous POS tags for clues..)\n\n\n let foundTag = afterKeys.find(tag => lastTerm.tags[tag]);\n\n if (foundTag !== undefined) {\n let tag = markov.afterThisPos[foundTag];\n term.tag(tag, 'after-' + foundTag, world);\n continue;\n }\n } //look at next word for clues..\n\n\n let nextTerm = terms[i + 1];\n\n if (nextTerm) {\n // 'term foobar'\n if (markov.beforeThisWord.hasOwnProperty(nextTerm.clean) === true) {\n let tag = markov.beforeThisWord[nextTerm.clean];\n term.tag(tag, 'before-' + nextTerm.clean, world);\n continue;\n } // 'term Tag'\n // (look at next POS tags for clues..)\n\n\n let foundTag = beforeKeys.find(tag => nextTerm.tags[tag]);\n\n if (foundTag !== undefined) {\n let tag = markov.beforeThisPos[foundTag];\n term.tag(tag, 'before-' + foundTag, world);\n continue;\n }\n }\n }\n };\n\n var _01Neighbours = checkNeighbours;\n\n const titleCase = /^[A-Z][a-z'\\u00C0-\\u00FF]/;\n const hasNumber = /[0-9]/;\n /** look for any grammar signals based on capital/lowercase */\n\n const checkCase = function (doc) {\n let world = doc.world;\n doc.list.forEach(p => {\n let terms = p.terms();\n\n for (let i = 1; i < terms.length; i++) {\n const term = terms[i];\n\n if (titleCase.test(term.text) === true && hasNumber.test(term.text) === false && term.tags.Date === undefined) {\n term.tag('ProperNoun', 'titlecase-noun', world);\n }\n }\n });\n };\n\n var _02Case = checkCase;\n\n const hasPrefix = /^(re|un)-?[a-z\\u00C0-\\u00FF]/;\n const prefix = /^(re|un)-?/;\n /** check 'rewatch' in lexicon as 'watch' */\n\n const checkPrefix = function (terms, world) {\n let lex = world.words;\n terms.forEach(term => {\n // skip if we have a good tag already\n if (term.isKnown() === true) {\n return;\n } //does it start with 'un|re'\n\n\n if (hasPrefix.test(term.clean) === true) {\n // look for the root word in the lexicon:\n let stem = term.clean.replace(prefix, '');\n\n if (stem && stem.length > 3 && lex[stem] !== undefined && lex.hasOwnProperty(stem) === true) {\n term.tag(lex[stem], 'stem-' + stem, world);\n }\n }\n });\n };\n\n var _03Stem = checkPrefix;\n\n const isPlural$8 = [/(^v)ies$/i, /ises$/i, /ives$/i, /(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /(buffal|tomat|tornad)oes$/i, /(analy|ba|diagno|parenthe|progno|synop|the)ses$/i, /(vert|ind|cort)ices$/i, /(matr|append)ices$/i, /(x|ch|ss|sh|s|z|o)es$/i, /is$/i, /men$/i, /news$/i, /.tia$/i, /(^f)ves$/i, /(lr)ves$/i, /(^aeiouy|qu)ies$/i, /(m|l)ice$/i, /(cris|ax|test)es$/i, /(alias|status)es$/i, /ics$/i]; //similar to plural/singularize rules, but not the same\n\n const isSingular$1 = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /s[aeiou]+ns$/i, // sans, siens\n /(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i];\n var isPlural_1$2 = {\n isSingular: isSingular$1,\n isPlural: isPlural$8\n };\n\n const noPlurals = ['Uncountable', 'Pronoun', 'Place', 'Value', 'Person', 'Month', 'WeekDay', 'Holiday'];\n const rules$1 = isPlural_1$2;\n const notPlural = [/ss$/, /sis$/, /[^aeiou][uo]s$/, /'s$/];\n const notSingular = [/i$/, /ae$/];\n /** turn nouns into singular/plural */\n\n const checkPlural = function (t, world) {\n if (t.tags.Noun && !t.tags.Acronym) {\n let str = t.clean; //skip existing tags, fast\n\n if (t.tags.Singular || t.tags.Plural) {\n return;\n } //too short\n\n\n if (str.length <= 3) {\n t.tag('Singular', 'short-singular', world);\n return;\n } //is it impossible to be plural?\n\n\n if (noPlurals.find(tag => t.tags[tag])) {\n return;\n } // isPlural suffix rules\n\n\n if (rules$1.isPlural.find(reg => reg.test(str))) {\n t.tag('Plural', 'plural-rules', world);\n return;\n } // isSingular suffix rules\n\n\n if (rules$1.isSingular.find(reg => reg.test(str))) {\n t.tag('Singular', 'singular-rules', world);\n return;\n } // finally, fallback 'looks plural' rules..\n\n\n if (/s$/.test(str) === true) {\n //avoid anything too sketchy to be plural\n if (notPlural.find(reg => reg.test(str))) {\n return;\n }\n\n t.tag('Plural', 'plural-fallback', world);\n return;\n } //avoid anything too sketchy to be singular\n\n\n if (notSingular.find(reg => reg.test(str))) {\n return;\n }\n\n t.tag('Singular', 'singular-fallback', world);\n }\n };\n\n var _04Plurals = checkPlural;\n\n //todo remove/normalize plural forms\n\n const orgWords$1 = ['academy', 'administration', 'agence', 'agences', 'agencies', 'agency', 'airlines', 'airways', 'army', 'assoc', 'associates', 'association', 'assurance', 'authority', 'autorite', 'aviation', 'bank', 'banque', 'board', 'boys', 'brands', 'brewery', 'brotherhood', 'brothers', 'building society', 'bureau', 'cafe', 'caisse', 'capital', 'care', 'cathedral', 'center', 'central bank', 'centre', 'chemicals', 'choir', 'chronicle', 'church', 'circus', 'clinic', 'clinique', 'club', 'co', 'coalition', 'coffee', 'collective', 'college', 'commission', 'committee', 'communications', 'community', 'company', 'comprehensive', 'computers', 'confederation', 'conference', 'conseil', 'consulting', 'containers', 'corporation', 'corps', 'corp', 'council', 'crew', 'daily news', 'data', 'departement', 'department', 'department store', 'departments', 'design', 'development', 'directorate', 'division', 'drilling', 'education', 'eglise', 'electric', 'electricity', 'energy', 'ensemble', 'enterprise', 'enterprises', 'entertainment', 'estate', 'etat', 'evening news', 'faculty', 'federation', 'financial', 'fm', 'foundation', 'fund', 'gas', 'gazette', 'girls', 'government', 'group', 'guild', 'health authority', 'herald', 'holdings', 'hospital', 'hotel', 'hotels', 'inc', 'industries', 'institut', 'institute', 'institute of technology', 'institutes', 'insurance', 'international', 'interstate', 'investment', 'investments', 'investors', 'journal', 'laboratory', 'labs', // 'law',\n 'liberation army', 'limited', 'local authority', 'local health authority', 'machines', 'magazine', 'management', 'marine', 'marketing', 'markets', 'media', 'memorial', 'mercantile exchange', 'ministere', 'ministry', 'military', 'mobile', 'motor', 'motors', 'musee', 'museum', // 'network',\n 'news', 'news service', 'observatory', 'office', 'oil', 'optical', 'orchestra', 'organization', 'partners', 'partnership', // 'party',\n \"people's party\", 'petrol', 'petroleum', 'pharmacare', 'pharmaceutical', 'pharmaceuticals', 'pizza', 'plc', 'police', 'polytechnic', 'post', 'power', 'press', 'productions', 'quartet', 'radio', 'regional authority', 'regional health authority', 'reserve', 'resources', 'restaurant', 'restaurants', 'savings', 'school', 'securities', 'service', 'services', 'social club', 'societe', 'society', 'sons', 'standard', 'state police', 'state university', 'stock exchange', 'subcommittee', 'syndicat', 'systems', 'telecommunications', 'telegraph', 'television', 'times', 'tribunal', 'tv', 'union', 'university', 'utilities', 'workers'];\n var organizations = orgWords$1.reduce(function (h, str) {\n h[str] = 'Noun';\n return h;\n }, {});\n\n let orgWords = organizations; //could this word be an organization\n\n const maybeOrg = function (t) {\n //must be a noun\n if (!t.tags.Noun) {\n return false;\n } //can't be these things\n\n\n if (t.tags.Pronoun || t.tags.Comma || t.tags.Possessive) {\n return false;\n } //must be one of these\n\n\n if (t.tags.Organization || t.tags.Acronym || t.tags.Place || t.titleCase()) {\n return true;\n }\n\n return false;\n };\n\n const tagOrgs = function (terms, world) {\n for (let i = 0; i < terms.length; i += 1) {\n let t = terms[i];\n\n if (orgWords[t.clean] !== undefined && orgWords.hasOwnProperty(t.clean) === true) {\n // look-backward - eg. 'Toronto University'\n let lastTerm = terms[i - 1];\n\n if (lastTerm !== undefined && maybeOrg(lastTerm) === true) {\n lastTerm.tagSafe('Organization', 'org-word-1', world);\n t.tagSafe('Organization', 'org-word-2', world);\n continue;\n } //look-forward - eg. University of Toronto\n\n\n let nextTerm = terms[i + 1];\n\n if (nextTerm !== undefined && nextTerm.clean === 'of') {\n if (terms[i + 2] && maybeOrg(terms[i + 2])) {\n t.tagSafe('Organization', 'org-of-word-1', world);\n nextTerm.tagSafe('Organization', 'org-of-word-2', world);\n terms[i + 2].tagSafe('Organization', 'org-of-word-3', world);\n continue;\n }\n }\n }\n }\n };\n\n var _05Organizations = tagOrgs;\n\n const oneLetterAcronym = /^[A-Z]('s|,)?$/;\n const periodSeperated = /([A-Z]\\.){2}[A-Z]?/i;\n const oneLetterWord = {\n I: true,\n A: true\n };\n\n const isAcronym = function (term, world) {\n let str = term.reduced; // a known acronym like fbi\n\n if (term.tags.Acronym) {\n return true;\n } // if (term.tags.Adverb || term.tags.Verb || term.tags.Value || term.tags.Plural) {\n // return false\n // }\n // known-words, like 'PIZZA' is not an acronym.\n\n\n if (world.words[str]) {\n return false;\n } // long capitalized words are not usually either\n\n\n if (str.length > 5) {\n return false;\n }\n\n return term.isAcronym();\n }; // F.B.I., NBC, - but not 'NO COLLUSION'\n\n\n const checkAcronym = function (terms, world) {\n terms.forEach(term => {\n //these are not acronyms\n if (term.tags.RomanNumeral === true) {\n return;\n } //period-ones F.D.B.\n\n\n if (periodSeperated.test(term.text) === true) {\n term.tag('Acronym', 'period-acronym', world);\n } //non-period ones are harder\n\n\n if (term.isUpperCase() && isAcronym(term, world)) {\n term.tag('Acronym', 'acronym-step', world);\n term.tag('Noun', 'acronym-infer', world);\n } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) {\n term.tag('Acronym', 'one-letter-acronym', world);\n term.tag('Noun', 'one-letter-infer', world);\n } //if it's a organization,\n\n\n if (term.tags.Organization && term.text.length <= 3) {\n term.tag('Acronym', 'acronym-org', world);\n }\n\n if (term.tags.Organization && term.isUpperCase() && term.text.length <= 6) {\n term.tag('Acronym', 'acronym-org-case', world);\n }\n });\n };\n\n var _06Acronyms = checkAcronym;\n\n const step = {\n neighbours: _01Neighbours,\n case: _02Case,\n stem: _03Stem,\n plural: _04Plurals,\n organizations: _05Organizations,\n acronyms: _06Acronyms\n }; //\n\n const fallbacks$1 = function (doc, terms) {\n let world = doc.world; // if it's empty, consult it's neighbours, first\n\n step.neighbours(terms, world); // is there a case-sensitive clue?\n\n step.case(doc); // check 'rewatch' as 'watch'\n\n step.stem(terms, world); // ... fallback to a noun!\n\n terms.forEach(t => {\n if (t.isKnown() === false) {\n t.tag('Noun', 'noun-fallback', doc.world);\n }\n }); // turn 'Foo University' into an Org\n\n step.organizations(terms, world); //turn 'FBD' into an acronym\n\n step.acronyms(terms, world); //are the nouns singular or plural?\n\n terms.forEach(t => {\n step.plural(t, doc.world);\n });\n return doc;\n };\n\n var _02Fallbacks = fallbacks$1;\n\n const hasNegative = /n't$/;\n const irregulars$2 = {\n \"won't\": ['will', 'not'],\n wont: ['will', 'not'],\n \"can't\": ['can', 'not'],\n cant: ['can', 'not'],\n cannot: ['can', 'not'],\n \"shan't\": ['should', 'not'],\n dont: ['do', 'not'],\n dun: ['do', 'not'] // \"ain't\" is ambiguous for is/was\n\n }; // either 'is not' or 'are not'\n\n const doAint = function (term, phrase) {\n let terms = phrase.terms();\n let index = terms.indexOf(term);\n let before = terms.slice(0, index); //look for the preceding noun\n\n let noun = before.find(t => {\n return t.tags.Noun;\n });\n\n if (noun && noun.tags.Plural) {\n return ['are', 'not'];\n }\n\n return ['is', 'not'];\n };\n\n const checkNegative$1 = function (term, phrase) {\n //check named-ones\n if (irregulars$2.hasOwnProperty(term.clean) === true) {\n return irregulars$2[term.clean];\n } //this word needs it's own logic:\n\n\n if (term.clean === `ain't` || term.clean === 'aint') {\n return doAint(term, phrase);\n } //try it normally\n\n\n if (hasNegative.test(term.clean) === true) {\n let main = term.clean.replace(hasNegative, '');\n return [main, 'not'];\n }\n\n return null;\n };\n\n var _01Negative = checkNegative$1;\n\n const contraction$1 = /([a-z\\u00C0-\\u00FF]+)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]([a-z]{1,2})$/i; //these ones don't seem to be ambiguous\n\n const easy = {\n ll: 'will',\n ve: 'have',\n re: 'are',\n m: 'am',\n \"n't\": 'not'\n }; //\n\n const checkApostrophe$1 = function (term) {\n let parts = term.text.match(contraction$1);\n\n if (parts === null) {\n return null;\n }\n\n if (easy.hasOwnProperty(parts[2])) {\n return [parts[1], easy[parts[2]]];\n }\n\n return null;\n };\n\n var _02Simple = checkApostrophe$1;\n\n const irregulars$1 = {\n wanna: ['want', 'to'],\n gonna: ['going', 'to'],\n im: ['i', 'am'],\n alot: ['a', 'lot'],\n ive: ['i', 'have'],\n imma: ['I', 'will'],\n \"where'd\": ['where', 'did'],\n whered: ['where', 'did'],\n \"when'd\": ['when', 'did'],\n whend: ['when', 'did'],\n // \"how'd\": ['how', 'did'], //'how would?'\n // \"what'd\": ['what', 'did'], //'what would?'\n howd: ['how', 'did'],\n whatd: ['what', 'did'],\n // \"let's\": ['let', 'us'], //too weird\n //multiple word contractions\n dunno: ['do', 'not', 'know'],\n brb: ['be', 'right', 'back'],\n gtg: ['got', 'to', 'go'],\n irl: ['in', 'real', 'life'],\n tbh: ['to', 'be', 'honest'],\n imo: ['in', 'my', 'opinion'],\n til: ['today', 'i', 'learned'],\n rn: ['right', 'now'],\n twas: ['it', 'was'],\n '@': ['at']\n }; //\n\n const checkIrregulars$1 = function (term) {\n //check white-list\n if (irregulars$1.hasOwnProperty(term.clean)) {\n return irregulars$1[term.clean];\n }\n\n return null;\n };\n\n var _03Irregulars = checkIrregulars$1;\n\n const hasApostropheS = /([a-z\\u00C0-\\u00FF]+)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]s$/i;\n const banList = {\n that: true,\n there: true\n };\n const hereThere = {\n here: true,\n there: true,\n everywhere: true\n };\n\n const isPossessive = (term, pool) => {\n // if we already know it\n if (term.tags.Possessive) {\n return true;\n } //a pronoun can't be possessive - \"he's house\"\n\n\n if (term.tags.Pronoun || term.tags.QuestionWord) {\n return false;\n }\n\n if (banList.hasOwnProperty(term.reduced)) {\n return false;\n } //if end of sentence, it is possessive - \"was spencer's\"\n\n\n let nextTerm = pool.get(term.next);\n\n if (!nextTerm) {\n return true;\n } //a gerund suggests 'is walking'\n\n\n if (nextTerm.tags.Verb) {\n //fix 'jamie's bite'\n if (nextTerm.tags.Infinitive) {\n return true;\n } //fix 'spencer's runs'\n\n\n if (nextTerm.tags.PresentTense) {\n return true;\n }\n\n return false;\n } //spencer's house\n\n\n if (nextTerm.tags.Noun) {\n // 'spencer's here'\n if (hereThere.hasOwnProperty(nextTerm.reduced) === true) {\n return false;\n }\n\n return true;\n } //rocket's red glare\n\n\n let twoTerm = pool.get(nextTerm.next);\n\n if (twoTerm && twoTerm.tags.Noun && !twoTerm.tags.Pronoun) {\n return true;\n } //othwerwise, an adjective suggests 'is good'\n\n\n if (nextTerm.tags.Adjective || nextTerm.tags.Adverb || nextTerm.tags.Verb) {\n return false;\n }\n\n return false;\n };\n\n const isHas = (term, phrase) => {\n let terms = phrase.terms();\n let index = terms.indexOf(term);\n let after = terms.slice(index + 1, index + 3); //look for a past-tense verb\n\n return after.find(t => {\n return t.tags.PastTense;\n });\n };\n\n const checkPossessive$1 = function (term, phrase, world) {\n //the rest of 's\n let found = term.text.match(hasApostropheS);\n\n if (found !== null) {\n //spencer's thing vs spencer-is\n if (isPossessive(term, phrase.pool) === true) {\n term.tag('#Possessive', 'isPossessive', world);\n return null;\n } //'spencer is'\n\n\n if (found !== null) {\n if (isHas(term, phrase)) {\n return [found[1], 'has'];\n }\n\n return [found[1], 'is'];\n }\n }\n\n return null;\n };\n\n var _04Possessive = checkPossessive$1;\n\n const hasPerfect = /[a-z\\u00C0-\\u00FF]'d$/;\n const useDid = {\n how: true,\n what: true\n };\n /** split `i'd` into 'i had', or 'i would' */\n\n const checkPerfect$1 = function (term, phrase) {\n if (hasPerfect.test(term.clean)) {\n let root = term.clean.replace(/'d$/, ''); //look at the next few words\n\n let terms = phrase.terms();\n let index = terms.indexOf(term);\n let after = terms.slice(index + 1, index + 4); //is it before a past-tense verb? - 'i'd walked'\n\n for (let i = 0; i < after.length; i++) {\n let t = after[i];\n\n if (t.tags.Verb) {\n if (t.tags.PastTense) {\n return [root, 'had'];\n } //what'd you see\n\n\n if (useDid[root] === true) {\n return [root, 'did'];\n }\n\n return [root, 'would'];\n }\n } //otherwise, 'i'd walk'\n\n\n return [root, 'would'];\n }\n\n return null;\n };\n\n var _05PerfectTense = checkPerfect$1;\n\n const isRange = /^([0-9.]{1,3}[a-z]{0,2}) ?[-–—] ?([0-9]{1,3}[a-z]{0,2})$/i;\n const timeRange = /^([0-9][0-9]?(:[0-9][0-9])?(am|pm)?) ?[-–—] ?([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)$/i; //split '2-4' into '2 to 4'\n\n const checkRange$1 = function (term) {\n if (term.tags.PhoneNumber === true) {\n return null;\n }\n\n let parts = term.text.match(isRange);\n\n if (parts !== null) {\n return [parts[1], 'to', parts[2]];\n } else {\n parts = term.text.match(timeRange);\n\n if (parts !== null) {\n return [parts[1], 'to', parts[4]];\n }\n }\n\n return null;\n };\n\n var _06Ranges = checkRange$1;\n\n const contraction = /^(l|c|d|j|m|n|qu|s|t)[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]([a-z\\u00C0-\\u00FF]+)$/i; // basic support for ungendered french contractions\n // not perfect, but better than nothing, to support matching on french text.\n\n const french = {\n l: 'le',\n // l'amour\n c: 'ce',\n // c'est\n d: 'de',\n // d'amerique\n j: 'je',\n // j'aime\n m: 'me',\n // m'appelle\n n: 'ne',\n // n'est\n qu: 'que',\n // qu'il\n s: 'se',\n // s'appelle\n t: 'tu' // t'aime\n\n };\n\n const checkFrench$1 = function (term) {\n let parts = term.text.match(contraction);\n\n if (parts === null || french.hasOwnProperty(parts[1]) === false) {\n return null;\n }\n\n let arr = [french[parts[1]], parts[2]];\n\n if (arr[0] && arr[1]) {\n return arr;\n }\n\n return null;\n };\n\n var _07French = checkFrench$1;\n\n const checkLexicon = _01Lexicon;\n const tokenize$2 = _01Tokenizer;\n const checkNegative = _01Negative;\n const checkApostrophe = _02Simple;\n const checkIrregulars = _03Irregulars;\n const checkPossessive = _04Possessive;\n const checkPerfect = _05PerfectTense;\n const checkRange = _06Ranges;\n const checkFrench = _07French;\n const isNumber = /^[0-9]+$/;\n const isOrdinal = /^[0-9]+(st|nd|rd|th)$/;\n const isTime = /^[0-9:]+(am|pm)?$/;\n\n const createPhrase = function (found, doc) {\n //create phrase from ['would', 'not']\n let phrase = tokenize$2(found.join(' '), doc.world, doc.pool())[0]; //tag it\n\n let terms = phrase.terms();\n checkLexicon(terms, doc.world);\n let term = terms[0]; // tag number-ranges\n\n if (isOrdinal.test(term.text) && terms[2]) {\n terms[0].tag('Ordinal', 'ord-range', doc.world);\n terms[2].tag('Ordinal', 'ord-range', doc.world);\n } else if (isNumber.test(term.text) && terms[2]) {\n terms[0].tag('Cardinal', 'num-range', doc.world);\n terms[2].tag('Cardinal', 'num-range', doc.world);\n } else if (isTime.test(term.text) && terms[1] && terms[2]) {\n terms[0].tag('Time', 'time-range', doc.world);\n terms[1].tag('Date', 'time-range', doc.world);\n terms[2].tag('Time', 'time-range', doc.world);\n } //make these terms implicit\n\n\n terms.forEach(t => {\n t.implicit = t.text;\n t.text = '';\n t.clean = ''; // remove whitespace for implicit terms\n\n t.pre = '';\n t.post = '';\n\n if (Object.keys(t.tags).length === 0) {\n t.tags.Noun = true; // if no tag, give it a noun\n }\n });\n return phrase;\n };\n\n const contractions$1 = function (doc) {\n let world = doc.world;\n doc.list.forEach(p => {\n let terms = p.terms();\n\n for (let i = 0; i < terms.length; i += 1) {\n let term = terms[i];\n let found = checkNegative(term, p);\n found = found || checkApostrophe(term);\n found = found || checkIrregulars(term);\n found = found || checkPossessive(term, p, world);\n found = found || checkPerfect(term, p);\n found = found || checkRange(term);\n found = found || checkFrench(term); //add them in\n\n if (found !== null) {\n let newPhrase = createPhrase(found, doc); // keep tag NumberRange, if we had it\n\n if (p.has('#NumberRange') === true) {\n doc.buildFrom([newPhrase]).tag('NumberRange');\n } //set text as contraction\n\n\n let firstTerm = newPhrase.terms(0);\n firstTerm.text = term.text; //grab sub-phrase to remove\n\n let match = p.buildFrom(term.id, 1, doc.pool());\n match.replace(newPhrase, doc, true);\n }\n }\n });\n return doc;\n };\n\n var _03Contractions = contractions$1;\n\n const hasWord = function (doc, word) {\n let arr = doc._cache.words[word] || [];\n arr = arr.map(i => doc.list[i]);\n return doc.buildFrom(arr);\n };\n\n const hasTag = function (doc, tag) {\n let arr = doc._cache.tags[tag] || [];\n arr = arr.map(i => doc.list[i]);\n return doc.buildFrom(arr);\n }; //mostly pos-corections here\n\n\n const miscCorrection = function (doc) {\n // imperative-form\n let m = hasTag(doc, 'Infinitive');\n\n if (m.found) {\n // you eat?\n m = m.ifNo('@hasQuestionMark'); // i speak\n\n m = m.ifNo('(i|we|they)'); // shut the door!\n\n m.not('will be').match('[#Infinitive] (#Determiner|#Possessive) #Noun').notIf('(our|their)').match('#Infinitive').tag('Imperative', 'shut-the'); // go-fast\n\n m.match('^[#Infinitive] #Adverb?$', 0).tag('Imperative', 'go-fast'); // do not go\n\n m.match('[(do && #Infinitive)] not? #Verb', 0).tag('Imperative', 'do-not'); // do it\n\n m.match('[#Infinitive] (it|some) (#Comparative|#Preposition|please|now|again)', 0).tag('Imperative', 'do-it');\n } //exactly like\n\n\n m = hasWord(doc, 'like');\n m.match('#Adverb like').notIf('(really|generally|typically|usually|sometimes|often|just) [like]').tag('Adverb', 'adverb-like'); //the orange.\n\n m = hasTag(doc, 'Adjective');\n m.match('#Determiner #Adjective$').notIf('(#Comparative|#Superlative)').terms(1).tag('Noun', 'the-adj-1'); // Firstname x (dangerous)\n\n m = hasTag(doc, 'FirstName');\n m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('(#Pronoun|#Plural)').ifNo('@hasComma .').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train\n\n m = hasTag(doc, 'Value');\n m = m.match('#Value #PresentTense').ifNo('#Copula');\n\n if (m.found) {\n if (m.has('(one|1)') === true) {\n m.terms(1).tag('Singular', 'one-presentTense');\n } else {\n m.terms(1).tag('Plural', 'value-presentTense');\n }\n } // well i've been...\n\n\n doc.match('^(well|so|okay)').tag('Expression', 'well-'); // 10th of a second\n\n doc.match('#Value [of a second]', 0).unTag('Value', 'of-a-second'); // 30 seconds\n\n doc.match('#Value [seconds]', 0).unTag('Value', '30-seconds').tag(['Unit', 'Plural']); //been walking\n\n m = hasTag(doc, 'Gerund');\n m.match(`(be|been) (#Adverb|not)+? #Gerund`).not('#Verb$').tag('Auxiliary', 'be-walking'); // directive verb - 'use reverse'\n\n doc.match('(try|use|attempt|build|make) #Verb').ifNo('(@hasComma|#Negative|#PhrasalVerb|#Copula|will|be)').lastTerm().tag('#Noun', 'do-verb'); //possessives\n //'her match' vs 'let her match'\n\n m = hasTag(doc, 'Possessive');\n m = m.match('#Possessive [#Infinitive]', 0);\n\n if (!m.lookBehind('(let|made|make|force|ask)').found) {\n m.tag('Noun', 'her-match');\n }\n\n return doc;\n };\n\n var fixMisc$1 = miscCorrection;\n\n const unique$2 = function (arr) {\n let obj = {};\n\n for (let i = 0; i < arr.length; i++) {\n obj[arr[i]] = true;\n }\n\n return Object.keys(obj);\n };\n\n var _unique = unique$2;\n\n const list$5 = [// ==== Mutliple tags ====\n {\n match: 'too much',\n tag: 'Adverb Adjective',\n reason: 'bit-4'\n }, // u r cool\n {\n match: 'u r',\n tag: 'Pronoun Copula',\n reason: 'u r'\n }, //sometimes adverbs - 'pretty good','well above'\n {\n match: '#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)',\n tag: '#Copula #Adverb #Adjective',\n reason: 'sometimes-adverb'\n }, //i better ..\n {\n match: '(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense',\n group: 0,\n tag: 'Modal',\n reason: 'i-better'\n }, //walking is cool\n {\n match: '[#Gerund] #Adverb? not? #Copula',\n group: 0,\n tag: 'Activity',\n reason: 'gerund-copula'\n }, //walking should be fun\n {\n match: '[#Gerund] #Modal',\n group: 0,\n tag: 'Activity',\n reason: 'gerund-modal'\n }, //swear-words as non-expression POS\n {\n match: 'holy (shit|fuck|hell)',\n tag: 'Expression',\n reason: 'swears-expression'\n }, //Aircraft designer\n {\n match: '#Noun #Actor',\n tag: 'Actor',\n reason: 'thing-doer'\n }, {\n match: '#Conjunction [u]',\n group: 0,\n tag: 'Pronoun',\n reason: 'u-pronoun-2'\n }, //'u' as pronoun\n {\n match: '[u] #Verb',\n group: 0,\n tag: 'Pronoun',\n reason: 'u-pronoun-1'\n }, // ==== Determiners ====\n {\n match: '#Noun [(who|whom)]',\n group: 0,\n tag: 'Determiner',\n reason: 'captain-who'\n }, //that car goes\n // { match: 'that #Noun [#PresentTense]', group: 0, tag: 'Determiner', reason: 'that-determiner' },\n {\n match: 'a bit much',\n tag: 'Determiner Adverb Adjective',\n reason: 'bit-3'\n }, // ==== Propositions ====\n //all students\n {\n match: '#Verb #Adverb? #Noun [(that|which)]',\n group: 0,\n tag: 'Preposition',\n reason: 'that-prep'\n }, //work, which has been done.\n {\n match: '@hasComma [which] (#Pronoun|#Verb)',\n group: 0,\n tag: 'Preposition',\n reason: 'which-copula'\n }, {\n match: '#Copula just [like]',\n group: 0,\n tag: 'Preposition',\n reason: 'like-preposition'\n }, //folks like her\n {\n match: '#Noun [like] #Noun',\n group: 0,\n tag: 'Preposition',\n reason: 'noun-like'\n }, //fix for busted-up phrasalVerbs\n // { match: '#Noun [#Particle]', group: 0, tag: 'Preposition', reason: 'repair-noPhrasal' },\n // ==== Conditions ====\n // had he survived,\n {\n match: '[had] #Noun+ #PastTense',\n group: 0,\n tag: 'Condition',\n reason: 'had-he'\n }, // were he to survive\n {\n match: '[were] #Noun+ to #Infinitive',\n group: 0,\n tag: 'Condition',\n reason: 'were-he'\n }, // ==== Questions ====\n //the word 'how'\n {\n match: '^how',\n tag: 'QuestionWord',\n reason: 'how-question'\n }, {\n match: '[how] (#Determiner|#Copula|#Modal|#PastTense)',\n group: 0,\n tag: 'QuestionWord',\n reason: 'how-is'\n }, // //the word 'which'\n {\n match: '^which',\n tag: 'QuestionWord',\n reason: 'which-question'\n }, // { match: '[which] . (#Noun)+ #Pronoun', group: 0, tag: 'QuestionWord', reason: 'which-question2' },\n // { match: 'which', tag: 'QuestionWord', reason: 'which-question3' },\n // ==== Conjunctions ====\n {\n match: '[so] #Noun',\n group: 0,\n tag: 'Conjunction',\n reason: 'so-conj'\n }, //how he is driving\n {\n match: '[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)',\n group: 0,\n tag: 'Conjunction',\n reason: 'how-he-is-x'\n } // {\n // match: '[(who|what|where|why|how|when)] #Noun #Adverb? #Infinitive not? #Gerund',\n // group: 0,\n // tag: 'Conjunction',\n // reason: 'when-i-go-fishing',\n // },\n ];\n var _01Misc = list$5;\n\n var _ambig = {\n // adverbs than can be adjectives\n adverbAdjective: ['dark', 'bright', 'flat', 'light', 'soft', 'pale', 'dead', 'dim', 'faux', 'little', 'wee', 'sheer', 'most', 'near', 'good', 'extra', 'all'],\n // names that are dates\n personDate: ['april', 'june', 'may', 'jan', 'august', 'eve'],\n // names that may be months\n personMonth: ['january', 'april', 'may', 'june', 'jan', 'sep'],\n // names that are adjectives\n personAdjective: ['misty', 'rusty', 'dusty', 'rich', 'randy', 'young'],\n // names that are verbs\n personVerb: ['pat', 'wade', 'ollie', 'will', 'rob', 'buck', 'bob', 'mark', 'jack'],\n // names that are verbs\n personPlace: ['darwin', 'hamilton', 'paris', 'alexandria', 'houston', 'kobe', 'santiago', 'salvador', 'sydney', 'victoria'],\n // names that are nouns\n personNoun: ['art', 'baker', 'berg', 'bill', 'brown', 'charity', 'chin', 'christian', 'cliff', 'daisy', 'dawn', 'dick', 'dolly', 'faith', 'franco', 'gene', 'green', 'hall', 'hill', 'holly', 'hope', 'jean', 'jewel', 'joy', 'kelvin', 'king', 'kitty', 'lane', 'lily', 'melody', 'mercedes', 'miles', 'olive', 'penny', 'ray', 'reed', 'robin', 'rod', 'rose', 'sky', 'summer', 'trinity', 'van', 'viola', 'violet', 'wang', 'white']\n };\n\n const ambig$4 = _ambig;\n const dates = `(${ambig$4.personDate.join('|')})`;\n let list$4 = [// ==== Holiday ====\n {\n match: '#Holiday (day|eve)',\n tag: 'Holiday',\n reason: 'holiday-day'\n }, // the captain who\n // ==== WeekDay ====\n // sun the 5th\n {\n match: '[sun] the #Ordinal',\n tag: 'WeekDay',\n reason: 'sun-the-5th'\n }, //sun feb 2\n {\n match: '[sun] #Date',\n group: 0,\n tag: 'WeekDay',\n reason: 'sun-feb'\n }, //1pm next sun\n {\n match: '#Date (on|this|next|last|during)? [sun]',\n group: 0,\n tag: 'WeekDay',\n reason: '1pm-sun'\n }, //this sat\n {\n match: `(in|by|before|during|on|until|after|of|within|all) [sat]`,\n group: 0,\n tag: 'WeekDay',\n reason: 'sat'\n }, {\n match: `(in|by|before|during|on|until|after|of|within|all) [wed]`,\n group: 0,\n tag: 'WeekDay',\n reason: 'wed'\n }, {\n match: `(in|by|before|during|on|until|after|of|within|all) [march]`,\n group: 0,\n tag: 'Month',\n reason: 'march'\n }, //sat november\n {\n match: '[sat] #Date',\n group: 0,\n tag: 'WeekDay',\n reason: 'sat-feb'\n }, // ==== Month ====\n //all march\n {\n match: `#Preposition [(march|may)]`,\n group: 0,\n tag: 'Month',\n reason: 'in-month'\n }, //this march\n {\n match: `this [(march|may)]`,\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n }, {\n match: `next [(march|may)]`,\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n }, {\n match: `last [(march|may)]`,\n group: 0,\n tag: 'Month',\n reason: 'this-month'\n }, // march 5th\n {\n match: `[(march|may)] the? #Value`,\n group: 0,\n tag: 'Month',\n reason: 'march-5th'\n }, // 5th of march\n {\n match: `#Value of? [(march|may)]`,\n group: 0,\n tag: 'Month',\n reason: '5th-of-march'\n }, // march and feb\n {\n match: `[(march|may)] .? #Date`,\n group: 0,\n tag: 'Month',\n reason: 'march-and-feb'\n }, // feb to march\n {\n match: `#Date .? [(march|may)]`,\n group: 0,\n tag: 'Month',\n reason: 'feb-and-march'\n }, //quickly march\n {\n match: `#Adverb [(march|may)]`,\n group: 0,\n tag: 'Verb',\n reason: 'quickly-march'\n }, //march quickly\n {\n match: `[(march|may)] #Adverb`,\n group: 0,\n tag: 'Verb',\n reason: 'march-quickly'\n }, //5th of March\n {\n match: '#Value of #Month',\n tag: 'Date',\n reason: 'value-of-month'\n }, //5 March\n {\n match: '#Cardinal #Month',\n tag: 'Date',\n reason: 'cardinal-month'\n }, //march 5 to 7\n {\n match: '#Month #Value to #Value',\n tag: 'Date',\n reason: 'value-to-value'\n }, //march the 12th\n {\n match: '#Month the #Value',\n tag: 'Date',\n reason: 'month-the-value'\n }, //june 7\n {\n match: '(#WeekDay|#Month) #Value',\n tag: 'Date',\n reason: 'date-value'\n }, //7 june\n {\n match: '#Value (#WeekDay|#Month)',\n tag: 'Date',\n reason: 'value-date'\n }, //may twenty five\n {\n match: '(#TextValue && #Date) #TextValue',\n tag: 'Date',\n reason: 'textvalue-date'\n }, // in june\n {\n match: `in [${dates}]`,\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n }, {\n match: `during [${dates}]`,\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n }, {\n match: `on [${dates}]`,\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n }, {\n match: `by [${dates}]`,\n group: 0,\n tag: 'Date',\n reason: 'by-june'\n }, {\n match: `after [${dates}]`,\n group: 0,\n tag: 'Date',\n reason: 'after-june'\n }, {\n match: `#Date [${dates}]`,\n group: 0,\n tag: 'Date',\n reason: 'in-june'\n }, // june 1992\n {\n match: `${dates} #Value`,\n tag: 'Date',\n reason: 'june-5th'\n }, {\n match: `${dates} #Date`,\n tag: 'Date',\n reason: 'june-5th'\n }, // June Smith\n {\n match: `${dates} #ProperNoun`,\n tag: 'Person',\n reason: 'june-smith',\n safe: true\n }, // june m. Cooper\n {\n match: `${dates} #Acronym? (#ProperNoun && !#Month)`,\n tag: 'Person',\n reason: 'june-smith-jr'\n }, // 'second'\n {\n match: `#Cardinal [second]`,\n tag: 'Unit',\n reason: 'one-second'\n }, // second quarter\n // { match: `#Ordinal quarter`, tag: 'Date', reason: 'second-quarter' },\n // 'aug 20-21'\n {\n match: `#Month #NumberRange`,\n tag: 'Date',\n reason: 'aug 20-21'\n }, // timezones\n // china standard time\n {\n match: `(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time`,\n tag: 'Timezone',\n reason: 'std-time'\n }, // eastern time\n {\n match: `(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time`,\n tag: 'Timezone',\n reason: 'eastern-time'\n }, // 5pm central\n {\n match: `#Time [(eastern|mountain|pacific|central|est|pst|gmt)]`,\n group: 0,\n tag: 'Timezone',\n reason: '5pm-central'\n }, // central european time\n {\n match: `(central|western|eastern) european time`,\n tag: 'Timezone',\n reason: 'cet'\n }];\n var _02Dates = list$4;\n\n const ambig$3 = _ambig;\n const adjectives$1 = `(${ambig$3.personAdjective.join('|')})`;\n let list$3 = [// all fell apart\n {\n match: '[all] #Determiner? #Noun',\n group: 0,\n tag: 'Adjective',\n reason: 'all-noun'\n }, // very rusty\n {\n match: `#Adverb [${adjectives$1}]`,\n group: 0,\n tag: 'Adjective',\n reason: 'really-rich'\n }, // rusty smith\n {\n match: `${adjectives$1} #Person`,\n tag: 'Person',\n reason: 'randy-smith'\n }, // rusty a. smith\n {\n match: `${adjectives$1} #Acronym? #ProperNoun`,\n tag: 'Person',\n reason: 'rusty-smith'\n }, //sometimes not-adverbs\n {\n match: '#Copula [(just|alone)]$',\n group: 0,\n tag: 'Adjective',\n reason: 'not-adverb'\n }, //jack is guarded\n {\n match: '#Singular is #Adverb? [#PastTense$]',\n group: 0,\n tag: 'Adjective',\n reason: 'is-filled'\n }, // smoked poutine is\n {\n match: '[#PastTense] #Singular is',\n group: 0,\n tag: 'Adjective',\n reason: 'smoked-poutine'\n }, // baked onions are\n {\n match: '[#PastTense] #Plural are',\n group: 0,\n tag: 'Adjective',\n reason: 'baked-onions'\n }, // well made\n {\n match: 'well [#PastTense]',\n group: 0,\n tag: 'Adjective',\n reason: 'well-made'\n }, // is f*ed up\n {\n match: '#Copula [fucked up?]',\n tag: 'Adjective',\n reason: 'swears-adjective'\n }, //jack seems guarded\n {\n match: '#Singular (seems|appears) #Adverb? [#PastTense$]',\n group: 0,\n tag: 'Adjective',\n reason: 'seems-filled'\n }, // Gerund-Adjectives - 'amusing, annoying'\n //a staggering cost\n {\n match: '(a|an) [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'a|an'\n }, //as amusing as\n {\n match: 'as [#Gerund] as',\n group: 0,\n tag: 'Adjective',\n reason: 'as-gerund-as'\n }, // more amusing than\n {\n match: 'more [#Gerund] than',\n group: 0,\n tag: 'Adjective',\n reason: 'more-gerund-than'\n }, // very amusing\n {\n match: '(so|very|extremely) [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'so-gerund'\n }, // it was amusing\n {\n match: '(it|he|she|everything|something) #Adverb? was #Adverb? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'it-was-gerund'\n }, // found it amusing\n {\n match: '(found|found) it #Adverb? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'found-it-gerund'\n }, // a bit amusing\n {\n match: 'a (little|bit|wee) bit? [#Gerund]',\n group: 0,\n tag: 'Adjective',\n reason: 'a-bit-gerund'\n }, // jury is out - preposition ➔ adjective\n {\n match: '#Copula #Adjective? [(out|in|through)]$',\n group: 0,\n tag: 'Adjective',\n reason: 'still-out'\n }, // shut the door\n {\n match: '^[#Adjective] (the|your) #Noun',\n group: 0,\n tag: 'Infinitive',\n reason: 'shut-the'\n }, // the said card\n {\n match: 'the [said] #Noun',\n group: 0,\n tag: 'Adjective',\n reason: 'the-said-card'\n }, // a myth that uncovered wounds heal\n {\n match: '#Noun (that|which|whose) [#PastTense && !#Copula] #Noun',\n group: 0,\n tag: 'Adjective',\n reason: 'that-past-noun'\n } // the very fed character\n // { match: `#Determiner #Adverb [#PastTense] #Noun`, group: 0, tag: 'Adjective', reason: 'very-x-noun' },\n ];\n var _03Adjective = list$3;\n\n var _04Noun = [// ==== Plural ====\n //there are reasons\n {\n match: 'there (are|were) #Adjective? [#PresentTense]',\n group: 0,\n tag: 'Plural',\n reason: 'there-are'\n }, // ==== Singular ====\n //the sun\n {\n match: '#Determiner [sun]',\n group: 0,\n tag: 'Singular',\n reason: 'the-sun'\n }, //did a 900, paid a 20\n {\n match: '#Verb (a|an) [#Value]',\n group: 0,\n tag: 'Singular',\n reason: 'did-a-value'\n }, //'the can'\n {\n match: 'the [(can|will|may)]',\n group: 0,\n tag: 'Singular',\n reason: 'the can'\n }, // ==== Possessive ====\n //spencer kelly's\n {\n match: '#FirstName #Acronym? (#Possessive && #LastName)',\n tag: 'Possessive',\n reason: 'name-poss'\n }, //Super Corp's fundraiser\n {\n match: '#Organization+ #Possessive',\n tag: 'Possessive',\n reason: 'org-possessive'\n }, //Los Angeles's fundraiser\n {\n match: '#Place+ #Possessive',\n tag: 'Possessive',\n reason: 'place-possessive'\n }, // assign all tasks\n {\n match: '(#Verb && !#Modal) (all|every|each|most|some|no) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'all-presentTense'\n }, //the above is clear\n {\n match: '#Determiner [#Adjective] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-is'\n }, //real evil is\n {\n match: '#Adjective [#Adjective] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'adj-adj-is'\n }, // PresentTense/Noun ambiguities\n // big dreams, critical thinking\n // have big dreams\n {\n match: '(had|have|#PastTense) #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'adj-presentTense'\n }, // excellent answer spencer\n {\n match: '^#Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'start adj-presentTense'\n }, // one big reason\n {\n match: '#Value #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'one-big-reason'\n }, // won widespread support\n {\n match: '#PastTense #Adjective+ [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'won-wide-support'\n }, // many poses\n {\n match: '(many|few|several|couple) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'many-poses'\n }, // very big dreams\n {\n match: '#Adverb #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'very-big-dream'\n }, // good wait staff\n {\n match: '#Adjective [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'good-wait-staff'\n }, // adorable little store\n {\n match: '#Adjective #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'adorable-little-store'\n }, // of basic training\n {\n match: '#Preposition #Adjective [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'of-basic-training'\n }, // early warning\n {\n match: '#Adjective [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'early-warning'\n }, // justifiying higher costs\n {\n match: '#Gerund #Adverb? #Comparative [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'higher-costs'\n }, // do the dance\n {\n match: '#Infinitive (this|that|the) [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'do-this-dance'\n }, //his fine\n {\n match: '(his|her|its) [#Adjective]',\n group: 0,\n tag: 'Noun',\n reason: 'his-fine'\n }, //some pressing issues\n {\n match: 'some [#Verb] #Plural',\n group: 0,\n tag: 'Noun',\n reason: 'determiner6'\n }, //'more' is not always an adverb\n {\n match: 'more #Noun',\n tag: 'Noun',\n reason: 'more-noun'\n }, {\n match: '(#Noun && @hasComma) #Noun (and|or) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'noun-list'\n }, //3 feet\n {\n match: '(right|rights) of .',\n tag: 'Noun',\n reason: 'right-of'\n }, // a bit\n {\n match: 'a [bit]',\n group: 0,\n tag: 'Noun',\n reason: 'bit-2'\n }, // my first thought\n {\n match: '#Possessive #Ordinal [#PastTense]',\n group: 0,\n tag: 'Noun',\n reason: 'first-thought'\n }, //running-a-show\n {\n match: '#Gerund #Determiner [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-a-show'\n }, //the-only-reason\n {\n match: '#Determiner #Adverb [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'the-reason'\n }, //the nice swim\n {\n match: '(the|this|those|these) #Adjective [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-verb'\n }, // the truly nice swim\n {\n match: '(the|this|those|these) #Adverb #Adjective [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'determiner4'\n }, //the orange is\n {\n match: '#Determiner [#Adjective] (#Copula|#PastTense|#Auxiliary)',\n group: 0,\n tag: 'Noun',\n reason: 'the-adj-2'\n }, // a stream runs\n {\n match: '(the|this|a|an) [#Infinitive] #Adverb? #Verb',\n group: 0,\n tag: 'Noun',\n reason: 'determiner5'\n }, //the test string\n {\n match: '#Determiner [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'determiner7'\n }, //a nice deal\n {\n match: '#Determiner #Adjective #Adjective? [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'a-nice-inf'\n }, //the wait to vote\n {\n match: 'the [#Verb] #Preposition .',\n group: 0,\n tag: 'Noun',\n reason: 'determiner1'\n }, //a sense of\n {\n match: '#Determiner [#Verb] of',\n group: 0,\n tag: 'Noun',\n reason: 'the-verb-of'\n }, //next career move\n {\n match: '#Adjective #Noun+ [#Infinitive] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'career-move'\n }, //the threat of force\n {\n match: '#Determiner #Noun of [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'noun-of-noun'\n }, //the western line\n {\n match: '#Determiner [(western|eastern|northern|southern|central)] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'western-line'\n }, //her polling\n {\n match: '#Possessive [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'her-polling'\n }, //her fines\n {\n match: '(his|her|its) [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'its-polling'\n }, //linear algebra\n {\n match: '(#Determiner|#Value) [(linear|binary|mobile|lexical|technical|computer|scientific|formal)] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'technical-noun'\n }, // a blown motor\n {\n match: '(the|those|these|a|an) [#Participle] #Noun',\n group: 0,\n tag: 'Adjective',\n reason: 'blown-motor'\n }, // walk the walk\n {\n match: '(the|those|these|a|an) #Adjective? [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'det-inf'\n }, {\n match: '(the|those|these|a|an) #Adjective? [#PresentTense]',\n group: 0,\n tag: 'Noun',\n reason: 'det-pres'\n }, {\n match: '(the|those|these|a|an) #Adjective? [#PastTense]',\n group: 0,\n tag: 'Noun',\n reason: 'det-past'\n }, // this swimming\n {\n match: '(this|that) [#Gerund]',\n group: 0,\n tag: 'Noun',\n reason: 'this-gerund'\n }, // at some point\n {\n match: 'at some [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'at-some-inf'\n }, //air-flow\n {\n match: '(#Noun && @hasHyphen) #Verb',\n tag: 'Noun',\n reason: 'hyphen-verb'\n }, //is no walk\n {\n match: 'is no [#Verb]',\n group: 0,\n tag: 'Noun',\n reason: 'is-no-verb'\n }, //different views than\n {\n match: '[#Verb] than',\n group: 0,\n tag: 'Noun',\n reason: 'correction'\n }, // goes to sleep\n {\n match: '(go|goes|went) to [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'goes-to-verb'\n }, //a close watch on\n {\n match: '(a|an) #Noun [#Infinitive] (#Preposition|#Noun)',\n group: 0,\n tag: 'Noun',\n reason: 'a-noun-inf'\n }, //a tv show\n {\n match: '(a|an) #Noun [#Infinitive]$',\n group: 0,\n tag: 'Noun',\n reason: 'a-noun-inf2'\n }, //do so\n {\n match: 'do [so]',\n group: 0,\n tag: 'Noun',\n reason: 'so-noun'\n }, //is mark hughes\n {\n match: '#Copula [#Infinitive] #Noun',\n group: 0,\n tag: 'Noun',\n reason: 'is-pres-noun'\n }, //a close\n {\n match: '#Determiner #Adverb? [close]',\n group: 0,\n tag: 'Adjective',\n reason: 'a-close'\n }, // what the hell\n {\n match: '#Determiner [(shit|damn|hell)]',\n group: 0,\n tag: 'Noun',\n reason: 'swears-noun'\n }, // the staff were\n {\n match: '(the|these) [#Singular] (were|are)',\n group: 0,\n tag: 'Plural',\n reason: 'singular-were'\n }, // running for congress\n {\n match: '#Gerund #Adjective? for [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-for'\n }, // running to work\n {\n match: '#Gerund #Adjective to [#Infinitive]',\n group: 0,\n tag: 'Noun',\n reason: 'running-to'\n }, // any questions for\n {\n match: '(many|any|some|several) [#PresentTense] for',\n group: 0,\n tag: 'Noun',\n reason: 'any-verbs-for'\n }, // have fun\n {\n match: `(have|had) [#Adjective] #Preposition .`,\n group: 0,\n tag: 'Noun',\n reason: 'have-fun'\n }, // co-founder\n {\n match: `co #Noun`,\n tag: 'Actor',\n reason: 'co-noun'\n }, // to facilitate gas exchange with\n {\n match: `to #PresentTense #Noun [#PresentTense] #Preposition`,\n group: 0,\n tag: 'Noun',\n reason: 'gas-exchange'\n }, // a comdominium, or simply condo\n {\n match: `a #Noun+ or #Adverb+? [#Verb]`,\n group: 0,\n tag: 'Noun',\n reason: 'noun-or-noun'\n }, // operating system\n {\n match: `[#Gerund] system`,\n group: 0,\n tag: 'Noun',\n reason: 'operating-system'\n }, // waited until release\n {\n match: `#PastTense (until|as|through|without) [#PresentTense]`,\n group: 0,\n tag: 'Noun',\n reason: 'waited-until-release'\n }, // selling like hot cakes\n {\n match: `#Gerund like #Adjective? [#PresentTense]`,\n group: 0,\n tag: 'Plural',\n reason: 'like-hot-cakes'\n }, // some valid reason\n {\n match: `some #Adjective [#PresentTense]`,\n group: 0,\n tag: 'Noun',\n reason: 'some-reason'\n }, // for some reason\n {\n match: `for some [#PresentTense]`,\n group: 0,\n tag: 'Noun',\n reason: 'for-some-reason'\n }, // same kind of shouts\n {\n match: `(same|some|the|that|a) kind of [#PresentTense]`,\n group: 0,\n tag: 'Noun',\n reason: 'some-kind-of'\n }, // a type of shout\n {\n match: `(same|some|the|that|a) type of [#PresentTense]`,\n group: 0,\n tag: 'Noun',\n reason: 'some-type-of'\n }, // doing better for fights\n {\n match: `#Gerund #Adjective #Preposition [#PresentTense]`,\n group: 0,\n tag: 'Noun',\n reason: 'doing-better-for-x'\n }, // get better aim\n {\n match: `(get|got|have|had) #Comparative [#PresentTense]`,\n group: 0,\n tag: 'Noun',\n reason: 'got-better-aim'\n }, // i think tipping sucks\n {\n match: `#Pronoun #Infinitive [#Gerund] #PresentTense`,\n group: 0,\n tag: 'Noun',\n reason: 'tipping-sucks'\n } // in various sensory functions\n // {\n // match: `#Preposition #Determiner #Singular [#PresentTense]`,\n // group: 0,\n // tag: 'Noun',\n // reason: 'various-word-functions',\n // },\n ];\n\n const ambig$2 = _ambig;\n const adjectives = `(${ambig$2.adverbAdjective.join('|')})`;\n var _05Adverb = [//still good\n {\n match: '[still] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'still-advb'\n }, //still make\n {\n match: '[still] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'still-verb'\n }, // so hot\n {\n match: '[so] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'so-adv'\n }, // way hotter\n {\n match: '[way] #Comparative',\n group: 0,\n tag: 'Adverb',\n reason: 'way-adj'\n }, // way too hot\n {\n match: '[way] #Adverb #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'way-too-adj'\n }, // all singing\n {\n match: '[all] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'all-verb'\n }, // sing like an angel\n {\n match: '(#Verb && !#Modal) [like]',\n group: 0,\n tag: 'Adverb',\n reason: 'verb-like'\n }, //barely even walk\n {\n match: '(barely|hardly) even',\n tag: 'Adverb',\n reason: 'barely-even'\n }, //even held\n {\n match: '[even] #Verb',\n group: 0,\n tag: 'Adverb',\n reason: 'even-walk'\n }, // even left\n {\n match: 'even left',\n tag: '#Adverb #Verb',\n reason: 'even-left'\n }, //cheering hard - dropped -ly's\n {\n match: '(#PresentTense && !#Copula) [(hard|quick|long|bright|slow|fast|backwards|forwards)]',\n group: 0,\n tag: 'Adverb',\n reason: 'lazy-ly'\n }, // much appreciated\n {\n match: '[much] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'bit-1'\n }, // is well\n {\n match: '#Copula [#Adverb]$',\n group: 0,\n tag: 'Adjective',\n reason: 'is-well'\n }, // a bit cold\n {\n match: 'a [(little|bit|wee) bit?] #Adjective',\n group: 0,\n tag: 'Adverb',\n reason: 'a-bit-cold'\n }, // dark green\n {\n match: `[${adjectives}] #Adjective`,\n group: 0,\n tag: 'Adverb',\n reason: 'dark-green'\n }, // kinda sparkly\n {\n match: `#Adverb [#Adverb]$`,\n group: 0,\n tag: 'Adjective',\n reason: 'kinda-sparkly'\n }, {\n match: `#Adverb [#Adverb] (and|or|then)`,\n group: 0,\n tag: 'Adjective',\n reason: 'kinda-sparkly-and'\n }, // super strong\n {\n match: `[super] #Adjective #Noun`,\n group: 0,\n tag: 'Adverb',\n reason: 'super-strong'\n }];\n\n var _06Value = [// ==== PhoneNumber ====\n //1 800 ...\n {\n match: '1 #Value #PhoneNumber',\n tag: 'PhoneNumber',\n reason: '1-800-Value'\n }, //(454) 232-9873\n {\n match: '#NumericValue #PhoneNumber',\n tag: 'PhoneNumber',\n reason: '(800) PhoneNumber'\n }, // ==== Currency ====\n // chinese yuan\n {\n match: '#Demonym #Currency',\n tag: 'Currency',\n reason: 'demonym-currency'\n }, // ==== Ordinal ====\n {\n match: '[second] #Noun',\n group: 0,\n tag: 'Ordinal',\n reason: 'second-noun'\n }, // ==== Unit ====\n //5 yan\n {\n match: '#Value+ [#Currency]',\n group: 0,\n tag: 'Unit',\n reason: '5-yan'\n }, {\n match: '#Value [(foot|feet)]',\n group: 0,\n tag: 'Unit',\n reason: 'foot-unit'\n }, //minus 7\n {\n match: '(minus|negative) #Value',\n tag: 'Value',\n reason: 'minus-value'\n }, //5 kg.\n {\n match: '#Value [#Abbreviation]',\n group: 0,\n tag: 'Unit',\n reason: 'value-abbr'\n }, {\n match: '#Value [k]',\n group: 0,\n tag: 'Unit',\n reason: 'value-k'\n }, {\n match: '#Unit an hour',\n tag: 'Unit',\n reason: 'unit-an-hour'\n }, //seven point five\n {\n match: '#Value (point|decimal) #Value',\n tag: 'Value',\n reason: 'value-point-value'\n }, // ten bucks\n {\n match: '(#Value|a) [(buck|bucks|grand)]',\n group: 0,\n tag: 'Currency',\n reason: 'value-bucks'\n }, //quarter million\n {\n match: '#Determiner [(half|quarter)] #Ordinal',\n group: 0,\n tag: 'Value',\n reason: 'half-ordinal'\n }, {\n match: 'a #Value',\n tag: 'Value',\n reason: 'a-value'\n }, // ==== Money ====\n {\n match: '[#Value+] #Currency',\n group: 0,\n tag: 'Money',\n reason: '15 usd'\n }, // thousand and two\n {\n match: `(hundred|thousand|million|billion|trillion|quadrillion)+ and #Value`,\n tag: 'Value',\n reason: 'magnitude-and-value'\n }, //'a/an' can mean 1 - \"a hour\"\n {\n match: '!once [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)',\n group: 0,\n tag: 'Value',\n reason: 'a-is-one'\n }];\n\n const ambig$1 = _ambig;\n const verbs = `(${ambig$1.personVerb.join('|')})`;\n let list$2 = [// adj -> gerund\n // amusing his aunt\n {\n match: '[#Adjective] #Possessive #Noun',\n group: 0,\n tag: 'Verb',\n reason: 'gerund-his-noun'\n }, // loving you\n {\n match: '[#Adjective] (us|you)',\n group: 0,\n tag: 'Gerund',\n reason: 'loving-you'\n }, // slowly stunning\n {\n match: '(slowly|quickly) [#Adjective]',\n group: 0,\n tag: 'Gerund',\n reason: 'slowly-adj'\n }, // like\n {\n match: '(#Modal|i|they|we|do) not? [like]',\n group: 0,\n tag: 'PresentTense',\n reason: 'modal-like'\n }, // do not simply like\n {\n match: 'do (simply|just|really|not)+ [(#Adjective|like)]',\n group: 0,\n tag: 'Verb',\n reason: 'do-simply-like'\n }, // does mean\n {\n match: 'does (#Adverb|not)? [#Adjective]',\n group: 0,\n tag: 'PresentTense',\n reason: 'does-mean'\n }, // i mean\n {\n match: 'i (#Adverb|do)? not? [mean]',\n group: 0,\n tag: 'PresentTense',\n reason: 'i-mean'\n }, // { match: '!are (i|you|we) (#Adverb|do)? [#Adjective]', group: 0, tag: 'PresentTense', reason: 'i-mean' },\n // ==== Tense ====\n //he left\n {\n match: '#Noun #Adverb? [left]',\n group: 0,\n tag: 'PastTense',\n reason: 'left-verb'\n }, //this rocks\n {\n match: '(this|that) [#Plural]',\n group: 0,\n tag: 'PresentTense',\n reason: 'this-verbs'\n }, // ==== Auxiliary ====\n //was walking\n {\n match: `[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)`,\n group: 0,\n tag: 'Auxiliary',\n reason: 'copula-walking'\n }, //support a splattering of auxillaries before a verb\n {\n match: `[(has|had) (#Adverb|not)+?] #PastTense`,\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-walked'\n }, //would walk\n {\n match: `#Adverb+? [(#Modal|did)+ (#Adverb|not)+?] #Verb`,\n group: 0,\n tag: 'Auxiliary',\n reason: 'modal-verb'\n }, //would have had\n {\n match: `[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb`,\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-have'\n }, //would be walking\n // { match: `#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'would-be' },\n //had been walking\n // {\n // match: `(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb`,\n // group: 0,\n // tag: 'Auxiliary',\n // reason: 'had-been',\n // },\n //support a splattering of auxillaries before a verb\n {\n match: `[(has|had) (#Adverb|not)+?] #PastTense`,\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-walked'\n }, // will walk\n {\n match: '[(do|does|will|have|had)] (not|#Adverb)+? #Verb',\n group: 0,\n tag: 'Auxiliary',\n reason: 'have-had'\n }, // about to go\n {\n match: '[about to] #Adverb? #Verb',\n group: 0,\n tag: ['Auxiliary', 'Verb'],\n reason: 'about-to'\n }, //would be walking\n {\n match: `#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb`,\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-be'\n }, //were being run\n {\n match: `(were|was) being [#PresentTense]`,\n group: 0,\n tag: 'PastTense',\n reason: 'was-being'\n }, //have run\n // { match: `have #PresentTense`, group: 0, tag: 'PastTense', reason: 'have-vb' },\n //would have had\n {\n match: `[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb`,\n group: 0,\n tag: 'Auxiliary',\n reason: 'would-have'\n }, //had been walking\n {\n match: `(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb`,\n group: 0,\n tag: 'Auxiliary',\n reason: 'had-been'\n }, // was being driven\n {\n match: '[(be|being|been)] #Participle',\n group: 0,\n tag: 'Auxiliary',\n reason: 'being-foo'\n }, // ==== Phrasal ====\n //'foo-up'\n {\n match: '(#Verb && @hasHyphen) up',\n tag: 'PhrasalVerb',\n reason: 'foo-up'\n }, {\n match: '(#Verb && @hasHyphen) off',\n tag: 'PhrasalVerb',\n reason: 'foo-off'\n }, {\n match: '(#Verb && @hasHyphen) over',\n tag: 'PhrasalVerb',\n reason: 'foo-over'\n }, {\n match: '(#Verb && @hasHyphen) out',\n tag: 'PhrasalVerb',\n reason: 'foo-out'\n }, //fall over\n {\n match: '#PhrasalVerb [#PhrasalVerb]',\n group: 0,\n tag: 'Particle',\n reason: 'phrasal-particle'\n }, // went on for\n {\n match: '(lived|went|crept|go) [on] for',\n group: 0,\n tag: 'PhrasalVerb',\n reason: 'went-on'\n }, //back it up\n {\n match: '#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]',\n group: 0,\n tag: 'Adverb',\n reason: 'phrasal-pronoun-advb'\n }, // ==== Copula ====\n //will be running (not copula)\n {\n match: '[will #Adverb? not? #Adverb? be] #Gerund',\n group: 0,\n tag: 'Copula',\n reason: 'will-be-copula'\n }, //for more complex forms, just tag 'be'\n {\n match: 'will #Adverb? not? #Adverb? [be] #Adjective',\n group: 0,\n tag: 'Copula',\n reason: 'be-copula'\n }, // ==== Infinitive ====\n //march to\n {\n match: '[march] (up|down|back|to|toward)',\n group: 0,\n tag: 'Infinitive',\n reason: 'march-to'\n }, //must march\n {\n match: '#Modal [march]',\n group: 0,\n tag: 'Infinitive',\n reason: 'must-march'\n }, //let him glue\n {\n match: '(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)',\n group: 0,\n tag: 'Infinitive',\n reason: 'let-him-glue'\n }, //he quickly foo\n // { match: '#Noun #Adverb [#Noun]', group: 0, tag: 'Verb', reason: 'quickly-foo' },\n //will secure our\n {\n match: 'will [#Adjective]',\n group: 0,\n tag: 'Verb',\n reason: 'will-adj'\n }, //he disguised the thing\n {\n match: '#Pronoun [#Adjective] #Determiner #Adjective? #Noun',\n group: 0,\n tag: 'Verb',\n reason: 'he-adj-the'\n }, //is eager to go\n {\n match: '#Copula [#Adjective] to #Verb',\n group: 0,\n tag: 'Verb',\n reason: 'adj-to'\n }, // open the door\n {\n match: '[open] #Determiner',\n group: 0,\n tag: 'Infinitive',\n reason: 'open-the'\n }, // compromises are possible\n {\n match: '[#PresentTense] (are|were|was) #Adjective',\n group: 0,\n tag: 'Plural',\n reason: 'compromises-are-possible'\n }, // would wade\n {\n match: `#Modal [${verbs}]`,\n group: 0,\n tag: 'Verb',\n reason: 'would-mark'\n }, {\n match: `#Adverb [${verbs}]`,\n group: 0,\n tag: 'Verb',\n reason: 'really-mark'\n }, //to mark\n {\n match: '(to|#Modal) [mark]',\n group: 0,\n tag: 'PresentTense',\n reason: 'to-mark'\n }, // checkmate is\n {\n match: '^[#Infinitive] (is|was)',\n group: 0,\n tag: 'Noun',\n reason: 'checkmate-is'\n }, // wade smith\n {\n match: `${verbs} #Person`,\n tag: 'Person',\n reason: 'rob-smith'\n }, // wade m. Cooper\n {\n match: `${verbs} #Acronym #ProperNoun`,\n tag: 'Person',\n reason: 'rob-a-smith'\n }, // damn them\n {\n match: '[shit] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear1-verb'\n }, {\n match: '[damn] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear2-verb'\n }, {\n match: '[fuck] (#Determiner|#Possessive|them)',\n group: 0,\n tag: 'Verb',\n reason: 'swear3-verb'\n }, // become overly weakened\n {\n match: '(become|fall|grow) #Adverb? [#PastTense]',\n group: 0,\n tag: 'Adjective',\n reason: 'overly-weakened'\n }, // a completely beaten man\n {\n match: '(a|an) #Adverb [#Participle] #Noun',\n group: 0,\n tag: 'Adjective',\n reason: 'completely-beaten'\n }, // whose name was\n {\n match: 'whose [#PresentTense] #Copula',\n group: 0,\n tag: 'Noun',\n reason: 'whos-name-was'\n }, // give up on reason\n {\n match: `#PhrasalVerb #PhrasalVerb #Preposition [#PresentTense]`,\n group: 0,\n tag: 'Noun',\n reason: 'given-up-on-x'\n } // wants to be #Particle\n ];\n var _07Verbs = list$2;\n\n let list$1 = [// ==== Region ====\n //West Norforlk\n {\n match: '(west|north|south|east|western|northern|southern|eastern)+ #Place',\n tag: 'Region',\n reason: 'west-norfolk'\n }, //some us-state acronyms (exlude: al, in, la, mo, hi, me, md, ok..)\n {\n match: '#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]',\n group: 0,\n tag: 'Region',\n reason: 'us-state'\n }, // portland oregon\n {\n match: 'portland [or]',\n group: 0,\n tag: 'Region',\n reason: 'portland-or'\n }, //Foo District\n {\n match: '#ProperNoun+ (district|region|province|county|prefecture|municipality|territory|burough|reservation)',\n tag: 'Region',\n reason: 'foo-district'\n }, //District of Foo\n {\n match: '(district|region|province|municipality|territory|burough|state) of #ProperNoun',\n tag: 'Region',\n reason: 'district-of-Foo'\n }, // in Foo California\n {\n match: 'in [#ProperNoun] #Place',\n group: 0,\n tag: 'Place',\n reason: 'propernoun-place'\n }, // ==== Address ====\n {\n match: '#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)',\n tag: 'Address',\n reason: 'address-st'\n } // in houston\n // { match: `in [${places}]`, group: 0, tag: 'Place', reason: 'in-paris' },\n // { match: `near [${places}]`, group: 0, tag: 'Place', reason: 'near-paris' },\n // { match: `at [${places}]`, group: 0, tag: 'Place', reason: 'at-paris' },\n // { match: `from [${places}]`, group: 0, tag: 'Place', reason: 'from-paris' },\n // { match: `to [${places}]`, group: 0, tag: 'Place', reason: 'to-paris' },\n // { match: `#Place [${places}]`, group: 0, tag: 'Place', reason: 'tokyo-paris' },\n // // houston texas\n // { match: `[${places}] #Place`, group: 0, tag: 'Place', reason: 'paris-france' },\n ];\n var _08Place = list$1;\n\n var _09Org = [//John & Joe's\n {\n match: '#Noun (&|n) #Noun',\n tag: 'Organization',\n reason: 'Noun-&-Noun'\n }, // teachers union of Ontario\n {\n match: '#Organization of the? #ProperNoun',\n tag: 'Organization',\n reason: 'org-of-place',\n safe: true\n }, //walmart USA\n {\n match: '#Organization #Country',\n tag: 'Organization',\n reason: 'org-country'\n }, //organization\n {\n match: '#ProperNoun #Organization',\n tag: 'Organization',\n reason: 'titlecase-org'\n }, //FitBit Inc\n {\n match: '#ProperNoun (ltd|co|inc|dept|assn|bros)',\n tag: 'Organization',\n reason: 'org-abbrv'\n }, // the OCED\n {\n match: 'the [#Acronym]',\n group: 0,\n tag: 'Organization',\n reason: 'the-acronym',\n safe: true\n }, // global trade union\n {\n match: '(world|global|international|national|#Demonym) #Organization',\n tag: 'Organization',\n reason: 'global-org'\n }, // schools\n {\n match: '#Noun+ (public|private) school',\n tag: 'School',\n reason: 'noun-public-school'\n }];\n\n const ambig = _ambig;\n const nouns = `(${ambig.personNoun.join('|')})`;\n const months = `(${ambig.personMonth.join('|')})`;\n const places = `(${ambig.personPlace.join('|')})`;\n let list = [// ==== Honorific ====\n {\n match: '[(1st|2nd|first|second)] #Honorific',\n group: 0,\n tag: 'Honorific',\n reason: 'ordinal-honorific'\n }, {\n match: '[(private|general|major|corporal|lord|lady|secretary|premier)] #Honorific? #Person',\n group: 0,\n tag: 'Honorific',\n reason: 'ambg-honorifics'\n }, // ==== FirstNames ====\n //is foo Smith\n {\n match: '#Copula [(#Noun|#PresentTense)] #LastName',\n group: 0,\n tag: 'FirstName',\n reason: 'copula-noun-lastname'\n }, //pope francis\n {\n match: '(lady|queen|sister) #ProperNoun',\n tag: 'FemaleName',\n reason: 'lady-titlecase',\n safe: true\n }, {\n match: '(king|pope|father) #ProperNoun',\n tag: 'MaleName',\n reason: 'pope-titlecase',\n safe: true\n }, //ambiguous-but-common firstnames\n {\n match: '[(will|may|april|june|said|rob|wade|ray|rusty|drew|miles|jack|chuck|randy|jan|pat|cliff|bill)] #LastName',\n group: 0,\n tag: 'FirstName',\n reason: 'maybe-lastname'\n }, // ==== Nickname ====\n // Dwayne 'the rock' Johnson\n {\n match: '#FirstName [#Determiner #Noun] #LastName',\n group: 0,\n tag: 'NickName',\n reason: 'first-noun-last'\n }, //my buddy\n {\n match: '#Possessive [#FirstName]',\n group: 0,\n tag: 'Person',\n reason: 'possessive-name'\n }, {\n match: '#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun',\n tag: 'Person',\n reason: 'titlecase-acronym-titlecase',\n safe: true\n }, //ludwig van beethovan\n {\n match: '#Acronym #LastName',\n tag: 'Person',\n reason: 'acronym-latname',\n safe: true\n }, //jk rowling\n {\n match: '#Person (jr|sr|md)',\n tag: 'Person',\n reason: 'person-honorific'\n }, //peter II\n {\n match: '#Person #Person the? #RomanNumeral',\n tag: 'Person',\n reason: 'roman-numeral'\n }, //'Professor Fink', 'General McCarthy'\n {\n match: '#FirstName [/^[^aiurck]$/]',\n group: 0,\n tag: ['Acronym', 'Person'],\n reason: 'john-e'\n }, //Doctor john smith jr\n //general pearson\n {\n match: '#Honorific #Person',\n tag: 'Person',\n reason: 'honorific-person'\n }, //remove single 'mr'\n {\n match: '#Honorific #Acronym',\n tag: 'Person',\n reason: 'Honorific-TitleCase'\n }, //j.k Rowling\n {\n match: '#Noun van der? #Noun',\n tag: 'Person',\n reason: 'van der noun',\n safe: true\n }, //king of spain\n {\n match: '(king|queen|prince|saint|lady) of #Noun',\n tag: 'Person',\n reason: 'king-of-noun',\n safe: true\n }, //lady Florence\n {\n match: '(prince|lady) #Place',\n tag: 'Person',\n reason: 'lady-place'\n }, //saint Foo\n {\n match: '(king|queen|prince|saint) #ProperNoun',\n tag: 'Person',\n reason: 'saint-foo'\n }, //Foo U Ford\n {\n match: '[#ProperNoun] #Person',\n group: 0,\n tag: 'Person',\n reason: 'proper-person',\n safe: true\n }, // al sharpton\n {\n match: 'al (#Person|#ProperNoun)',\n tag: 'Person',\n reason: 'al-borlen',\n safe: true\n }, //ferdinand de almar\n {\n match: '#FirstName de #Noun',\n tag: 'Person',\n reason: 'bill-de-noun'\n }, //Osama bin Laden\n {\n match: '#FirstName (bin|al) #Noun',\n tag: 'Person',\n reason: 'bill-al-noun'\n }, //John L. Foo\n {\n match: '#FirstName #Acronym #ProperNoun',\n tag: 'Person',\n reason: 'bill-acronym-title'\n }, //Andrew Lloyd Webber\n {\n match: '#FirstName #FirstName #ProperNoun',\n tag: 'Person',\n reason: 'bill-firstname-title'\n }, //Mr Foo\n {\n match: '#Honorific #FirstName? #ProperNoun',\n tag: 'Person',\n reason: 'dr-john-Title'\n }, //peter the great\n {\n match: '#FirstName the #Adjective',\n tag: 'Person',\n reason: 'name-the-great'\n }, //very common-but-ambiguous lastnames\n {\n match: '#FirstName (green|white|brown|hall|young|king|hill|cook|gray|price)',\n tag: 'Person',\n reason: 'bill-green'\n }, // faith smith\n {\n match: `${nouns} #Person`,\n tag: 'Person',\n reason: 'ray-smith',\n safe: true\n }, // faith m. Smith\n {\n match: `${nouns} #Acronym? #ProperNoun`,\n tag: 'Person',\n reason: 'ray-a-smith',\n safe: true\n }, //give to april\n {\n match: `#Infinitive #Determiner? #Adjective? #Noun? (to|for) [${months}]`,\n group: 0,\n tag: 'Person',\n reason: 'ambig-person'\n }, // remind june\n {\n match: `#Infinitive [${months}]`,\n group: 0,\n tag: 'Person',\n reason: 'infinitive-person'\n }, // may waits for\n // { match: `[${months}] #PresentTense for`, group: 0, tag: 'Person', reason: 'ambig-active-for' },\n // may waits to\n // { match: `[${months}] #PresentTense to`, group: 0, tag: 'Person', reason: 'ambig-active-to' },\n // april will\n {\n match: `[${months}] #Modal`,\n group: 0,\n tag: 'Person',\n reason: 'ambig-modal'\n }, // may be\n {\n match: `[may] be`,\n group: 0,\n tag: 'Verb',\n reason: 'may-be'\n }, // would april\n {\n match: `#Modal [${months}]`,\n group: 0,\n tag: 'Person',\n reason: 'modal-ambig'\n }, // it is may\n {\n match: `#Copula [${months}]`,\n group: 0,\n tag: 'Person',\n reason: 'is-may'\n }, // may is\n {\n match: `[${months}] #Copula`,\n group: 0,\n tag: 'Person',\n reason: 'may-is'\n }, // with april\n {\n match: `that [${months}]`,\n group: 0,\n tag: 'Person',\n reason: 'that-month'\n }, // with april\n {\n match: `with [${months}]`,\n group: 0,\n tag: 'Person',\n reason: 'with-month'\n }, // for april\n {\n match: `for [${months}]`,\n group: 0,\n tag: 'Person',\n reason: 'for-month'\n }, // this april\n {\n match: `this [${months}]`,\n group: 0,\n tag: 'Month',\n reason: 'this-may'\n }, //maybe not 'this'\n // next april\n {\n match: `next [${months}]`,\n group: 0,\n tag: 'Month',\n reason: 'next-may'\n }, // last april\n {\n match: `last [${months}]`,\n group: 0,\n tag: 'Month',\n reason: 'last-may'\n }, // wednesday april\n {\n match: `#Date [${months}]`,\n group: 0,\n tag: 'Month',\n reason: 'date-may'\n }, // may 5th\n {\n match: `[${months}] the? #Value`,\n group: 0,\n tag: 'Month',\n reason: 'may-5th'\n }, // 5th of may\n {\n match: `#Value of [${months}]`,\n group: 0,\n tag: 'Month',\n reason: '5th-of-may'\n }, // dick van dyke\n {\n match: '#ProperNoun (van|al|bin) #ProperNoun',\n tag: 'Person',\n reason: 'title-van-title',\n safe: true\n }, //jose de Sucre\n {\n match: '#ProperNoun (de|du) la? #ProperNoun',\n tag: 'Person',\n reason: 'title-de-title',\n safe: true\n }, //Jani K. Smith\n {\n match: '#Singular #Acronym #LastName',\n tag: '#Person',\n reason: 'title-acro-noun',\n safe: true\n }, //John Foo\n {\n match: '#FirstName (#Noun && #ProperNoun) #ProperNoun?',\n tag: 'Person',\n reason: 'firstname-titlecase'\n }, //Joe K. Sombrero\n {\n match: '#FirstName #Acronym #Noun',\n tag: 'Person',\n reason: 'n-acro-noun',\n safe: true\n }, //Anthony de Marco\n {\n match: '#FirstName [(de|di|du|van|von) #Person]',\n group: 0,\n tag: 'LastName',\n reason: 'de-firstname'\n }, // Paris Berelc\n {\n match: `[${places}] (#ProperNoun && !#Place)`,\n group: 0,\n tag: 'FirstName',\n reason: 'place-firstname'\n }];\n var _10People = list;\n\n const parseSyntax = matchSyntax;\n const unique$1 = _unique;\n let matches$1 = [];\n matches$1 = matches$1.concat(_01Misc);\n matches$1 = matches$1.concat(_02Dates);\n matches$1 = matches$1.concat(_03Adjective);\n matches$1 = matches$1.concat(_04Noun);\n matches$1 = matches$1.concat(_05Adverb);\n matches$1 = matches$1.concat(_06Value);\n matches$1 = matches$1.concat(_07Verbs);\n matches$1 = matches$1.concat(_08Place);\n matches$1 = matches$1.concat(_09Org);\n matches$1 = matches$1.concat(_10People); // cache the easier conditions up-front\n\n const cacheRequired = function (reg) {\n let needTags = [];\n let needWords = [];\n reg.forEach(obj => {\n if (obj.optional === true || obj.negative === true) {\n return;\n }\n\n if (obj.tag !== undefined) {\n needTags.push(obj.tag);\n }\n\n if (obj.word !== undefined) {\n needWords.push(obj.word);\n }\n });\n return {\n tags: unique$1(needTags),\n words: unique$1(needWords)\n };\n }; // for speed, enumerate (a|b|c) to three matches\n\n\n const allLists = function (m) {\n let more = [];\n let lists = m.reg.filter(r => r.fastOr !== undefined);\n\n if (lists.length === 1) {\n let i = m.reg.findIndex(r => r.fastOr !== undefined);\n Object.keys(m.reg[i].fastOr).forEach(w => {\n let newM = Object.assign({}, m);\n newM.reg = newM.reg.slice(0);\n newM.reg[i] = Object.assign({}, newM.reg[i]);\n newM.reg[i].word = w;\n delete newM.reg[i].operator;\n delete newM.reg[i].fastOr; // newM.reason += '-' + w\n\n more.push(newM);\n });\n }\n\n return more;\n }; // parse them\n\n\n let all = [];\n matches$1.forEach(m => {\n m.reg = parseSyntax(m.match);\n let enumerated = allLists(m);\n\n if (enumerated.length > 0) {\n all = all.concat(enumerated);\n } else {\n all.push(m); // console.log(m)\n }\n });\n all.forEach(m => {\n m.required = cacheRequired(m.reg);\n return m;\n }); // console.log(all.length)\n // console.log(all[all.length - 1])\n\n var matches_1 = all;\n\n const matches = matches_1;\n const unique = _unique; // return intersection of array-of-arrays\n\n const hasEvery = function (chances) {\n if (chances.length === 0) {\n return [];\n }\n\n let obj = {};\n chances.forEach(arr => {\n arr = unique(arr);\n\n for (let i = 0; i < arr.length; i++) {\n obj[arr[i]] = obj[arr[i]] || 0;\n obj[arr[i]] += 1;\n }\n });\n let res = Object.keys(obj);\n res = res.filter(k => obj[k] === chances.length);\n res = res.map(num => Number(num));\n return res;\n };\n\n const runner$1 = function (doc) {\n //find phrases to try for each match\n matches.forEach(m => {\n let allChances = [];\n m.required.words.forEach(w => {\n allChances.push(doc._cache.words[w] || []);\n });\n m.required.tags.forEach(tag => {\n allChances.push(doc._cache.tags[tag] || []);\n });\n let worthIt = hasEvery(allChances);\n\n if (worthIt.length === 0) {\n return;\n }\n\n let phrases = worthIt.map(index => doc.list[index]);\n let tryDoc = doc.buildFrom(phrases); // phrases getting tagged\n\n let match = tryDoc.match(m.reg, m.group);\n\n if (match.found) {\n if (m.safe === true) {\n match.tagSafe(m.tag, m.reason);\n } else {\n match.tag(m.tag, m.reason);\n }\n }\n });\n };\n\n var runner_1 = runner$1; // console.log(hasEvery([[1, 2, 2, 3], [2, 3], []]))\n\n const fixMisc = fixMisc$1;\n const runner = runner_1; // runner: 250ms\n // misc: 40ms\n //sequence of match-tag statements to correct mis-tags\n\n const corrections$1 = function (doc) {\n runner(doc);\n fixMisc(doc);\n return doc;\n };\n\n var _04Correction = corrections$1;\n\n const init = _01Init;\n const fallbacks = _02Fallbacks;\n const contractions = _03Contractions;\n const corrections = _04Correction;\n /** POS-tag all terms in this document */\n\n const tagger$1 = function (doc) {\n let terms = doc.termList(); // check against any known-words\n\n doc = init(doc, terms); // everything has gotta be something. ¯\\_(:/)_/¯\n\n doc = fallbacks(doc, terms); // support \"didn't\" & \"spencer's\"\n\n doc = contractions(doc); //set our cache, to speed things up\n\n doc.cache(); // wiggle-around the results, so they make more sense\n\n doc = corrections(doc); // remove our cache, as it's invalidated now\n\n doc.uncache(); // run any user-given tagger functions\n\n doc.world.taggers.forEach(fn => {\n fn(doc);\n });\n return doc;\n };\n\n var _02Tagger = tagger$1;\n\n const addMethod$a = function (Doc) {\n /** */\n class Abbreviations extends Doc {\n stripPeriods() {\n this.termList().forEach(t => {\n if (t.tags.Abbreviation === true && t.next) {\n t.post = t.post.replace(/^\\./, '');\n }\n\n let str = t.text.replace(/\\./, '');\n t.set(str);\n });\n return this;\n }\n\n addPeriods() {\n this.termList().forEach(t => {\n t.post = t.post.replace(/^\\./, '');\n t.post = '.' + t.post;\n });\n return this;\n }\n\n }\n\n Abbreviations.prototype.unwrap = Abbreviations.prototype.stripPeriods;\n\n Doc.prototype.abbreviations = function (n) {\n let match = this.match('#Abbreviation');\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new Abbreviations(match.list, this, this.world);\n };\n\n return Doc;\n };\n\n var Abbreviations = addMethod$a;\n\n const hasPeriod = /\\./;\n\n const addMethod$9 = function (Doc) {\n /** */\n class Acronyms extends Doc {\n stripPeriods() {\n this.termList().forEach(t => {\n let str = t.text.replace(/\\./g, '');\n t.set(str);\n });\n return this;\n }\n\n addPeriods() {\n this.termList().forEach(t => {\n let str = t.text.replace(/\\./g, '');\n str = str.split('').join('.'); // don't add a end-period if there's a sentence-end one\n\n if (hasPeriod.test(t.post) === false) {\n str += '.';\n }\n\n t.set(str);\n });\n return this;\n }\n\n }\n\n Acronyms.prototype.unwrap = Acronyms.prototype.stripPeriods;\n Acronyms.prototype.strip = Acronyms.prototype.stripPeriods;\n\n Doc.prototype.acronyms = function (n) {\n let match = this.match('#Acronym');\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new Acronyms(match.list, this, this.world);\n };\n\n return Doc;\n };\n\n var Acronyms = addMethod$9;\n\n const addMethod$8 = function (Doc) {\n /** split into approximate sub-sentence phrases */\n Doc.prototype.clauses = function (n) {\n // an awkward way to disambiguate a comma use\n let commas = this.if('@hasComma').notIf('@hasComma @hasComma') //fun, cool...\n .notIf('@hasComma . .? (and|or) .') //cool, and fun\n .notIf('(#City && @hasComma) #Country') //'toronto, canada'\n .notIf('(#WeekDay && @hasComma) #Date') //'tuesday, march 2nd'\n .notIf('(#Date && @hasComma) #Year') //'july 6, 1992'\n .notIf('@hasComma (too|also)$') //at end of sentence\n .match('@hasComma');\n let found = this.splitAfter(commas);\n let quotes = found.quotations();\n found = found.splitOn(quotes);\n let parentheses = found.parentheses();\n found = found.splitOn(parentheses); // it is cool and it is ..\n\n let conjunctions = found.if('#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb').match('#Conjunction');\n found = found.splitBefore(conjunctions); // if it is this then that\n\n let condition = found.if('if .{2,9} then .').match('then');\n found = found.splitBefore(condition); // misc clause partitions\n\n found = found.splitBefore('as well as .');\n found = found.splitBefore('such as .');\n found = found.splitBefore('in addition to .'); // semicolons, dashes\n\n found = found.splitAfter('@hasSemicolon');\n found = found.splitAfter('@hasDash'); // passive voice verb - '.. which was robbed is empty'\n // let passive = found.match('#Noun (which|that) (was|is) #Adverb? #PastTense #Adverb?')\n // if (passive.found) {\n // found = found.splitAfter(passive)\n // }\n // //which the boy robbed\n // passive = found.match('#Noun (which|that) the? #Noun+ #Adverb? #PastTense #Adverb?')\n // if (passive.found) {\n // found = found.splitAfter(passive)\n // }\n // does there appear to have relative/subordinate clause still?\n\n let tooLong = found.filter(d => d.wordCount() > 5 && d.match('#Verb+').length >= 2);\n\n if (tooLong.found) {\n let m = tooLong.splitAfter('#Noun .* #Verb .* #Noun+');\n found = found.splitOn(m.eq(0));\n }\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Doc(found.list, this, this.world);\n };\n\n return Doc;\n };\n\n var Clauses = addMethod$8;\n\n const addMethod$7 = function (Doc) {\n /** */\n class Contractions extends Doc {\n constructor(list, from, world) {\n super(list, from, world);\n this.contracted = null;\n }\n /** turn didn't into 'did not' */\n\n\n expand() {\n this.list.forEach(p => {\n let terms = p.terms(); //change the case?\n\n let isTitlecase = terms[0].isTitleCase();\n terms.forEach((t, i) => {\n //use the implicit text\n t.set(t.implicit || t.text);\n t.implicit = undefined; //add whitespace\n\n if (i < terms.length - 1 && t.post === '') {\n t.post += ' ';\n }\n }); //set titlecase\n\n if (isTitlecase) {\n terms[0].toTitleCase();\n }\n });\n return this;\n }\n\n } //find contractable, expanded-contractions\n // const findExpanded = r => {\n // let remain = r.not('#Contraction')\n // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)')\n // m.concat(remain.match('(they|we|you|i) have'))\n // m.concat(remain.match('i am'))\n // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not'))\n // return m\n // }\n\n\n Doc.prototype.contractions = function (n) {\n //find currently-contracted\n let found = this.match('@hasContraction+'); //(may want to split these up)\n //todo: split consecutive contractions\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Contractions(found.list, this, this.world);\n }; //aliases\n\n\n Doc.prototype.expanded = Doc.prototype.isExpanded;\n Doc.prototype.contracted = Doc.prototype.isContracted;\n return Doc;\n };\n\n var Contractions = addMethod$7;\n\n const addMethod$6 = function (Doc) {\n //pull it apart..\n const parse = function (doc) {\n let things = doc.splitAfter('@hasComma').splitOn('(and|or) not?').not('(and|or) not?');\n let beforeLast = doc.match('[.] (and|or)', 0);\n return {\n things: things,\n conjunction: doc.match('(and|or) not?'),\n beforeLast: beforeLast,\n hasOxford: beforeLast.has('@hasComma')\n };\n };\n /** cool, fun, and nice */\n\n\n class Lists extends Doc {\n /** coordinating conjunction */\n conjunctions() {\n return this.match('(and|or)');\n }\n /** split-up by list object */\n\n\n parts() {\n return this.splitAfter('@hasComma').splitOn('(and|or) not?');\n }\n /** remove the conjunction */\n\n\n items() {\n return parse(this).things;\n }\n /** add a new unit to the list */\n\n\n add(str) {\n this.forEach(p => {\n let beforeLast = parse(p).beforeLast;\n beforeLast.append(str); //add a comma to it\n\n beforeLast.termList(0).addPunctuation(',');\n });\n return this;\n }\n /** remove any matching unit from the list */\n\n\n remove(match) {\n return this.items().if(match).remove();\n }\n /** return only lists that use a serial comma */\n\n\n hasOxfordComma() {\n return this.filter(doc => parse(doc).hasOxford);\n }\n\n addOxfordComma() {\n let items = this.items();\n let needsComma = items.eq(items.length - 2);\n\n if (needsComma.found && needsComma.has('@hasComma') === false) {\n needsComma.post(', ');\n }\n\n return this;\n }\n\n removeOxfordComma() {\n let items = this.items();\n let needsComma = items.eq(items.length - 2);\n\n if (needsComma.found && needsComma.has('@hasComma') === true) {\n needsComma.post(' ');\n }\n\n return this;\n }\n\n } // aliases\n\n\n Lists.prototype.things = Lists.prototype.items;\n\n Doc.prototype.lists = function (n) {\n let m = this.if('@hasComma+ .? (and|or) not? .'); // person-list\n\n let nounList = m.match('(#Noun|#Adjective|#Determiner|#Article)+ #Conjunction not? (#Article|#Determiner)? #Adjective? #Noun+').if('#Noun');\n let adjList = m.match('(#Adjective|#Adverb)+ #Conjunction not? #Adverb? #Adjective+');\n let verbList = m.match('(#Verb|#Adverb)+ #Conjunction not? #Adverb? #Verb+');\n let result = nounList.concat(adjList);\n result = result.concat(verbList);\n result = result.if('@hasComma');\n\n if (typeof n === 'number') {\n result = m.get(n);\n }\n\n return new Lists(result.list, this, this.world);\n };\n\n return Doc;\n };\n\n var Lists = addMethod$6;\n\n const noPlural = '(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)'; //certain words can't be plural, like 'peace'\n\n const hasPlural$1 = function (doc) {\n if (doc.has('#Plural') === true) {\n return true;\n } // these can't be plural\n\n\n if (doc.has(noPlural) === true) {\n return false;\n }\n\n return true;\n };\n\n var hasPlural_1 = hasPlural$1;\n\n const irregulars = {\n hour: 'an',\n heir: 'an',\n heirloom: 'an',\n honest: 'an',\n honour: 'an',\n honor: 'an',\n uber: 'an' //german u\n\n }; //pronounced letters of acronyms that get a 'an'\n\n const an_acronyms = {\n a: true,\n e: true,\n f: true,\n h: true,\n i: true,\n l: true,\n m: true,\n n: true,\n o: true,\n r: true,\n s: true,\n x: true\n }; //'a' regexes\n\n const a_regexs = [/^onc?e/i, //'wu' sound of 'o'\n /^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u'\n /^eul/i];\n\n const makeArticle = function (doc) {\n //no 'the john smith', but 'a london hotel'\n if (doc.has('#Person') || doc.has('#Place')) {\n return '';\n } //no a/an if it's plural\n\n\n if (doc.has('#Plural')) {\n return 'the';\n }\n\n let str = doc.text('normal').trim(); //explicit irregular forms\n\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str];\n } //spelled-out acronyms\n\n\n let firstLetter = str.substr(0, 1);\n\n if (doc.has('^@isAcronym') && an_acronyms.hasOwnProperty(firstLetter)) {\n return 'an';\n } //'a' regexes\n\n\n for (let i = 0; i < a_regexs.length; i++) {\n if (a_regexs[i].test(str)) {\n return 'a';\n }\n } //basic vowel-startings\n\n\n if (/^[aeiou]/i.test(str)) {\n return 'an';\n }\n\n return 'a';\n };\n\n var getArticle$1 = makeArticle;\n\n const isPlural$7 = [/(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /men$/i, /.tia$/i, /(m|l)ice$/i]; //similar to plural/singularize rules, but not the same\n\n const isSingular = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i];\n var _rules = {\n isSingular: isSingular,\n isPlural: isPlural$7\n };\n\n const rules = _rules;\n const endS = /s$/; // double-check this term, if it is not plural, or singular.\n // (this is a partial copy of ./tagger/fallbacks/plural)\n // fallback plural if it ends in an 's'.\n\n const isPlural$6 = function (str) {\n // isSingular suffix rules\n if (rules.isSingular.find(reg => reg.test(str))) {\n return false;\n } // does it end in an s?\n\n\n if (endS.test(str) === true) {\n return true;\n } // is it a plural like 'fungi'?\n\n\n if (rules.isPlural.find(reg => reg.test(str))) {\n return true;\n }\n\n return null;\n };\n\n var isPlural_1$1 = isPlural$6;\n\n const exceptions = {\n he: 'his',\n she: 'hers',\n they: 'theirs',\n we: 'ours',\n i: 'mine',\n you: 'yours',\n her: 'hers',\n their: 'theirs',\n our: 'ours',\n my: 'mine',\n your: 'yours'\n }; // turn \"David\" to \"David's\"\n\n const toPossessive$1 = function (doc) {\n let str = doc.text('text').trim(); // exceptions\n\n if (exceptions.hasOwnProperty(str)) {\n doc.replaceWith(exceptions[str], true);\n doc.tag('Possessive', 'toPossessive');\n return;\n } // flanders'\n\n\n if (/s$/.test(str)) {\n str += \"'\";\n doc.replaceWith(str, true);\n doc.tag('Possessive', 'toPossessive');\n return;\n } //normal form:\n\n\n str += \"'s\";\n doc.replaceWith(str, true);\n doc.tag('Possessive', 'toPossessive');\n return;\n };\n\n var toPossessive_1 = toPossessive$1;\n\n // pull these apart, if necessary\n\n const parse$2 = function (doc) {\n let res = {\n main: doc\n }; //support 'mayor of chicago' as one noun-phrase\n\n if (doc.has('#Noun (of|by|for) .')) {\n let m = doc.splitAfter('[#Noun+]', 0);\n res.main = m.eq(0);\n res.post = m.eq(1);\n }\n\n return res;\n };\n\n var parse_1 = parse$2;\n\n const hasPlural = hasPlural_1;\n const getArticle = getArticle$1;\n const isPlural$5 = isPlural_1$1;\n const toPossessive = toPossessive_1;\n const parse$1 = parse_1;\n const methods$4 = {\n /** overload the original json with noun information */\n json: function (options) {\n let n = null;\n\n if (typeof options === 'number') {\n n = options;\n options = null;\n }\n\n options = options || {\n text: true,\n normal: true,\n trim: true,\n terms: true\n };\n let res = [];\n this.forEach(doc => {\n let json = doc.json(options)[0];\n json.article = getArticle(doc);\n res.push(json);\n });\n\n if (n !== null) {\n return res[n];\n }\n\n return res;\n },\n\n /** get all adjectives describing this noun*/\n adjectives: function () {\n let list = this.lookAhead('^(that|who|which)? (was|is|will)? be? #Adverb? #Adjective+');\n list = list.concat(this.lookBehind('#Adjective+ #Adverb?$'));\n list = list.match('#Adjective');\n return list.sort('index');\n },\n isPlural: function () {\n return this.if('#Plural'); //assume tagger has run?\n },\n hasPlural: function () {\n return this.filter(d => hasPlural(d));\n },\n toPlural: function (agree) {\n let toPlural = this.world.transforms.toPlural;\n this.forEach(doc => {\n if (doc.has('#Plural') || hasPlural(doc) === false) {\n return;\n } // double-check it isn't an un-tagged plural\n\n\n let main = parse$1(doc).main;\n let str = main.text('reduced');\n\n if (!main.has('#Singular') && isPlural$5(str) === true) {\n return;\n }\n\n str = toPlural(str, this.world);\n main.replace(str).tag('#Plural'); // 'an apple' -> 'apples'\n\n if (agree) {\n let an = main.lookBefore('(an|a) #Adjective?$').not('#Adjective');\n\n if (an.found === true) {\n an.remove();\n }\n }\n });\n return this;\n },\n toSingular: function (agree) {\n let toSingular = this.world.transforms.toSingular;\n this.forEach(doc => {\n if (doc.has('^#Singular+$') || hasPlural(doc) === false) {\n return;\n } // double-check it isn't an un-tagged plural\n\n\n let main = parse$1(doc).main;\n let str = main.text('reduced');\n\n if (!main.has('#Plural') && isPlural$5(str) !== true) {\n return;\n }\n\n str = toSingular(str, this.world);\n main.replace(str).tag('#Singular'); // add an article\n\n if (agree) {\n // 'apples' -> 'an apple'\n let start = doc;\n let adj = doc.lookBefore('#Adjective');\n\n if (adj.found) {\n start = adj;\n }\n\n let article = getArticle(start);\n start.insertBefore(article);\n }\n });\n return this;\n },\n toPossessive: function () {\n this.forEach(d => {\n toPossessive(d);\n });\n return this;\n }\n };\n var methods_1 = methods$4;\n\n const methods$3 = methods_1;\n\n const addMethod$5 = function (Doc) {\n /** */\n class Nouns extends Doc {} // add-in our methods\n\n\n Object.assign(Nouns.prototype, methods$3);\n\n Doc.prototype.nouns = function (n, opts = {}) {\n // don't split 'paris, france'\n let keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas\n\n let m = this.not(keep).splitAfter('@hasComma'); // combine them back together\n\n m = m.concat(keep); // don't combine over scare-quotes\n\n let quotes = m.quotations();\n\n if (quotes.found) {\n m = m.splitOn(quotes.eq(0));\n }\n\n m = m.match('#Noun+ (of|by)? the? #Noun+?'); //nouns that we don't want in these results, for weird reasons\n\n if (opts.keep_anaphora !== true) {\n m = m.not('#Pronoun');\n m = m.not('(there|these)');\n m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays\n // //allow possessives like \"spencer's\", but not generic ones like,\n\n m = m.not('(my|our|your|their|her|his)');\n }\n\n m = m.not('(of|for|by|the)$');\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n return new Nouns(m.list, this, this.world);\n };\n\n return Doc;\n };\n\n var Nouns = addMethod$5;\n\n const open = /\\(/;\n const close = /\\)/;\n\n const addMethod$4 = function (Doc) {\n /** anything between (these things) */\n class Parentheses extends Doc {\n /** remove the parentheses characters */\n unwrap() {\n this.list.forEach(p => {\n let first = p.terms(0);\n first.pre = first.pre.replace(open, '');\n let last = p.lastTerm();\n last.post = last.post.replace(close, '');\n });\n return this;\n }\n\n }\n\n Doc.prototype.parentheses = function (n) {\n let list = [];\n this.list.forEach(p => {\n let terms = p.terms(); //look for opening brackets\n\n for (let i = 0; i < terms.length; i += 1) {\n const t = terms[i];\n\n if (open.test(t.pre)) {\n //look for the closing bracket..\n for (let o = i; o < terms.length; o += 1) {\n if (close.test(terms[o].post)) {\n let len = o - i + 1;\n list.push(p.buildFrom(t.id, len));\n i = o;\n break;\n }\n }\n }\n }\n }); //support nth result\n\n if (typeof n === 'number') {\n if (list[n]) {\n list = [list[n]];\n } else {\n list = [];\n }\n\n return new Parentheses(list, this, this.world);\n }\n\n return new Parentheses(list, this, this.world);\n };\n\n return Doc;\n };\n\n var Parentheses = addMethod$4;\n\n const addMethod$3 = function (Doc) {\n /** */\n class Possessives extends Doc {\n constructor(list, from, world) {\n super(list, from, world);\n this.contracted = null;\n }\n /** turn didn't into 'did not' */\n\n\n strip() {\n this.list.forEach(p => {\n let terms = p.terms();\n terms.forEach(t => {\n let str = t.text.replace(/'s$/, '');\n t.set(str || t.text);\n });\n });\n return this;\n }\n\n } //find contractable, expanded-contractions\n // const findExpanded = r => {\n // let remain = r.not('#Contraction')\n // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)')\n // m.concat(remain.match('(they|we|you|i) have'))\n // m.concat(remain.match('i am'))\n // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not'))\n // return m\n // }\n\n\n Doc.prototype.possessives = function (n) {\n //find currently-contracted\n let found = this.match('#Noun+? #Possessive'); //todo: split consecutive contractions\n\n if (typeof n === 'number') {\n found = found.get(n);\n }\n\n return new Possessives(found.list, this, this.world);\n };\n\n return Doc;\n };\n\n var Possessives = addMethod$3;\n\n const pairs = {\n '\\u0022': '\\u0022',\n // 'StraightDoubleQuotes'\n '\\uFF02': '\\uFF02',\n // 'StraightDoubleQuotesWide'\n '\\u0027': '\\u0027',\n // 'StraightSingleQuotes'\n '\\u201C': '\\u201D',\n // 'CommaDoubleQuotes'\n '\\u2018': '\\u2019',\n // 'CommaSingleQuotes'\n '\\u201F': '\\u201D',\n // 'CurlyDoubleQuotesReversed'\n '\\u201B': '\\u2019',\n // 'CurlySingleQuotesReversed'\n '\\u201E': '\\u201D',\n // 'LowCurlyDoubleQuotes'\n '\\u2E42': '\\u201D',\n // 'LowCurlyDoubleQuotesReversed'\n '\\u201A': '\\u2019',\n // 'LowCurlySingleQuotes'\n '\\u00AB': '\\u00BB',\n // 'AngleDoubleQuotes'\n '\\u2039': '\\u203A',\n // 'AngleSingleQuotes'\n // Prime 'non quotation'\n '\\u2035': '\\u2032',\n // 'PrimeSingleQuotes'\n '\\u2036': '\\u2033',\n // 'PrimeDoubleQuotes'\n '\\u2037': '\\u2034',\n // 'PrimeTripleQuotes'\n // Prime 'quotation' variation\n '\\u301D': '\\u301E',\n // 'PrimeDoubleQuotes'\n '\\u0060': '\\u00B4',\n // 'PrimeSingleQuotes'\n '\\u301F': '\\u301E' // 'LowPrimeDoubleQuotesReversed'\n\n };\n const hasOpen = RegExp('(' + Object.keys(pairs).join('|') + ')');\n\n const addMethod$2 = function (Doc) {\n /** \"these things\" */\n class Quotations extends Doc {\n /** remove the quote characters */\n unwrap() {\n return this;\n }\n\n }\n\n Doc.prototype.quotations = function (n) {\n let list = [];\n this.list.forEach(p => {\n let terms = p.terms(); //look for opening quotes\n\n for (let i = 0; i < terms.length; i += 1) {\n const t = terms[i];\n\n if (hasOpen.test(t.pre)) {\n let char = (t.pre.match(hasOpen) || [])[0];\n let want = pairs[char]; // if (!want) {\n // console.warn('missing quote char ' + char)\n // }\n //look for the closing bracket..\n\n for (let o = i; o < terms.length; o += 1) {\n if (terms[o].post.indexOf(want) !== -1) {\n let len = o - i + 1;\n list.push(p.buildFrom(t.id, len));\n i = o;\n break;\n }\n }\n }\n }\n }); //support nth result\n\n if (typeof n === 'number') {\n if (list[n]) {\n list = [list[n]];\n } else {\n list = [];\n }\n\n return new Quotations(list, this, this.world);\n }\n\n return new Quotations(list, this, this.world);\n }; // alias\n\n\n Doc.prototype.quotes = Doc.prototype.quotations;\n return Doc;\n };\n\n var Quotations = addMethod$2;\n\n const toInfinitive$2 = function (parsed, world) {\n let verb = parsed.verb; //1. if it's already infinitive\n\n let str = verb.text('reduced');\n\n if (verb.has('#Infinitive')) {\n return str;\n } // 2. world transform does the heavy-lifting\n\n\n let tense = null;\n\n if (verb.has('#PastTense')) {\n tense = 'PastTense';\n } else if (verb.has('#Gerund')) {\n tense = 'Gerund';\n } else if (verb.has('#PresentTense')) {\n tense = 'PresentTense';\n } else if (verb.has('#Participle')) {\n tense = 'Participle';\n } else if (verb.has('#Actor')) {\n tense = 'Actor';\n }\n\n return world.transforms.toInfinitive(str, world, tense);\n };\n\n var toInfinitive_1 = toInfinitive$2;\n\n // we walk -> plural\n // the most-recent noun-phrase, before this verb.\n\n const findNoun = function (vb) {\n let noun = vb.lookBehind('#Noun+').last();\n return noun;\n }; //sometimes you can tell if a verb is plural/singular, just by the verb\n // i am / we were\n // othertimes you need its subject 'we walk' vs 'i walk'\n\n\n const isPlural$4 = function (parsed) {\n let vb = parsed.verb;\n\n if (vb.has('(are|were|does)') || parsed.auxiliary.has('(are|were|does)')) {\n return true;\n } //consider its prior noun\n\n\n let noun = findNoun(vb);\n\n if (noun.has('(he|she|many|both)')) {\n return false;\n }\n\n if (noun.has('(we|they|you|i)')) {\n return true;\n }\n\n if (noun.has('#Person')) {\n return false;\n }\n\n if (noun.has('#Plural')) {\n return true;\n }\n\n if (noun.has('#Singular')) {\n return false;\n }\n\n if (vb.has('(is|am|do|was)')) {\n return false;\n }\n\n if (parsed.auxiliary.has('(is|am|do|was)') && !parsed.negative.found) {\n return false;\n }\n\n return null;\n };\n\n var isPlural_1 = isPlural$4;\n\n const toInfinitive$1 = toInfinitive_1;\n const isPlural$3 = isPlural_1; // #Modal : would walk -> 'would not walk'\n // #Copula : is -> 'is not'\n // #PastTense : walked -> did not walk\n // #PresentTense : walks -> does not walk\n // #Gerund : walking: -> not walking\n // #Infinitive : walk -> do not walk\n\n const toNegative$1 = function (parsed, world) {\n let vb = parsed.verb; // if it's already negative...\n\n if (parsed.negative.found) {\n return;\n } // would walk -> would not walk\n\n\n if (parsed.auxiliary.found) {\n parsed.auxiliary.eq(0).append('not'); // 'would not have' ➔ 'would not have'\n\n if (parsed.auxiliary.has('#Modal have not')) {\n parsed.auxiliary.replace('have not', 'not have');\n }\n\n return;\n } // is walking -> is not walking\n\n\n if (vb.has('(#Copula|will|has|had|do)')) {\n vb.append('not');\n return;\n } // walked -> did not walk\n\n\n if (vb.has('#PastTense')) {\n let inf = toInfinitive$1(parsed, world);\n vb.replaceWith(inf, true);\n vb.prepend('did not');\n return;\n } // walks -> does not walk\n\n\n if (vb.has('#PresentTense')) {\n let inf = toInfinitive$1(parsed, world);\n vb.replaceWith(inf, true);\n\n if (isPlural$3(parsed)) {\n vb.prepend('do not');\n } else {\n vb.prepend('does not');\n }\n\n return;\n } //walking -> not walking\n\n\n if (vb.has('#Gerund')) {\n let inf = toInfinitive$1(parsed, world);\n vb.replaceWith(inf, true);\n vb.prepend('not');\n return;\n } //fallback 1: walk -> does not walk\n\n\n if (isPlural$3(parsed)) {\n vb.prepend('does not');\n return;\n } //fallback 2: walk -> do not walk\n\n\n vb.prepend('do not');\n return;\n };\n\n var toNegative_1 = toNegative$1;\n\n // get the prior verb most-likely doing this action\n // (it can not-exist - 'close the door')\n\n const getSubject$2 = function (vb) {\n let behind = vb.lookBehind();\n let lastNoun = behind.nouns(null, {\n keep_anaphora: true\n }).last(); // support 'that' and 'this'\n\n if (!lastNoun.found) {\n lastNoun = behind.match('(that|this|each)').last();\n lastNoun = lastNoun.tag('#Noun').nouns();\n }\n\n return lastNoun;\n };\n\n var getSubject_1 = getSubject$2;\n\n const getSubject$1 = getSubject_1; // turn 'would not really walk up' into parts\n\n const parseVerb$1 = function (vb) {\n let parsed = {\n adverb: vb.match('#Adverb+'),\n // 'really'\n negative: vb.match('#Negative'),\n // 'not'\n auxiliary: vb.match('#Auxiliary+').not('(#Negative|#Adverb)'),\n // 'will' of 'will go'\n particle: vb.match('#Particle'),\n // 'up' of 'pull up'\n verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)'),\n original: vb,\n subject: getSubject$1(vb)\n }; // parsed.subject.debug()\n // for conjugation purposes,\n // 'should start looking' -> 'should start'\n\n if (parsed.verb.has('(#PresentTense|#PastTense|#Infinitive) #Gerund$')) {\n parsed.verb = parsed.verb.not('#Gerund$');\n } // fallback, if no verb found\n\n\n if (!parsed.verb.found) {\n // blank-everything\n Object.keys(parsed).forEach(k => {\n parsed[k] = parsed[k].not('.');\n }); // it's all the verb\n\n parsed.verb = vb;\n return parsed;\n } //\n\n\n if (parsed.adverb && parsed.adverb.found) {\n let match = parsed.adverb.text('reduced') + '$';\n\n if (vb.has(match)) {\n parsed.adverbAfter = true;\n }\n }\n\n return parsed;\n };\n\n var parse = parseVerb$1;\n\n const isPlural$2 = isPlural_1;\n /** too many special cases for is/was/will be*/\n\n const toBe$1 = parsed => {\n let isI = false;\n let plural = isPlural$2(parsed);\n let isNegative = parsed.negative.found; //account for 'i is' -> 'i am' irregular\n // if (vb.parent && vb.parent.has('i #Adverb? #Copula')) {\n // isI = true;\n // }\n // 'i look', not 'i looks'\n\n if (parsed.verb.lookBehind('i (#Adverb|#Verb)?$').found) {\n isI = true;\n }\n\n let obj = {\n PastTense: 'was',\n PresentTense: 'is',\n FutureTense: 'will be',\n Infinitive: 'is',\n Gerund: 'being',\n Actor: '',\n PerfectTense: 'been',\n Pluperfect: 'been'\n };\n\n if (plural) {\n obj.PastTense = 'were';\n obj.PresentTense = 'are';\n obj.Infinitive = 'are';\n } //\"i is\" -> \"i am\"\n\n\n if (isI === true) {\n obj.PastTense = 'was';\n obj.PresentTense = 'am';\n obj.Infinitive = 'am';\n }\n\n if (isNegative) {\n obj.PastTense += ' not';\n obj.PresentTense += ' not';\n obj.FutureTense = 'will not be';\n obj.Infinitive += ' not';\n obj.PerfectTense = 'not ' + obj.PerfectTense;\n obj.Pluperfect = 'not ' + obj.Pluperfect;\n obj.Gerund = 'not ' + obj.Gerund;\n }\n\n return obj;\n };\n\n var toBe_1 = toBe$1;\n\n const doModal$1 = function (parsed) {\n let str = parsed.verb.text();\n let res = {\n PastTense: str + ' have',\n PresentTense: str,\n FutureTense: str,\n Infinitive: str // Gerund: ,\n // Actor: '',\n // PerfectTense: '',\n // Pluperfect: '',\n\n };\n return res;\n };\n\n var doModal_1 = doModal$1;\n\n const toInfinitive = toInfinitive_1;\n const toBe = toBe_1;\n const doModal = doModal_1;\n const isPlural$1 = isPlural_1;\n\n const conjugate$2 = function (parsed, world) {\n let verb = parsed.verb; //special handling of 'is', 'will be', etc.\n\n if (verb.has('#Copula') || verb.out('normal') === 'be' && parsed.auxiliary.has('will')) {\n return toBe(parsed);\n } // special handling of 'are walking'\n\n\n if (parsed.auxiliary.has('are') && verb.has('#Gerund')) {\n let og = parsed.original.clone();\n let past = og.clone().replace('are', 'were');\n let fut = og.clone().replace('are', 'will be');\n let infinitive = toInfinitive(parsed, world);\n let res = {\n PastTense: past.text(),\n PresentTense: og.text(),\n FutureTense: fut.text(),\n Infinitive: infinitive\n };\n return res;\n } // special handling of 'he could.'\n\n\n if (verb.has('#Modal')) {\n return doModal(parsed);\n } // get the root form\n\n\n let infinitive = toInfinitive(parsed, world);\n\n if (!infinitive) {\n return {};\n }\n\n let forms = world.transforms.conjugate(infinitive, world);\n forms.Infinitive = infinitive; // Singular: the dog chases\n // Plural: the dogs chase\n\n let bePlural = isPlural$1(parsed);\n\n if (bePlural === true) {\n forms.PresentTense = forms.Infinitive; // the dogs chase\n } // add particle to phrasal verbs ('fall over')\n\n\n let hasHyphen = parsed.verb.termList(0).hasHyphen();\n\n if (parsed.particle.found) {\n let particle = parsed.particle.text();\n let space = hasHyphen === true ? '-' : ' ';\n Object.keys(forms).forEach(k => forms[k] += space + particle);\n } //apply negative\n\n\n const isNegative = parsed.negative.found;\n forms.FutureTense = forms.FutureTense || 'will ' + forms.Infinitive;\n\n if (isNegative) {\n forms.PastTense = 'did not ' + forms.Infinitive;\n forms.FutureTense = 'will not ' + forms.Infinitive;\n\n if (bePlural) {\n forms.PresentTense = 'do not ' + forms.Infinitive;\n forms.Infinitive = 'do not ' + forms.Infinitive;\n } else {\n forms.PresentTense = 'does not ' + forms.Infinitive;\n forms.Infinitive = 'does not ' + forms.Infinitive;\n }\n\n forms.Gerund = 'not ' + forms.Gerund;\n }\n\n return forms;\n };\n\n var conjugate_1 = conjugate$2;\n\n const conjugate$1 = conjugate_1; // 'i could drive' -> 'i could have driven'\n // if something is 'modal-ish' we are forced to use past-participle\n // ('i could drove' is wrong)\n\n const useParticiple$1 = function (parsed) {\n if (parsed.auxiliary.has('(could|should|would|may|can|must)')) {\n return true;\n }\n\n if (parsed.auxiliary.has('am .+? being')) {\n return true;\n }\n\n if (parsed.auxiliary.has('had .+? been')) {\n return true;\n }\n\n return false;\n }; // conjugate 'drive' ➔ 'have driven'\n\n\n const toParticiple$1 = function (parsed, world) {\n //is it already a participle?\n if (parsed.auxiliary.has('(have|had)') && parsed.verb.has('#Participle')) {\n return;\n } // try to swap the main verb to its participle form\n\n\n let obj = conjugate$1(parsed, world);\n let str = obj.Participle || obj.PastTense;\n\n if (str) {\n parsed.verb.replaceWith(str, false);\n } // 'am being driven' ➔ 'have been driven'\n\n\n if (parsed.auxiliary.has('am .+? being')) {\n parsed.auxiliary.remove('am');\n parsed.auxiliary.replace('being', 'have been');\n } // add a 'have'\n\n\n if (!parsed.auxiliary.has('have')) {\n parsed.auxiliary.append('have');\n } // tag it as a participle\n\n\n parsed.verb.tag('Participle', 'toParticiple'); // turn 'i can swim' to -> 'i could swim'\n\n parsed.auxiliary.replace('can', 'could'); //'must be' ➔ 'must have been'\n\n parsed.auxiliary.replace('be have', 'have been'); //'not have' ➔ 'have not'\n\n parsed.auxiliary.replace('not have', 'have not'); // ensure all new words are tagged right\n\n parsed.auxiliary.tag('Auxiliary');\n };\n\n var participle = {\n useParticiple: useParticiple$1,\n toParticiple: toParticiple$1\n };\n\n const toNegative = toNegative_1;\n const parseVerb = parse;\n const isPlural = isPlural_1;\n const getSubject = getSubject_1;\n const conjugate = conjugate_1;\n const {\n toParticiple,\n useParticiple\n } = participle; // remove any tense-information in auxiliary verbs\n\n const makeNeutral = function (parsed) {\n //remove tense-info from auxiliaries\n parsed.auxiliary.remove('(will|are|am|being)');\n parsed.auxiliary.remove('(did|does)');\n parsed.auxiliary.remove('(had|has|have)'); //our conjugation includes the 'not' and the phrasal-verb particle\n\n parsed.particle.remove();\n parsed.negative.remove();\n return parsed;\n };\n\n var methods$2 = {\n /** overload the original json with verb information */\n json: function (options) {\n let n = null;\n\n if (typeof options === 'number') {\n n = options;\n options = null;\n }\n\n options = options || {\n text: true,\n normal: true,\n trim: true,\n terms: true\n };\n let res = [];\n this.forEach(p => {\n let json = p.json(options)[0];\n let parsed = parseVerb(p);\n json.parts = {};\n Object.keys(parsed).forEach(k => {\n if (parsed[k] && parsed[k].isA === 'Doc') {\n json.parts[k] = parsed[k].text('normal');\n } else {\n json.parts[k] = parsed[k];\n }\n });\n json.isNegative = p.has('#Negative');\n json.conjugations = conjugate(parsed, this.world);\n res.push(json);\n });\n\n if (n !== null) {\n return res[n];\n }\n\n return res;\n },\n\n /** grab the adverbs describing these verbs */\n adverbs: function () {\n let list = []; // look at internal adverbs\n\n this.forEach(vb => {\n let advb = parseVerb(vb).adverb;\n\n if (advb.found) {\n list = list.concat(advb.list);\n }\n }); // look for leading adverbs\n\n let m = this.lookBehind('#Adverb+$');\n\n if (m.found) {\n list = m.list.concat(list);\n } // look for trailing adverbs\n\n\n m = this.lookAhead('^#Adverb+');\n\n if (m.found) {\n list = list.concat(m.list);\n }\n\n return this.buildFrom(list);\n },\n /// Verb Inflection\n\n /**return verbs like 'we walk' and not 'spencer walks' */\n isPlural: function () {\n let list = [];\n this.forEach(vb => {\n let parsed = parseVerb(vb);\n\n if (isPlural(parsed, this.world) === true) {\n list.push(vb.list[0]);\n }\n });\n return this.buildFrom(list);\n },\n\n /** return verbs like 'spencer walks' and not 'we walk' */\n isSingular: function () {\n let list = [];\n this.forEach(vb => {\n let parsed = parseVerb(vb);\n\n if (isPlural(parsed, this.world) === false) {\n list.push(vb.list[0]);\n }\n });\n return this.buildFrom(list);\n },\n /// Conjugation\n\n /** return all forms of this verb */\n conjugate: function () {\n let result = [];\n this.forEach(vb => {\n let parsed = parseVerb(vb);\n let forms = conjugate(parsed, this.world);\n result.push(forms);\n });\n return result;\n },\n\n /** walk ➔ walked*/\n toPastTense: function () {\n this.forEach(vb => {\n let parsed = parseVerb(vb); // should we support 'would swim' ➔ 'would have swam'\n\n if (useParticiple(parsed)) {\n toParticiple(parsed, this.world);\n return;\n } // don't conjugate 'go away'.\n\n\n if (vb.has('#Imperative')) {\n return;\n } // don't conjugate 'to be'\n\n\n if (vb.has('be') && vb.lookBehind('to$').found) {\n return;\n } // handle 'is raining' -> 'was raining'\n\n\n if (parsed.verb.has('#Gerund') && parsed.auxiliary.has('(is|will|was)')) {\n vb.replace('is', 'was');\n return;\n }\n\n let str = conjugate(parsed, this.world).PastTense;\n\n if (str) {\n parsed = makeNeutral(parsed);\n parsed.verb.replaceWith(str, false);\n parsed.auxiliary.remove('(do|did|will)'); //??\n }\n });\n return this;\n },\n\n /** walk ➔ walks */\n toPresentTense: function () {\n this.forEach(vb => {\n // don't conjugate 'go away'.\n if (vb.has('#Imperative')) {\n return;\n }\n\n let parsed = parseVerb(vb);\n let obj = conjugate(parsed, this.world);\n let str = obj.PresentTense; // 'i look', not 'i looks'\n\n if (vb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) {\n str = obj.Infinitive;\n }\n\n if (str) {\n //awkward support for present-participle form\n // -- should we support 'have been swimming' ➔ 'am swimming'\n if (parsed.auxiliary.has('(have|had) been')) {\n parsed.auxiliary.replace('(have|had) been', 'am being');\n\n if (obj.Particle) {\n str = obj.Particle || obj.PastTense;\n }\n\n return;\n }\n\n parsed.verb.replaceWith(str, false);\n parsed.verb.tag('PresentTense');\n parsed = makeNeutral(parsed); // avoid 'he would walks'\n\n parsed.auxiliary.remove('#Modal');\n parsed.auxiliary.remove('(do|did|will)'); //??\n }\n });\n return this;\n },\n\n /** walk ➔ will walk*/\n toFutureTense: function () {\n this.forEach(vb => {\n let parsed = parseVerb(vb); // 'i should drive' is already future-enough\n\n if (useParticiple(parsed)) {\n return;\n } // don't conjugate 'go away'.\n\n\n if (vb.has('#Imperative')) {\n return;\n }\n\n let str = conjugate(parsed, this.world).FutureTense;\n\n if (str) {\n parsed = makeNeutral(parsed); // avoid 'he would will go'\n\n parsed.auxiliary.remove('#Modal');\n parsed.verb.replaceWith(str, false);\n parsed.verb.tag('FutureTense');\n parsed.auxiliary.remove('(do|did|will)'); //??\n // parsed.auxiliary.remove('(do|did|will)') //??\n }\n });\n return this;\n },\n\n /** walks ➔ walk */\n toInfinitive: function () {\n this.forEach(vb => {\n let parsed = parseVerb(vb);\n let str = conjugate(parsed, this.world).Infinitive;\n\n if (str) {\n vb.replaceWith(str, false);\n vb.tag('Infinitive');\n }\n });\n return this;\n },\n\n /** walk ➔ walking */\n toGerund: function () {\n this.forEach(vb => {\n let parsed = parseVerb(vb);\n let str = conjugate(parsed, this.world).Gerund;\n\n if (str) {\n vb.replaceWith(str, false);\n vb.tag('Gerund');\n }\n });\n return this;\n },\n\n /** drive ➔ driven - naked past-participle if it exists, otherwise past-tense */\n toParticiple: function () {\n this.forEach(vb => {\n let parsed = parseVerb(vb);\n let noAux = !parsed.auxiliary.found;\n toParticiple(parsed, this.world); // dirty trick to ensure our new auxiliary is found\n\n if (noAux) {\n parsed.verb.prepend(parsed.auxiliary.text());\n parsed.auxiliary.remove();\n }\n });\n return this;\n },\n /// Negation\n\n /** return only verbs with 'not'*/\n isNegative: function () {\n return this.if('#Negative');\n },\n\n /** return only verbs without 'not'*/\n isPositive: function () {\n return this.ifNo('#Negative');\n },\n\n /** return only commands - verbs in imperative mood */\n isImperative: function () {\n return this.if('#Imperative');\n },\n\n /** add a 'not' to these verbs */\n toNegative: function () {\n this.list.forEach(p => {\n let doc = this.buildFrom([p]);\n let parsed = parseVerb(doc);\n toNegative(parsed, doc.world);\n });\n return this;\n },\n\n /** remove 'not' from these verbs */\n toPositive: function () {\n let m = this.match('do not #Verb');\n\n if (m.found) {\n m.remove('do not');\n }\n\n return this.remove('#Negative');\n },\n\n /** who, or what is doing this action? */\n subject: function () {\n let list = [];\n this.forEach(p => {\n let found = getSubject(p);\n\n if (found.list[0]) {\n list.push(found.list[0]);\n }\n });\n return this.buildFrom(list);\n }\n };\n\n const methods$1 = methods$2;\n\n const addMethod$1 = function (Doc) {\n /** */\n class Verbs extends Doc {} // add-in our methods\n\n\n Object.assign(Verbs.prototype, methods$1); // aliases\n\n Verbs.prototype.negate = Verbs.prototype.toNegative;\n\n Doc.prototype.verbs = function (n) {\n let match = this.match('(#Adverb|#Auxiliary|#Verb|#Negative|#Particle)+'); // try to ignore leading and trailing adverbs\n\n match = match.not('^#Adverb+');\n match = match.not('#Adverb+$'); // handle commas:\n // don't split 'really, really'\n\n let keep = match.match('(#Adverb && @hasComma) #Adverb'); // // but split the other commas\n\n let m = match.not(keep).splitAfter('@hasComma'); // i was shocked looking at...\n // let gerund = m.match('#PastTense #Gerund')\n // if (!gerund.has('(been|am|#Auxiliary) #Gerund')) {\n // m = m.splitBefore(gerund.match('#Gerund'))\n // }\n // combine them back together\n\n m = m.concat(keep);\n m.sort('index'); //handle slashes?\n //ensure there's actually a verb\n\n m = m.if('#Verb'); // the reason he will is ...\n\n if (m.has('(is|was)$')) {\n m = m.splitBefore('(is|was)$');\n } //ensure it's not two verbs\n\n\n if (m.has('#PresentTense #Adverb #PresentTense')) {\n m = m.splitBefore('#Adverb #PresentTense');\n } //grab (n)th result\n\n\n if (typeof n === 'number') {\n m = m.get(n);\n }\n\n let vb = new Verbs(m.list, this, this.world);\n return vb;\n };\n\n return Doc;\n };\n\n var Verbs = addMethod$1;\n\n const addMethod = function (Doc) {\n /** */\n class People extends Doc {// honorifics(){}\n // firstNames(){}\n // lastNames(){}\n // pronouns(){}\n // toPronoun(){}\n // fromPronoun(){}\n }\n\n Doc.prototype.people = function (n) {\n let match = this.splitAfter('@hasComma');\n match = match.match('#Person+'); //grab (n)th result\n\n if (typeof n === 'number') {\n match = match.get(n);\n }\n\n return new People(match.list, this, this.world);\n };\n\n return Doc;\n };\n\n var People = addMethod;\n\n const subsets = _simple;\n const subclass = [Abbreviations, Acronyms, Clauses, Contractions, Lists, Nouns, Parentheses, Possessives, Quotations, Verbs, People];\n\n const extend$1 = function (Doc) {\n // add basic methods\n Object.keys(subsets).forEach(k => Doc.prototype[k] = subsets[k]); // add subclassed methods\n\n subclass.forEach(addFn => addFn(Doc));\n return Doc;\n };\n\n var Subset = extend$1;\n\n const methods = {\n misc: methods$6,\n selections: _simple\n };\n const tagger = _02Tagger;\n const tokenize$1 = _01Tokenizer;\n const extend = Subset;\n /** a parsed text object */\n\n class Doc$1 {\n constructor(list, from, world) {\n this.list = list; // this.reasons = []\n //quiet these properties in console.logs\n\n Object.defineProperty(this, 'from', {\n enumerable: false,\n value: from,\n writable: true\n }); //borrow some missing data from parent\n\n if (world === undefined && from !== undefined) {\n world = from.world;\n } //'world' getter\n\n\n Object.defineProperty(this, 'world', {\n enumerable: false,\n value: world,\n writable: true\n }); //fast-scans for our data\n\n Object.defineProperty(this, '_cache', {\n enumerable: false,\n writable: true,\n value: {}\n }); //'found' getter\n\n Object.defineProperty(this, 'found', {\n get: () => this.list.length > 0\n }); //'length' getter\n\n Object.defineProperty(this, 'length', {\n get: () => this.list.length\n }); // this is way easier than .constructor.name...\n\n Object.defineProperty(this, 'isA', {\n get: () => 'Doc'\n });\n }\n /** run part-of-speech tagger on all results*/\n\n\n tagger() {\n return tagger(this);\n }\n /** pool is stored on phrase objects */\n\n\n pool() {\n if (this.list.length > 0) {\n return this.list[0].pool;\n }\n\n return this.all().list[0].pool;\n }\n\n }\n /** create a new Document object */\n\n\n Doc$1.prototype.buildFrom = function (list) {\n list = list.map(p => p.clone(true)); // new this.constructor()\n\n let doc = new Doc$1(list, this, this.world);\n return doc;\n };\n /** create a new Document from plaintext. */\n\n\n Doc$1.prototype.fromText = function (str) {\n let list = tokenize$1(str, this.world, this.pool());\n return this.buildFrom(list);\n };\n\n Object.assign(Doc$1.prototype, methods.misc);\n Object.assign(Doc$1.prototype, methods.selections); //add sub-classes\n\n extend(Doc$1); //aliases\n\n const aliases = {\n untag: 'unTag',\n and: 'match',\n notIf: 'ifNo',\n only: 'if',\n onlyIf: 'if'\n };\n Object.keys(aliases).forEach(k => Doc$1.prototype[k] = Doc$1.prototype[aliases[k]]);\n var Doc_1 = Doc$1;\n\n const lexiconStep = _01Lexicon; //for the tokenize-only build, we want to keep\n\n const smallTagger = function (doc) {\n let terms = doc.termList();\n lexiconStep(terms, doc.world); // run any user-given tagger functions\n\n doc.world.taggers.forEach(fn => {\n fn(doc);\n });\n return doc;\n };\n\n var tiny = smallTagger;\n\n const tokenize = _01Tokenizer;\n const fromJSON = fromJSON_1;\n const version = _version;\n const World = World_1;\n const Doc = Doc_1;\n const Phrase = Phrase_1;\n const Term = Term_1;\n const Pool = Pool_1;\n const tinyTagger = tiny;\n const parseMatch = matchSyntax;\n\n function instance(worldInstance) {\n //blast-out our word-lists, just once\n let world = worldInstance;\n /** parse and tag text into a compromise object */\n\n const nlp = function (text = '', lexicon) {\n if (lexicon) {\n world.addWords(lexicon);\n }\n\n let list = tokenize(text, world);\n let doc = new Doc(list, null, world);\n doc.tagger();\n return doc;\n };\n /** parse text into a compromise object, without running POS-tagging */\n\n\n nlp.tokenize = function (text = '', lexicon) {\n let w = world;\n\n if (lexicon) {\n w = w.clone();\n w.words = {};\n w.addWords(lexicon);\n }\n\n let list = tokenize(text, w);\n let doc = new Doc(list, null, w);\n\n if (lexicon || doc.world.taggers.length > 0) {\n tinyTagger(doc);\n }\n\n return doc;\n };\n /** mix in a compromise-plugin */\n\n\n nlp.extend = function (fn) {\n fn(Doc, world, this, Phrase, Term, Pool);\n return this;\n };\n /** create a compromise Doc object from .json() results */\n\n\n nlp.fromJSON = function (json) {\n let list = fromJSON(json, world);\n return new Doc(list, null, world);\n };\n /** make a deep-copy of the library state */\n\n\n nlp.clone = function () {\n return instance(world.clone());\n };\n /** log our decision-making for debugging */\n\n\n nlp.verbose = function (bool = true) {\n world.verbose(bool);\n return this;\n };\n /** grab currently-used World object */\n\n\n nlp.world = function () {\n return world;\n };\n /** pre-parse any match statements */\n\n\n nlp.parseMatch = function (str, opts) {\n return parseMatch(str, opts);\n };\n /** current version of the library */\n\n\n nlp.version = version; // aliases\n\n nlp.import = nlp.load;\n nlp.plugin = nlp.extend;\n return nlp;\n }\n\n var src = instance(new World());\n\n return src;\n\n})));\n","const fromTemplate = function (doc) {\n let tmpl = doc.template('short description')\n if (tmpl) {\n let json = tmpl.json() || {}\n return json.description || ''\n }\n return null\n}\nmodule.exports = fromTemplate\n","const preProcess = function (doc) {\n doc.parentheses().remove()\n return doc\n}\nmodule.exports = preProcess\n","const cleanUp = function (s) {\n // 'an actor and was a politician'\n s.remove('and #Copula .*')\n return s\n}\n\n// founded in 1952 as the flagship ..\nconst findPivot = function (s) {\n let m = s.matchOne('#Copula+ (a|an|the|any|one) of?')\n if (!m.found) {\n m = s.matchOne('#Copula+')\n }\n if (!m.found) {\n m = s.matchOne('refers to (a|an|the|any)? of?')\n }\n if (!m.found) {\n m = s.matchOne('(constitutes|describes) (a|an|the|any)? of?')\n }\n if (!m.found) {\n return null\n }\n let f = s.splitOn(m)\n let verb = f.eq(1)\n let article = verb.match(`(a|an|the|any)? of?`)\n verb.remove(`(a|an|the|any)? of?`)\n return {\n before: f.eq(0),\n verb: f.eq(1),\n article: article,\n after: cleanUp(f.eq(2))\n }\n}\nmodule.exports = findPivot\n","const byClause = function (s) {\n // 'an actor and also a politician'\n s.remove('and (also|eventually) (a|an|the|#Possessive) .*')\n // 'an actor who was a politician'\n s.remove('!of (who|that|which) #Adverb? (#Copula|form|comprise|forms|comprises) .*')\n // past-tense verbs 'located in spain'\n s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*')\n //\n s.remove('#Adverb? (located|situated|founded|found|formed|built|developed) .*')\n\n return s\n}\nmodule.exports = byClause\n","const safeCuts = function (s) {\n // 'in hamilton, Canada'\n if (s.has('(#Place && @hasComma) #Country+$')) {\n s.remove('#Country+$')\n }\n // 'which spans the '\n if (s.has('#Noun (that|which|who) #PresentTense the .*')) {\n s.remove(' that #PresentTense the .*')\n }\n // 'owned by the ...'\n if (s.has('#Noun #PastTense by the .*')) {\n s.remove('#PastTense by the .*')\n }\n // 'an american actress'\n s.remove('#Demonym')\n // professional hockey player\n s.remove('(professional|former)')\n\n //event-templates\n s.remove('and? held annually .*')\n s.remove('taking place each .*')\n\n // ordinal templates - the fifth fastest ..\n s.remove('^one of (the|many|several|#Value)+')\n s.remove('^(a|an|the)? #Ordinal? #Superlative')\n s.remove('^(a|an|the)? #Ordinal? most #Adjective')\n\n //\n s.remove('born in .*')\n s.remove('born #Date+ in? #Place+?')\n s.remove('(first|initially|originally)? (located|founded|started|based|formed) in .*')\n s.remove('(which|who|that) (is|was) .*')\n s.remove('^the name of')\n\n return s\n}\nmodule.exports = safeCuts\n","const isIndependent = function (c) {\n if (c.has('^(and|the|which|who|whom|also|a|an|the)')) {\n return true\n }\n // 'part of abu dabi'\n if (c.has('^(west|north|south|east|part) of')) {\n return true\n }\n // 'written by .'\n if (c.has('^#PastTense by .')) {\n return true\n }\n // 'sometimes called ..'\n if (c.has('^(occasionally|sometimes|frequently)')) {\n return true\n }\n // 'such as ..'\n if (c.has('^such as')) {\n return true\n }\n // 'featuring gold feathers ..'\n if (c.has('^(including|featuring|depicting)')) {\n return true\n }\n return false\n}\n\nconst hardCuts = function (s) {\n // .. in san fransisco\n if (s.has('#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$')) {\n s.remove('(located|based) in #Place+$')\n } else if (\n s.has(\n '(#Noun|#Value) (in|on) the #Adjective? (region|province|district|coast|city) of #Place+$'\n )\n ) {\n s.remove('(in|on) the #Adjective? (region|province|district|coast|city) of #Place+$')\n } else if (s.has('(#Noun|#Value) in #Place+$')) {\n s.remove('in #Place+$')\n } else {\n s.remove('and? part of #Place+$')\n s.remove('and? near #Place+$')\n }\n\n // by clause\n let clauses = s.clauses()\n if (clauses.length > 1) {\n let first = clauses.eq(0)\n let second = clauses.eq(1)\n //can we just choose the first clause?\n if (isIndependent(second)) {\n s = clauses.eq(0)\n } else if (second.has('^(#PastTense)') && first.has('(#Noun|#Value)$')) {\n // 'produced by...'\n s = clauses.eq(0)\n } else if (second.has('^(#Gerund)') && first.has('#Noun$')) {\n // 'featuring a ...'\n s = clauses.eq(0)\n } else {\n // can we remove the last clause, atleast?\n let last = clauses.last()\n if (isIndependent(last)) {\n clauses.list.pop()\n s = clauses.join()\n }\n }\n }\n\n //.. writen by sandro leonardo\n if (s.has('(#Noun|and) #PastTense by')) {\n s.remove('#PastTense by .*')\n }\n //\n s.remove('and? designed to .*')\n s.remove('and? owned by .*')\n s.remove('and? consisting of .*')\n // , which collapsed\n if (s.has('@hasComma (which|who) #Verb')) {\n s.remove('(which|who) .*')\n }\n // , then\n // if (s.has('@hasComma (then)')) {\n // s.remove('(which|who) .*')\n // }\n return s\n}\nmodule.exports = hardCuts\n","const lastTry = function (s) {\n s.remove('(small|large|minor|major)')\n s.remove('(extinct|retired|annual|biweekly|monthly|daily)')\n s.remove('(female|male)')\n s.remove('(private|independent|official|unofficial|officially)')\n s.remove('(southern|northern|eastern|western|northeastern|northwestern)')\n\n //\n s.remove('^(family|clade|genus|species|order) of')\n return s\n}\nmodule.exports = lastTry\n","//check text is appropriate length\nconst isGood = function (doc, options) {\n if (doc && typeof doc.text === 'function') {\n let text = doc.text()\n if (text && text.length > options.min && text.length < options.max) {\n return true\n }\n }\n return false\n}\nmodule.exports = isGood\n","const nlp = require('compromise')\nconst preProcess = require('./00-preProcess')\nconst findPivot = require('./01-pivot')\nconst byClause = require('./02-byClause')\nconst safeCut = require('./03-safeCuts')\nconst hardCut = require('./04-hardCuts')\nconst lastTry = require('./05-lastTry')\nconst isGood = require('./_isGood')\n\nconst post = function (s) {\n s.remove('^(and|or|but)')\n s.remove('(and|or|but)$')\n s.post('') // remove trailing comma\n return s.text()\n}\n\n// let count = 0\nconst doSentence = function (doc, options) {\n let sentence = doc.sentence(0)\n if (!sentence) {\n return ''\n }\n let txt = sentence.text()\n let s = nlp(txt)\n preProcess(s)\n\n let pivot = findPivot(s)\n // if we can't pivot it properly, don't bother\n if (!pivot || !pivot.verb || !pivot.verb.found) {\n return ''\n }\n let after = pivot.after\n if (options.article && pivot.article && pivot.article.found) {\n after.prepend(pivot.article.text())\n }\n // maybe it's good already\n if (isGood(after, options)) {\n return post(after)\n }\n // parse major chunks\n after = byClause(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // perform some modifications\n after = safeCut(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // really give it a go\n after = hardCut(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // atleast we tried\n after = lastTry(after)\n if (isGood(after, options)) {\n return post(after)\n }\n // console.log(after.text())\n // count += 1\n // console.log(count)\n // console.log(after.match('#PastTense').text())\n // console.log(after.text())\n // console.log('\\n')\n return ''\n}\nmodule.exports = doSentence\n","const bad = [\n 'living',\n 'births',\n 'former',\n 'deceased',\n 'missing',\n 'with',\n 'descent',\n 'award',\n 'winners',\n 'nominees',\n 'alumni',\n 'other'\n].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst good = ['male', 'female'].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst like = ['male', 'female', 'century'].map((str) => new RegExp(`\\\\b${str}\\\\b`, 'i'))\n\nconst dislike = ['people', 'place', 'from', 'in', 'people from'].map(\n (str) => new RegExp(`\\\\b${str}\\\\b`),\n 'i'\n)\n\nmodule.exports = {\n good: good,\n bad: bad,\n like: like,\n dislike: dislike\n}\n","const { like, dislike, good, bad } = require('./regs')\nconst hasYear = /[0-9]{4}/\nconst isPlural = /s$/\n\nconst fromCategory = function (doc) {\n let cats = doc.categories()\n\n // try to focus on the best ones, first\n let tmp = cats.filter((cat) => {\n return good.find((reg) => reg.test(cat))\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n\n // remove bad ones\n cats = cats.filter((cat) => {\n if (bad.find((reg) => reg.test(cat))) {\n return false\n }\n if (hasYear.test(cat)) {\n return false\n }\n return true\n })\n\n if (cats.length === 0) {\n return ''\n }\n // look at sorting by preferences\n tmp = cats.filter((cat) => {\n return like.find((reg) => reg.test(cat))\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n // remove disliked ones\n tmp = cats.filter((cat) => {\n // not a plural ending\n if (isPlural.test(cat) === false) {\n return false\n }\n // just one word\n if (cat.slice(' ').length === 1) {\n return false\n }\n return dislike.find((reg) => reg.test(cat)) === undefined\n })\n if (tmp.length > 0) {\n cats = tmp\n }\n\n // sort them by most words\n cats = cats.sort((a, b) => {\n let aWords = a.split(' ').length\n let bWords = b.split(' ').length\n if (aWords > bWords) {\n return -1\n } else if (aWords < bWords) {\n return 1\n }\n return 0\n })\n // console.log(cats)\n\n return cats[0]\n}\nmodule.exports = fromCategory\n","const nlp = require('compromise')\n\nconst useAn = function (str) {\n const a_regexs = [\n /^onc?e/i, //'wu' sound of 'o'\n /^u[bcfhjknq-t][aeiou]/i, // 'yu' sound for hard 'u'\n /^eul/i\n ]\n for (let i = 0; i < a_regexs.length; i++) {\n if (a_regexs[i].test(str)) {\n return false\n }\n }\n //basic vowel-startings\n if (/^[aeiou]/i.test(str)) {\n return true\n }\n return false\n}\n\n// 'American songwriters' to 'an American songwriter'\nconst changeCat = function (cat, options) {\n let c = nlp(cat)\n c.nouns().toSingular()\n // add article to the front\n if (options.article) {\n let article = 'A'\n // let noun = c.nouns(0)\n if (useAn(cat) === true) {\n // console.log(c.nouns(0))\n // article = c.nouns(0).json({ terms: false })[0].article || article\n article = 'An'\n }\n let first = c.terms(0)\n if (first.has('#ProperNoun') === false) {\n first.toLowerCase()\n }\n c.prepend(article)\n }\n // remove any parentheses\n c.parentheses().remove()\n return c.text()\n}\nmodule.exports = changeCat\n","const chooseCat = require('./01-choose')\nconst change = require('./02-change')\n\nconst byCategory = function (doc, options) {\n let cat = chooseCat(doc, options)\n if (!cat) {\n return ''\n }\n return change(cat, options)\n}\nmodule.exports = byCategory\n","const nlp = require('compromise')\nconst fromTemplate = require('./template')\nconst fromSentence = require('./sentence')\nconst fromCategory = require('./category')\n\nconst defaults = {\n article: true,\n template: true,\n sentence: true,\n category: true,\n max: 80,\n min: 3\n}\n\nconst seemsGood = function (txt, options) {\n return txt && txt.length > 5 && txt.length < options.max\n}\n\nconst plugin = function (models) {\n // add a new method to main class\n models.Doc.prototype.summary = function (options) {\n let doc = this\n options = options || {}\n options = Object.assign({}, defaults, options)\n\n // generate from {{short description}} template\n let txt = ''\n if (options.template) {\n txt = fromTemplate(doc, options)\n if (seemsGood(txt, options)) {\n return txt.trim()\n }\n }\n // generate from first-sentence\n if (options.sentence) {\n txt = fromSentence(doc, options)\n if (seemsGood(txt, options)) {\n return txt.trim()\n }\n }\n if (options.category) {\n return fromCategory(doc, options)\n }\n return ''\n }\n\n // should we use 'it', 'he', 'they'...\n models.Doc.prototype.article = function () {\n let txt = ''\n // prefer the 2nd sentence\n if (this.sentence(1)) {\n txt = this.sentence(1).text()\n } else {\n txt = this.sentence(0).text()\n }\n let doc = nlp(txt)\n let found = doc.match('(#Pronoun|#Article)').eq(0).text().toLowerCase()\n return found || 'it'\n }\n\n // was event in past? is person dead?\n models.Doc.prototype.tense = function () {\n let txt = this.sentence().text()\n let doc = nlp(txt)\n let copula = doc.match('#Copula+').first()\n if (copula.has('was')) {\n return 'Past'\n }\n let vb = doc.verbs(0)\n if (vb.has('#PastTense')) {\n return 'Past'\n }\n if (doc.has('will #Adverb? be') || doc.has('(a|an) (upcoming|planned)')) {\n return 'Future'\n }\n return 'Present'\n }\n}\nmodule.exports = plugin\n"],"names":["global","factory","module","this","chars","split","makeId$2","str","text","i","Math","floor","random","length","_id","compact","a","b","c","d","e","f","g","h","I","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","unicode","Object","keys","forEach","killUnicode$3","join","unicode_1","periodAcronym","oneLetterAcronym$1","noPeriodAcronym","lowerCaseAcronym","isAcronym$4","test","isAcronym_1","killUnicode$2","isAcronym$3","hasSlash$1","clean","toLowerCase","trim","original","replace","clean_1","reduced","reduce$1","normalize","reduce","startings","endings","hasSlash","hasApostrophe","hasAcronym","minusNumber","shortYear","parseTerm$1","pre","post","found","after","parsed","word","alias","parse$3","_01Case","exports","titleCase","upperCase","toUpperCase","toTitleCase","isUpperCase","isTitleCase","_02Punctuation$1","startQuote","endQuote","hasPost","punct","indexOf","hasPre","hasQuote","hasQuotation","hasComma","hasPeriod","hasExclamation","hasQuestionMark","hasEllipses","hasSemicolon","hasHyphen","hyphen","hasDash","hasContraction","Boolean","implicit","addPunctuation","_03Misc","editDistance","strA","strB","aLength","bLength","limit","abs","matrix","a_index","b_index","cost","min","shouldUpdate","fuzzyMatch","minLength","steps","max","relative","similarity","_fuzzy","fuzzy","wrapMatch","doesMatch$1","reg","index","id","anything","start","end","undefined","hasOwnProperty","soft","root","score","tag","tags","method","regex","fastOr","choices","operator","every","some","result","negative","_doesMatch","doesMatch","isAcronym$2","boring","isAcronym","isImplicit","isKnown","setRoot","world","transform","transforms","Plural","toSingular","Verb","Negative","Infinitive","tense","PastTense","Gerund","PresentTense","Participle","Actor","toInfinitive","_04Text","killUnicode$1","hasSpace$1","textOut","options","showPre","showPost","before","normal","titlecase","ProperNoun","Acronym","lowercase","acronyms","whitespace","last","punctuation","abbreviations","Abbreviation","_05Json$1","boringTags","Auxiliary","Possessive","rankTags$1","term","tagSet","sort","lineage","isA","_bestTag","rankTags","jsonDefault","offset","bestTag","json","assign","methods$d","fns$3","isClientSide","window","document","padEnd","width","toString","logTag","reason","console","log","logUntag","isArray","arr","prototype","call","charAt","substr","fns$2","addTag","tagset","isVerbose","down","unTag","notA","addTags","add$1","fns$1","lowerCase","titleCase$3","unTag$1","untagAll","unTag_1","canBe$1","enemies","canBe_1","add","canBe","tagSafe","makeId$1","parseTerm","methods$c","tagMethods","Term$3","constructor","String","obj","prev","next","set","clone","Term_1","_01Utils$1","terms","cache","pool","get","error","push","isShallow","buildFrom","newTerms","map","lastTerm","hasId","wantId","lastId","wordCount","filter","fullSentence","len","_02Text","trimEnd","isFirst","isLast","isFull","txt","_03Change","_04Insert","endOfSentence","combinePost","match","addWhitespace$1","beforeTerms","newTerm","stitchIn$1","lastBefore","lastNew","afterId","afterTerm","beforeId","unique$6","list","appendPhrase","newPhrase","doc","toStretch","docs","concat","parents","parent","shouldChange","append$1","hasSpace","addWhitespace","stitchIn","main","unique$5","joinPhrase","starterId","prepend$1","shrinkAll","deleteLength","phrase","find","deletePhrase$1","_delete","append","prepend","deletePhrase","delete","firstLength","tmp","splitOn","findIndex","slice","_05Json","res","_06Lookahead","lookAhead","regs","getAfter","all","lookBehind","getBefore","methods$b","failFast$2","optional","_02FailFast","_matchLogic","getGreedy","state","endReg","start_i","phrase_length","count","greedyTo","nextReg","isEndGreedy","greedy","tmpReg","doOrBlock","skipN","block","wasFound","cr","w_index","extra","foundBlock","keepGoing","doAndBlock","longest","allDidMatch","allWords","tryTerm","getGroup","term_index","name","groups","groupId","termId","group","makeId","logic","tryHere","hasGroup","previousGroup","named","haveNeeds","remain","skipto","skipNum","startAt","nextRegMatched","nextTerm","foundNeg","_03TryMatch","postProcess$3","matches","atEnd","_04PostProcess","bySlashes","byParentheses","byWord","isBlock","isReg","cleanUp","parseBlocks$1","final","_01ParseBlocks","hasMinMax","andSign","captureName","RegExp","titleCase$2","stripStart","stripEnd","stripBoth","parseToken$1","groupType","exec","Number","_02ParseToken","nameGroups","tokens","convert","current","token","doFastOrMode","shouldPack","oneOf","postProcess$2","opts","_03PostProcess","parseBlocks","parseToken","postProcess$1","isArray$2","byArray","blocks","fromDoc","ids","idBlocks","addOptions","syntax$1","input","matchSyntax","idLookup$1","blocklist","foundAll","idLookup_1","failFast$1","tryMatch","postProcess","syntax","idLookup","matchAll$2","matchOne","_01MatchAll","matchAll$1","notMatch$1","ts","not","matchAll","notMatch","justOne","has","results","previous","can","methods$a","matchMethods","Phrase$3","defineProperty","enumerable","writable","value","aliases$1","Phrase_1","Pool$3","words","remove","merge","stats","Pool_1","linkTerms$2","_linkTerms","initSplit","hasSomething","isAcronym$1","hasEllipse","newLine","hasLetter","startWhitespace","naiive_split","lines","testIsAcronym","suffix","testHasEllipse","testHasLetter","prefixHasLetter","isSentence","abbrevs","prefixContext","lastWord","splitSentences$1","sentences","chunks","splits","ws","_01Sentences","wordlike","isBoundary","naiiveSplit","isSlash","notWord","reg2","combineRanges","startRange","endRange","combineSlashes","splitHyphens","hyphens","whichDash","isArray$1","splitWords","carry","_02Words","Term$2","Phrase$2","Pool$2","linkTerms$1","splitSentences","splitTerms","fromText","phrases","_01Tokenizer","Term$1","Phrase$1","Pool$1","linkTerms","fromJSON$1","fromJSON_1","_version","entity","nouns$2","Noun","Singular","Person","FirstName","MaleName","FemaleName","LastName","NickName","Honorific","Place","Country","City","Region","Address","Organization","SportsTeam","School","Company","Uncountable","Pronoun","Activity","Unit","Demonym","verbs$2","Imperative","FutureTense","Copula","Modal","PerfectTense","Pluperfect","PhrasalVerb","Particle","values$1","Value","Ordinal","Cardinal","Fraction","RomanNumeral","TextValue","NumericValue","Money","Percent","misc$3","Adjective","Comparable","Comparative","Superlative","NumberRange","Adverb","Date","Month","WeekDay","Timezone","Time","Determiner","Conjunction","Preposition","QuestionWord","Currency","Expression","Url","PhoneNumber","HashTag","AtMention","Emoji","Emoticon","Email","Condition","colorMap","addColors","color","_color","unique$4","inferIsA$1","_isA","unique$3","inferNotA$1","key","_notA","inferLineage","_lineage","inferColor","inferIsA","inferNotA","validate","inferTags$1","inference","nouns$1","verbs$1","values","misc$2","inferTags","addIn","build","_data","seq","toAlphaCode","fromCharCode","fromAlphaCode","charCodeAt","encoding","symbols","nodes","symCount","syms","indexFromRef","toArray","unpack$2","unpack_1$1","unpack_1$1$1","Array","efrtUnpack_min","misc$1","g8","vh1","q1","q2","q3","q4","her","his","their","themselves","your","our","my","its","lexData","unpack$1","misc","fancy","lex","TextOrdinal","plural","toPlural","conj","conjugate","adjectives","hasCompound","addWords","wordsObj","multi","buildOut","lexicon","unpack_1","addIrregulars$1","nouns","irregulars","verbs","inf","forms","addIrregulars_1","plurals","addendum","alga","alumna","alumnus","analysis","antenna","appendix","avocado","axis","bacillus","barracks","beau","bus","cactus","chateau","child","circus","clothes","corpus","criterion","curriculum","database","deer","diagnosis","echo","embargo","epoch","foot","formula","fungus","genus","goose","halo","hippopotamus","larva","leaf","libretto","loaf","man","memorandum","modulus","mosquito","mouse","nebula","nucleus","octopus","opus","ovum","ox","parenthesis","person","phenomenon","prognosis","quiz","radius","referendum","rodeo","sex","shoe","sombrero","stimulus","stomach","syllabus","synopsis","tableau","thesis","thief","tooth","tornado","tuxedo","vertebra","mapping$1","prt","perf","pst","fut","pres","pluperf","conjugations","act","ache","age","aim","arise","babysit","ban","be","beat","become","begin","being","bend","bet","bind","bite","bleed","blow","boil","brake","break","breed","bring","broadcast","budget","burn","burst","buy","catch","choose","cling","come","compete","creep","cut","deal","develop","die","dig","dive","do","draw","dream","drink","drive","drop","eat","edit","egg","fall","feed","feel","fight","flee","fling","fly","forbid","forget","forgive","free","freeze","give","go","grow","guide","hang","have","hear","hide","hit","hold","hurt","ice","imply","is","keep","kneel","know","lay","lead","leap","leave","lend","lie","light","loose","lose","make","mean","meet","miss","patrol","pay","prove","puke","put","quit","read","ride","reside","ring","rise","rub","run","say","seat","see","seek","sell","send","sew","shake","shave","shed","shine","shoot","show","shut","sing","sink","sit","ski","slay","sleep","slide","smash","sneak","speak","speed","spend","spill","spin","spit","spread","spring","stand","steal","stick","sting","stink","stream","strew","strike","suit","sware","swear","sweep","swim","swing","take","teach","tear","tell","think","thrive","tie","undergo","understand","upset","wait","wake","wear","weave","wed","weep","win","wind","withdraw","wring","write","full","conjugations_1","endsWith$2","repl","pr","pa","gr","ar","suffixes$2","suffixes$1","posMap","doTransform","pos","checkSuffix$1","_01Suffixes","hasY","generic","_02Generic","checkSuffix","genericFill","conjugate$4","conjugate_1$1","do_rules$1","dont_rules$1","irregulars$5","nice","late","hard","inner","outer","far","worse","bad","good","big","large","transforms$2","to_superlative","toSuperlative","do_rules","dont_rules","irregulars$4","grey","gray","green","yellow","red","well","sad","transforms$1","to_comparative","toComparative","fns","conjugate$3","sup","comp","adjectives$2","suffixes","_rules$2","rules$5","addE","trySuffix","pluralize","_rules$1","rules$4","invertObj","invert","toSingular_1","rules$3","to","_transform","guessVerb","_guess","rules$2","guess","guessTense","three","two","one","toInfinitive$3","irregs","rule","toInfinitive_1$1","defaultTags","unpack","addIrregulars","inferTagSet","irregulars$3","World$1","verbose","bool","wordObj","cleaned","addConjugations","addPlurals","fn","taggers","compounds","postProcessors","JSON","parse","stringify","w2","World_1","_01Utils","from","addParent","reverse","doShallow","wordcount","_02Accessors","first","eq","firstTerms","firstTerm","lastTerms","termList","num","getGroups","allGroups","getOneName","target","sentence","_03Match","cacheRequired$1","needTags","needWords","failFast","_cache","_failFast","parseSyntax","checkCache","if","ifNo","lookAfter","lookBefore","befores","hasAfter","hasBefore","_04Tag","tagTerms","safe","tagList","_setTag","setTag","why","_05Loops","detachParent","sub","_06Lookup","tokenize$4","buildTree","val","more","rest","fastLookup","everyTerm","_lookup","lookup","isObject","isObj","byVal","lookUp","_07Cache","uncache","_01Replace","tokenize$3","titleCase$1","replaceWith","keepTags","newPhrases","keepCase","tmpDoc","tagger","oldTags","_02Insert","tokenize","makeNew","insertAfter","insertAt","insertBefore","arguments","arg","toRemove","_01Text","shouldTrim","showFull","trimPre","trimPost","_02Json","termOffsets","elapsed","offsets","calcOffset","_offset","jsonDefaults","setOptions","unique","frequency","freq","already","data","_03Out","_debug","reset","css","blue","magenta","cyan","black","logClientSide","cli","tagString","debug","topk$1","_topk","topk","out","_01Sort","methods$9","alpha","left","right","byFreq","counts","case","sortSequential","order","alphabetical","seqNames","sequence","sequential","chron","chronological","_02Normalize","killUnicode","isPunct","quotes","methods$8","termArr","quotations","adverbs","_methods","methods$7","defaults","emoji","contractions","parentheses","possessives","honorifics","mapping","medium","heavy","strip","contraction","expand","unwrap","possessive","_03Split","foundEm","parts","splitAfter","splitBefore","segment","_04Case","eachTerm","toCamelCase","_05Whitespace","hyphenate","dehyphenate","deHyphenate","toQuotations","toQuotation","toParentheses","_06Join","removed","increase","_07Contract","postPunct","setContraction","contract","methods$6","methods$5","emojis","atmentions","atMentions","phoneNumbers","money","places","organizations","clauses","entities","yup","people","ignore","things","topics","_simple","underOver","tryMultiple","checkLexicon$1","foundWords","noPrefix","_01Lexicon","apostrophes","perSec","checkPunctuation","endChar","_02Punctuation","startsWith","romanNumeral","romanNumValid","checkRegex$1","_03Prefixes","Adj$1","Inf$1","Pres$1","Sing$1","Past$1","Exp","Actor$1","Noun$1","Last$1","endsWith$1","Adj","Inf","Pres","Sing","Past","Avb","Plrl","Vb","Last","suffixMap$1","ea","ia","ic","ly","oed","ued","xed","azy","eer","ped","ffy","ify","ing","ize","lar","mum","nes","nny","oid","ous","que","rol","sis","zes","amed","aped","ched","lked","nded","cted","dged","akis","cede","chuk","czyk","ects","ends","enko","ette","fies","fore","gate","gone","ices","ints","ines","ions","less","llen","made","nsen","oses","ould","sson","tage","teen","tion","tive","tors","vice","tized","urned","eased","ances","bound","ettes","fully","ishes","ities","marek","nssen","ology","ports","rough","tches","tieth","tures","wards","where","auskas","keeper","logist","teenth","opoulos","borough","sdottir","endsWith","suffixMap","endRegexs","char","knownSuffixes","checkRegex","_04Suffixes","emoticons","emojiReg","emoticon","isCommaEmoji","raw","isEmoticon","tagEmoji","_05Emoji","lookups","_01Init","afterThisWord","it","there","because","but","who","when","you","very","old","never","beforeThisWord","me","only","him","were","took","himself","went","jr","afterThisPOS","beforeThisPOS","markov$1","beforeThisPos","afterThisPos","markov","afterKeys","beforeKeys","checkNeighbours","foundTag","_01Neighbours","hasNumber","checkCase","_02Case","hasPrefix","prefix","checkPrefix","stem","_03Stem","isPlural$8","isSingular$1","isPlural_1$2","isSingular","isPlural","noPlurals","rules$1","notPlural","notSingular","checkPlural","_04Plurals","orgWords$1","orgWords","maybeOrg","Comma","tagOrgs","_05Organizations","oneLetterAcronym","periodSeperated","oneLetterWord","A","checkAcronym","_06Acronyms","step","neighbours","fallbacks$1","_02Fallbacks","hasNegative","irregulars$2","wont","cant","cannot","dont","dun","doAint","noun","checkNegative$1","_01Negative","contraction$1","easy","ll","ve","re","checkApostrophe$1","_02Simple","irregulars$1","wanna","gonna","im","alot","ive","imma","whered","whend","howd","whatd","dunno","brb","gtg","irl","tbh","imo","til","rn","twas","checkIrregulars$1","_03Irregulars","hasApostropheS","banList","that","hereThere","here","everywhere","isPossessive","twoTerm","isHas","checkPossessive$1","_04Possessive","hasPerfect","useDid","how","what","checkPerfect$1","_05PerfectTense","isRange","timeRange","checkRange$1","_06Ranges","french","qu","checkFrench$1","_07French","checkLexicon","tokenize$2","checkNegative","checkApostrophe","checkIrregulars","checkPossessive","checkPerfect","checkRange","checkFrench","isNumber","isOrdinal","isTime","createPhrase","contractions$1","_03Contractions","hasWord","hasTag","miscCorrection","notIf","fixMisc$1","unique$2","_unique","list$5","_01Misc","_ambig","adverbAdjective","personDate","personMonth","personAdjective","personVerb","personPlace","personNoun","ambig$4","dates","list$4","_02Dates","ambig$3","adjectives$1","list$3","_03Adjective","_04Noun","ambig$2","_05Adverb","_06Value","ambig$1","list$2","_07Verbs","list$1","_08Place","_09Org","ambig","months","_10People","unique$1","matches$1","cacheRequired","allLists","lists","newM","enumerated","required","matches_1","hasEvery","chances","runner$1","allChances","worthIt","tryDoc","runner_1","fixMisc","runner","corrections$1","_04Correction","init","fallbacks","corrections","tagger$1","_02Tagger","addMethod$a","Doc","Abbreviations","stripPeriods","addPeriods","addMethod$9","Acronyms","addMethod$8","commas","conjunctions","condition","tooLong","Clauses","addMethod$7","Contractions","contracted","isTitlecase","expanded","isExpanded","isContracted","addMethod$6","beforeLast","conjunction","hasOxford","Lists","items","hasOxfordComma","addOxfordComma","needsComma","removeOxfordComma","nounList","adjList","verbList","noPlural","hasPlural$1","hasPlural_1","hour","heir","heirloom","honest","honour","honor","uber","an_acronyms","a_regexs","makeArticle","firstLetter","getArticle$1","isPlural$7","_rules","rules","endS","isPlural$6","isPlural_1$1","exceptions","he","she","they","we","toPossessive$1","toPossessive_1","parse$2","parse_1","hasPlural","getArticle","isPlural$5","toPossessive","parse$1","methods$4","article","agree","an","adj","methods_1","methods$3","addMethod$5","Nouns","keep_anaphora","open","close","addMethod$4","Parentheses","addMethod$3","Possessives","pairs","hasOpen","addMethod$2","Quotations","want","toInfinitive$2","verb","toInfinitive_1","findNoun","vb","isPlural$4","auxiliary","isPlural_1","toInfinitive$1","isPlural$3","toNegative$1","toNegative_1","getSubject$2","behind","lastNoun","getSubject_1","getSubject$1","parseVerb$1","adverb","particle","subject","adverbAfter","isPlural$2","toBe$1","isI","isNegative","toBe_1","doModal$1","doModal_1","toBe","doModal","isPlural$1","conjugate$2","og","past","infinitive","bePlural","space","conjugate_1","conjugate$1","useParticiple$1","toParticiple$1","participle","useParticiple","toParticiple","toNegative","parseVerb","getSubject","makeNeutral","methods$2","advb","toPastTense","toPresentTense","toFutureTense","toGerund","noAux","isPositive","isImperative","toPositive","methods$1","addMethod$1","Verbs","negate","addMethod","People","subsets","subclass","extend$1","addFn","Subset","methods","selections","tokenize$1","extend","Doc$1","aliases","untag","and","onlyIf","Doc_1","lexiconStep","smallTagger","tiny","fromJSON","version","World","Phrase","Term","Pool","tinyTagger","parseMatch","instance","worldInstance","nlp","import","load","plugin","src","fromTemplate","tmpl","template","description","preProcess","_00PreProcess","findPivot","_01Pivot","byClause","_02ByClause","safeCuts","_03SafeCuts","isIndependent","hardCuts","second","pop","_04HardCuts","lastTry","_05LastTry","isGood","_isGood","require$$0","require$$1","require$$2","require$$3","safeCut","require$$4","hardCut","require$$5","require$$6","require$$7","doSentence","pivot","like","dislike","hasYear","fromCategory","cats","categories","cat","aWords","bWords","_01Choose","useAn","changeCat","_02Change","chooseCat","change","byCategory","category","fromSentence","seemsGood","models","summary","copula"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/summary/builds/wtf-plugin-summary.min.js b/plugins/summary/builds/wtf-plugin-summary.min.js index e1671185..4acecce3 100644 --- a/plugins/summary/builds/wtf-plugin-summary.min.js +++ b/plugins/summary/builds/wtf-plugin-summary.min.js @@ -1 +1 @@ -!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).wtfSummary=t()}(this,(function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var r=0;rr?n:r)+1;if(Math.abs(r-n)>(a||100))return a||100;for(var i,o,s,u,l,c,h=[],d=0;d4)return r;u=o===(s=t[i-1])?0:1,l=h[p-1][i]+1,(c=h[p][i-1]+1)1&&i>1&&o===t[i-2]&&e[p-2]===s&&(c=h[p-2][i-2]+u)2&&void 0!==arguments[2]?arguments[2]:3;if(e===t)return 1;if(e.lengtht.fuzzy)return!0;if(!0===t.soft&&(a=B(t.word,e.root))>t.fuzzy)return!0}return t.word===e.clean||t.word===e.text||t.word===e.reduced}return void 0!==t.tag?!0===e.tags[t.tag]:void 0!==t.method?"function"==typeof e[t.method]&&!0===e[t.method]():void 0!==t.regex?t.regex.test(e.clean):void 0!==t.fastOr?!(!e.implicit||!0!==t.fastOr.hasOwnProperty(e.implicit))||(t.fastOr.hasOwnProperty(e.reduced)||t.fastOr.hasOwnProperty(e.text)):void 0!==t.choices&&("and"===t.operator?t.choices.every((function(t){return O(e,t,r,n)})):t.choices.some((function(t){return O(e,t,r,n)})))},G=O=function(e,t,r,n){var a=z(e,t,r,n);return!0===t.negative?!a:a},T={},V={doesMatch:function(e,t,r){return G(this,e,t,r)},isAcronym:function(){return b(this.text)},isImplicit:function(){return""===this.text&&Boolean(this.implicit)},isKnown:function(){return Object.keys(this.tags).some((function(e){return!0!==T[e]}))},setRoot:function(e){var t=e.transforms,r=this.implicit||this.clean;if(this.tags.Plural&&(r=t.toSingular(r,e)),this.tags.Verb&&!this.tags.Negative&&!this.tags.Infinitive){var n=null;this.tags.PastTense?n="PastTense":this.tags.Gerund?n="Gerund":this.tags.PresentTense?n="PresentTense":this.tags.Participle?n="Participle":this.tags.Actor&&(n="Actor"),r=t.toInfinitive(r,e,n)}this.root=r}},J=/[\s-]/,M=/^[A-Z-]+$/,L={textOut:function(e,t,r){e=e||{};var n=this.text,a=this.pre,i=this.post;return!0===e.reduced&&(n=this.reduced||""),!0===e.root&&(n=this.root||""),!0===e.implicit&&this.implicit&&(n=this.implicit||""),!0===e.normal&&(n=this.clean||this.text||""),!0===e.root&&(n=this.root||this.reduced||""),!0===e.unicode&&(n=g(n)),!0===e.titlecase&&(this.tags.ProperNoun&&!this.titleCase()||(this.tags.Acronym?n=n.toUpperCase():M.test(n)&&!this.tags.Acronym&&(n=n.toLowerCase()))),!0===e.lowercase&&(n=n.toLowerCase()),!0===e.acronyms&&this.tags.Acronym&&(n=n.replace(/\./g,"")),!0!==e.whitespace&&!0!==e.root||(a="",i=" ",!1!==J.test(this.post)&&!e.last||this.implicit||(i="")),!0!==e.punctuation||e.root||(!0===this.hasPost(".")?i="."+i:!0===this.hasPost("?")?i="?"+i:!0===this.hasPost("!")?i="!"+i:!0===this.hasPost(",")?i=","+i:!0===this.hasEllipses()&&(i="..."+i)),!0!==t&&(a=""),!0!==r&&(i=""),!0===e.abbreviations&&this.tags.Abbreviation&&(i=i.replace(/^\./,"")),a+n+i}},S={Auxiliary:1,Possessive:1},_=function(e,t){var r=Object.keys(e.tags),n=t.tags;return r=r.sort((function(e,t){return S[t]||!n[t]?-1:n[t]?n[e]?n[e].lineage.length>n[t].lineage.length?1:n[e].isA.length>n[t].isA.length?-1:0:0:1}))},K={text:!0,tags:!0,implicit:!0,whitespace:!0,clean:!1,id:!1,index:!1,offset:!1,bestTag:!1},q={json:function(e,t){e=e||{};var r={};return(e=Object.assign({},K,e)).text&&(r.text=this.text),e.normal&&(r.normal=this.clean),e.tags&&(r.tags=Object.keys(this.tags)),e.clean&&(r.clean=this.clean),(e.id||e.offset)&&(r.id=this.id),e.implicit&&null!==this.implicit&&(r.implicit=this.implicit),e.whitespace&&(r.pre=this.pre,r.post=this.post),e.bestTag&&(r.bestTag=_(this,t)[0]),r}},R=Object.assign({},I,C,V,L,q);function W(){return"undefined"!=typeof window&&window.document}var U=function(e,t){for(e=e.toString();e.length0&&void 0!==arguments[0]?arguments[0]:"";t(this,e),r=String(r);var n=N(r);this.text=n.text||"",this.clean=n.clean,this.reduced=n.reduced,this.root=null,this.implicit=null,this.pre=n.pre||"",this.post=n.post||"",this.tags={},this.prev=null,this.next=null,this.id=c(n.clean),this.isA="Term",n.alias&&(this.alias=n.alias)}return n(e,[{key:"set",value:function(e){var t=N(e);return this.text=t.text,this.clean=t.clean,this}}]),e}();oe.prototype.clone=function(){var e=new oe(this.text);return e.pre=this.pre,e.post=this.post,e.clean=this.clean,e.reduced=this.reduced,e.root=this.root,e.implicit=this.implicit,e.tags=Object.assign({},this.tags),e},Object.assign(oe.prototype,R),Object.assign(oe.prototype,ie);var se=oe,ue={terms:function(e){if(0===this.length)return[];if(this.cache.terms)return void 0!==e?this.cache.terms[e]:this.cache.terms;for(var t=[this.pool.get(this.start)],r=0;r0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0;"string"==typeof e&&(e="normal"===e?{whitespace:!0,unicode:!0,lowercase:!0,punctuation:!0,acronyms:!0,abbreviations:!0,implicit:!0,normal:!0}:"clean"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,normal:!0}:"reduced"===e?{punctuation:!1,titlecase:!1,lowercase:!0,whitespace:!0,unicode:!0,implicit:!0,reduced:!0}:"implicit"===e?{punctuation:!0,implicit:!0,whitespace:!0,trim:!0}:"root"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,root:!0}:{});var n=this.terms(),a=!1;n[0]&&null===n[0].prev&&null===n[n.length-1].next&&(a=!0);var i=n.reduce((function(i,o,s){if(0===s&&""===o.text&&null!==o.implicit&&!e.implicit)return i;e.last=r&&s===n.length-1;var u=!0,l=!0;return!1===a&&(0===s&&t&&(u=!1),s===n.length-1&&r&&(l=!1)),i+o.textOut(e,u,l)}),"");return!0===a&&r&&(i=le(i)),!0===e.trim&&(i=i.trim()),i}},he={trim:function(){var e=this.terms();if(e.length>0){e[0].pre=e[0].pre.replace(/^\s+/,"");var t=e[e.length-1];t.post=t.post.replace(/\s+$/,"")}return this}},de=/[.?!]\s*$/,ge=function(e,t){t[0].pre=e[0].pre;var r,n,a=e[e.length-1],i=t[t.length-1];i.post=(r=a.post,n=i.post,de.test(n)?n+r.match(/\s*$/):r),a.post="",""===a.post&&(a.post+=" ")},pe=function(e,t,r){var n=e.terms(),a=t.terms();ge(n,a),function(e,t,r){var n=e[e.length-1],a=t[t.length-1],i=n.next;n.next=t[0].id,a.next=i,i&&(r.get(i).prev=a.id);var o=e[0].id;o&&(t[0].prev=o)}(n,a,e.pool);var i=[e],o=e.start,s=[r];return(s=s.concat(r.parents())).forEach((function(e){var t=e.list.filter((function(e){return e.hasId(o)}));i=i.concat(t)})),(i=function(e){return e.filter((function(t,r){return e.indexOf(t)===r}))}(i)).forEach((function(e){e.length+=t.length})),e.cache={},e},me=/ /,fe=function(e,t,r){var n=e.start,a=t.terms();!function(e){var t=e[e.length-1];!1===me.test(t.post)&&(t.post+=" ")}(a),function(e,t,r){var n=r[r.length-1];n.next=e.start;var a=e.pool,i=a.get(e.start);i.prev&&(a.get(i.prev).next=t.start),r[0].prev=e.terms(0).prev,e.terms(0).prev=n.id}(e,t,a);var i=[e],o=[r];return(o=o.concat(r.parents())).forEach((function(e){var r=e.list.filter((function(e){return e.hasId(n)||e.hasId(t.start)}));i=i.concat(r)})),(i=function(e){return e.filter((function(t,r){return e.indexOf(t)===r}))}(i)).forEach((function(e){e.length+=t.length,e.start===n&&(e.start=t.start),e.cache={}})),e},ve=function(e,t){var r=t.pool(),n=e.terms(),a=r.get(n[0].prev)||{},i=r.get(n[n.length-1].next)||{};n[0].implicit&&a.implicit&&(a.set(a.implicit),a.post+=" "),function(e,t,r,n){var a=e.parents();a.push(e),a.forEach((function(e){var a=e.list.find((function(e){return e.hasId(t)}));a&&(a.length-=r,a.start===t&&(a.start=n.id),a.cache={})})),e.list=e.list.filter((function(e){return!(!e.start||!e.length)}))}(t,e.start,e.length,i),a&&(a.next=i.id),i&&(i.prev=a.id)},be={append:function(e,t){return pe(this,e,t),this},prepend:function(e,t){return fe(this,e,t),this},delete:function(e){return ve(this,e),this},replace:function(e,t){var r=this.length;pe(this,e,t);var n=this.buildFrom(this.start,this.length);n.length=r,ve(n,t)},splitOn:function(e){var t=this.terms(),r={before:null,match:null,after:null},n=t.findIndex((function(t){return t.id===e.start}));if(-1===n)return r;var a=t.slice(0,n);a.length>0&&(r.before=this.buildFrom(a[0].id,a.length));var i=t.slice(n,n+e.length);i.length>0&&(r.match=this.buildFrom(i[0].id,i.length));var o=t.slice(n+e.length,t.length);return o.length>0&&(r.after=this.buildFrom(o[0].id,o.length,this.pool)),r}},ye={json:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r={};return e.text&&(r.text=this.text()),e.normal&&(r.normal=this.text("normal")),e.clean&&(r.clean=this.text("clean")),e.reduced&&(r.reduced=this.text("reduced")),e.implicit&&(r.implicit=this.text("implicit")),e.root&&(r.root=this.text("root")),e.trim&&(r.text&&(r.text=r.text.trim()),r.normal&&(r.normal=r.normal.trim()),r.reduced&&(r.reduced=r.reduced.trim())),e.terms&&(!0===e.terms&&(e.terms={}),r.terms=this.terms().map((function(r){return r.json(e.terms,t)}))),r}},we={lookAhead:function(e){e||(e=".*");var t=this.pool,r=[],n=this.terms();return function e(n){var a=t.get(n);a&&(r.push(a),a.prev&&e(a.next))}(n[n.length-1].next),0===r.length?[]:this.buildFrom(r[0].id,r.length).match(e)},lookBehind:function(e){e||(e=".*");var t=this.pool,r=[];return function e(n){var a=t.get(n);a&&(r.push(a),a.prev&&e(a.prev))}(t.get(this.start).prev),0===r.length?[]:this.buildFrom(r[r.length-1].id,r.length).match(e)}},ke=Object.assign({},ue,ce,he,be,ye,we),Ae=function(e,t){if(0===t.length)return!0;for(var r=0;r0)return!0;if(!0===n.anything&&!0===n.negative)return!0}return!1},De=x((function(e,t){t.getGreedy=function(e,t){for(var r=Object.assign({},e.regs[e.r],{start:!1,end:!1}),n=e.t;e.t1&&void 0!==arguments[1]?arguments[1]:0,n=e.regs[e.r],a=!1,i=0;it&&(t=r.length),n}))&&t},t.getGroup=function(e,t,r){if(e.groups[e.groupId])return e.groups[e.groupId];var n=e.terms[t].id;return e.groups[e.groupId]={group:String(r),start:n,length:0},e.groups[e.groupId]}})),$e=function(e,t,r,n){for(var a={t:0,terms:e,r:0,regs:t,groups:{},start_i:r,phrase_length:n,hasGroup:!1,groupId:null,previousGroup:null};a.ra.t)return null;if(!0===i.end&&a.start_i+a.t!==n)return null}if(!0===a.hasGroup){var m=De.getGroup(a,d,i.named);a.t>1&&i.greedy?m.length+=a.t-d:m.length++}}else{if(i.negative){var f=Object.assign({},i);if(f.negative=!1,!0===a.terms[a.t].doesMatch(f,a.start_i+a.t,a.phrase_length))return null}if(!0!==i.optional){if(a.terms[a.t].isImplicit()&&t[a.r-1]&&a.terms[a.t+1]){if(a.terms[a.t-1]&&a.terms[a.t-1].implicit===t[a.r-1].word)return null;if(a.terms[a.t+1].doesMatch(i,a.start_i+a.t,a.phrase_length)){a.t+=2;continue}}return null}}}else{var v=De.greedyTo(a,t[a.r+1]);if(void 0!==i.min&&v-a.ti.max){a.t=a.t+i.max;continue}if(null===v)return null;!0===a.hasGroup&&(De.getGroup(a,a.t,i.named).length=v-a.t),a.t=v}}return{match:a.terms.slice(0,a.t),groups:a.groups}},Pe=function(e,t,r){if(!r||0===r.length)return r;if(t.some((function(e){return e.end}))){var n=e[e.length-1];r=r.filter((function(e){return-1!==e.match.indexOf(n)}))}return r},je=/(?:^|\s)([\!\[\^]*(?:<[^<]*>)?\/.*?[^\\\/]\/[\?\]\+\*\$~]*)(?:\s|$)/,He=/([\!\[\^]*(?:<[^<]*>)?\([^\)]+[^\\\)]\)[\?\]\+\*\$~]*)(?:\s|$)/,Ee=/ /g,Ne=function(e){return/^[\!\[\^]*(<[^<]*>)?\//.test(e)&&/\/[\?\]\+\*\$~]*$/.test(e)},xe=function(e){return e=(e=e.map((function(e){return e.trim()}))).filter((function(e){return e}))},Ie=function(e){var t=e.split(je),r=[];t.forEach((function(e){Ne(e)?r.push(e):r=r.concat(e.split(He))})),r=xe(r);var n=[];return r.forEach((function(e){!function(e){return/^[\!\[\^]*(<[^<]*>)?\(/.test(e)&&/\)[\?\]\+\*\$~]*$/.test(e)}(e)?Ne(e)?n.push(e):n=n.concat(e.split(Ee)):n.push(e)})),n=xe(n)},Ce=/\{([0-9]+,?[0-9]*)\}/,Fe=/&&/,Be=new RegExp(/^<\s*?(\S+)\s*?>/),Oe=function(e){return e[e.length-1]},ze=function(e){return e[0]},Ge=function(e){return e.substr(1)},Te=function(e){return e.substr(0,e.length-1)},Ve=function(e){return e=Ge(e),e=Te(e)},Je=function e(t){for(var r,n={},a=0;a<2;a+=1){if("$"===Oe(t)&&(n.end=!0,t=Te(t)),"^"===ze(t)&&(n.start=!0,t=Ge(t)),("["===ze(t)||"]"===Oe(t))&&(n.named=!0,"["===ze(t)?n.groupType="]"===Oe(t)?"single":"start":n.groupType="end",t=(t=t.replace(/^\[/,"")).replace(/\]$/,""),"<"===ze(t))){var i=Be.exec(t);i.length>=2&&(n.named=i[1],t=t.replace(i[0],""))}if("+"===Oe(t)&&(n.greedy=!0,t=Te(t)),"*"!==t&&"*"===Oe(t)&&"\\*"!==t&&(n.greedy=!0,t=Te(t)),"?"===Oe(t)&&(n.optional=!0,t=Te(t)),"!"===ze(t)&&(n.negative=!0,t=Ge(t)),"("===ze(t)&&")"===Oe(t)){Fe.test(t)?(n.choices=t.split(Fe),n.operator="and"):(n.choices=t.split("|"),n.operator="or"),n.choices[0]=Ge(n.choices[0]);var o=n.choices.length-1;n.choices[o]=Te(n.choices[o]),n.choices=n.choices.map((function(e){return e.trim()})),n.choices=n.choices.filter((function(e){return e})),n.choices=n.choices.map((function(t){return t.split(/ /g).map(e)})),t=""}if("/"===ze(t)&&"/"===Oe(t))return t=Ve(t),n.regex=new RegExp(t),n;if("~"===ze(t)&&"~"===Oe(t))return t=Ve(t),n.soft=!0,n.word=t,n}return!0===Ce.test(t)&&(t=t.replace(Ce,(function(e,t){var r=t.split(/,/g);return 1===r.length?(n.min=Number(r[0]),n.max=Number(r[0])):(n.min=Number(r[0]),n.max=Number(r[1]||999)),n.greedy=!0,n.optional=!0,""}))),"#"===ze(t)?(n.tag=Ge(t),n.tag=(r=n.tag).charAt(0).toUpperCase()+r.substr(1),n):"@"===ze(t)?(n.method=Ge(t),n):"."===t?(n.anything=!0,n):"*"===t?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(t&&(t=(t=t.replace("\\*","*")).replace("\\.","."),n.word=t.toLowerCase()),n)},Me=function(e){for(var t,r=!1,n=-1,a=0;a1&&void 0!==arguments[1]?arguments[1]:{},r=e.filter((function(e){return e.groupType})).length;return r>0&&(e=Me(e)),t.fuzzy||(e=Le(e)),e},_e=function(e){return"[object Array]"===Object.prototype.toString.call(e)},Ke=function(e){return[{choices:e.map((function(e){return[{word:e}]})),operator:"or"}]},qe=function(e){if(!e||!e.list||!e.list[0])return[];var t=[];return e.list.forEach((function(e){var r=[];e.terms().forEach((function(e){r.push(e.id)})),t.push(r)})),[{idBlocks:t}]},Re=function(e,t){return!0===t.fuzzy&&(t.fuzzy=.85),"number"==typeof t.fuzzy&&(e=e.map((function(e){return t.fuzzy>0&&e.word&&(e.fuzzy=t.fuzzy),e.choices&&e.choices.forEach((function(e){e.forEach((function(e){e.fuzzy=t.fuzzy}))})),e}))),e},We=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==t||""===t)return[];if("object"===e(t)){if(_e(t)){if(0===t.length||!t[0])return[];if("object"===e(t[0]))return t;if("string"==typeof t[0])return Ke(t)}return t&&"Doc"===t.isA?qe(t):[]}"number"==typeof t&&(t=String(t));var n=Ie(t);return n=n.map((function(e){return Je(e)})),n=Se(n,r),n=Re(n,r)},Ue=function(e,t){for(var r=[],n=t[0].idBlocks,a=function(t){n.forEach((function(n){0!==n.length?n.every((function(r,n){return i=t,e[t+n].id===r}))&&(r.push({match:e.slice(t,t+n.length)}),t+=n.length-1):i=t})),i=t},i=0;i2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof t&&(t=We(t)),!0===Ae(e,t))return[];var n=t.filter((function(e){return!0!==e.optional&&!0!==e.negative})).length,a=e.terms(),i=[];if(t[0].idBlocks){var o=Ue(a,t);if(o&&o.length>0)return Pe(a,t,o)}if(!0===t[0].start){var s=$e(a,t,0,a.length);return s&&s.match&&s.match.length>0&&(s.match=s.match.filter((function(e){return e})),i.push(s)),Pe(a,t,i)}for(var u=0;ua.length);u+=1){var l=$e(a.slice(u),t,u,a.length);if(l&&l.match&&l.match.length>0&&(u+=l.match.length-1,l.match=l.match.filter((function(e){return e})),i.push(l),!0===r))return Pe(a,t,i)}return Pe(a,t,i)},Ze=function(e,t){var r={};Qe(e,t).forEach((function(e){e.match.forEach((function(e){r[e.id]=!0}))}));var n=e.terms(),a=[],i=[];return n.forEach((function(e){!0!==r[e.id]?i.push(e):i.length>0&&(a.push(i),i=[])})),i.length>0&&a.push(i),a},Xe={match:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Qe(this,e,r);return n=n.map((function(e){var r=e.match,n=e.groups,a=t.buildFrom(r[0].id,r.length,n);return a.cache.terms=r,a}))},has:function(e){return Qe(this,e,!0).length>0},not:function(e){var t=this,r=Ze(this,e);return r=r.map((function(e){return t.buildFrom(e[0].id,e.length)}))},canBe:function(e,t){for(var r=this,n=[],a=this.terms(),i=!1,o=0;o0})).map((function(e){return r.buildFrom(e[0].id,e.length)}))}},Ye=function e(r,n,a){t(this,e),this.start=r,this.length=n,this.isA="Phrase",Object.defineProperty(this,"pool",{enumerable:!1,writable:!0,value:a}),Object.defineProperty(this,"cache",{enumerable:!1,writable:!0,value:{}}),Object.defineProperty(this,"groups",{enumerable:!1,writable:!0,value:{}})};Ye.prototype.buildFrom=function(e,t,r){var n=new Ye(e,t,this.pool);return r&&Object.keys(r).length>0?n.groups=r:n.groups=this.groups,n},Object.assign(Ye.prototype,Xe),Object.assign(Ye.prototype,ke);var et={term:"terms"};Object.keys(et).forEach((function(e){return Ye.prototype[e]=Ye.prototype[et[e]]}));var tt=Ye,rt=function(){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),Object.defineProperty(this,"words",{enumerable:!1,value:r})}return n(e,[{key:"add",value:function(e){return this.words[e.id]=e,this}},{key:"get",value:function(e){return this.words[e]}},{key:"remove",value:function(e){delete this.words[e]}},{key:"merge",value:function(e){return Object.assign(this.words,e.words),this}},{key:"stats",value:function(){return{words:Object.keys(this.words).length}}}]),e}();rt.prototype.clone=function(){var e=this,t=Object.keys(this.words).reduce((function(t,r){var n=e.words[r].clone();return t[n.id]=n,t}),{});return new rt(t)};var nt=rt,at=function(e){e.forEach((function(t,r){r>0&&(t.prev=e[r-1].id),e[r+1]&&(t.next=e[r+1].id)}))},it=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,ot=/\S/,st=/[ .][A-Z]\.? *$/i,ut=/(?:\u2026|\.{2,}) *$/,lt=/((?:\r?\n|\r)+)/,ct=/[a-z0-9\u00C0-\u00FF\u00a9\u00ae\u2000-\u3300\ud000-\udfff]/i,ht=/^\s+/,dt=function(e,t){if(!0===st.test(e))return!1;if(!0===ut.test(e))return!1;if(!1===ct.test(e))return!1;var r=e.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),n=r[r.length-1].toLowerCase();return!t.hasOwnProperty(n)},gt=function(e,t){var r=t.cache.abbreviations;e=e||"";var n=[],a=[];if(!(e=String(e))||"string"!=typeof e||!1===ot.test(e))return n;for(var i=function(e){for(var t=[],r=e.split(lt),n=0;n0&&(n.push(l),a[u]="")}if(0===n.length)return[e];for(var c=1;c0?(t[t.length-1]+=i,t.push(s)):t.push(i+s),i=""):i+=s}return i&&(0===t.length&&(t[0]=""),t[t.length-1]+=i),t=(t=function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,n=null;"string"!=typeof e&&("number"==typeof e?e=String(e):At(e)&&(n=e)),n=(n=n||gt(e,t)).map((function(e){return kt(e)})),r=r||new nt;var a=n.map((function(e){e=e.map((function(e){var t=new se(e);return r.add(t),t})),at(e);var t=new tt(e[0].id,e.length,r);return t.cache.terms=e,t}));return a},$t=function(e,t){var r=new nt;return e.map((function(e,n){var a=e.terms.map((function(a,i){var o=new se(a.text);return o.pre=void 0!==a.pre?a.pre:"",void 0===a.post&&(a.post=" ",i>=e.terms.length-1&&(a.post=". ",n>=e.terms.length-1&&(a.post="."))),o.post=void 0!==a.post?a.post:" ",a.tags&&a.tags.forEach((function(e){return o.tag(e,"",t)})),r.add(o),o}));return at(a),new tt(a[0].id,a.length,r)}))},Pt=["Person","Place","Organization"],jt={Noun:{notA:["Verb","Adjective","Adverb"]},Singular:{isA:"Noun",notA:"Plural"},ProperNoun:{isA:"Noun"},Person:{isA:["ProperNoun","Singular"],notA:["Place","Organization","Date"]},FirstName:{isA:"Person"},MaleName:{isA:"FirstName",notA:["FemaleName","LastName"]},FemaleName:{isA:"FirstName",notA:["MaleName","LastName"]},LastName:{isA:"Person",notA:["FirstName"]},NickName:{isA:"Person",notA:["FirstName","LastName"]},Honorific:{isA:"Noun",notA:["FirstName","LastName","Value"]},Place:{isA:"Singular",notA:["Person","Organization"]},Country:{isA:["Place","ProperNoun"],notA:["City"]},City:{isA:["Place","ProperNoun"],notA:["Country"]},Region:{isA:["Place","ProperNoun"]},Address:{isA:"Place"},Organization:{isA:["Singular","ProperNoun"],notA:["Person","Place"]},SportsTeam:{isA:"Organization"},School:{isA:"Organization"},Company:{isA:"Organization"},Plural:{isA:"Noun",notA:["Singular"]},Uncountable:{isA:"Noun"},Pronoun:{isA:"Noun",notA:Pt},Actor:{isA:"Noun",notA:Pt},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:Pt},Demonym:{isA:["Noun","ProperNoun"],notA:Pt},Possessive:{isA:"Noun"}},Ht={Verb:{notA:["Noun","Adjective","Adverb","Value"]},PresentTense:{isA:"Verb",notA:["PastTense","FutureTense"]},Infinitive:{isA:"PresentTense",notA:["PastTense","Gerund"]},Imperative:{isA:"Infinitive"},Gerund:{isA:"PresentTense",notA:["PastTense","Copula","FutureTense"]},PastTense:{isA:"Verb",notA:["FutureTense"]},FutureTense:{isA:"Verb"},Copula:{isA:"Verb"},Modal:{isA:"Verb",notA:["Infinitive"]},PerfectTense:{isA:"Verb",notA:"Gerund"},Pluperfect:{isA:"Verb"},Participle:{isA:"PastTense"},PhrasalVerb:{isA:"Verb"},Particle:{isA:"PhrasalVerb"},Auxiliary:{notA:["Noun","Adjective","Value"]}},Et={Value:{notA:["Verb","Adjective","Adverb"]},Ordinal:{isA:"Value",notA:["Cardinal"]},Cardinal:{isA:"Value",notA:["Ordinal"]},Fraction:{isA:"Value",notA:["Noun"]},RomanNumeral:{isA:"Cardinal",notA:["Ordinal","TextValue"]},TextValue:{isA:"Value",notA:["NumericValue"]},NumericValue:{isA:"Value",notA:["TextValue"]},Money:{isA:"Cardinal"},Percent:{isA:"Value"}},Nt=["Noun","Verb","Adjective","Adverb","Value","QuestionWord"],xt={Adjective:{notA:["Noun","Verb","Adverb","Value"]},Comparable:{isA:["Adjective"]},Comparative:{isA:["Adjective"]},Superlative:{isA:["Adjective"],notA:["Comparative"]},NumberRange:{isA:["Contraction"]},Adverb:{notA:["Noun","Verb","Adjective","Value"]},Date:{notA:["Verb","Adverb","Preposition","Adjective"]},Month:{isA:["Date","Singular"],notA:["Year","WeekDay","Time"]},WeekDay:{isA:["Date","Noun"]},Timezone:{isA:["Date","Noun"],notA:["Adjective","ProperNoun"]},Time:{isA:["Date"],notA:["AtMention"]},Determiner:{notA:Nt},Conjunction:{notA:Nt},Preposition:{notA:Nt},QuestionWord:{notA:["Determiner"]},Currency:{isA:["Noun"]},Expression:{notA:["Noun","Adjective","Verb","Adverb"]},Abbreviation:{},Url:{notA:["HashTag","PhoneNumber","Verb","Adjective","Value","AtMention","Email"]},PhoneNumber:{notA:["HashTag","Verb","Adjective","Value","AtMention","Email"]},HashTag:{},AtMention:{isA:["Noun"],notA:["HashTag","Verb","Adjective","Value","Email"]},Emoji:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Emoticon:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Email:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Acronym:{notA:["Plural","RomanNumeral"]},Negative:{notA:["Noun","Adjective","Value"]},Condition:{notA:["Verb","Adjective","Noun","Value"]}},It={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},Ct=function(e){return Object.keys(e).forEach((function(t){e[t].color?e[t].color=e[t].color:It[t]?e[t].color=It[t]:e[t].isA.some((function(r){return!!It[r]&&(e[t].color=It[r],!0)}))})),e},Ft=function(e){return Object.keys(e).forEach((function(t){for(var r=e[t],n=r.isA.length,a=0;a=0;i--,a*=36){var o=e.charCodeAt(i)-48;o>10&&(o-=7),t+=o*a}return t},St=function(e,t,r){var n=Lt(t);return n1&&(r.hasCompound[i[0]]=!0),void 0===Rt[a]?void 0!==t[n]?("string"==typeof t[n]&&(t[n]=[t[n]]),"string"==typeof a?t[n].push(a):t[n]=t[n].concat(a)):t[n]=a:Rt[a](t,n,r)}))},Ut=function(e){var t=Object.assign({},qt);return Object.keys(Vt).forEach((function(r){var n=Kt(Vt[r]);Object.keys(n).forEach((function(e){n[e]=r})),Wt(n,t,e)})),t},Qt=Wt,Zt=function(e){for(var t=e.irregulars.nouns,r=Object.keys(t),n=0;n0&&void 0!==arguments[0]?arguments[0]:"",t=e[e.length-1];if(!0===ar.hasOwnProperty(t))for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r={};return t&&t.irregulars&&!0===t.irregulars.verbs.hasOwnProperty(e)&&(r=Object.assign({},t.irregulars.verbs[e])),void 0===(r=Object.assign({},sr(e),r)).Gerund&&(r.Gerund=lr.Gerund(e)),void 0===r.PastTense&&(r.PastTense=lr.PastTense(e)),void 0===r.PresentTense&&(r.PresentTense=lr.PresentTense(e)),r},hr=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/oud$/,/...p$/],dr=[/ary$/],gr={nice:"nicest",late:"latest",hard:"hardest",inner:"innermost",outer:"outermost",far:"furthest",worse:"worst",bad:"worst",good:"best",big:"biggest",large:"largest"},pr=[{reg:/y$/i,repl:"iest"},{reg:/([aeiou])t$/i,repl:"$1ttest"},{reg:/([aeou])de$/i,repl:"$1dest"},{reg:/nge$/i,repl:"ngest"},{reg:/([aeiou])te$/i,repl:"$1test"}],mr=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/old$/,/oud$/,/e[ae]p$/],fr=[/ary$/,/ous$/],vr={grey:"greyer",gray:"grayer",green:"greener",yellow:"yellower",red:"redder",good:"better",well:"better",bad:"worse",sad:"sadder",big:"bigger"},br=[{reg:/y$/i,repl:"ier"},{reg:/([aeiou])t$/i,repl:"$1tter"},{reg:/([aeou])de$/i,repl:"$1der"},{reg:/nge$/i,repl:"nger"}],yr={toSuperlative:function(e){if(gr.hasOwnProperty(e))return gr[e];for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=t.irregulars.nouns;if(r.hasOwnProperty(e))return r[e];var n=Dr(e);return null!==n?n:Ar.test(e)?e+"es":e+"s"},Pr=[[/([^v])ies$/i,"$1y"],[/ises$/i,"isis"],[/(kn|[^o]l|w)ives$/i,"$1ife"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i,"$1f"],[/^(dwar|handkerchie|hoo|scar|whar)ves$/i,"$1f"],[/(antenn|formul|nebul|vertebr|vit)ae$/i,"$1a"],[/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i,"$1us"],[/(buffal|tomat|tornad)(oes)$/i,"$1o"],[/(eas)es$/i,"$1e"],[/(..[aeiou]s)es$/i,"$1"],[/(vert|ind|cort)(ices)$/i,"$1ex"],[/(matr|append)(ices)$/i,"$1ix"],[/(x|ch|ss|sh|z|o)es$/i,"$1"],[/men$/i,"man"],[/(n)ews$/i,"$1ews"],[/([ti])a$/i,"$1um"],[/([^aeiouy]|qu)ies$/i,"$1y"],[/(s)eries$/i,"$1eries"],[/(m)ovies$/i,"$1ovie"],[/([m|l])ice$/i,"$1ouse"],[/(cris|ax|test)es$/i,"$1is"],[/(alias|status)es$/i,"$1"],[/(ss)$/i,"$1"],[/(ics)$/i,"$1"],[/s$/i,""]],jr=function(e,t){var r,n=t.irregulars.nouns,a=(r=n,Object.keys(r).reduce((function(e,t){return e[r[t]]=t,e}),{}));if(a.hasOwnProperty(e))return a[e];for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof t&&"number"!=typeof t&&null!==t||(t={group:t});var r=We(e,t);if(0===r.length)return this.buildFrom([]);if(!1===Tr(this,r))return this.buildFrom([]);var n=this.list.reduce((function(e,t){return e.concat(t.match(r))}),[]);return void 0!==t.group&&null!==t.group&&""!==t.group?this.buildFrom(n).groups(t.group):this.buildFrom(n)},t.not=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);if(0===r.length||!1===Tr(this,r))return this;var n=this.list.reduce((function(e,t){return e.concat(t.not(r))}),[]);return this.buildFrom(n)},t.matchOne=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);if(!1===Tr(this,r))return this.buildFrom([]);for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);if(!1===Tr(this,r))return this.buildFrom([]);var n=this.list.filter((function(e){return!0===e.has(r)}));return this.buildFrom(n)},t.ifNo=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t),n=this.list.filter((function(e){return!1===e.has(r)}));return this.buildFrom(n)},t.has=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t);return!1!==Tr(this,r)&&this.list.some((function(e){return!0===e.has(r)}))},t.lookAhead=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e||(e=".*");var r=We(e,t),n=[];return this.list.forEach((function(e){n=n.concat(e.lookAhead(r))})),n=n.filter((function(e){return e})),this.buildFrom(n)},t.lookAfter=t.lookAhead,t.lookBehind=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e||(e=".*");var r=We(e,t),n=[];return this.list.forEach((function(e){n=n.concat(e.lookBehind(r))})),n=n.filter((function(e){return e})),this.buildFrom(n)},t.lookBefore=t.lookBehind,t.before=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t),n=this.if(r).list,a=n.map((function(e){var t=e.terms().map((function(e){return e.id})),n=e.match(r)[0],a=t.indexOf(n.start);return 0===a||-1===a?null:e.buildFrom(e.start,a)}));return a=a.filter((function(e){return null!==e})),this.buildFrom(a)},t.after=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=We(e,t),n=this.if(r).list,a=n.map((function(e){var t=e.terms(),n=t.map((function(e){return e.id})),a=e.match(r)[0],i=n.indexOf(a.start);if(-1===i||!t[i+a.length])return null;var o=t[i+a.length].id,s=e.length-i-a.length;return e.buildFrom(o,s)}));return a=a.filter((function(e){return null!==e})),this.buildFrom(a)},t.hasAfter=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.filter((function(r){return r.lookAfter(e,t).found}))},t.hasBefore=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.filter((function(r){return r.lookBefore(e,t).found}))}})),Jr=function(e,t,r,n){var a=[];"string"==typeof e&&(a=e.split(" ")),t.list.forEach((function(i){var o=i.terms();!0===r&&(o=o.filter((function(r){return r.canBe(e,t.world)}))),o.forEach((function(r,i){a.length>1?a[i]&&"."!==a[i]&&r.tag(a[i],n,t.world):r.tag(e,n,t.world)}))}))},Mr={tag:function(e,t){return e?(Jr(e,this,!1,t),this):this},tagSafe:function(e,t){return e?(Jr(e,this,!0,t),this):this},unTag:function(e,t){var r=this;return this.list.forEach((function(n){n.terms().forEach((function(n){return n.unTag(e,t,r.world)}))})),this},canBe:function(e){if(!e)return this;var t=this.world,r=this.list.reduce((function(r,n){return r.concat(n.canBe(e,t))}),[]);return this.buildFrom(r)}},Lr={map:function(t){var r=this;if(!t)return this;var n=this.list.map((function(e,n){var a=r.buildFrom([e]);a.from=null;var i=t(a,n);return i&&i.list&&i.list[0]?i.list[0]:i}));return 0===(n=n.filter((function(e){return e}))).length?this.buildFrom(n):"object"!==e(n[0])||"Phrase"!==n[0].isA?n:this.buildFrom(n)},forEach:function(e,t){var r=this;return e?(this.list.forEach((function(n,a){var i=r.buildFrom([n]);!0===t&&(i.from=null),e(i,a)})),this):this},filter:function(e){var t=this;if(!e)return this;var r=this.list.filter((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)}));return this.buildFrom(r)},find:function(e){var t=this;if(!e)return this;var r=this.list.find((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)}));return r?this.buildFrom([r]):void 0},some:function(e){var t=this;return e?this.list.some((function(r,n){var a=t.buildFrom([r]);return a.from=null,e(a,n)})):this},random:function(e){if(!this.found)return this;var t=Math.floor(Math.random()*this.list.length);if(void 0===e){var r=[this.list[t]];return this.buildFrom(r)}return t+e>this.length&&(t=(t=this.length-e)<0?0:t),this.slice(t,t+e)}},Sr=function(e){return e.split(/[ -]/g)},_r=function(e,t,r){for(var n=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r={};return e.forEach((function(e,n){var a=!0;void 0!==t[n]&&(a=t[n]),e=(e=(e||"").toLowerCase()).replace(/[,;.!?]+$/,"");var i=Sr(e).map((function(e){return e.trim()}));r[i[0]]=r[i[0]]||{},1===i.length?r[i[0]].value=a:(r[i[0]].more=r[i[0]].more||[],r[i[0]].more.push({rest:i.slice(1),value:a}))})),r}(e,t),a=[],i=function(e){for(var t=r.list[e],i=t.terms().map((function(e){return e.reduced})),o=function(e){void 0!==n[i[e]]&&(void 0!==n[i[e]].more&&n[i[e]].more.forEach((function(r){void 0!==i[e+r.rest.length]&&(!0===r.rest.every((function(t,r){return t===i[e+r+1]}))&&a.push({id:t.terms()[e].id,value:r.value,length:r.rest.length+1}))})),void 0!==n[i[e]].value&&a.push({id:t.terms()[e].id,value:n[i[e]].value,length:1}))},s=0;s1&&void 0!==arguments[1]?arguments[1]:{};return t?(!0===n&&(n={keepTags:!0}),!1===n&&(n={keepTags:!1}),n=n||{},this.uncache(),this.list.forEach((function(a){var i,o=t;if("function"==typeof t&&(o=t(a)),o&&"object"===e(o)&&"Doc"===o.isA)i=o.list,r.pool().merge(o.pool());else{if("string"!=typeof o)return;!1!==n.keepCase&&a.terms(0).isTitleCase()&&(o=Rr(o)),i=Dt(o,r.world,r.pool());var s=r.buildFrom(i);s.tagger(),i=s.list}if(!0===n.keepTags){var u=a.json({terms:{tags:!0}}).terms;i[0].terms().forEach((function(e,t){u[t]&&e.tagSafe(u[t].tags,"keptTag",r.world)}))}a.replace(i[0],r)})),this):this.delete()},replace:function(e,t,r){return void 0===t?this.replaceWith(e,r):(this.match(e).replaceWith(t,r),this)}},Ur=x((function(e,t){var r=function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)},n=function(e,t){var r=Dt(e,t.world)[0],n=t.buildFrom([r]);return n.tagger(),t.list=n.list,t};t.append=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return t?this.found?(this.uncache(),this.list.forEach((function(n){var a;r(t)&&"Doc"===t.isA?a=t.list[0].clone():"string"==typeof t&&(a=Dt(t,e.world,e.pool())[0]),e.buildFrom([a]).tagger(),n.append(a,e)})),this):n(t,this):this},t.insertAfter=t.append,t.insertAt=t.append,t.prepend=function(e){var t=this;return e?this.found?(this.uncache(),this.list.forEach((function(n){var a;r(e)&&"Doc"===e.isA?a=e.list[0].clone():"string"==typeof e&&(a=Dt(e,t.world,t.pool())[0]),t.buildFrom([a]).tagger(),n.prepend(a,t)})),this):n(e,this):this},t.insertBefore=t.prepend,t.concat=function(){this.uncache();for(var e=this.list.slice(0),t=0;t0&&void 0!==arguments[0]?arguments[0]:{};if("number"==typeof t&&this.list[t])return this.list[t].json(r);!0===(t=n(t)).root&&this.list.forEach((function(t){t.terms().forEach((function(t){null===t.root&&t.setRoot(e.world)}))}));var a=this.list.map((function(r){return r.json(t,e.world)}));if((t.terms.offset||t.offset||t.terms.index||t.index)&&Xr(this,a,t),t.frequency||t.freq||t.count){var i={};this.list.forEach((function(e){var t=e.text("reduced");i[t]=i[t]||0,i[t]+=1})),this.list.forEach((function(e,t){a[t].count=i[e.text("reduced")]}))}if(t.unique){var o={};a=a.filter((function(e){return!0!==o[e.reduced]&&(o[e.reduced]=!0,!0)}))}return a},t.data=t.json})),en=x((function(e){var t="",r=function(e,t){for(e=e.toString();e.lengtht.count?-1:e.countn?1:0},length:function(e,t){var r=e.text().trim().length,n=t.text().trim().length;return rn?-1:0},wordCount:function(e,t){var r=e.wordCount(),n=t.wordCount();return rn?-1:0}};nn.alphabetical=nn.alpha,nn.wordcount=nn.wordCount;var an={index:!0,sequence:!0,seq:!0,sequential:!0,chron:!0,chronological:!0},on={sort:function(e){return"freq"===(e=e||"alpha")||"frequency"===e||"topk"===e?(r={},n={case:!0,punctuation:!1,whitespace:!0,unicode:!0},(t=this).list.forEach((function(e){var t=e.text(n);r[t]=r[t]||0,r[t]+=1})),t.list.sort((function(e,t){var a=r[e.text(n)],i=r[t.text(n)];return ai?-1:0})),t):an.hasOwnProperty(e)?function(e){var t={};return e.json({terms:{offset:!0}}).forEach((function(e){t[e.terms[0].id]=e.terms[0].offset.start})),e.list=e.list.sort((function(e,r){return t[e.start]>t[r.start]?1:t[e.start]0){a+=o;continue}}if(void 0===r[i]||!0!==r.hasOwnProperty(i))if(i===e[a].reduced||!0!==r.hasOwnProperty(e[a].reduced)){if(!0===$n.test(i)){var s=i.replace($n,"");!0===r.hasOwnProperty(s)&&e[a].tag(r[s],"noprefix-lexicon",t)}}else e[a].tag(r[e[a].reduced],"lexicon",t);else e[a].tag(r[i],"lexicon",t)}return e},Hn=/[\'‘’‛‵′`´]$/,En=/^(m|k|cm|km|m)\/(s|h|hr)$/,Nn=[[/^[\w\.]+@[\w\.]+\.[a-z]{2,3}$/,"Email"],[/^#[a-z0-9_\u00C0-\u00FF]{2,}$/,"HashTag"],[/^@1?[0-9](am|pm)$/i,"Time"],[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i,"Time"],[/^@\w{2,}$/,"AtMention"],[/^(https?:\/\/|www\.)\w+\.[a-z]{2,3}/,"Url"],[/^[\w./]+\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/,"Url"],[/^'[0-9]{2}$/,"Year"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/,"Time"],[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i,"Time"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i,"Time"],[/^[PMCE]ST$/,"Time"],[/^utc ?[+-]?[0-9]+?$/,"Time"],[/^[a-z0-9]*? o\'?clock$/,"Time"],[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i,"Date"],[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i,"Date"],[/^gmt[+-][0-9][0-9]?$/i,"Timezone"],[/^utc[+-][0-9][0-9]?$/i,"Timezone"],[/^ma?c\'.*/,"LastName"],[/^o\'[drlkn].*/,"LastName"],[/^ma?cd[aeiou]/,"LastName"],[/^(lol)+[sz]$/,"Expression"],[/^woo+a*?h?$/,"Expression"],[/^(un|de|re)\\-[a-z\u00C0-\u00FF]{2}/,"Verb"],[/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/,"Date"],[/^[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^(\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^[-+]?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(k|m|b|bn)?\+?$/,["Money","Value"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]\+?$/,["Money","Value"]],[/^[-+]?[\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i,["Money","Value"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|r?th)$/,["Ordinal","NumericValue"]],[/^\.[0-9]+\+?$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?%\+?$/,["Percent","Cardinal","NumericValue"]],[/^\.[0-9]+%$/,["Percent","Cardinal","NumericValue"]],[/^[0-9]{1,4}\/[0-9]{1,4}(st|nd|rd|th)?s?$/,["Fraction","NumericValue"]],[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/,["Value","NumberRange"]],[/^[0-9][0-9]?(:[0-9][0-9])?(am|pm)?[-–—][0-9][0-9]?(:[0-9][0-9])?(am|pm)?$/,["Time","NumberRange"]],[/^[0-9.]+([a-z]{1,4})$/,"Value"]],xn=/^[IVXLCDM]{2,}$/,In=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,Cn="Adjective",Fn="Infinitive",Bn="PresentTense",On="Singular",zn="PastTense",Gn="Adverb",Tn="Expression",Vn="Actor",Jn="Verb",Mn="Noun",Ln="LastName",Sn={a:[[/.[aeiou]na$/,Mn],[/.[oau][wvl]ska$/,Ln],[/.[^aeiou]ica$/,On],[/^([hyj]a)+$/,Tn]],c:[[/.[^aeiou]ic$/,Cn]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,zn],[/.[aeo]{2}[bdgmnprvz]ed$/,zn],[/.[aeiou][sg]hed$/,zn],[/.[aeiou]red$/,zn],[/.[aeiou]r?ried$/,zn],[/.[bcdgtr]led$/,zn],[/.[aoui]f?led$/,zn],[/.[iao]sed$/,zn],[/[aeiou]n?[cs]ed$/,zn],[/[aeiou][rl]?[mnf]ed$/,zn],[/[aeiou][ns]?c?ked$/,zn],[/[aeiou][nl]?ged$/,zn],[/.[tdbwxz]ed$/,zn],[/[^aeiou][aeiou][tvx]ed$/,zn],[/.[cdlmnprstv]ied$/,zn],[/[^aeiou]ard$/,On],[/[aeiou][^aeiou]id$/,Cn],[/.[vrl]id$/,Cn]],e:[[/.[lnr]ize$/,Fn],[/.[^aeiou]ise$/,Fn],[/.[aeiou]te$/,Fn],[/.[^aeiou][ai]ble$/,Cn],[/.[^aeiou]eable$/,Cn],[/.[ts]ive$/,Cn]],h:[[/.[^aeiouf]ish$/,Cn],[/.v[iy]ch$/,Ln],[/^ug?h+$/,Tn],[/^uh[ -]?oh$/,Tn]],i:[[/.[oau][wvl]ski$/,Ln]],k:[[/^(k){2}$/,Tn]],l:[[/.[gl]ial$/,Cn],[/.[^aeiou]ful$/,Cn],[/.[nrtumcd]al$/,Cn],[/.[^aeiou][ei]al$/,Cn]],m:[[/.[^aeiou]ium$/,On],[/[^aeiou]ism$/,On],[/^h*u*m+$/,Tn],[/^\d+ ?[ap]m$/,"Date"]],n:[[/.[lsrnpb]ian$/,Cn],[/[^aeiou]ician$/,Vn],[/[aeiou][ktrp]in$/,"Gerund"]],o:[[/^no+$/,Tn],[/^(yo)+$/,Tn],[/^woo+[pt]?$/,Tn]],r:[[/.[bdfklmst]ler$/,"Noun"],[/[aeiou][pns]er$/,On],[/[^i]fer$/,Fn],[/.[^aeiou][ao]pher$/,Vn],[/.[lk]er$/,"Noun"],[/.ier$/,"Comparative"]],t:[[/.[di]est$/,"Superlative"],[/.[icldtgrv]ent$/,Cn],[/[aeiou].*ist$/,Cn],[/^[a-z]et$/,Jn]],s:[[/.[^aeiou]ises$/,Bn],[/.[rln]ates$/,Bn],[/.[^z]ens$/,Jn],[/.[lstrn]us$/,On],[/.[aeiou]sks$/,Bn],[/.[aeiou]kes$/,Bn],[/[aeiou][^aeiou]is$/,On],[/[a-z]\'s$/,Mn],[/^yes+$/,Tn]],v:[[/.[^aeiou][ai][kln]ov$/,Ln]],y:[[/.[cts]hy$/,Cn],[/.[st]ty$/,Cn],[/.[gk]y$/,Cn],[/.[tnl]ary$/,Cn],[/.[oe]ry$/,On],[/[rdntkbhs]ly$/,Gn],[/...lly$/,Gn],[/[bszmp]{2}y$/,Cn],[/.(gg|bb|zz)ly$/,Cn],[/.[ai]my$/,Cn],[/[ea]{2}zy$/,Cn],[/.[^aeiou]ity$/,On]]},_n="Adjective",Kn="Infinitive",qn="PresentTense",Rn="Singular",Wn="PastTense",Un="Adverb",Qn="Plural",Zn="Actor",Xn="Verb",Yn="Noun",ea="LastName",ta="Modal",ra=[null,null,{ea:Rn,ia:Yn,ic:_n,ly:Un,"'n":Xn,"'t":Xn},{oed:Wn,ued:Wn,xed:Wn," so":Un,"'ll":ta,"'re":"Copula",azy:_n,eer:Yn,end:Xn,ped:Wn,ffy:_n,ify:Kn,ing:"Gerund",ize:Kn,lar:_n,mum:_n,nes:qn,nny:_n,oid:_n,ous:_n,que:_n,rol:Rn,sis:Rn,zes:qn},{amed:Wn,aped:Wn,ched:Wn,lked:Wn,nded:Wn,cted:Wn,dged:Wn,akis:ea,cede:Kn,chuk:ea,czyk:ea,ects:qn,ends:Xn,enko:ea,ette:Rn,fies:qn,fore:Un,gate:Kn,gone:_n,ices:Qn,ints:Qn,ines:Qn,ions:Qn,less:Un,llen:_n,made:_n,nsen:ea,oses:qn,ould:ta,some:_n,sson:ea,tage:Kn,teen:"Value",tion:Rn,tive:_n,tors:Yn,vice:Rn},{tized:Wn,urned:Wn,eased:Wn,ances:Qn,bound:_n,ettes:Qn,fully:Un,ishes:qn,ities:Qn,marek:ea,nssen:ea,ology:Yn,ports:Qn,rough:_n,tches:qn,tieth:"Ordinal",tures:Qn,wards:Un,where:Un},{auskas:ea,keeper:Zn,logist:Zn,teenth:"Value"},{opoulos:ea,borough:"Place",sdottir:ea}],na={":(":!0,":)":!0,":P":!0,":p":!0,":O":!0,":3":!0,":|":!0,":/":!0,":\\":!0,":$":!0,":*":!0,":@":!0,":-(":!0,":-)":!0,":-P":!0,":-p":!0,":-O":!0,":-3":!0,":-|":!0,":-/":!0,":-\\":!0,":-$":!0,":-*":!0,":-@":!0,":^(":!0,":^)":!0,":^P":!0,":^p":!0,":^O":!0,":^3":!0,":^|":!0,":^/":!0,":^\\":!0,":^$":!0,":^*":!0,":^@":!0,"):":!0,"(:":!0,"$:":!0,"*:":!0,")-:":!0,"(-:":!0,"$-:":!0,"*-:":!0,")^:":!0,"(^:":!0,"$^:":!0,"*^:":!0,"<3":!0,"2){var a=n.clean[n.clean.length-2];if("s"===a)return void n.tag(["Possessive","Noun"],"end-tick",r);"n"===a&&n.tag(["Gerund"],"chillin",r)}En.test(n.text)&&n.tag("Unit","per-sec",r)},regex:function(e,t){for(var r=e.text,n=0;n=2&&xn.test(r)&&In.test(r)&&e.tag("RomanNumeral","xvii",t)},suffix:function(e,t){!function(e,t){var r=e.clean.length,n=7;r<=n&&(n=r-1);for(var a=n;a>1;a-=1){var i=e.clean.substr(r-a,r);if(!0===ra[i.length].hasOwnProperty(i)){var o=ra[i.length][i];e.tagSafe(o,"suffix -"+i,t);break}}}(e,t),function(e,t){var r=e.clean,n=r[r.length-1];if(!0===Sn.hasOwnProperty(n))for(var a=Sn[n],i=0;i35)}(n=(n=n.trim()).replace(/[.!?,]$/,""))&&(e.tag("Emoji","comma-emoji",t),e.text=n,e.pre=e.pre.replace(":",""),e.post=e.post.replace(":","")),e.text.match(aa)&&(e.tag("Emoji","unicode-emoji",t),e.text=n),!0===(r=(r=n).replace(/^[:;]/,":"),na.hasOwnProperty(r))&&(e.tag("Emoticon","emoticon-emoji",t),e.text=n)}},oa=function(e,t){var r=e.world;ia.lexicon(t,r);for(var n=0;n3&&void 0!==r[n]&&!0===r.hasOwnProperty(n)&&e.tag(r[n],"stem-"+n,t)}}))},va={isSingular:[/(ax|test)is$/i,/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,/(octop|vir)i$/i,/(rl)f$/i,/(alias|status)$/i,/(bu)s$/i,/(al|ad|at|er|et|ed|ad)o$/i,/(ti)um$/i,/(ti)a$/i,/sis$/i,/(?:(^f)fe|(lr)f)$/i,/hive$/i,/s[aeiou]+ns$/i,/(^aeiouy|qu)y$/i,/(x|ch|ss|sh|z)$/i,/(matr|vert|ind|cort)(ix|ex)$/i,/(m|l)ouse$/i,/(m|l)ice$/i,/(antenn|formul|nebul|vertebr|vit)a$/i,/.sis$/i,/^(?!talis|.*hu)(.*)man$/i],isPlural:[/(^v)ies$/i,/ises$/i,/ives$/i,/(antenn|formul|nebul|vertebr|vit)ae$/i,/(octop|vir|radi|nucle|fung|cact|stimul)i$/i,/(buffal|tomat|tornad)oes$/i,/(analy|ba|diagno|parenthe|progno|synop|the)ses$/i,/(vert|ind|cort)ices$/i,/(matr|append)ices$/i,/(x|ch|ss|sh|s|z|o)es$/i,/is$/i,/men$/i,/news$/i,/.tia$/i,/(^f)ves$/i,/(lr)ves$/i,/(^aeiouy|qu)ies$/i,/(m|l)ice$/i,/(cris|ax|test)es$/i,/(alias|status)es$/i,/ics$/i]},ba=["Uncountable","Pronoun","Place","Value","Person","Month","WeekDay","Holiday"],ya=[/ss$/,/sis$/,/[^aeiou][uo]s$/,/'s$/],wa=[/i$/,/ae$/],ka=function(e,t){if(e.tags.Noun&&!e.tags.Acronym){var r=e.clean;if(e.tags.Singular||e.tags.Plural)return;if(r.length<=3)return void e.tag("Singular","short-singular",t);if(ba.find((function(t){return e.tags[t]})))return;if(va.isPlural.find((function(e){return e.test(r)})))return void e.tag("Plural","plural-rules",t);if(va.isSingular.find((function(e){return e.test(r)})))return void e.tag("Singular","singular-rules",t);if(!0===/s$/.test(r)){if(ya.find((function(e){return e.test(r)})))return;return void e.tag("Plural","plural-fallback",t)}if(wa.find((function(e){return e.test(r)})))return;e.tag("Singular","singular-fallback",t)}},Aa=["academy","administration","agence","agences","agencies","agency","airlines","airways","army","assoc","associates","association","assurance","authority","autorite","aviation","bank","banque","board","boys","brands","brewery","brotherhood","brothers","building society","bureau","cafe","caisse","capital","care","cathedral","center","central bank","centre","chemicals","choir","chronicle","church","circus","clinic","clinique","club","co","coalition","coffee","collective","college","commission","committee","communications","community","company","comprehensive","computers","confederation","conference","conseil","consulting","containers","corporation","corps","corp","council","crew","daily news","data","departement","department","department store","departments","design","development","directorate","division","drilling","education","eglise","electric","electricity","energy","ensemble","enterprise","enterprises","entertainment","estate","etat","evening news","faculty","federation","financial","fm","foundation","fund","gas","gazette","girls","government","group","guild","health authority","herald","holdings","hospital","hotel","hotels","inc","industries","institut","institute","institute of technology","institutes","insurance","international","interstate","investment","investments","investors","journal","laboratory","labs","liberation army","limited","local authority","local health authority","machines","magazine","management","marine","marketing","markets","media","memorial","mercantile exchange","ministere","ministry","military","mobile","motor","motors","musee","museum","news","news service","observatory","office","oil","optical","orchestra","organization","partners","partnership","people's party","petrol","petroleum","pharmacare","pharmaceutical","pharmaceuticals","pizza","plc","police","polytechnic","post","power","press","productions","quartet","radio","regional authority","regional health authority","reserve","resources","restaurant","restaurants","savings","school","securities","service","services","social club","societe","society","sons","standard","state police","state university","stock exchange","subcommittee","syndicat","systems","telecommunications","telegraph","television","times","tribunal","tv","union","university","utilities","workers"].reduce((function(e,t){return e[t]="Noun",e}),{}),Da=function(e){return!!e.tags.Noun&&(!(e.tags.Pronoun||e.tags.Comma||e.tags.Possessive)&&!!(e.tags.Organization||e.tags.Acronym||e.tags.Place||e.titleCase()))},$a=/^[A-Z]('s|,)?$/,Pa=/([A-Z]\.){2}[A-Z]?/i,ja={I:!0,A:!0},Ha={neighbours:ca,case:ga,stem:fa,plural:ka,organizations:function(e,t){for(var r=0;r5)&&e.isAcronym()}(e,t)?(e.tag("Acronym","acronym-step",t),e.tag("Noun","acronym-infer",t)):!ja.hasOwnProperty(e.text)&&$a.test(e.text)&&(e.tag("Acronym","one-letter-acronym",t),e.tag("Noun","one-letter-infer",t)),e.tags.Organization&&e.text.length<=3&&e.tag("Acronym","acronym-org",t),e.tags.Organization&&e.isUpperCase()&&e.text.length<=6&&e.tag("Acronym","acronym-org-case",t))}))}},Ea=function(e,t){var r=e.world;return Ha.neighbours(t,r),Ha.case(e),Ha.stem(t,r),t.forEach((function(t){!1===t.isKnown()&&t.tag("Noun","noun-fallback",e.world)})),Ha.organizations(t,r),Ha.acronyms(t,r),t.forEach((function(t){Ha.plural(t,e.world)})),e},Na=/n't$/,xa={"won't":["will","not"],wont:["will","not"],"can't":["can","not"],cant:["can","not"],cannot:["can","not"],"shan't":["should","not"],dont:["do","not"],dun:["do","not"]},Ia=function(e,t){return!0===xa.hasOwnProperty(e.clean)?xa[e.clean]:"ain't"===e.clean||"aint"===e.clean?function(e,t){var r=t.terms(),n=r.indexOf(e),a=r.slice(0,n).find((function(e){return e.tags.Noun}));return a&&a.tags.Plural?["are","not"]:["is","not"]}(e,t):!0===Na.test(e.clean)?[e.clean.replace(Na,""),"not"]:null},Ca=/([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z]{1,2})$/i,Fa={ll:"will",ve:"have",re:"are",m:"am","n't":"not"},Ba=function(e){var t=e.text.match(Ca);return null===t?null:Fa.hasOwnProperty(t[2])?[t[1],Fa[t[2]]]:null},Oa={wanna:["want","to"],gonna:["going","to"],im:["i","am"],alot:["a","lot"],ive:["i","have"],imma:["I","will"],"where'd":["where","did"],whered:["where","did"],"when'd":["when","did"],whend:["when","did"],howd:["how","did"],whatd:["what","did"],dunno:["do","not","know"],brb:["be","right","back"],gtg:["got","to","go"],irl:["in","real","life"],tbh:["to","be","honest"],imo:["in","my","opinion"],til:["today","i","learned"],rn:["right","now"],twas:["it","was"],"@":["at"]},za=function(e){return Oa.hasOwnProperty(e.clean)?Oa[e.clean]:null},Ga=/([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]s$/i,Ta={that:!0,there:!0},Va={here:!0,there:!0,everywhere:!0},Ja=function(e,t,r){var n=e.text.match(Ga);if(null!==n){if(!0===function(e,t){if(e.tags.Possessive)return!0;if(e.tags.Pronoun||e.tags.QuestionWord)return!1;if(Ta.hasOwnProperty(e.reduced))return!1;var r=t.get(e.next);if(!r)return!0;if(r.tags.Verb)return!!r.tags.Infinitive||!!r.tags.PresentTense;if(r.tags.Noun)return!0!==Va.hasOwnProperty(r.reduced);var n=t.get(r.next);return!(!n||!n.tags.Noun||n.tags.Pronoun)||(r.tags.Adjective||r.tags.Adverb||r.tags.Verb,!1)}(e,t.pool))return e.tag("#Possessive","isPossessive",r),null;if(null!==n)return function(e,t){var r=t.terms(),n=r.indexOf(e);return r.slice(n+1,n+3).find((function(e){return e.tags.PastTense}))}(e,t)?[n[1],"has"]:[n[1],"is"]}return null},Ma=/[a-z\u00C0-\u00FF]'d$/,La={how:!0,what:!0},Sa=function(e,t){if(Ma.test(e.clean)){for(var r=e.clean.replace(/'d$/,""),n=t.terms(),a=n.indexOf(e),i=n.slice(a+1,a+4),o=0;o0?wi=wi.concat(t):wi.push(e)})),wi.forEach((function(e){var t,r,n;return e.required=(t=e.reg,r=[],n=[],t.forEach((function(e){!0!==e.optional&&!0!==e.negative&&(void 0!==e.tag&&r.push(e.tag),void 0!==e.word&&n.push(e.word))})),{tags:ni(r),words:ni(n)}),e}));var ki=wi,Ai=function(e){ki.forEach((function(t){var r=[];t.required.words.forEach((function(t){r.push(e._cache.words[t]||[])})),t.required.tags.forEach((function(t){r.push(e._cache.tags[t]||[])}));var n=function(e){if(0===e.length)return[];var t={};e.forEach((function(e){e=ni(e);for(var r=0;r5&&e.match("#Verb+").length>=2}));if(u.found){var l=u.splitAfter("#Noun .* #Verb .* #Noun+");n=n.splitOn(l.eq(0))}return"number"==typeof t&&(n=n.get(t)),new e(n.list,this,this.world)},e},Ni=function(e){var r=function(e){a(i,e);var r=u(i);function i(e,n,a){var o;return t(this,i),(o=r.call(this,e,n,a)).contracted=null,o}return n(i,[{key:"expand",value:function(){return this.list.forEach((function(e){var t=e.terms(),r=t[0].isTitleCase();t.forEach((function(e,r){e.set(e.implicit||e.text),e.implicit=void 0,r1&&void 0!==arguments[1]?arguments[1]:{},n=this.match("(#City && @hasComma) (#Region|#Country)"),a=this.not(n).splitAfter("@hasComma"),i=(a=a.concat(n)).quotations();return i.found&&(a=a.splitOn(i.eq(0))),a=a.match("#Noun+ (of|by)? the? #Noun+?"),!0!==t.keep_anaphora&&(a=(a=(a=(a=a.not("#Pronoun")).not("(there|these)")).not("(#Month|#WeekDay)")).not("(my|our|your|their|her|his)")),a=a.not("(of|for|by|the)$"),"number"==typeof e&&(a=a.get(e)),new r(a.list,this,this.world)},e},_i=/\(/,Ki=/\)/,qi=function(e){var r=function(e){a(i,e);var r=u(i);function i(){return t(this,i),r.apply(this,arguments)}return n(i,[{key:"unwrap",value:function(){return this.list.forEach((function(e){var t=e.terms(0);t.pre=t.pre.replace(_i,"");var r=e.lastTerm();r.post=r.post.replace(Ki,"")})),this}}]),i}(e);return e.prototype.parentheses=function(e){var t=[];return this.list.forEach((function(e){for(var r=e.terms(),n=0;n0}}),Object.defineProperty(this,"length",{get:function(){return i.list.length}}),Object.defineProperty(this,"isA",{get:function(){return"Doc"}})}return n(e,[{key:"tagger",value:function(){return $i(this)}},{key:"pool",value:function(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}]),e}();ho.prototype.buildFrom=function(e){return e=e.map((function(e){return e.clone(!0)})),new ho(e,this,this.world)},ho.prototype.fromText=function(e){var t=Dt(e,this.world,this.pool());return this.buildFrom(t)},Object.assign(ho.prototype,co.misc),Object.assign(ho.prototype,co.selections),lo(ho);var go={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(go).forEach((function(e){return ho.prototype[e]=ho.prototype[go[e]]}));var po=ho,mo=function(e){var t=e.termList();return jn(t,e.world),e.world.taggers.forEach((function(t){t(e)})),e};var fo=function e(t){var r=t,n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;t&&r.addWords(t);var n=Dt(e,r),a=new po(n,null,r);return a.tagger(),a};return n.tokenize=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=r;t&&((n=n.clone()).words={},n.addWords(t));var a=Dt(e,n),i=new po(a,null,n);return(t||i.world.taggers.length>0)&&mo(i),i},n.extend=function(e){return e(po,r,this,tt,se,nt),this},n.fromJSON=function(e){var t=$t(e,r);return new po(t,null,r)},n.clone=function(){return e(r.clone())},n.verbose=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return r.verbose(e),this},n.world=function(){return r},n.parseMatch=function(e,t){return We(e,t)},n.version="13.10.5",n.import=n.load,n.plugin=n.extend,n}(new Or);var vo=function(e){let t=e.template("short description");if(t){return(t.json()||{}).description||""}return null};var bo=function(e){return e.parentheses().remove(),e};const yo=function(e){return e.remove("and #Copula .*"),e};var wo=function(e){let t=e.matchOne("#Copula+ (a|an|the|any|one) of?");if(t.found||(t=e.matchOne("#Copula+")),t.found||(t=e.matchOne("refers to (a|an|the|any)? of?")),t.found||(t=e.matchOne("(constitutes|describes) (a|an|the|any)? of?")),!t.found)return null;let r=e.splitOn(t),n=r.eq(1),a=n.match("(a|an|the|any)? of?");return n.remove("(a|an|the|any)? of?"),{before:r.eq(0),verb:r.eq(1),article:a,after:yo(r.eq(2))}};var ko=function(e){return e.remove("and (also|eventually) (a|an|the|#Possessive) .*"),e.remove("!of (who|that|which) #Adverb? (#Copula|form|comprise|forms|comprises) .*"),e.remove("#Adverb? (located|situated|founded|found|formed|built|developed) .*"),e.remove("#Adverb? (located|situated|founded|found|formed|built|developed) .*"),e};var Ao=function(e){return e.has("(#Place && @hasComma) #Country+$")&&e.remove("#Country+$"),e.has("#Noun (that|which|who) #PresentTense the .*")&&e.remove(" that #PresentTense the .*"),e.has("#Noun #PastTense by the .*")&&e.remove("#PastTense by the .*"),e.remove("#Demonym"),e.remove("(professional|former)"),e.remove("and? held annually .*"),e.remove("taking place each .*"),e.remove("^one of (the|many|several|#Value)+"),e.remove("^(a|an|the)? #Ordinal? #Superlative"),e.remove("^(a|an|the)? #Ordinal? most #Adjective"),e.remove("born in .*"),e.remove("born #Date+ in? #Place+?"),e.remove("(first|initially|originally)? (located|founded|started|based|formed) in .*"),e.remove("(which|who|that) (is|was) .*"),e.remove("^the name of"),e};const Do=function(e){return!!e.has("^(and|the|which|who|whom|also|a|an|the)")||(!!e.has("^(west|north|south|east|part) of")||(!!e.has("^#PastTense by .")||(!!e.has("^(occasionally|sometimes|frequently)")||(!!e.has("^such as")||!!e.has("^(including|featuring|depicting)")))))};var $o=function(e){e.has("#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$")?e.remove("(located|based) in #Place+$"):e.has("(#Noun|#Value) (in|on) the #Adjective? (region|province|district|coast|city) of #Place+$")?e.remove("(in|on) the #Adjective? (region|province|district|coast|city) of #Place+$"):e.has("(#Noun|#Value) in #Place+$")?e.remove("in #Place+$"):(e.remove("and? part of #Place+$"),e.remove("and? near #Place+$"));let t=e.clauses();if(t.length>1){let r=t.eq(0),n=t.eq(1);if(Do(n))e=t.eq(0);else if(n.has("^(#PastTense)")&&r.has("(#Noun|#Value)$"))e=t.eq(0);else if(n.has("^(#Gerund)")&&r.has("#Noun$"))e=t.eq(0);else{let r=t.last();Do(r)&&(t.list.pop(),e=t.join())}}return e.has("(#Noun|and) #PastTense by")&&e.remove("#PastTense by .*"),e.remove("and? designed to .*"),e.remove("and? owned by .*"),e.remove("and? consisting of .*"),e.has("@hasComma (which|who) #Verb")&&e.remove("(which|who) .*"),e};var Po=function(e){return e.remove("(small|large|minor|major)"),e.remove("(extinct|retired|annual|biweekly|monthly|daily)"),e.remove("(female|male)"),e.remove("(private|independent|official|unofficial|officially)"),e.remove("(southern|northern|eastern|western|northeastern|northwestern)"),e.remove("^(family|clade|genus|species|order) of"),e};var jo=function(e,t){if(e&&"function"==typeof e.text){let r=e.text();if(r&&r.length>t.min&&r.lengthnew RegExp(`\\b${e}\\b`,"i")));var Co={good:["male","female"].map((e=>new RegExp(`\\b${e}\\b`,"i"))),bad:Io,like:["male","female","century"].map((e=>new RegExp(`\\b${e}\\b`,"i"))),dislike:["people","place","from","in","people from"].map((e=>new RegExp(`\\b${e}\\b`)),"i")};const{like:Fo,dislike:Bo,good:Oo,bad:zo}=Co,Go=/[0-9]{4}/,To=/s$/;var Vo=function(e){let t=e.categories(),r=t.filter((e=>Oo.find((t=>t.test(e)))));return r.length>0&&(t=r),t=t.filter((e=>!zo.find((t=>t.test(e)))&&!Go.test(e))),0===t.length?"":(r=t.filter((e=>Fo.find((t=>t.test(e))))),r.length>0&&(t=r),r=t.filter((e=>!1!==To.test(e)&&(1!==e.slice(" ").length&&void 0===Bo.find((t=>t.test(e)))))),r.length>0&&(t=r),t=t.sort(((e,t)=>{let r=e.split(" ").length,n=t.split(" ").length;return r>n?-1:r5&&e.length{let t=e.split("");return t.forEach(((e,r)=>{a[e]&&(t[r]=a[e])})),t.join("")};const o=/([A-Z]\.)+[A-Z]?,?$/,s=/^[A-Z]\.,?$/,l=/[A-Z]{2,}('s|,)?$/,u=/([a-z]\.)+[a-z]\.?$/;var c=function(e){return!0===o.test(e)||!0===u.test(e)||!0===s.test(e)||!0===l.test(e)};const h=i,d=c,g=/[a-z\u00C0-\u00FF] ?\/ ?[a-z\u00C0-\u00FF]/,p=function(e){let t=e=(e=(e=e||"").toLowerCase()).trim();return e=h(e),!0===g.test(e)&&(e=e.replace(/\/.*/,"")),e=(e=(e=(e=(e=(e=(e=e.replace(/^[#@]/,"")).replace(/[,;.!?]+$/,"")).replace(/[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]+/g,"'")).replace(/[\u0022\u00AB\u00BB\u201C\u201D\u201E\u201F\u2033\u2034\u2036\u2037\u2E42\u301D\u301E\u301F\uFF02]+/g,'"')).replace(/\u2026/g,"...")).replace(/\u2013/g,"-")).replace(/([aeiou][ktrp])in$/,"$1ing"),!0===/^(re|un)-?[^aeiou]./.test(e)&&(e=e.replace("-","")),d(e)&&(e=e.replace(/\./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=e.replace(/([0-9]),([0-9])/g,"$1$2")},m=function(e){return e=(e=e.replace(/['’]s$/,"")).replace(/s['’]$/,"s")},f=/^[ \n\t\.\[\](){}⟨⟩:,،、‒–—―…!‹›«»‐\-?‘’;\/⁄·&*•^†‡°¡¿※№÷׺ª%‰+−=‱¶′″‴§~\|‖¦©℗®℠™¤₳฿\u0022\uFF02\u0027\u201C\u201F\u201B\u201E\u2E42\u201A\u2035\u2036\u2037\u301D\u0060\u301F]+/,b=/[ \n\t\.'\[\](){}⟨⟩:,،、‒–—―…!‹›«»‐\-?‘’;\/⁄·&*@•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~\|‖¦©℗®℠™¤₳฿\u0022\uFF02\u201D\u00B4\u301E]+$/,y=/\//,v=/['’]/,w=/^[a-z]\.([a-z]\.)+/i,k=/^[-+\.][0-9]/,A=/^'[0-9]{2}/;var D=e=>{let t=e,r="",n="";""===(e=(e=e.replace(f,(t=>(r=t,"-"!==r&&"+"!==r&&"."!==r||!k.test(e)?"'"===r&&A.test(e)?(r="",t):"":(r="",t))))).replace(b,(a=>(n=a,v.test(a)&&/[sn]['’]$/.test(t)&&!1===v.test(r)?(n=n.replace(v,""),"'"):!0===w.test(e)?(n=n.replace(/\./,""),"."):""))))&&(t=t.replace(/ *$/,(e=>(n=e||"",""))),e=t,r="",n=n);let a=p(e);const i={text:e,clean:a,reduced:m(a),pre:r,post:n};return y.test(e)&&e.split(y).forEach((e=>{i.alias=i.alias||{},i.alias[e.trim()]=!0})),i},P={};!function(e){const t=/^[A-Z][a-z'\u00C0-\u00FF]/,r=/^[A-Z]+s?$/;e.toUpperCase=function(){return this.text=this.text.toUpperCase(),this},e.toLowerCase=function(){return this.text=this.text.toLowerCase(),this},e.toTitleCase=function(){return this.text=this.text.replace(/^ *[a-z\u00C0-\u00FF]/,(e=>e.toUpperCase())),this},e.isUpperCase=function(){return r.test(this.text)},e.isTitleCase=function(){return t.test(this.text)},e.titleCase=e.isTitleCase}(P);var $={};!function(e){const t=/(\u0022|\uFF02|\u0027|\u201C|\u2018|\u201F|\u201B|\u201E|\u2E42|\u201A|\u00AB|\u2039|\u2035|\u2036|\u2037|\u301D|\u0060|\u301F)/,r=/(\u0022|\uFF02|\u0027|\u201D|\u2019|\u201D|\u2019|\u201D|\u201D|\u2019|\u00BB|\u203A|\u2032|\u2033|\u2034|\u301E|\u00B4|\u301E)/;e.hasPost=function(e){return-1!==this.post.indexOf(e)},e.hasPre=function(e){return-1!==this.pre.indexOf(e)},e.hasQuote=function(){return t.test(this.pre)||r.test(this.post)},e.hasQuotation=e.hasQuote,e.hasComma=function(){return this.hasPost(",")},e.hasPeriod=function(){return!0===this.hasPost(".")&&!1===this.hasPost("...")},e.hasExclamation=function(){return this.hasPost("!")},e.hasQuestionMark=function(){return this.hasPost("?")||this.hasPost("¿")},e.hasEllipses=function(){return this.hasPost("..")||this.hasPost("…")||this.hasPre("..")||this.hasPre("…")},e.hasSemicolon=function(){return this.hasPost(";")},e.hasSlash=function(){return/\//.test(this.text)},e.hasHyphen=function(){const e=/^(-|–|—)$/;return e.test(this.post)||e.test(this.pre)},e.hasDash=function(){const e=/ (-|–|—) /;return e.test(this.post)||e.test(this.pre)},e.hasContraction=function(){return Boolean(this.implicit)},e.addPunctuation=function(e){return","!==e&&";"!==e||(this.post=this.post.replace(e,"")),this.post=e+this.post,this}}($);var E={};const j=function(e,t){let r=e.length,n=t.length;if(0===r)return n;if(0===n)return r;let a=(n>r?n:r)+1;if(Math.abs(r-n)>(a||100))return a||100;let i,o,s,l,u,c,h=[];for(let e=0;e4)return r;s=t[i-1],l=o===s?0:1,u=h[a-1][i]+1,(c=h[a][i-1]+1)1&&i>1&&o===t[i-2]&&e[a-2]===s&&(c=h[a-2][i-2]+l)2&&void 0!==arguments[2]?arguments[2]:3;if(e===t)return 1;if(e.lengtht.fuzzy)return!0;if(!0===t.soft&&(r=H(t.word,e.root),r>t.fuzzy))return!0}return t.word===e.clean||t.word===e.text||t.word===e.reduced}return void 0!==t.tag?!0===e.tags[t.tag]:void 0!==t.method?"function"==typeof e[t.method]&&!0===e[t.method]():void 0!==t.regex?t.regex.test(e.clean):void 0!==t.fastOr?!(!e.implicit||!0!==t.fastOr.hasOwnProperty(e.implicit))||t.fastOr.hasOwnProperty(e.reduced)||t.fastOr.hasOwnProperty(e.text):void 0!==t.choices&&("and"===t.operator?t.choices.every((t=>x(e,t,r,n))):t.choices.some((t=>x(e,t,r,n))))};x=function(e,t,r,n){let a=N(e,t,r,n);return!0===t.negative?!a:a};const F=x,C=c,B={};E.doesMatch=function(e,t,r){return F(this,e,t,r)},E.isAcronym=function(){return C(this.text)},E.isImplicit=function(){return""===this.text&&Boolean(this.implicit)},E.isKnown=function(){return Object.keys(this.tags).some((e=>!0!==B[e]))},E.setRoot=function(e){let t=e.transforms,r=this.implicit||this.clean;if(this.tags.Plural&&(r=t.toSingular(r,e)),this.tags.Verb&&!this.tags.Negative&&!this.tags.Infinitive){let n=null;this.tags.PastTense?n="PastTense":this.tags.Gerund?n="Gerund":this.tags.PresentTense?n="PresentTense":this.tags.Participle?n="Participle":this.tags.Actor&&(n="Actor"),r=t.toInfinitive(r,e,n)}this.root=r};var G={};const T=i,z=/[\s-]/,O=/^[A-Z-]+$/;G.textOut=function(e,t,r){e=e||{};let n=this.text,a=this.pre,i=this.post;return!0===e.reduced&&(n=this.reduced||""),!0===e.root&&(n=this.root||""),!0===e.implicit&&this.implicit&&(n=this.implicit||""),!0===e.normal&&(n=this.clean||this.text||""),!0===e.root&&(n=this.root||this.reduced||""),!0===e.unicode&&(n=T(n)),!0===e.titlecase&&(this.tags.ProperNoun&&!this.titleCase()||(this.tags.Acronym?n=n.toUpperCase():O.test(n)&&!this.tags.Acronym&&(n=n.toLowerCase()))),!0===e.lowercase&&(n=n.toLowerCase()),!0===e.acronyms&&this.tags.Acronym&&(n=n.replace(/\./g,"")),!0!==e.whitespace&&!0!==e.root||(a="",i=" ",!1!==z.test(this.post)&&!e.last||this.implicit||(i="")),!0!==e.punctuation||e.root||(!0===this.hasPost(".")?i="."+i:!0===this.hasPost("?")?i="?"+i:!0===this.hasPost("!")?i="!"+i:!0===this.hasPost(",")?i=","+i:!0===this.hasEllipses()&&(i="..."+i)),!0!==t&&(a=""),!0!==r&&(i=""),!0===e.abbreviations&&this.tags.Abbreviation&&(i=i.replace(/^\./,"")),a+n+i};var I={};const V={Auxiliary:1,Possessive:1},M=function(e,t){let r=Object.keys(e.tags);const n=t.tags;return r=r.sort(((e,t)=>V[t]||!n[t]?-1:n[t]?n[e]?n[e].lineage.length>n[t].lineage.length?1:n[e].isA.length>n[t].isA.length?-1:0:0:1)),r},J={text:!0,tags:!0,implicit:!0,whitespace:!0,clean:!1,id:!1,index:!1,offset:!1,bestTag:!1};I.json=function(e,t){e=e||{};let r={};return(e=Object.assign({},J,e)).text&&(r.text=this.text),e.normal&&(r.normal=this.clean),e.tags&&(r.tags=Object.keys(this.tags)),e.clean&&(r.clean=this.clean),(e.id||e.offset)&&(r.id=this.id),e.implicit&&null!==this.implicit&&(r.implicit=this.implicit),e.whitespace&&(r.pre=this.pre,r.post=this.post),e.bestTag&&(r.bestTag=M(this,t)[0]),r};var L=Object.assign({},P,$,E,G,I),S={},_={};function q(){return"undefined"!=typeof window&&window.document}const K=function(e,t){for(e=e.toString();e.lengthe.charAt(0).toUpperCase()+e.substr(1);const W=_,R=function(e,t,r,n){let a=n.tags;if(""===t||"."===t||"-"===t)return;if("#"===t[0]&&(t=t.replace(/^#/,"")),t=W.titleCase(t),!0===e.tags[t])return;const i=n.isVerbose();!0===i&&W.logTag(e,t,r),e.tags[t]=!0,!0===a.hasOwnProperty(t)&&(a[t].isA.forEach((t=>{e.tags[t]=!0,!0===i&&W.logTag(e,"→ "+t)})),e.unTag(a[t].notA,"←",n))},U=_,Q=/^[a-z]/,Z=e=>e.charAt(0).toUpperCase()+e.substr(1),X=function(e,t,r,n){const a=n.isVerbose();if("*"===t)return e.tags={},e;t=t.replace(/^#/,""),!0===Q.test(t)&&(t=Z(t)),!0===e.tags[t]&&(delete e.tags[t],!0===a&&U.logUntag(e,t,r));const i=n.tags;if(i[t]){let r=i[t].lineage;for(let t=0;t0&&void 0!==arguments[0]?arguments[0]:"";e=String(e);let t=ae(e);this.text=t.text||"",this.clean=t.clean,this.reduced=t.reduced,this.root=null,this.implicit=null,this.pre=t.pre||"",this.post=t.post||"",this.tags={},this.prev=null,this.next=null,this.id=ne(t.clean),this.isA="Term",t.alias&&(this.alias=t.alias)}set(e){let t=ae(e);return this.text=t.text,this.clean=t.clean,this.reduced=t.reduced,this.root=null,this.implicit=null,this}}se.prototype.clone=function(){let e=new se(this.text);return e.pre=this.pre,e.post=this.post,e.clean=this.clean,e.reduced=this.reduced,e.root=this.root,e.implicit=this.implicit,e.tags=Object.assign({},this.tags),e},Object.assign(se.prototype,ie),Object.assign(se.prototype,oe);var le=se,ue={terms:function(e){if(0===this.length)return[];if(this.cache.terms)return void 0!==e?this.cache.terms[e]:this.cache.terms;let t=[this.pool.get(this.start)];for(let r=0;re.clone()));return t.forEach(((e,r)=>{this.pool.add(e),t[r+1]&&(e.next=t[r+1].id),t[r-1]&&(e.prev=t[r-1].id)})),this.buildFrom(t[0].id,t.length)},lastTerm:function(){let e=this.terms();return e[e.length-1]},hasId:function(e){if(0===this.length||!e)return!1;if(this.start===e)return!0;if(this.cache.terms){let t=this.cache.terms;for(let r=0;r""!==e.text)).length},fullSentence:function(){let e=this.terms(0);for(;e.prev;)e=this.pool.get(e.prev);let t=e.id,r=1;for(;e.next;)e=this.pool.get(e.next),r+=1;return this.buildFrom(t,r)}},ce={};const he=function(e){return e.replace(/ +$/,"")};ce.text=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0;"string"==typeof e&&(e="normal"===e?{whitespace:!0,unicode:!0,lowercase:!0,punctuation:!0,acronyms:!0,abbreviations:!0,implicit:!0,normal:!0}:"clean"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,normal:!0}:"reduced"===e?{punctuation:!1,titlecase:!1,lowercase:!0,whitespace:!0,unicode:!0,implicit:!0,reduced:!0}:"implicit"===e?{punctuation:!0,implicit:!0,whitespace:!0,trim:!0}:"root"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,root:!0}:{});let n=this.terms(),a=!1;n[0]&&null===n[0].prev&&null===n[n.length-1].next&&(a=!0);let i=n.reduce(((i,o,s)=>{if(0===s&&""===o.text&&null!==o.implicit&&!e.implicit)return i;e.last=r&&s===n.length-1;let l=!0,u=!0;return!1===a&&(0===s&&t&&(l=!1),s===n.length-1&&r&&(u=!1)),i+o.textOut(e,l,u)}),"");return!0===a&&r&&(i=he(i)),!0===e.trim&&(i=i.trim()),i};var de={trim:function(){let e=this.terms();if(e.length>0){e[0].pre=e[0].pre.replace(/^\s+/,"");let t=e[e.length-1];t.post=t.post.replace(/\s+$/,"")}return this}},ge={};const pe=/[.?!]\s*$/,me=function(e,t){return pe.test(t)?t+e.match(/\s*$/):e},fe=function(e,t){t[0].pre=e[0].pre;let r=e[e.length-1],n=t[t.length-1];n.post=me(r.post,n.post),r.post="",""===r.post&&(r.post+=" ")},be=function(e,t,r){let n=e[e.length-1],a=t[t.length-1],i=n.next;n.next=t[0].id,a.next=i,i&&(r.get(i).prev=a.id);let o=e[0].id;o&&(t[0].prev=o)},ye=function(e){return e.filter(((t,r)=>e.indexOf(t)===r))},ve=/ /,we=function(e){let t=e[e.length-1];!1===ve.test(t.post)&&(t.post+=" ")},ke=function(e,t,r){let n=r[r.length-1];n.next=e.start;let a=e.pool,i=a.get(e.start);i.prev&&(a.get(i.prev).next=t.start),r[0].prev=e.terms(0).prev,e.terms(0).prev=n.id},Ae=function(e){return e.filter(((t,r)=>e.indexOf(t)===r))},De=function(e,t,r,n){let a=e.parents();a.push(e),a.forEach((e=>{let a=e.list.find((e=>e.hasId(t)));a&&(a.length-=r,a.start===t&&(a.start=n.id),a.cache={})})),e.list=e.list.filter((e=>!(!e.start||!e.length)))},Pe=function(e,t,r){let n=e.terms(),a=t.terms();fe(n,a),be(n,a,e.pool);let i=[e],o=e.start,s=[r];return s=s.concat(r.parents()),s.forEach((e=>{let t=e.list.filter((e=>e.hasId(o)));i=i.concat(t)})),i=ye(i),i.forEach((e=>{e.length+=t.length})),e.cache={},e},$e=function(e,t,r){const n=e.start;let a=t.terms();we(a),ke(e,t,a);let i=[e],o=[r];return o=o.concat(r.parents()),o.forEach((e=>{let r=e.list.filter((e=>e.hasId(n)||e.hasId(t.start)));i=i.concat(r)})),i=Ae(i),i.forEach((e=>{e.length+=t.length,e.start===n&&(e.start=t.start),e.cache={}})),e},Ee=function(e,t){let r=t.pool(),n=e.terms(),a=r.get(n[0].prev)||{},i=r.get(n[n.length-1].next)||{};n[0].implicit&&a.implicit&&(a.set(a.implicit),a.post+=" "),De(t,e.start,e.length,i),a&&(a.next=i.id),i&&(i.prev=a.id)};ge.append=function(e,t){return Pe(this,e,t),this},ge.prepend=function(e,t){return $e(this,e,t),this},ge.delete=function(e){return Ee(this,e),this},ge.replace=function(e,t){let r=this.length;Pe(this,e,t);let n=this.buildFrom(this.start,this.length);n.length=r,Ee(n,t)},ge.splitOn=function(e){let t=this.terms(),r={before:null,match:null,after:null},n=t.findIndex((t=>t.id===e.start));if(-1===n)return r;let a=t.slice(0,n);a.length>0&&(r.before=this.buildFrom(a[0].id,a.length));let i=t.slice(n,n+e.length);i.length>0&&(r.match=this.buildFrom(i[0].id,i.length));let o=t.slice(n+e.length,t.length);return o.length>0&&(r.after=this.buildFrom(o[0].id,o.length,this.pool)),r};var je={json:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r={};return e.text&&(r.text=this.text()),e.normal&&(r.normal=this.text("normal")),e.clean&&(r.clean=this.text("clean")),e.reduced&&(r.reduced=this.text("reduced")),e.implicit&&(r.implicit=this.text("implicit")),e.root&&(r.root=this.text("root")),e.trim&&(r.text&&(r.text=r.text.trim()),r.normal&&(r.normal=r.normal.trim()),r.reduced&&(r.reduced=r.reduced.trim())),e.terms&&(!0===e.terms&&(e.terms={}),r.terms=this.terms().map((r=>r.json(e.terms,t)))),r}},He={lookAhead:function(e){e||(e=".*");let t=this.pool,r=[];const n=function(e){let a=t.get(e);a&&(r.push(a),a.prev&&n(a.next))};let a=this.terms(),i=a[a.length-1];return n(i.next),0===r.length?[]:this.buildFrom(r[0].id,r.length).match(e)},lookBehind:function(e){e||(e=".*");let t=this.pool,r=[];const n=function(e){let a=t.get(e);a&&(r.push(a),a.prev&&n(a.prev))};let a=t.get(this.start);return n(a.prev),0===r.length?[]:this.buildFrom(r[r.length-1].id,r.length).match(e)}},xe=Object.assign({},ue,ce,de,ge,je,He),Ne={},Fe=function(e,t){if(0===t.length)return!0;for(let e=0;e0)return!0;if(!0===r.anything&&!0===r.negative)return!0}return!1},Ce={};!function(e){e.getGreedy=function(e,t){let r=Object.assign({},e.regs[e.r],{start:!1,end:!1}),n=e.t;for(;e.t1&&void 0!==arguments[1]?arguments[1]:0,n=t.regs[t.r],a=!1;for(let e=0;e{let a=0,i=t.t+n+r+a;if(void 0===t.terms[i])return!1;let o=t.terms[i].doesMatch(e,i+t.start_i,t.phrase_length);if(!0===o&&!0===e.greedy)for(let r=1;r{let n=r.every(((t,r)=>{let n=e.t+r;return void 0!==e.terms[n]&&e.terms[n].doesMatch(t,n,e.phrase_length)}));return!0===n&&r.length>t&&(t=r.length),n}))&&t},e.getGroup=function(e,t,r){if(e.groups[e.groupId])return e.groups[e.groupId];const n=e.terms[t].id;return e.groups[e.groupId]={group:String(r),start:n,length:0},e.groups[e.groupId]}}(Ce);const Be=r,Ge=Ce;var Te=function(e,t,r,n){let a={t:0,terms:e,r:0,regs:t,groups:{},start_i:r,phrase_length:n,hasGroup:!1,groupId:null,previousGroup:null};for(;a.r!e.optional)))break;return null}if(!0===e.anything&&!0===e.greedy){let r=Ge.greedyTo(a,t[a.r+1]);if(null===r||0===r)return null;if(void 0!==e.min&&r-a.te.max){a.t=a.t+e.max;continue}!0===a.hasGroup&&(Ge.getGroup(a,a.t,e.named).length=r-a.t),a.t=r;continue}if(void 0!==e.choices&&"or"===e.operator){let t=Ge.doOrBlock(a);if(t){if(!0===e.negative)return null;!0===a.hasGroup&&(Ge.getGroup(a,a.t,e.named).length+=t),a.t+=t;continue}if(!e.optional)return null}if(void 0!==e.choices&&"and"===e.operator){let t=Ge.doAndBlock(a);if(t){if(!0===e.negative)return null;!0===a.hasGroup&&(Ge.getGroup(a,a.t,e.named).length+=t),a.t+=t;continue}if(!e.optional)return null}let r=a.terms[a.t],i=r.doesMatch(e,a.start_i+a.t,a.phrase_length);if(!0===e.anything||!0===i||Ge.isEndGreedy(e,a)){let i=a.t;if(e.optional&&t[a.r+1]&&e.negative)continue;if(e.optional&&t[a.r+1]){let n=r.doesMatch(t[a.r+1],a.start_i+a.t,a.phrase_length);if(e.negative||n){let e=a.terms[a.t+1];e&&e.doesMatch(t[a.r+1],a.start_i+a.t,a.phrase_length)||(a.r+=1)}}if(a.t+=1,!0===e.end&&a.t!==a.terms.length&&!0!==e.greedy)return null;if(!0===e.greedy){if(a.t=Ge.getGreedy(a,t[a.r+1]),null===a.t)return null;if(e.min&&e.min>a.t)return null;if(!0===e.end&&a.start_i+a.t!==n)return null}if(!0===a.hasGroup){const t=Ge.getGroup(a,i,e.named);a.t>1&&e.greedy?t.length+=a.t-i:t.length++}}else{if(e.negative){let t=Object.assign({},e);if(t.negative=!1,!0===a.terms[a.t].doesMatch(t,a.start_i+a.t,a.phrase_length))return null}if(!0!==e.optional){if(a.terms[a.t].isImplicit()&&t[a.r-1]&&a.terms[a.t+1]){if(a.terms[a.t-1]&&a.terms[a.t-1].implicit===t[a.r-1].word)return null;if(a.terms[a.t+1].doesMatch(e,a.start_i+a.t,a.phrase_length)){a.t+=2;continue}}return null}}}return{match:a.terms.slice(0,a.t),groups:a.groups}},ze=function(e,t,r){if(!r||0===r.length)return r;if(t.some((e=>e.end))){let t=e[e.length-1];r=r.filter((e=>{let{match:r}=e;return-1!==r.indexOf(t)}))}return r};const Oe=/(?:^|\s)([\!\[\^]*(?:<[^<]*>)?\/.*?[^\\\/]\/[\?\]\+\*\$~]*)(?:\s|$)/,Ie=/([\!\[\^]*(?:<[^<]*>)?\([^\)]+[^\\\)]\)[\?\]\+\*\$~]*)(?:\s|$)/,Ve=/ /g,Me=e=>/^[\!\[\^]*(<[^<]*>)?\(/.test(e)&&/\)[\?\]\+\*\$~]*$/.test(e),Je=e=>/^[\!\[\^]*(<[^<]*>)?\//.test(e)&&/\/[\?\]\+\*\$~]*$/.test(e),Le=function(e){return e=(e=e.map((e=>e.trim()))).filter((e=>e))};var Se=function(e){let t=e.split(Oe),r=[];t.forEach((e=>{Je(e)?r.push(e):r=r.concat(e.split(Ie))})),r=Le(r);let n=[];return r.forEach((e=>{Me(e)||Je(e)?n.push(e):n=n.concat(e.split(Ve))})),n=Le(n),n};const _e=/\{([0-9]+,?[0-9]*)\}/,qe=/&&/,Ke=new RegExp(/^<\s*?(\S+)\s*?>/),We=e=>e.charAt(0).toUpperCase()+e.substr(1),Re=function(e){return e[e.length-1]},Ue=function(e){return e[0]},Qe=function(e){return e.substr(1)},Ze=function(e){return e.substr(0,e.length-1)},Xe=function(e){return e=Qe(e),e=Ze(e)},Ye=function(e){let t={};for(let r=0;r<2;r+=1){if("$"===Re(e)&&(t.end=!0,e=Ze(e)),"^"===Ue(e)&&(t.start=!0,e=Qe(e)),("["===Ue(e)||"]"===Re(e))&&(t.named=!0,"["===Ue(e)?t.groupType="]"===Re(e)?"single":"start":t.groupType="end",e=(e=e.replace(/^\[/,"")).replace(/\]$/,""),"<"===Ue(e))){const r=Ke.exec(e);r.length>=2&&(t.named=r[1],e=e.replace(r[0],""))}if("+"===Re(e)&&(t.greedy=!0,e=Ze(e)),"*"!==e&&"*"===Re(e)&&"\\*"!==e&&(t.greedy=!0,e=Ze(e)),"?"===Re(e)&&(t.optional=!0,e=Ze(e)),"!"===Ue(e)&&(t.negative=!0,e=Qe(e)),"("===Ue(e)&&")"===Re(e)){qe.test(e)?(t.choices=e.split(qe),t.operator="and"):(t.choices=e.split("|"),t.operator="or"),t.choices[0]=Qe(t.choices[0]);let r=t.choices.length-1;t.choices[r]=Ze(t.choices[r]),t.choices=t.choices.map((e=>e.trim())),t.choices=t.choices.filter((e=>e)),t.choices=t.choices.map((e=>e.split(/ /g).map(Ye))),e=""}if("/"===Ue(e)&&"/"===Re(e))return e=Xe(e),t.regex=new RegExp(e),t;if("~"===Ue(e)&&"~"===Re(e))return e=Xe(e),t.soft=!0,t.word=e,t}return!0===_e.test(e)&&(e=e.replace(_e,((e,r)=>{let n=r.split(/,/g);return 1===n.length?(t.min=Number(n[0]),t.max=Number(n[0])):(t.min=Number(n[0]),t.max=Number(n[1]||999)),t.greedy=!0,t.optional=!0,""}))),"#"===Ue(e)?(t.tag=Qe(e),t.tag=We(t.tag),t):"@"===Ue(e)?(t.method=Qe(e),t):"."===e?(t.anything=!0,t):"*"===e?(t.anything=!0,t.greedy=!0,t.optional=!0,t):(e&&(e=(e=e.replace("\\*","*")).replace("\\.","."),t.word=e.toLowerCase()),t)},et=function(e){let t,r=!1,n=-1;for(let a=0;a{if(void 0!==e.choices&&!0===e.choices.every((e=>{if(1!==e.length)return!1;let t=e[0];return void 0!==t.word&&!0!==t.negative&&!0!==t.optional&&!0!==t.method}))){let t={};e.choices.forEach((e=>{t[e[0].word]=!0})),e.fastOr=t,delete e.choices}return e}))},rt=Se,nt=Ye,at=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.filter((e=>e.groupType)).length>0&&(e=et(e)),t.fuzzy||(e=tt(e)),e},it=function(e){return"[object Array]"===Object.prototype.toString.call(e)},ot=function(e){return[{choices:e.map((e=>[{word:e}])),operator:"or"}]},st=function(e){if(!e||!e.list||!e.list[0])return[];let t=[];return e.list.forEach((e=>{let r=[];e.terms().forEach((e=>{r.push(e.id)})),t.push(r)})),[{idBlocks:t}]},lt=function(e,t){return!0===t.fuzzy&&(t.fuzzy=.85),"number"==typeof t.fuzzy&&(e=e.map((e=>(t.fuzzy>0&&e.word&&(e.fuzzy=t.fuzzy),e.choices&&e.choices.forEach((e=>{e.forEach((e=>{e.fuzzy=t.fuzzy}))})),e)))),e};var ut=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==e||""===e)return[];if("object"==typeof e){if(it(e)){if(0===e.length||!e[0])return[];if("object"==typeof e[0])return e;if("string"==typeof e[0])return ot(e)}return e&&"Doc"===e.isA?st(e):[]}"number"==typeof e&&(e=String(e));let r=rt(e);return r=r.map((e=>nt(e))),r=at(r,t),r=lt(r,t),r};const ct=Fe,ht=Te,dt=ze,gt=ut,pt=function(e,t){let r=[],n=t[0].idBlocks;for(let t=0;t{0!==n.length&&n.every(((r,n)=>e[t+n].id===r))&&(r.push({match:e.slice(t,t+n.length)}),t+=n.length-1)}));return r},mt=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof t&&(t=gt(t)),!0===ct(e,t))return[];const n=t.filter((e=>!0!==e.optional&&!0!==e.negative)).length;let a=e.terms(),i=[];if(t[0].idBlocks){let e=pt(a,t);if(e&&e.length>0)return dt(a,t,e)}if(!0===t[0].start){let e=ht(a,t,0,a.length);return e&&e.match&&e.match.length>0&&(e.match=e.match.filter((e=>e)),i.push(e)),dt(a,t,i)}for(let e=0;ea.length);e+=1){let n=ht(a.slice(e),t,e,a.length);if(n&&n.match&&n.match.length>0&&(e+=n.match.length-1,n.match=n.match.filter((e=>e)),i.push(n),!0===r))return dt(a,t,i)}return dt(a,t,i)},ft=mt,bt=mt,yt=function(e,t){let r={};ft(e,t).forEach((e=>{let{match:t}=e;t.forEach((e=>{r[e.id]=!0}))}));let n=e.terms(),a=[],i=[];return n.forEach((e=>{!0!==r[e.id]?i.push(e):i.length>0&&(a.push(i),i=[])})),i.length>0&&a.push(i),a};Ne.match=function(e){let t=bt(this,e,arguments.length>1&&void 0!==arguments[1]&&arguments[1]);return t=t.map((e=>{let{match:t,groups:r}=e,n=this.buildFrom(t[0].id,t.length,r);return n.cache.terms=t,n})),t},Ne.has=function(e){return bt(this,e,!0).length>0},Ne.not=function(e){let t=yt(this,e);return t=t.map((e=>this.buildFrom(e[0].id,e.length))),t},Ne.canBe=function(e,t){let r=[],n=this.terms(),a=!1;for(let i=0;ie.length>0)).map((e=>this.buildFrom(e[0].id,e.length))),r};const vt=xe,wt=Ne;class kt{constructor(e,t,r){this.start=e,this.length=t,this.isA="Phrase",Object.defineProperty(this,"pool",{enumerable:!1,writable:!0,value:r}),Object.defineProperty(this,"cache",{enumerable:!1,writable:!0,value:{}}),Object.defineProperty(this,"groups",{enumerable:!1,writable:!0,value:{}})}}kt.prototype.buildFrom=function(e,t,r){let n=new kt(e,t,this.pool);return r&&Object.keys(r).length>0?n.groups=r:n.groups=this.groups,n},Object.assign(kt.prototype,wt),Object.assign(kt.prototype,vt);const At={term:"terms"};Object.keys(At).forEach((e=>kt.prototype[e]=kt.prototype[At[e]]));var Dt=kt;class Pt{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object.defineProperty(this,"words",{enumerable:!1,value:e})}add(e){return this.words[e.id]=e,this}get(e){return this.words[e]}remove(e){delete this.words[e]}merge(e){return Object.assign(this.words,e.words),this}stats(){return{words:Object.keys(this.words).length}}}Pt.prototype.clone=function(){let e=Object.keys(this.words).reduce(((e,t)=>{let r=this.words[t].clone();return e[r.id]=r,e}),{});return new Pt(e)};var $t=Pt,Et=e=>{e.forEach(((t,r)=>{r>0&&(t.prev=e[r-1].id),e[r+1]&&(t.next=e[r+1].id)}))};const jt=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,Ht=/\S/,xt=/[ .][A-Z]\.? *$/i,Nt=/(?:\u2026|\.{2,}) *$/,Ft=/((?:\r?\n|\r)+)/,Ct=/[a-z0-9\u00C0-\u00FF\u00a9\u00ae\u2000-\u3300\ud000-\udfff]/i,Bt=/^\s+/,Gt=function(e){let t=[],r=e.split(Ft);for(let e=0;e0&&(n.push(t),o=a[e+1]||"",s.hasLetter=!1),a[e]=""}if(0===n.length)return[e];for(let e=1;e(e[t]=!0,e)),{});const qt=function(e){return!0!==/^(re|un|micro|macro|trans|bi|mono|over)-?[^aeiou]./.test(e)&&(!0!==/^([a-z\u00C0-\u00FF/]+)(-|–|—)(like|ish|less|able)/i.test(e)&&(!0===/^([a-z\u00C0-\u00FF`"'/]+)(-|–|—)([a-z0-9\u00C0-\u00FF].*)/i.test(e)||!0===/^([0-9]{1,4})(-|–|—)([a-z\u00C0-\u00FF`"'/-]+$)/i.test(e)))},Kt=function(e){const t=/^[0-9]{1,4}(:[0-9][0-9])?([a-z]{1,2})? ?(-|–|—) ?$/,r=/^[0-9]{1,4}([a-z]{1,2})? ?$/;for(let n=0;n0?(t[t.length-1]+=a,t.push(n)):t.push(a+n),a=""):a+=n}return a&&(0===t.length&&(t[0]=""),t[t.length-1]+=a),t=Wt(t),t=Kt(t),t=t.filter((e=>e)),t},rr=function(e){return"[object Array]"===Object.prototype.toString.call(e)};var nr=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,n=null;return"string"!=typeof e&&("number"==typeof e?e=String(e):rr(e)&&(n=e)),n=n||er(e,t),n=n.map((e=>tr(e))),r=r||new Xt,n.map((e=>{e=e.map((e=>{let t=new Qt(e);return r.add(t),t})),Yt(e);let t=new Zt(e[0].id,e.length,r);return t.cache.terms=e,t}))};const ar=le,ir=Dt,or=$t,sr=Et;var lr=function(e,t){let r=new or;return e.map(((e,n)=>{let a=e.terms.map(((a,i)=>{let o=new ar(a.text);return o.pre=void 0!==a.pre?a.pre:"",void 0===a.post&&(a.post=" ",i>=e.terms.length-1&&(a.post=". ",n>=e.terms.length-1&&(a.post="."))),o.post=void 0!==a.post?a.post:" ",a.tags&&a.tags.forEach((e=>o.tag(e,"",t))),r.add(o),o}));return sr(a),new ir(a[0].id,a.length,r)}))},ur="13.11.4";const cr=["Person","Place","Organization"],hr=["Noun","Verb","Adjective","Adverb","Value","QuestionWord"],dr={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},gr=function(e){return e.filter(((e,t,r)=>r.indexOf(e)===t))},pr=function(e){return e.filter(((e,t,r)=>r.indexOf(e)===t))},mr=function(e){return Object.keys(e).forEach((t=>{e[t].color?e[t].color=e[t].color:dr[t]?e[t].color=dr[t]:e[t].isA.some((r=>!!dr[r]&&(e[t].color=dr[r],!0)))})),e},fr=function(e){return Object.keys(e).forEach((t=>{let r=e[t],n=r.isA.length;for(let t=0;t{let n=e[r];n.notA=n.notA||[],n.isA.forEach((t=>{if(e[t]&&e[t].notA){let r="string"==typeof e[t].notA?[e[t].isA]:e[t].notA||[];n.notA=n.notA.concat(r)}}));for(let a=0;a{let n=e[r];n.lineage=[];for(let a=0;a{let r=e[t];r.isA=r.isA||[],"string"==typeof r.isA&&(r.isA=[r.isA]),r.notA=r.notA||[],"string"==typeof r.notA&&(r.notA=[r.notA])})),e};var wr=function(e){return e=vr(e),e=fr(e),e=br(e),e=mr(e),e=yr(e)};const kr={Noun:{notA:["Verb","Adjective","Adverb"]},Singular:{isA:"Noun",notA:"Plural"},ProperNoun:{isA:"Noun"},Person:{isA:["ProperNoun","Singular"],notA:["Place","Organization","Date"]},FirstName:{isA:"Person"},MaleName:{isA:"FirstName",notA:["FemaleName","LastName"]},FemaleName:{isA:"FirstName",notA:["MaleName","LastName"]},LastName:{isA:"Person",notA:["FirstName"]},NickName:{isA:"Person",notA:["FirstName","LastName"]},Honorific:{isA:"Noun",notA:["FirstName","LastName","Value"]},Place:{isA:"Singular",notA:["Person","Organization"]},Country:{isA:["Place","ProperNoun"],notA:["City"]},City:{isA:["Place","ProperNoun"],notA:["Country"]},Region:{isA:["Place","ProperNoun"]},Address:{isA:"Place"},Organization:{isA:["Singular","ProperNoun"],notA:["Person","Place"]},SportsTeam:{isA:"Organization"},School:{isA:"Organization"},Company:{isA:"Organization"},Plural:{isA:"Noun",notA:["Singular"]},Uncountable:{isA:"Noun"},Pronoun:{isA:"Noun",notA:cr},Actor:{isA:"Noun",notA:cr},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:cr},Demonym:{isA:["Noun","ProperNoun"],notA:cr},Possessive:{isA:"Noun"}},Ar={Verb:{notA:["Noun","Adjective","Adverb","Value","Expression"]},PresentTense:{isA:"Verb",notA:["PastTense","FutureTense"]},Infinitive:{isA:"PresentTense",notA:["PastTense","Gerund"]},Imperative:{isA:"Infinitive"},Gerund:{isA:"PresentTense",notA:["PastTense","Copula","FutureTense"]},PastTense:{isA:"Verb",notA:["FutureTense"]},FutureTense:{isA:"Verb"},Copula:{isA:"Verb"},Modal:{isA:"Verb",notA:["Infinitive"]},PerfectTense:{isA:"Verb",notA:"Gerund"},Pluperfect:{isA:"Verb"},Participle:{isA:"PastTense"},PhrasalVerb:{isA:"Verb"},Particle:{isA:"PhrasalVerb"},Auxiliary:{notA:["Noun","Adjective","Value"]}},Dr={Value:{notA:["Verb","Adjective","Adverb"]},Ordinal:{isA:"Value",notA:["Cardinal"]},Cardinal:{isA:"Value",notA:["Ordinal"]},Fraction:{isA:"Value",notA:["Noun"]},RomanNumeral:{isA:"Cardinal",notA:["Ordinal","TextValue"]},TextValue:{isA:"Value",notA:["NumericValue"]},NumericValue:{isA:"Value",notA:["TextValue"]},Money:{isA:"Cardinal"},Percent:{isA:"Value"}},Pr={Adjective:{notA:["Noun","Verb","Adverb","Value"]},Comparable:{isA:["Adjective"]},Comparative:{isA:["Adjective"]},Superlative:{isA:["Adjective"],notA:["Comparative"]},NumberRange:{},Adverb:{notA:["Noun","Verb","Adjective","Value"]},Date:{notA:["Verb","Adverb","Preposition","Adjective"]},Month:{isA:["Date","Singular"],notA:["Year","WeekDay","Time"]},WeekDay:{isA:["Date","Noun"]},Timezone:{isA:["Date","Noun"],notA:["Adjective","ProperNoun"]},Time:{isA:["Date"],notA:["AtMention"]},Determiner:{notA:hr},Conjunction:{notA:hr},Preposition:{notA:hr},QuestionWord:{notA:["Determiner"]},Currency:{isA:["Noun"]},Expression:{notA:["Noun","Adjective","Verb","Adverb"]},Abbreviation:{},Url:{notA:["HashTag","PhoneNumber","Verb","Adjective","Value","AtMention","Email"]},PhoneNumber:{notA:["HashTag","Verb","Adjective","Value","AtMention","Email"]},HashTag:{},AtMention:{isA:["Noun"],notA:["HashTag","Verb","Adjective","Value","Email"]},Emoji:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Emoticon:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Email:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Acronym:{notA:["Plural","RomanNumeral"]},Negative:{notA:["Noun","Adjective","Value"]},Condition:{notA:["Verb","Adjective","Noun","Value"]}},$r=wr,Er=function(e,t){Object.keys(e).forEach((r=>{t[r]=e[r]}))};var jr=(()=>{let e={};return Er(kr,e),Er(Ar,e),Er(Dr,e),Er(Pr,e),e=$r(e),e})(),Hr={Comparative:"true¦better",Superlative:"true¦earlier",PresentTense:"true¦is,sounds",Value:"true¦a few",Noun:"true¦a5b4c2f1here,ie,lit,m0no doubt,pd,tce;a,d;t,y;a,ca,o0;l,rp;a,l;d,l,rc",Copula:"true¦a1is,w0;as,ere;m,re",PastTense:"true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan",Condition:"true¦if,lest,unless",Preposition:"true¦'o,-,aLbIcHdGexcept,fFiDmidQnotwithstandiRoBpSqua,sAt6u3vi2w0;/o,hereNith0;!in,oR;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oJ;ans,ince,o that;',f0n2ut;!f;f,n0;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut",Gerund:"true¦accord0be0develop0go0result0stain0;ing",Negative:"true¦n0;ever,o0;!n,t",QuestionWord:"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s",Plural:"true¦records",Conjunction:"true¦&,aFbBcuz,how9in caEno8o7p5supposing,t2v1wh0yet;eth9ile;ers4s;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh",Abbreviation:"true¦a0Jb0Gc0Ad08e05f02g01h00iYjWkanVlTmNnKoJpFque,rDs8t6u5v2w0;is0r,y0B;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;ce,e0;l,mp,nn,x;ask,e2fc,gt,i1q,r,s,t,u0;pt,rg;r,tu;c,nJp0;!t;b,d,e0;pGs,v;a,d,ennNhd,l,p,r1s0vt;!eud;ef,o0;b,f,n;ct,kla,nt;e0ov;b0e;!r;a4d,essrs,i1lle,me,r7s0t;!tr;n1s0;c,ter;!n;!j,r,sc;at,it,lb,ng,t0;!d;!s;an,d,r,u0;l,n;a,da,e,n0;c,f;on,wy;a,en,ov;e1ig,l0m,r,t,y;!a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0ist,r;c,f,pt,t;a3ca,l,m2o0pl,res,yn;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v",Pronoun:"true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s",Singular:"true¦0:16;1:13;2:19;a16b0Tc0Kd0De0Af05g00hWiVjel0kitty,lTmPnOoNpHquestionGrEs9t6u4w3;ay,om03;nc10s 3;doll0Lst0N; rex,a4h3ic,ragedy,v show;ere,i2;l0x return;i6ky,omeoNt3uper bowl,yst15;ep4ri2u3;de0Yff;faTmoT;st1ze;al0i2o3;om,se;! mark;a7i1la6r4u3;dQrpoI;e3ie0Hobl0V;roga00ss releaG;te,y1;rt,te0N;bjWceJthers,verview;othi2umb1;a5ee08o3;del,m3nopo0rni2th1;!my;n,yf0;i3unch;ne;ci2nsect;ead start,o3uman right;l0me4u3;se;! run;adf0entlem6irl02laci1od,rand4u3;l0y; slam,fa3mo3;th1;an;a6ella,ly,ol0r4un3;di2;ee market,iWo3;nti1sP;mi0th1;conomy,gg,ner7ven4x3;ampTecu9;i2t;ad8e5inn1o3ragonf0ude;cumentGg3i0l0or;gy;ath,t3;ec3;tive;!dy;a9eili2h7i5o3redit card;ttage,u3;ri1sin;ty,vil w3;ar;andeli1ocol3;ate;n3rF;ary;aCel0lesJo8r5u3;n3tterf0;ti2;eakfa4o3;!th1;st;dy,tt5y3;!fri3;end;le;nki2r3;ri1;er;d5l0noma0u3;nt;ly; homin5verti3;si2;ng;em",FemaleName:"true¦0:J3;1:J7;2:IG;3:IF;4:IX;5:IK;6:JO;7:H0;8:JG;9:JK;A:HN;B:HY;C:IT;D:IP;E:JD;F:HC;G:I0;aGRbFLcDPdCYeBOfB4gADh9Ti9Gj8Gk7Gl60m49n3No3Jp37qu36r2Ds16t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof2;e3Uf2la,ra;h3iKlIna,ynH;ab,ep;da,ma;da,h3iHra;nab;aKeJi0Fol5BuIvH;etAonDO;i0na;le0sen2;el,gm3Jn,rGJs8W;aoHme0nyi;m62yAE;aMendDYhiDFiH;dele8lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;cIktoriBMlAole7viH;anC3enJ0;kF9tor2;da,lA9nus,rHs0;a,nHoniH4;a,iFQ;leHnesH4;nIHrH;i1y;g8rHxH5;su5te;aYeUhRiNoLrIuHy3;i,la;acIZiHu0L;c2na,sH;hBPta;nHr0H;iBNya;aJffaEOnHs6;a,gtiH;ng;!nFQra;aIeHomasi0;a,l9Po8Ares1;l2ndolwethu;g9Go88rIssH;!a,ie;eHi,ri9;sa,za;bPlNmLnJrIs6tHwa0;ia0um;a63yn;iHya;a,ka,s6;arB6e3iHmEDra;!ka;a,iH;a,t6;at6it6;a0Fcarlet3We0BhXiTkye,neza0oRtNuIyH;bIBlvi1;e,ha,mayIEni7sIzH;an3MetAie,y;anHi9;!a,e,nH;aDe;aJeH;fHl5GphH;an4;cHZr5;b2fiA8m0OnHphi1;d3ia,ja,ya;er3lJmon1nIobh8PtH;a,i;dy;lEPv2;aMeIirHo0risF7y5;a,lDK;ba,e0i5lJrH;iHrDOyl;!d8Hfa;ia,lDX;hd,iMki3nJrIu0w0yH;la,ma,na;i,le8on,ron;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye81vH;da,inj;e0ife;en1i0ma;anA5bNd3Nh1RiBkMlLmJndIrHs6vannaD;aDi0;ra,y;aHi3;nt6ra;lDKma,ome;ee0in8Ru3;in1ri0;a05e00hYiVoIuH;by,thDH;bScRghQl2KnPsJwIxH;anAXie,y;an,e0;aIeHie,lE; merBLann9ll1marDBt7;!lHnn1;iHyn;e,nH;a,d9K;da,i,na;ayy8D;hel62io;bDKer7yn;a,cIkHmas,n9Fta,ya;ki,o;helGki;ea,iannGDoH;da,n1K;an0bJem9Agi0iInHta,y0;a88ee;han83na;a,eH;cEAkaD;bi0chIe,i0mo0nHquEKvCy0;di,ia;aEIelHiB;!e,le;een4ia0;aNeMhKipaluk,oJrHute66;iHudenCQ;scil3LyamvaB;lly,rt2;ilome0oebe,ylH;is,lis;arl,ggy,nelope,r5t3;ige,m0TnKo5rvaDGtIulH;a,etAin1;ricHsy,tBY;a,e,ia;do3i06;ctav2dIfCZis6lHphCZumC3yunbileg;a,ga,iv2;eHvAC;l2tA;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aDeCma;ll1mi;aNcLhariBOkKlaJna,sHta,vi;anHha;ur;!y;a,iDTki;hoGk9VolH;a,eDJ;!mh;hir,lHna,risFsreC;!a,lBT;asuLdKh2i6CnJomi9rgEPtHzanin zah3;aHhal4;li1s6;cy,etA;a,e8iEV;nngu30;a09ckenz4e01iMoJrignayani,uriDDyH;a,rH;a,lNna,tG;bi0i3llBInH;a,iH;ca,ka,qD3;a,cTkaSlNmi,nLrItzi,yH;ar;aIiam,lH;anEO;!l,nB;dy,eHh,n4;nhGrva;aKdJiCPlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5EgNi,lKrH;edi79iIjem,on,yH;em,l;em,sF;an4iHliF;nHsCE;a,da;!an,han;b0DcASd0Be,g09ha,i08ja,l06n04rLsoum60tKuIv82x9IyHz4;a,bell,ra,soB9;de,rH;a,eC;h8Fild1t4;a,cYgUiKjor4l7Sn4s6tJwa,yH;!aHbe6Wja8lAE;m,nBH;a,ha,in1;!aJbCBeIja,lEna,sHt64;!a,ol,sa;!l1H;! Jh,mInH;!a,e,n1;!awit,i;aliAHcJeduarBfernIjHlui5Y;o6Ful2;anB;ecil2la3;arJeIie,oHr44ueriA;!t;!ry;et42i37;el4Ui76y;dHon,ue5;akran7y;ak,en,iHk,lo3O;a,ka,nB;a,re,s4te;daHg4;!l3A;alEd4elHge,isDBon0;ei8in1yn;el,le;a0Ne0CiYoQuLyH;d2la,nH;!a,dIeBGnHsCL;!a,eBF;a,sCJ;aCWcJel0PiFlIna,pHz;e,i7;a,u,wa;iHy;a0Se,ja,l2JnB;is,l1SrJttIuHvel4;el5is1;e,ie;aKeIi9na,rH;a86i9;lHn1t7;ei;!in1;aSbb9CdRepa,lMnJsIv2zH;!a,be5LetAz4;a,etA;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lHy;iHy;aA0e;!aH;!n5F;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx4y5;iHt4;c2t2;e2LlCG;la,nHra;a,ie,o3;a,or1;a,gh,laH;!ni;!h,nH;a,d3e,n5P;cOdon97iNkes6mi9Ana,rMtJurIvHxmi,y5;ern1in2;a,e54ie,yn;as6iIoH;nya,ya;fa,s6;a,isF;a,la;ey,ie,y;a04eZhXiOlAKoNrJyH;lHra;a,ee,ie;istHy6D;a,en,iIyH;!na;!e,n59;nul,ri,urtnB0;aOerNlAZmJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stC;!na,ra;aHei3ongordzol;dij1w5;el7QiKjsi,lJnIrH;a,i,ri;d3na,za;ey,i,lBDs4y;ra,s6;bi7cAJdiat7IeB2iRlQmPnyakuma19rNss6KtKvi7yH;!e,lH;a,eH;e,i8L;a6DeIhHi4NlEri0y;ar6Ber6Bie,leCrB2y;!lyn8Gri0;a,en,iHl5Soli0yn;!ma,n3VsF;a5il1;ei8Ei,l4;a,tl6L;a07eYiVoNuH;anLdKliHst63;a8HeHsF;!n8tH;!a,te;e5Ji3Jy;a,i7;!anNcelEd6RelGhan7RlLni,sIva0yH;a,ce;eHie;fHlEph5U;a,in1;eHie;en,n1;!a,e,n41;lHng;!i1ClH;!i1B;anMle0nJrIsH;i8Csi8C;i,ri;!a,elGif2CnH;a,etAiHy;!e,f2A;a,e8EiInH;a,e8DiH;e,n1;cMd1mi,nIque4Xsmin3Ovie3y8zH;min9;a9eIiH;ce,e,n1s;!lHsFt0F;e,le;inIk4lEquelH;in1yn;da,ta;lRmPnOo0rNsIvaHzaro;!a0lu,na;aJiIlaHob84;!n9N;do3;!belHdo3;!a,e,l39;a77en1i0ma;a,di3es,gr6Yji;a8elBogH;en1;a,e8iHo0se;a0na;aSeOiJoHusFyacin2B;da,ll4rten23snH;a,i9Q;lImaH;ri;aIdHlaI;a,egard;ry;ath1CiJlInriet7rmi8sH;sa,t1B;en2Sga,mi;di;bi2Dil8IlNnMrJsItHwa,yl8Iz7H;i5St4;n5Yti;iHmo51ri52;etH;!te;aDnaD;a,ey,l4;a03eXiSlQoOrKunJwH;enHyne1Q;!dolE;ay,el;acIetHiselB;a,chC;e,ieH;!la;ld1AogooH;sh;adys,enHor2yn2H;a,da,na;aKgi,lIna,ov89selHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald3Pi,m3Ctru8B;etAi4W;a,eHna;s26vieve;ma;bIil,le,mHrnet,yG;al5Ni5;i5FrielH;a,l1;aVeSiRloOoz2rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0O;n1s61;!ca;!rH;a,encH;e,ia;en,o0;lIn0rnH;!anB;ec2ic2;jr,n7rKtHy9;emIiHma,ouma7;ha,ma,n;eh;ah,iBrah,za0;cr4Nd0Ne0Mi0Lk7l04mWn4YrTsNtMuLvH;aJelIiH;!e,ta;in0Gyn;!ngel2S;geni1la,ni45;h5Sta;mLperanKtH;eIhHrel5;er;l30r9;za;a,eralB;iHma,nest2Jyn;cHka,n;a,ka;a,eMiJmH;aHie,y;!li8;lHn1;ee,iHy;a,e,ja;lHrald;da,y;aWeUiNlMma,no3oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c2da,f,nMsJzaH;!betHve7;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a;!in1na;leCs6;vi;eIiHna,wi0;e,th;l,n;aYeMh2iLjeneKoHul30;lor5Tminiq4In3FrHtt4;a,eCis,la,othHthy;ea,y;ba;an0AnaDon8x4ya;anQbPde,eOiMja,lJmetr2nHsir5K;a,iH;ce,se;a,iIla,orHphi8;es,is;a,l6D;dHrdH;re;!d5Cna;!b2HoraDra;a,d3nH;!a,e;hl2i0l0HmNnLphn1rIvi1XyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,etAiH;!ca,el1Cka,z;arHia;is;a0Se0Oh05i03lVoKrIynH;di,th2;istHy05;al,i0;lPnMrIurH;tn1E;aJd2NiHn2Nri8;!nH;a,e,n1;!l1X;cepci59n4sH;tanHuelo;ce,za;eHleC;en,tA;aJeoIotH;il51;!pat3;ir9rJudH;etAiH;a,ne;a,e,iH;ce,sZ;a3er3ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Ren,iHy;!an1e,n1;deJlseIrH;!i9yl;a,y;li8;nMrH;isKlImH;ai8;a,eHotA;n1tA;!sa;d3elGtH;al,elG;cIlH;esAi44;el2ilH;e,ia,y;itlZlYmilXndWrOsMtHy5;aKeJhHri0;erHleCrEy;in1;ri0;li0ri0;a33sH;a32ie;a,iNlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eHie,o7y;ne,y;na,sF;a0Hi0H;a,e,l1;is7l4;in,yn;a0Ie02iZlXoUrH;andSeQiJoIyH;an0nn;nwEok9;an3DdgLg0XtH;n2XtH;!aInH;ey,i,y;ny;etH;!t9;an0e,nH;da,na;i9y;bbi9glarIlo05nH;i7n4;ka;ancHossom,ythe;a,he;an17lja0nHsm3I;i7tH;ou;aUcky,linTni7rPssOtJulaDvH;!erlH;ey,y;hJsy,tH;e,iHy9;e,na;!anH;ie,y;!ie;nHt6yl;adIiH;ce;etAi8;ay,da;!triH;ce,z;rbJyaH;rmH;aa;a3ie,o3ra;a2Sb2Md23g1Zi1Qj5l16m0Xn09oi,r04sUtTuPvOwa,yIzH;ra,u0;aKes6gJlIseH;!l;in;un;!nH;a,na;a,i2Ir2J;drJgus1RrIsteH;ja;el2;a,ey,i,y;aahua,he0;hIi2Gja,mi7s2DtrH;id;aMlIraqHt21;at;eIi9yH;!n;e,iHy;gh;!nH;ti;iJleIo6pi7;ta;en,n1tA;aHelG;!n1J;a00dje5eYgUiSjQnJohito,toHya;inetAnH;el5ia;!aKeIiHmJ;e,ka;!mHtA;ar4;!belIliFmU;sa;!le;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tA;te;! JbImHstasiNya;ar2;el;cla3jul2pau5;aLberKeliJiHy;e,l2naH;!ta;a,ja;!ly;hGiIl2nB;da;a,ra;le;aWba,ePiMlKma,thJyH;a,c2sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c2is6jaKksaKna,sJxH;aHia;!nd3;ia,saH;nd3;ra;ia;i0nIyH;ah,na;a,is,naDoud;la;c6da,leCmNnLsH;haDlH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lEsH;on;yn;!lH;i8yn;ne;aKbIiHrL;!gaK;ey,i9y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya",Actor:"true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJecretary,oldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt",Honorific:"true¦a01bYcQdPeOfiJgIhon,jr,king,lHmCoffic00p7queen,r3s0taoiseach,vice6;e1fc,gt,ir,r,u0;ltRpt,rg;cond liInBrgeaJ;abbi,e0;ar1p9s,v0;!erend; admirX;astOhd,r0vt;esideDi1of0;!essM;me mini4nce0;!ss;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al",SportsTeam:"true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls",Uncountable:"true¦0:1J;a1Qb1Ic19d16e0Zf0Tg0Mh0Hi0Dj0Cknowled1Pl07mXnWoVpRrMsBt6vi5w1;a3ea0Ai2oo1;d,l;ldlife,ne;rmth,t0;neg16ol0Btae;e4h3oothpaste,r1una;affSou1;ble,sers,t;ermod1Lund0;a,nnis;a9cene09eri0Wh8il7kittl0Wnow,o6p4t2u1;g0Znshi0P;ati1Ke1;am,el;ace1De1;ci0Red;ap,cc0;k,v0;eep,ingl0O;d0Cfe17l1nd,tish;m10t;a4e2ic1;e,ke0L;c1laxa0Hsearch;ogni0Grea0G;bi0Hin;aOe3hys17last8o1ress03;l1rk,w0;it15y9;a11trY;bstetr13il,xygen;ational securi0Vews;a8e6ilk,o3u1;mps,s1;ic;n1o0G;ey,o1;gamy;a1chan0V;sl03t;chine1il,themat0T; learn09ry;aught0e3i2ogi0Qu1;ck,g0G;ce,ghtn06ngui0OteratL;a1isK;th0;ewel8usti0J;ce,mp1nformaStself;a1ortan0H;ti1;en0F;a4isto3o1;ck1mework,n1spitali09;ey;ry;ir,libut,ppiB;ene4o2r1um,ymna0B;aAound;l1ssip;d,f; 1t08;editOpo1;ol;i5lour,o2urnit1;ure;od,rgive1uri0wl;ne1;ss;c7sh;conomZduca6lectr5n3quip4thZvery1;body,o1thF;ne;joy1tertain1;ment;iciNonU;tiG;ar2iabet1raugh2;es;ts;a8elcius,h4ivPl3o1urrency;al,ld w1nfusiBttB;ar;assMoth3;aos,e1;e2w1;ing;se;r5sh;a5eef,i2lood,owls,read,utt0;er;lliar2s1;on;ds;g1ss;ga1;ge;c6dvi5ero3ir2mnes1rt,thlet8;ty;craft;b5d1naut5;ynam4;ce;id,ou1;st1;ics",Infinitive:"true¦0:6S;1:76;2:5C;3:74;4:73;5:67;6:6F;7:6Y;8:6Q;9:72;A:70;B:5X;C:6X;D:6L;E:77;F:5B;a6Kb66c57d4De3Xf3Jg3Dh37i2Uj2Sk2Ql2Hm26n23o1Yp1Jr0Rs06tYuTvOwHyG;awn,e31ield;aJe1Zhist6iIoGre6D;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raE;d0t;aJiHoG;te,w;eGsC;!w;l6Jry;nHpGr4se;gra4Pli41;dGi9lo5Zpub3Q;erGo;mi5Cw1I;aMeLhKig5SoJrHuGwi7;ne,rn;aGe0Mi5Uu7y;de,in,nsf0p,v5J;r2ZuD;ank,reatB;nd,st;ke pa53lk,rg1Qs9;aZcWeVhTi4Dkip,lSmRnee3Lo52pQtJuGwitD;bmCck,ff0gge7ppHrGspe5;ge,pri1rou4Zvi3;ly,o36;aLeKoJrHuG;dy,mb6;aFeGi3;ngthBss,tD;p,re;m,p;in,ke,r0Qy;la58oil,rink6;e1Zi6o3J;am,ip;a2iv0oG;ck,rtBut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu8fYgXje5lUmTnt,pQquPsKtJvGwa5V;eGiew,o36;al,l,rG;se,t;aFi2u44;eJi7oItG;!o2rG;i5uc20;l3rt;mb6nt,r3;e7i2;air,eHlGo43r0K;a8y;at;aFemb0i3Zo3;aHeGi3y;a1nt;te,x;a5Dr0J;act1Yer,le5u1;a13ei3k5PoGyc6;gni2Cnci6rd;ch,li2Bs5N;i1nG;ge,k;aTerSiRlOoMrIuG;b21ll,mp,rGsh;cha1s4Q;ai1eIiEoG;cGdu8greAhibCmi1te7vi2W;eAlaim;di5pa2ss,veE;iEp,rtr46sGur;e,t;aHead,uG;g,n4;n,y;ck,le;fo34mCsi7;ck,iErt4Mss,u1;bJccur,ff0pera9utweIverGwe;co47lap,ta22u1wG;helm;igh;ser3taF;eHotG;e,i8;ed,gle5;aMeLiIoHuG;ltip3Grd0;nit13ve;nHrr12sreprG;eseE;d,g6us;asu2lt,n0Nr4;intaFna4rHtG;ch,t0;ch,kGry;et;aMeLiJoGu1C;aHck,oGve;k,sB;d,n;ft,g35ke,mCnk,st2YveG;!n;a2Fc0Et;b0Nck,uG;gh,nD;iGno34;ck,ll,ss;am,oFuG;d4mp;gno2mQnGss3H;cOdica9flu0MhNsKtIvG;eGol3;nt,st;erGrodu8;a5fe2;i7tG;aGru5;ll;abCibC;lu1Fr1D;agi24pG;lemeEo22ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppBrm,te;aKloAove1PrIuG;arGeAi15;ant39d;aGip,ow,umb6;b,sp;in,th0ze;aReaQiOlMoJrHuncG;ti3J;acGeshB;tu2;cus,lHrG;ce,eca7m,s30;d,l24;a1ZoG;at,od,w;gu2lGni1Xt,x;e,l;r,tu2;il,stBvG;or;a15cho,le5mSnPstNvalua9xG;a0AcLerKi7pGte19;a18eHi2laFoGreA;rt,se;ct,riG;en8;ci1t;el,han4;abGima9;li1J;ab6couXdHfor8ga4han8j03riDsu2t0vG;isi2Vy;!u2;body,er4pG;hasiGow0;ze;a07eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iZor8;aKcHliGmiApl1Btingui14;ke;oGuA;uGv0;ra4;gr1YppG;ear,ro3;cOeNfLliv0ma0Fny,pKsHterG;mi0G;cribe,er3iHtrG;oy;gn,re;a0Be0Ai5osC;eGi0By;at,ct;m,pB;iIlHrG;ea1;a2i06;de;ma4n8rGte;e,kB;a0Ae09h06i9l04oJrG;aHeGoAu0Hy;a9dC;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin8;rt,y;aFin0VrG;a7ibu9ol;iGtitu9;d0st;iHoGroE;rm;gu2rm;rn;biLfoKmaJpG;a2laF;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aSePloOoMrIuG;lGry;ly;igHuG;sh;htB;en;a7mb,o7rrGth0un8;ow;ck;ar,lHnefCtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waC;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia9uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun8sw0tG;icipa9;ce;lHt0;er;e4ow;ee;rd;aRdIju7mCoR;it;st;!reA;ss;cJhie3knowled4tiva9;te;ge;ve;eIouEu1;se;nt;pt;on",Unit:"true¦0:19;a14b12c0Od0Ne0Lf0Gg0Ch09in0Hjoule0k02l00mNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Nb,d0Dears old,o1;tt0H;att0b;able4b3d,e2on1sp;!ne0;a2r0D;!l,sp;spo04; ft,uare 1;c0Id0Hf3i0Fkilo0Jm1ya0E;e0Mil1;e0li0H;eet0o0D;t,uart0;ascals,e2i1ou0Pt;c0Mnt0;rcent,t02;hms,uYz;an0JewtT;/s,b,e9g,i3l,m2p1²,³;h,s;!²;!/h,cro5l1;e1li08;! pFs1²;! 1;anEpD;g06s0B;gQter1;! 2s1;! 1;per second;b,i00m,u1x;men0x0;b,elvin0g,ilo2m1nR;!/h,ph,²;byZgXmeter1;! p2s1;! p1;er1; hour;e1g,r0z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s",Organization:"true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c",Demonym:"true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an",Possessive:"true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne",Currency:"true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s",City:"true¦0:73;1:61;2:6G;3:5U;4:5R;a68b54c4Id4Ae46f3Yg3Jh38i2Zj2Uk2Dl22m1Kn19o16p0Uq0Sr0Ls01tPuOvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3J;greb,nzib5G;ang2e5okoha3Uunfu;katerin3Jrev0;a5n0O;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1K;hi5Zkl3C;l63xford;aw;a6ern2i5ladivost5Molgogr6K;en3lni6R;lenc6Dncouv2Yr3ughn;lan bat1Drumqi,trecht;aDbilisi,eCheBi9o8r7u5;l21n63r5;in,ku;ipoli,ondh62;kyo,m34ron1QulouS;an5jua3l2Zmisoa6Era3;j4Xshui; hag65ssaloni2L;gucigal28hr0l av1W;briz,i6llinn,mpe5Ang5rtu,shk2X;i2Msh0;an,chu1n0p2Iyu0;aEeDh8kopje,owe1It7u5ydney;ra5zh51;ba0Jt;aten is59ockholm,rasbou6Auttga31;an8e6i5;jiazhua1llo1m60y0;f54n5;ya1zh4L;gh3Ot4U;att4Ao1Yv49;cramen18int DlBn5o paulo,ppo3Wrajevo; 7aa,t5;a 5ia3Io domin3I;a3fe,m1O;antonCdie3Gfrancisco,j5ped3Ssalv8;o5u0;se;em,v5z2B;ad0I;lou59peters29;aAe9i7o5;me,sar5t5A;io;ga,o5yadh;! de janei3I;cife,ykjavik;b4Uip4lei2Mnc2Swalpindi;ingdao,u5;ez2i0Q;aEeDhCiBo8r7u6yong5;ya1;eb5Aya1;ag54etor53;rt5zn0; 5la4Fo;au prin0Nelizabe29sa05;ls3Srae5Ctts2B;iladelph4Ynom pe1Doenix;r26tah tik3I;ler00naji,r4Pt5;na,r36;ak47des0Lm1Rr6s5ttawa;a3Ylo;an,d07;a8ew6i5ovosibir1Oyc;ng2Hs; 5cast39;del27orlea46taip16york;g8iro4Xn5pl2Zshv36v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0Y;aFeCi9o6u5;mb2Cni28sc40;gadishu,nt6s5;c17ul;evideo,re31;ami,l6n18s5;kolc,sissauga;an,waukee;cca,d5lbour2Pmph41;an,ell5i3;in,ín;cau,drAkass2Tl9n8r5shh4A;aca6ib5rakesh,se2N;or;i1Ty;a4EchEdal12i47;mo;id;aCeiAi8o6u5vRy2;anLckn0Rdhia3;n5s angel28;d2g bea1O;brev2De3Kma5nz,sb2verpo2A;!ss29;c5pzig;est0C; p6g5ho2Yn0Gusan27;os;az,la35;aHharFiClaipeBo9rak0Hu7y5;iv,o5;to;ala lump4n5;mi1sh0;be,hi0Llka2Zpavog4si5wlo2;ce;da;ev,n5rkuk;gSsha5;sa;k5toum;iv;bIdu3llakuric0Tmpa3Gn6ohsiu1ra5un1Lwaguc0T;c0Sj;d5o,p4;ah1Vy;a7e6i5ohannesZ;l1Xn0;dd37rusalem;ip4k5;ar2J;bad0mph1QnBrkutYs8ta01z5̇zm7;m6tapala5;pa;ir;fah0l6tanb5;ul;am2Zi2I;che2d5;ianap2Lo21;aBe8o5yder2W; chi mi6ms,nolulu,u5;st2;nh;f6lsin5rakli2;ki;ei;ifa,lifax,m7n5rb1Dva3;gAnov5oi;er;bu2Wilt2;aFdanEenDhCiPlasgBo9raz,u5;a5jr21;dal6ng5yaquil;zh1H;aja2Lupe;ld coa18then5;bu2P;ow;ent;e0Toa;sk;lw7n5za;dhi5gt1C;nag0S;ay;aisal26es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Nl paso;in5mont2;bur5;gh;aAe8ha0Visp4o7resd0Ju5;b5esseldorf,rb0shanbe;ai,l0G;ha,nggu0rtmu11;hradRl5troit;hi;donghHe5k08li0masc1Xr es sala1HugavpiY;gu,je2;aKebu,hAo5raio03uriti1P;lo7n6penhag0Ar5;do1Nk;akLst0V;gVm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;n5ttogr12;digarh,g5;ch8sha,zh06;i9lga8mayenJn6pe town,r5;acCdiff;ber18c5;un;ry;ro;aUeMhJirmingh0ToIr9u5;chareRdapeRenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil0Mtisla7zzav5;il5;le;va;goZst2;op6ubaneshw5;ar;al;iBl9ng8r5;g6l5n;in;en;aluru,hazi;fa5grade,o horizonte;st;ji1rut;ghd0BkGnAot9r7s6yan n4;ur;el,r07;celo3ranquil09;na;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a04b01cc00ddis abaZgartaYhmedWizawl,lQmNnHqaZrEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a6chora5kaNtwerp;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 8buquerq7e5giers,maty;ppo,xandr5;ia;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg",Country:"true¦0:39;1:2M;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om3DpZqat1KrXsKtCu6v4wal3yemTz2;a25imbabwe;es,lis and futu2Y;a2enezue32ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2Y;k.,s.2; 28a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Ys and caic1U; and 2-2;toba1K;go,kel0Znga;iw2Wji2nz2S;ki2U;aCcotl1eBi8lov7o5pa2Cri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Rriname;lomon1Wmal0uth 2;afr2JkLsud2P;ak0en0;erra leoEn2;gapo1Xt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele25luc0mart20;epublic of ir0Dom2Duss0w2;an26;a3eHhilippinTitcairn1Lo2uerto riM;l1rtugE;ki2Cl3nama,pua new0Ura2;gu6;au,esti2;ne;aAe8i6or2;folk1Hth3w2;ay; k2ern mariana1C;or0N;caragua,ger2ue;!ia;p2ther19w zeal1;al;mib0u2;ru;a6exi5icro0Ao2yanm05;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagasc00l6r4urit3yot2;te;an0i15;shall0Wtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed01;a5e4i2uxembourg;b2echtenste11thu1F;er0ya;ban0Hsotho;os,tv0;azakh1Ee3iriba03o2uwait,yrgyz1E;rWsovo;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an",Region:"true¦0:2M;1:2S;2:2J;a2Pb2Cc1Yd1Tes1Sf1Qg1Kh1Gi1Bj17k12l0Zm0On07o05pZqWrTsKtFuCv9w5y3zacatec2T;akut0o0Du3;cat2k07;a4est 3isconsin,yomi1L;bengal,vi6;rwick2Ashington3;! dc;er4i3;rgin0;acruz,mont;dmurt0t3;ah,tar3; 2Ka0W;a5e4laxca1Qripu1Wu3;scaDva;langa1nnessee,x2E;bas0Um3smNtar24;aulip2Cil nadu;a8i6o4taf10u3ylh1E;ffYrr03s19;me1Bno1Puth 3;cVdU;ber0c3kkim,naloa;hu2ily;n4skatchew2xo3;ny; luis potosi,ta catari1;a3hode9;j3ngp06;asth2shahi;ingh24u3;e3intana roo;bec,en5reta0Q;ara7e5rince edward3unjab; i3;sl0A;i,nnsylv3rnambu0A;an0;!na;axa0Xdisha,h3klaho1Zntar3reg6ss0Ax0F;io;aIeDo5u3;evo le3nav0V;on;r3tt16va scot0;f8mandy,th3; 3ampton15;c5d4yo3;rk13;ako1M;aroli1;olk;bras1Lva0Bw3; 4foundland3;! and labrador;brunswick,hamp0Wjers3mexiRyork state;ey;galOyarit;a9eghala0Mi5o3;nta1r3;dov0elos;ch5dlanCn4ss3zor11;issippi,ouri;as geraOneso18;ig2oac2;dhy12harasht0Gine,ni4r3ssachusetts;anhao,i el,ylF;p3toba;ur;anca0Ie3incoln0IouisH;e3iR;ds;a5e4h3omi;aka06ul1;ntucky,ra01;bardino,lmyk0ns0Qr3;achay,el0nata0X;alis5har3iangxi;kh3;and;co;daho,llino6n3owa;d4gush3;et0;ia1;is;a5ert4i3un2;dalFm0D;fordZ;mpYrya1waii;ansu,eorg0lou7oa,u3;an4erre3izhou,jarat;ro;ajuato,gdo3;ng;cesterS;lori3uji2;da;sex;ageTe6o4uran3;go;rs3;et;lawaLrbyK;aEeaDh8o3rimea ,umbr0;ahui6l5nnectic4rsi3ventry;ca;ut;i02orado;la;e4hattisgarh,i3uvash0;apQhuahua;chn4rke3;ss0;ya;ra;lFm3;bridge6peche;a8ihar,r7u3;ck3ryat0;ingham3;shi3;re;emen,itish columb0;h0ja cal7lk6s3v6;hkorto3que;st2;an;ar0;iforn0;ia;dygea,guascalientes,lAndhr8r4ss3;am;izo1kans4un3;achal 6;as;na;a 3;pradesh;a5ber4t3;ai;ta;ba4s3;ka;ma",Place:"true¦a0Eb0Bc04d03e02f00gVhUiRjfk,kOlMmJneGoFpBque,rd,s9t6u5v4w1y0;akutOyz;ake isFis1y0;!o;!c;a,ostok,t;laanbaatar,p02safa,t;ahiti,e1he 0;bronx,hamptons;nn,x;a0fo,oho,t,under7yd;khalNsk;a2e1h0itcairn;l,x;k,nnN;!cif04;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dNnn;gadZlibu,nhattZ;a0gw,hr;s,x;an1osrae,rasnoyar0ul;sk;!s;a1cn,da,nd0st;ianRochina;!x;arlem,kg,nd,oHwy;a3re0;at 0enwich;brita0lakH;in;!y village;co,l0ra;!a;urope,vergladC;ak,en,fw,ist,own4xb;al5dg,gk,h2l1o0rA;lo,nn;!t;a1ina0uuk;town;morro,tham;!if;cn,e1kk,l0rooklyn;vd;l air,verly hills;frica,lta,m7n3r2sia,tl1ve,zor0;es;!ant2;ct1iz;adyr,tarct0;ic0; oce0;an;ericas,s",MaleName:"true¦0:E4;1:D5;2:DN;3:AX;4:D1;5:CF;6:B5;7:CV;8:C7;9:DJ;A:DK;B:A5;C:C1;aCNbBKcAId9Ge8Mf84g7Hh6Ti6Dj5Dk51l4Cm34n2So2Mp2Equ2Cr1Ls11t0Eu0Dv07wTxSyIzD;aDor0;cDh9Skaria,n5V;hEkD;!aCL;ar5VeCK;aLoFuD;sDu2JvBX;if,uf;nFsEusD;ouf,sD;ef;aDg;s,tD;an,h0;hli,nBLssX;avi3ho4;aMeKiFoDyaC1;jcie8Blfgang,odrow,utD;!er;lDnst1;bFey,frD0lD;aBCiD;am,e,s;e9Eur;i,nde6sD;!l8t1;de,lErrAyD;l1ne;lDt3;aA9y;aGiDladimir,ojte7Y;cEha0kt68nceDrgAIva0;!nt;e3Ut66;lentDnA4;in4X;ghBUlyss5Bnax,sm0;aXeShOiMoHrFuEyD;!l3ro7s1;n9r5B;avAVeDist0oy,um0;ntANv5Yy;bGdFmDny;!as,mDoharu;aCSie,y;!d;iBy;mDt5;!my,othy;adFeoEia8FomD;!as;!do8O;!de5;dGrD;en9KrD;an9JeDy;ll,n9I;!dy;dgh,ha,iDnn3req,tsu4S;cB4ka;aTcotRePhLiJoHpenc3tDur1Uylve9Jzym1;anFeDua8C;f0phBSvDwa8B;e61ie;!islaw,l8;lom1nBEuD;leyma7ta;dDlBm1yabonga;!dhart7An8;aFeD;lDrm0;d1t1;h7Tne,qu0Zun,wn,y7;aDbasti0k29l4Qrg4Nth,ymoAT;m5n;!tD;!ie,y;lEmDnti2Dq5Aul;!ke5LmCu4;ik,vato7W;aXeTheA9iPoHuEyD;an,ou;b7MdEf5pe7RssD;!elBY;ol3Ey;an,bJc66dIel,geHh0landBPmGnFry,sEyD;!ce;coe,s;!aAGnC;an,eo;l46r;e5Ng3n8olfo,ri79;bCeB7;cDl8;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ubAx,yDza;an1InY;gA8iD;naA4s;ch70fa4lHmGndFpha4sEul,wi2HyD;an,mo82;h7Vm5;alBDol2Uy;iATon;f,ph;ent2inD;cy,t1;aIeGhilFier72ol,rD;aka16eD;m,st1;!ip,lip;dALrcy,tD;ar,e3Gr1X;b4Kdra7Ft4ZulD;!o17;ctav3Fi3liv3mAFndrej,rHsEtDum9wA;is,to;aEc9k9m0vD;al5Z;ma;i,l53vL;aLeJiFoDu3A;aDel,j5l0ma0r3K;h,m;cEg4i49kD;!au,h7Uola;holBkDolB;!olB;al,d,il,ls1vD;il8Y;hom,thD;anDy;!a4i4;aZeWiMoHuEyD;l2Jr1;hamEr6XstaD;fa,p5C;ed,mH;di0We,hamFis2FntEsDussa;es,he;e,y;ad,ed,mD;ad,ed;cIgu4hai,kGlFnEtchD;!e6;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk8;aEeD;al,l;el,l;hElv2rD;le,ri6v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe6;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha6tDv2;iDy;!m,n;in,on;!el,oPus;!el9IoOus;iGu4;achDcolm,ik;ai,y;amEdi,eDmoud;sh;adDm5T;ou;aXeQiOlo3EoKuEyD;le,nd1;cGiFkDth3uk;aDe;!s;gi,s,z;as,iaD;no;g0nn7SrenFuDv8Jwe6;!iD;e,s;!zo;am,oD;n4r;a8Cevi,la5JnIoGst3thaFvD;eDi;nte;bo;!nD;!a6Sel;!ny;mFnErDur5Hwr5H;ry,s;ce,d1;ar,o5A;aLeGhaled,iDrist5Iu4Vy6X;er0p,rD;by,k,ollD;os;en0iGnDrmit,v44;!dEnDt5Z;e1Ay;a6ri59;r,th;cp3j5m66na73rEsp9them,uD;ri;im,l;a02eUiSoGuD;an,lDst2;en,iD;an,en,o,us;aNeLhnKkubBnIrGsD;eEhDi8Bue;!ua;!ph;dDge;an,i,on;!aDny;h,s,th5I;!ath5Hie,nC;!l,sDy;ph;o,qu2;an,mD;!mC;d,ffIrFsD;sDus;!e;a6BemEmai7oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKdAkImHrFsEvi3yD;!dAs1;on,p3;ed,od,rDv56;e5Nod;al,es4Xis1;a,e,oDub;b,v;k,ob,quD;es;aWbQchiPgNkeMlija,nuLonut,rJsFtDv0;ai,suD;ki;aEha0i7DmaDsac;el,il;ac,iaD;h,s;a,vinDw2;!g;k,nngu5S;!r;nacDor;io;ka;ai,rahD;im;aPeJoIuDyd9;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4JdA;an,s0;lGo50rFuDv8;hi4Gki,tD;a,o;is1y;an,ey;k,s;!im;ib;aVeRiPlenOoLrHuD;ilEsD;!tavo;herme,lerD;mo;aFegDov3;!g,orD;io,y;dy,h5Wnt;nzaErD;an,d1;lo;!n;lbe5Ano,oD;rg3Hvan5A;ne,oFrD;aDry;ld,rd5H;ffr8rge;brElArDv2;la28r3Sth,y;e3EielD;!i5;aTePiNlLorr0NrD;anFedDitz;!dCeDri2B;ri2A;cFkD;!ie,lD;in,yn;esLisD;!co,z36;etch3oD;yd;d4lDnn,onn;ip;deriFliEng,rnD;an06;pe,x;co;bi0di,hd;ar04dZfrYit0lSmKnHo2rFsteb0th0uge7vDymAzra;an,eD;ns,re36;gi,i0DnDrol,v2w2;est4Pie;oEriqDzo;ue;ch;aJerIiEmD;aIe2Z;lErD;!h0;!iD;o,s;s1y;nu4;be0Cd1iGliFmEt1viDwood;n,s;er,o;ot1Ys;!as,j4NsD;ha;a2en;!dCg9mGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay7ight;a7dl8nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e6ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay7ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne6rDyl;eDin,yl;l3Bn;n,o,us;!e,i4ny;iDon;an,en,on;e,lB;as;a09e07hYiar0lNoIrGuEyrD;il,us;rtD;!is;aDistob0U;ig;dy,lGnErD;ey,neli5y;or,rD;ad;by,e,in,l2t1;aIeFiDyK;fDnt;fo0Ft1;meEt5velaD;nd;nt;rFuEyD;!t1;de;enD;ce;aIeGrisEuD;ck;!tD;i0oph3;st3;er;d,rDs;b4leD;s,y;cDdric,s9;il;lGmer1rD;ey,lEro6y;ll;!os,t1;eb,v2;a07eZiVlaUoRrEuDyr1;ddy,rtK;aLeGiFuEyD;an,ce,on;ce,no;an,ce;nEtD;!t;dEtD;!on;an,on;dEndD;en,on;!foDl8y;rd;bErDyd;is;!by;i7ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n8rDt;eDy;tt;ey;dDeE;ar,iD;le;ar17b0Vd0Rf0Pgust2hm0Mi0Jja0Il04m00nSputsiRrIsaHuFveEyDziz;a0kh0;ry;gust5st2;us;hi;aKchJiIjun,maHnFon,tDy0;hDu09;ur;av,oD;ld;an,nd0H;!el,ki;ie;ta;aq;as,dIgel0CtD;hoGoD;i7nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePdAeJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;dAm9;ar;en;ad,eD;d,t;in;onD;so;aEi,olfDri0vik;!o;mDn;!a;dHeGraEuD;!bakr,lfazl;hDm;am;!l;allIelFoulaye,ulD;!lDrF;ah,o;! rD;ahm0;an;ah;av,on",LastName:"true¦0:9F;1:9V;2:9H;3:9X;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:6E;B:77;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaB;aBhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsB;liA1s3;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukA;lk5roby5;dAllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisB;dor95lst31m2rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps3s0Y;hirAkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot2lliv4zuB;aEein0oD;i67j3Lyan8V;l6rm0;kol5lovy5re6Psa,to,uD;ng,sa;iDy5Z;rn5tD;!h;l5YmDngh,rbu;mo6Do6J;aFeDimizu;hu,vchD;en7Cuk;la,r17;gu8mDoh,pulve8Trra4R;jDyD;on5;evi6Filtz,miDneid0roed0ulz,warz;dEtD;!z;!t;ar42h6ito,lFnDr2saBto,v2;ch7d0AtDz;a4Pe,os;as,ihAm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins3;!on;bei0LcEes,vDzzo;as,e8;ci,hards3;ag4es,it0ut0y9;dFmEnDsmu7Zv5F;tan1;ir7os;ic,u;aSeLhJiGoErDut6;asad,if5Zochazk1W;lishc24pDrti62u55we66;e2Tov48;cEe09nD;as,to;as60hl0;aDillips;k,m,n5K;de3AetIna,rGtD;ersErovDtersC;!a,ic;en,on;eDic,ry,ss3;i8ra,tz,z;ers;h71k,rk0tEvD;ic,l3T;el,t2O;bJconnor,g2ClGnei5PrEzD;demir,turk;ella3MtDwe5N;ega,iz;iDof6GsC;vDyn1F;ei8;aPri1;aLeJguy1iFoDune44ym4;rodahl,vDwak;ak3Uik5otn56;eEkolDlsCx3;ic,ov6X;ls1miD;!n1;ils3mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov2;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dAti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkAqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k2nDo;d,gu;mbarDpe2Rvr2;di;!nDu,yana1R;coln,dD;bDholm;erg;bed5TfeGhtFitn0kaEn6rDw2G;oy;!j;in1on1;bvDvD;re;iDmmy,rsCu,voie;ne,t11;aTennedy,h4iSlQnez46oJrGuEvar4woD;k,n;cerDmar58znets5;a,o2G;aDem0i2Zyeziu;sni3PvD;ch3U;bay4Frh0Jsk0TvaFwalDzl5;czDsB;yk;cFlD;!cDen3Q;huk;!ev2ic,s;e6uiveD;rt;eff0l2mu8nnun1;hn,lloe,minsBrEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r2;e2JhFnErge2Ju2NvD;anA;es,ss3;anEnsD;en,on,t3;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks3obs1;brahimAglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz2fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers3;kkiEnD;on1;la,n1;dz2g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw3;o,staf2Utierr7zm4;ayDg2iffitUub0;li1G;lub3Rme0JnD;calv9zale0I;aj,i;l,mDordaL;en7;iev3B;gnJlGmaFnd2No,rDs2Nuthi0;cDza;ia;ge;eaElD;agh0i,o;no;e,on;ab0erMiIjeldsted,lor9oGrFuD;cDent9ji3F;hs;an1Wiedm4;ntaDrt6st0urni0;na;lipEsD;ch0;ovD;!ic;hatAnandeVrD;arDei8;a,i;ov2;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s3;er,is3wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov2;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e3uD;ca;hl,mcevsBnErw6t2EviD;d5es,s;ieDku1S;ls1;ki;a05e00hNiobMlarkLoFrD;ivDuz;elli;h1lGntFop0rDs26x;byn,reD;a,ia;i,rer0O;em4liD;ns;!e;anu;aLeIiu,oGriDuJwe;stD;eDiaD;ns1;i,ng,uFwDy;!dhury;!n,onEuD;ng;!g;kEnDtterjee,v7;!d,g;ma,raboD;rty;bGl09ng2rD;eghetEnD;a,y;ti;an,ota0M;cer9lder3mpbeIrFstDvadi08;iDro;llo;doEt0uDvalho;so;so,zo;ll;es;a09eXhUiSlNoGrFyD;rne,tyD;qi;ank5iem,ooks,yant;gdan5nFruya,su,uchEyHziD;c,n5;ard;darDik;enD;ko;ov;aEondD;al;nEzD;ev2;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss3;asD;hi;er,ham;b2ch,ez,hMiley,kk0nHrDu0;bEnDua;es,i0;ieDosa;ri;dDik;a8yopadhyD;ay;ra;er;k,ng;ic;cosZdYguilXkhtXlSnJrGsl4yD;aEd6;in;la;aEsl4;an;ujo,ya;dFgelD;ovD;!a;ersGov,reD;aDjL;ss1;en;en,on,s3;on;eksejGiyGmeiFvD;ar7es;ez;da;ev;ar;ams;ta",WeekDay:"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s",Month:"true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il",Date:"true¦ago,t2week0yesterd4; e0e0;nd;mr2o0;d0morrow;ay;!w",FirstName:"true¦aLblair,cHdevGgabrieFhinaEjCk9l8m4nelly,quinn,re3s0;h0umit;ay,e0iloh;a,lby;g6ne;a1el0ina,org5;!okuh9;naia,r0;ion,lo;ashawn,uca;asCe1ir0rE;an;lsAnyat2rry;am0ess6ie,ude;ie,m5;ta;le;an,on;as2h0;arl0eyenne;ie;ey,sidy;lex2ndr1ubr0;ey;a,ea;is",Person:"true¦ashton kutchTbScNdLeJgastOhHinez,jFkEleDmCnettKoBp9r4s3t2v0;a0irgin maH;lentino rossi,n go3;aylor,heresa may,iger woods,yra banks;addam hussain,carlett johanssKlobodan milosevic,uC;ay romano,e3o1ush limbau0;gh;d stewart,nald0;inho,o;ese witherspoFilly;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0;on;dinal wols1son0;! palm2;ey;arack obama,rock;er",Verb:"true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en",PhrasalVerb:"true¦0:7L;1:79;2:7X;3:7N;4:72;5:80;6:7P;7:6V;8:78;9:7J;A:6W;B:5Z;C:7S;D:7K;a81b6Lc5Rd5Me5Lf4Kg41h3Kiron0j3Gk3Bl2Vm2Jn2Ho2Fp1Wquiet7Ar1Js0CtSuQvacuum 1wHyammer9zE;eroBip FonE;e0k0;by,up;aLeHhGiForErit5G;d 1k33;mp0n2Vpe0r7s7;eel Dip 85;aFiEn2J;gh 09rd0;n Dr E;d2in,o5J;it 61k7lk6rm 6Csh 7Nt6Qv51;rge9sE;e AherB;aTeRhPiLoJrGuEype 69;ckBrn E;d2in,o3Sup;aFiEot0y 2I;ckle6Rp 7T;ck6Qde Y;ne6Pp Es4O;d2o73up;ck GdFe Egh6Bme0p o0Gre0;aw3ba4d2in,up;e 61y 1;by,o7D;ink Erow 6D;ba4ov8up;aEe 5Zll53;m 1r X;ck9ke Flk E;ov8u54;aEba4d2in,o3Cup;ba4ft8p59w3;a0Jc0Ie0Ch08i05l01m00nZoYpTquare StKuIwE;earGiE;ngFtch E;aw3ba4o77; by;ck Eit 1m 1ss0;in,up;aJe0WiIoGrEuc3G;aigh1WiE;ke 6Gn3A;p Erm1Z;by,in,o6T;n3Br 1tc3T;c3Amp0nd Er6Zve6y 1;ba4d2up;d2o6Pup;ar37eHiGlFrEur9;ing9uc7;a3Fit 5B;l13n 1;e5Sll0;be2Wrt0;ap 4Sow D;ash 5Foke0;eep FiEow A;c3Wp 1;in,oE;ff,v8;gn 4XngFt Ez7;d2o5up; al54le0;aGoEu4T;ot Eut0w 6D;aw3ba4f3Go67;c2PdeBk58ve6;e Ill1And HtE; Etl4H;d2in,o5upE;!on;aw3ba4d2in,o27up;o5Mto;al51out0rap51;il6v7;aPeMiLoHuE;b 4Ule0n Estl7;aEba4d2in5Jo3Ut39u3S;c26w3;ll Got FuE;g2Tnd6;a27f30o5;arCin,o5;ng 53p6;aEel6inBnt0;c5Dd E;o31u0I;c24t0;aSeRiPlNoLrIsyc2HuE;ll Gt E;aEba4d2in,o1Ot3Gup;p3Lw3;ap3Kd2in,o5t3Eup;attle9ess FiHoE;p 1;ah1Oon;iEp 5Hr3Yur4Jwer 5H;nt0;ay4DuE;gBmp A;ck Eg0le9n Ap4A;o2Yup;el 4KncilB;c42ir 3Un0ss GtFy E;ba4o54; d2c24;aw3ba4o18;pEw3X;e3Wt D;arrow46erd0oE;d6te45;aMeJiIoGuE;ddl7lE;l 3I;c1Dp 1uth6ve E;al3Nd2in,o5up;ss0x 1;asur7lFss E;a1Gup;t A;ke Fn ArEs1Px0;k Ary6;do,o48up;aRePiKoEuck0;aIc3Hg HoEse0;k Ese3F;aft8ba4d2forw2Jin46ov8uE;nd8p;in,o0M;d A;e HghtGnFsEv1V;ten 4M;e 1k 1; 1e37;arCd2;av1Jt 37velE; o3U;c7p 1sh Etch9ugh6y20;in3Uo5;eFick6nock E;d2o3Q;eEyB;l 2Pp E;aw3ba4d2fTin,o07to,up;aGoFuE;ic7mpB;ke31t35;c3Azz 1;aQeLiIoFuE;nker32rry 1s0W;lEneBrse2X;d Ee 1;ba4d2fast,o01up;de Ft E;ba4on,up;aw3o5;aElp0;d Gl 2Ar Et 1;fEof;rom;in,oTu1H;c02m 1nFve Ez25;it,to;d Eg 2FkerG;d2in,o5;aTeMive Kloss 22oGrFunE; f0N;in3How 2B; Eof 21;aFb1Dit,oErCt0Pu18;ff,n,v8;bo5ft8hKw3;aw3ba4d2in,oEup,w3;ff,n,ut;aJek0t E;aFb17d2oErCup;ff,n,ut,v8;cFhEl1XrCt,w3;ead;ross;r 1;d aFnE;g 1;bo5;a08e01iSlOoKrGuE;cEel 1;k 1;eFighten Eown9y 1;aw3o2S;eEshe1N; 1z7;lGol E;aEwi1G;bo5rC;d Alow 1;aFeEip0;sh0;g Ake0mErE;e 2R;gLlJnHrFsEzzle0;h 2P;e Em 1;aw3ba4up;d0isE;h 1;e El 19;aw3fJ;ht ba4ure0;eJnFsE;s 1;cGd E;fEo25;or;e D;dVl 1;cIll Erm0t0W;ap04bGd2in,oFtE;hrough;ff,ut,v8;a4ehi20;e 0L;at0dge0nd 0Ky7;oHrE;aFess Aop E;aw3bUin,o1E;g9w9; 0Dubl7;aXhUlean AoHrEut 10;ack9eep Eoss D;by,d2oEup;n,ut;me HoFuntE; o1Q;k 1l E;d2o1I;aKbJforHin,oGtFuE;nd8;ogeth8;ut,v8;th,wE;ard;a4y;pErCw3;art;eEipB;ck Der E;on,up;lKncel0rHsGtch FveB; in;o19up;h Dt6;ry FvE;e Y;aw3o15;l Em05;aEba4d2o13up;rCw3;a0Ke0Bl04oVrJuE;bblGcklWil02lk AndlWrn 08st FtEy 13zz6;t D;in,o5up;e E;ov8;anOeaMiFush E;o0Oup;ghIng E;aFba4d2forEin,o5up;th;bo5lErCw3;ong;teE;n 1;k E;d2in,o5up;ch0;arLgKil An7oHssGttlFunce Ex D;aw3ba4;e A; arC;k Dt 1;e 1;d2up; d2;d 1;aJeed0oEurt0;cGw E;aw3ba4d2o5up;ck;k E;in,oL;ck0nk0st6; oKaHef 1nd E;d2ov8up;er;up;r0t E;d2in,oEup;ff,ut;ff,nE;to;ck Kil0nGrgFsE;h D;ain9e D;g Dk9; on;in,o5; o5;aw3d2o5up;ay;cNdJsk Guction6; oE;ff;arCo5;ouE;nd;d E;d2oEup;ff,n;own;t E;o5up;ut",Modal:"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld",Adjective:"true¦0:7P;1:84;2:83;3:8A;4:7W;5:5S;6:4N;7:4O;8:58;9:6I;A:81;a6Wb6Gc63d5Je54f4Hg49h3Wi39j37k36l2Vm2Ln2Bo1Wp1Dquack,r12s0Ft07uMvJwByear5;arp0eFholeEiDoB;man5oBu6P;d6Rzy;despr7Ls5S;!sa7;eClBste2A;co1Nl o4W;!k5;aCiBola4M;b89ce versa,ol5H;ca3gabo6Gnilla;ltUnHpCrb5Msu4tterB;!mo7G; Eb1SpDsBti1M;ca7etBide dKtairs;!ti2;er,i3U;f36to da1;aLbeco75convin29deIeHfair,ivers4knGprecedVrEsCwB;iel3Nritt6A;i1XuB;pervis0spec3Y;eBu5;cognHgul6Tl6T;own;ndi2v64xpect0;cid0rB;!grou5ZsB;iz0tood;b7pp0Dssu6UuthorB;iz0;i26ra;aGeEhDi6AoCrB;i1oubl0us3M;geth8p,rp6Vuc67;ough4Wril33;en60l32mpBrr2X;o6Ati2;boo,lBn;ent0;aWcVeThSiQmug,nobbi3LoOpNqueami3LtFuBymb6H;bDi gener5DpBrpri6D;erBre0N;! dup8b,i2C;du0seq52;anda77eGiFrBunni2y3F;aightCiB;ki2p0; fBfB;or5K;ll,r5S;aBreotyp0;dfa6Cmi2;a55ec2Gir1Hlend6Cot on; call0le,mb8phist1XrBu0Vvi48;d6Ary;gnifica3nB;ce51g7;am2Re8ocki2ut;cBda1em5lfi32ni1Wpa6Jre6;o1Er42;at5Gient28reec5G;cr0me;aJeEiCoB;bu60tt51uQy4;ghtBv4;!-2Bf9;ar,bel,condi1du6Dfres5AlEpublic42sCtard0vB;ea26;is4CoB;lu1na3;aQe1Cuc4A;b5TciBllyi2;al,st;aOeLicayu6lac5Ropuli5QrCuB;bl5Jmp0n51;eGiDoB;!b07fu5RmiBp8;ne3si2;mCor,sBva1;ti6;a53e;ci5MmB;a0EiB;er,um;ac20rBti1;feAma2XpleBv38;xi2;rBst;allelDtB;-tiBi4;me;!ed;bLffJkIld fashion0nHpGrg1Eth8utFvB;al,erB;!all,niCt,wB;eiBrouB;ght;do0Ter,g2Qsi4B;en,posi1; boa5Og2Oli6;!ay; gua5MbBli6;eat;eDsB;cBer0Eole1;e6u3O;d2Xse;aJeIiHoBua4X;nFrCtB;ab7;thB;!eB;rn;chala3descri58stop;ght5;arby,cessa44ighbor5xt;k0usia1A;aIeGiDoBultip7;bi7derBl0Vnth5ot,st;a1n;nBx0;dblo0RiaBor;tu37;ande3Qdi4NnaBre;ci2;cBgenta,in,j01keshift,le,mmoth,ny,sculi6;ab33ho;aKeFiCoBu15;uti14vi2;mCteraB;l,te;it0;ftEgBth4;al,eCitiB;ma1;nda3K;!-0C;ngu3Zst,tt8;ap1Xind5no0A;agg0uB;niMstifi0veni7;de4gno4Klleg4mQnEpso 20rB;a1rB;eleBita0J;va3; KaJbr0corIdGfluenQiQnFsEtCviB;go0Fti2;aAen3SoxB;ic3B;a6i2Vul0D;a1er,oce3;iCoB;or;reA;deq3Qppr33;fBsitu,vitro;ro3;mFpB;arDerfeAoBrop8;li1rtB;a3ed;ti4;eBi0S;d2Vn3C;aIeFiDoBumdr3I;ne36ok0rrBs08ur5;if2Z;ghfalut1QspB;an2X;aClB;liYpf9;li2;lEnDrB;d04roB;wi2;dy;f,low0;ainf9ener2Oiga24lHoGraDuB;ilBng ho;ty;cCtB;ef9is;ef9;ne,od;ea2Iob4;aTeNinMlKoFrB;a1VeDoz1MustB;raB;ti2;e2Gq10tf9;oDrB; keeps,eBm8tuna1;g03ign;liB;sh;aBue3;g31tte1P;al,i1;dFmCrB;ti7;a7ini6;ne;le; up;bl0i3l27r Cux,voB;ri1uri1;oBreac1E;ff;aLfficie3lKmHnFreAthere4veExB;aAcess,pe1QtraCuB;be2Nl0E;!va1E;n,ryday; BcouraEti0O;rou1sui1;erCiB;ne3;gi2;abo23dMe17i1;g8sB;t,ygB;oi2;er;aReJiDoBrea14ue;mina3ne,ubB;le,tf9;dact1Bfficu1OsCvB;er1K;creDeas0gruntl0hone1FordCtB;a3ressM;er5;et; HadpGfFgene1PliDrang0spe1PtCvoB;ut;ail0ermin0;be1Mca1ghB;tf9;ia3;an;facto;i5magBngeroUs0G;ed,i2;ly;ertaMhief,ivil,oDrB;aBowd0u0G;mp0vZz0;loImGnCrrBve0P;eAu1I;cre1fu0LgrDsCtB;empo0Dra0E;ta3;ue3;mer08pleB;te,x;ni4ss4;in;aNeIizarHlFoCrB;and new,isk,okN;gCna fiUttom,urgeoB;is;us;ank,indB;!i2;re;autif9hiDloCnBst,yoD;eUt;v0w;nd;ul;ckCnkru0WrrB;en;!wards; priori,b0Mc0Jd09fra08g04h03lYmWntiquVppSrMsIttracti06utheHvEwB;aCkB;wa0T;ke,re;ant garCerB;age;de;ntU;leep,piDsuDtonB;isB;hi2;ri2;ab,bitEroDtiB;fiB;ci4;ga3;raB;ry;are3etiNrB;oprB;ia1;at0;aJuB;si2;arEcohCeBiIl,oof;rt;olB;ic;mi2;ead;ainDgressiConiB;zi2;ve;st;id; IeGuFvB;aCerB;se;nc0;ed;lt;pt,qB;ua1;hoc,infinitB;um;cuCtu4u1;al;ra1;erLlKoIruHsCuB;nda3;e3oCtraA;ct;lu1rbi2;ng;te;pt;aBve;rd;aze,e;ra3;nt",Comparable:"true¦0:41;1:4I;2:45;3:2Y;4:4B;5:3X;a4Ob44c3Od3De35f2Rg2Fh24i1Vj1Uk1Rl1Jm1Dn17o15p0Vqu0Tr0KsTtMuIvFw7y6za13;ell27ou4;aBe9hi1Yi7r6;o4y;ck0Ode,l6n1ry,se;d,y;a6i4Mt;k,ry;n1Tr6sK;m,y;a7e6ulgar;nge5rda2xi4;g9in,st;g0n6pco3Mse5;like0t6;i1r6;ue;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te5;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft3;aAe9iff,r7u6;pXr1;a6ict,o4;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi4;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp3;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p3;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in5le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b3isy,rm15sy;ce,mb3;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt3ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti4;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b3id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te5;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t3uiY;u1y;aIeeb3iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get5mG;my;erce8n6rm;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi4;gey,lm8r6;e5i4;ful;!i4;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i4;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd",TextOrdinal:"true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th",Cardinal:"true¦bHeEf8hundred,mHnineAone,qu6s4t0zero;en,h2rGw0;e0o;lve,n8;irt9ousandEree;e0ix5;pt1ven4xt1;adr0int0;illion;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion0;!s",Expression:"true¦a02b01dXeVfuck,gShLlImHnGoDpBshAtsk,u7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la",Adverb:"true¦a08by 06d02eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,well,ye0;p,s; to,wards5;h1iny bit,o0wiO;o,t6ward;en,us;eldom,o0uch;!me1rt0; of;hYtimes,w09;a1e0;alT;ndomSthN;ar excellDer0oint blank; Nhaps;f3n0;ce0ly;! 0;ag02moW; courIten;ewKo0; longEt 0;onIwithstanding;aybe,eanwhiAore0;!ovB;! aboU;deed,steV;en0;ce;or2u0;lArther0;!moJ; 0ev3;examp0good,suH;le;n1v0;er; mas0ough;se;e0irect1; 1finite0;ly;ju8trop;far,n0;ow; DbroCd nauseam,gBl6ny3part,s2t 0w4;be6l0mo6wor6;arge,ea5; soon,ide;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori",Determiner:"true¦aBboth,d9e6few,l4mu8neiDown,plenty,s3th2various,wh0;at0ich0;evC;at,e4is,ose;everal,ome;a,e0;!ast,s;a1i6l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er"};const xr="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Nr=xr.split("").reduce((function(e,t,r){return e[t]=r,e}),{});var Fr={toAlphaCode:function(e){if(void 0!==xr[e])return xr[e];let t=1,r=36,n="";for(;e>=r;e-=r,t++,r*=36);for(;t--;){const t=e%36;n=String.fromCharCode((t<10?48:55)+t)+n,e=(e-t)/36}return n},fromAlphaCode:function(e){if(void 0!==Nr[e])return Nr[e];let t=0,r=1,n=36,a=1;for(;r=0;r--,a*=36){let n=e.charCodeAt(r)-48;n>10&&(n-=7),t+=n*a}return t}},Cr=function(e){const t=new RegExp("([0-9A-Z]+):([0-9A-Z]+)");for(let r=0;r{let i=e.nodes[n];"!"===i[0]&&(t.push(a),i=i.slice(1));const o=i.split(/([A-Z0-9,]+)/g);for(let i=0;i{const r=t.split("¦");return e[r[0]]=r[1],e}),{}),r={};return Object.keys(t).forEach((function(e){const n=Tr(t[e]);"true"===e&&(e=!0);for(let t=0;t{e[t]=["Abbreviation","Unit"]},Cardinal:(e,t)=>{e[t]=["TextValue","Cardinal"]},TextOrdinal:(e,t)=>{e[t]=["Ordinal","TextValue"],e[t+"s"]=["TextValue","Fraction"]},Singular:(e,t,r)=>{e[t]="Singular";let n=r.transforms.toPlural(t,r);e[n]=e[n]||"Plural"},Infinitive:(e,t,r)=>{e[t]="Infinitive";let n=r.transforms.conjugate(t,r),a=Object.keys(n);for(let t=0;t{e[t]="Comparable";let n=r.transforms.adjectives(t),a=Object.keys(n);for(let t=0;t{e[t]=["PhrasalVerb","Infinitive"];let n=t.split(" "),a=r.transforms.conjugate(n[0],r),i=Object.keys(a);for(let t=0;t{e[t]="Demonym";let n=r.transforms.toPlural(t,r);e[n]=e[n]||["Demonym","Plural"]}},Mr=function(e,t,r){Object.keys(e).forEach((n=>{let a=e[n];"Abbreviation"!==a&&"Unit"!==a||(r.cache.abbreviations[n]=!0);let i=n.split(" ");i.length>1&&(r.hasCompound[i[0]]=!0),void 0===Vr[a]?void 0!==t[n]?("string"==typeof t[n]&&(t[n]=[t[n]]),"string"==typeof a?t[n].push(a):t[n]=t[n].concat(a)):t[n]=a:Vr[a](t,n,r)}))};var Jr={buildOut:function(e){let t=Object.assign({},Ir);return Object.keys(zr).forEach((r=>{let n=Or(zr[r]);Object.keys(n).forEach((e=>{n[e]=r})),Mr(n,t,e)})),t},addWords:Mr},Lr=function(e){let t=e.irregulars.nouns,r=Object.keys(t);for(let n=0;n{e.words[i[t]]=e.words[i[t]]||t,"Participle"===e.words[i[t]]&&(e.words[i[t]]=t)}))}},Sr={addendum:"addenda",alga:"algae",alumna:"alumnae",alumnus:"alumni",analysis:"analyses",antenna:"antennae",appendix:"appendices",avocado:"avocados",axis:"axes",bacillus:"bacilli",barracks:"barracks",beau:"beaux",bus:"buses",cactus:"cacti",chateau:"chateaux",child:"children",circus:"circuses",clothes:"clothes",corpus:"corpora",criterion:"criteria",curriculum:"curricula",database:"databases",deer:"deer",diagnosis:"diagnoses",echo:"echoes",embargo:"embargoes",epoch:"epochs",foot:"feet",formula:"formulae",fungus:"fungi",genus:"genera",goose:"geese",halo:"halos",hippopotamus:"hippopotami",index:"indices",larva:"larvae",leaf:"leaves",libretto:"libretti",loaf:"loaves",man:"men",matrix:"matrices",memorandum:"memoranda",modulus:"moduli",mosquito:"mosquitoes",mouse:"mice",nebula:"nebulae",nucleus:"nuclei",octopus:"octopi",opus:"opera",ovum:"ova",ox:"oxen",parenthesis:"parentheses",person:"people",phenomenon:"phenomena",prognosis:"prognoses",quiz:"quizzes",radius:"radii",referendum:"referenda",rodeo:"rodeos",sex:"sexes",shoe:"shoes",sombrero:"sombreros",stimulus:"stimuli",stomach:"stomachs",syllabus:"syllabi",synopsis:"synopses",tableau:"tableaux",thesis:"theses",thief:"thieves",tooth:"teeth",tornado:"tornados",tuxedo:"tuxedos",vertebra:"vertebrae"};const _r={g:"Gerund",prt:"Participle",perf:"PerfectTense",pst:"PastTense",fut:"FuturePerfect",pres:"PresentTense",pluperf:"Pluperfect",a:"Actor"};let qr={act:{a:"_or"},ache:{pst:"ached",g:"aching"},age:{g:"ageing",pst:"aged",pres:"ages"},aim:{a:"_er",g:"_ing",pst:"_ed"},arise:{prt:"_n",pst:"arose"},babysit:{a:"_ter",pst:"babysat"},ban:{a:"",g:"_ning",pst:"_ned"},be:{a:"",g:"am",prt:"been",pst:"was",pres:"is"},beat:{a:"_er",g:"_ing",prt:"_en"},become:{prt:"_"},begin:{g:"_ning",prt:"begun",pst:"began"},being:{g:"are",pst:"were",pres:"are"},bend:{prt:"bent"},bet:{a:"_ter",prt:"_"},bind:{pst:"bound"},bite:{g:"biting",prt:"bitten",pst:"bit"},bleed:{pst:"bled",prt:"bled"},blow:{prt:"_n",pst:"blew"},boil:{a:"_er"},brake:{prt:"broken"},break:{pst:"broke"},breed:{pst:"bred"},bring:{pst:"brought",prt:"brought"},broadcast:{pst:"_"},budget:{pst:"_ed"},build:{pst:"built",prt:"built"},burn:{prt:"_ed"},burst:{prt:"_"},buy:{pst:"bought",prt:"bought"},can:{a:"",fut:"_",g:"",pst:"could",perf:"could",pluperf:"could",pres:"_"},catch:{pst:"caught"},choose:{g:"choosing",prt:"chosen",pst:"chose"},cling:{prt:"clung"},come:{prt:"_",pst:"came",g:"coming"},compete:{a:"competitor",g:"competing",pst:"_d"},cost:{pst:"_"},creep:{prt:"crept"},cut:{prt:"_"},deal:{pst:"_t",prt:"_t"},develop:{a:"_er",g:"_ing",pst:"_ed"},die:{g:"dying",pst:"_d"},dig:{g:"_ging",pst:"dug",prt:"dug"},dive:{prt:"_d"},do:{pst:"did",pres:"_es"},draw:{prt:"_n",pst:"drew"},dream:{prt:"_t"},drink:{prt:"drunk",pst:"drank"},drive:{g:"driving",prt:"_n",pst:"drove"},drop:{g:"_ping",pst:"_ped"},eat:{a:"_er",g:"_ing",prt:"_en",pst:"ate"},edit:{pst:"_ed",g:"_ing"},egg:{pst:"_ed"},fall:{prt:"_en",pst:"fell"},feed:{prt:"fed",pst:"fed"},feel:{a:"_er",pst:"felt"},fight:{pst:"fought",prt:"fought"},find:{pst:"found"},flee:{g:"_ing",prt:"fled"},fling:{prt:"flung"},fly:{prt:"flown",pst:"flew"},forbid:{pst:"forbade"},forget:{g:"_ing",prt:"forgotten",pst:"forgot"},forgive:{g:"forgiving",prt:"_n",pst:"forgave"},free:{a:"",g:"_ing"},freeze:{g:"freezing",prt:"frozen",pst:"froze"},get:{pst:"got",prt:"gotten"},give:{g:"giving",prt:"_n",pst:"gave"},go:{prt:"_ne",pst:"went",pres:"goes"},grow:{prt:"_n"},guide:{pst:"_d"},hang:{pst:"hung",prt:"hung"},have:{g:"having",pst:"had",prt:"had",pres:"has"},hear:{pst:"_d",prt:"_d"},hide:{prt:"hidden",pst:"hid"},hit:{prt:"_"},hold:{pst:"held",prt:"held"},hurt:{pst:"_",prt:"_"},ice:{g:"icing",pst:"_d"},imply:{pst:"implied",pres:"implies"},is:{a:"",g:"being",pst:"was",pres:"_"},keep:{prt:"kept"},kneel:{prt:"knelt"},know:{prt:"_n"},lay:{pst:"laid",prt:"laid"},lead:{pst:"led",prt:"led"},leap:{prt:"_t"},leave:{pst:"left",prt:"left"},lend:{prt:"lent"},lie:{g:"lying",pst:"lay"},light:{pst:"lit",prt:"lit"},log:{g:"_ging",pst:"_ged"},loose:{prt:"lost"},lose:{g:"losing",pst:"lost"},make:{pst:"made",prt:"made"},mean:{pst:"_t",prt:"_t"},meet:{a:"_er",g:"_ing",pst:"met",prt:"met"},miss:{pres:"_"},name:{g:"naming"},patrol:{g:"_ling",pst:"_led"},pay:{pst:"paid",prt:"paid"},prove:{prt:"_n"},puke:{g:"puking"},put:{prt:"_"},quit:{prt:"_"},read:{pst:"_",prt:"_"},ride:{prt:"ridden"},reside:{pst:"_d"},ring:{pst:"rang",prt:"rung"},rise:{fut:"will have _n",g:"rising",prt:"_n",pst:"rose",pluperf:"had _n"},rub:{g:"_bing",pst:"_bed"},run:{g:"_ning",prt:"_",pst:"ran"},say:{pst:"said",prt:"said",pres:"_s"},seat:{pst:"sat",prt:"sat"},see:{g:"_ing",prt:"_n",pst:"saw"},seek:{prt:"sought"},sell:{pst:"sold",prt:"sold"},send:{prt:"sent"},set:{prt:"_"},sew:{prt:"_n"},shake:{prt:"_n"},shave:{prt:"_d"},shed:{g:"_ding",pst:"_",pres:"_s"},shine:{pst:"shone",prt:"shone"},shoot:{pst:"shot",prt:"shot"},show:{pst:"_ed"},shut:{prt:"_"},sing:{prt:"sung",pst:"sang"},sink:{pst:"sank",pluperf:"had sunk"},sit:{pst:"sat"},ski:{pst:"_ied"},slay:{prt:"slain"},sleep:{prt:"slept"},slide:{pst:"slid",prt:"slid"},smash:{pres:"_es"},sneak:{prt:"snuck"},speak:{fut:"will have spoken",prt:"spoken",pst:"spoke",perf:"have spoken",pluperf:"had spoken"},speed:{prt:"sped"},spend:{prt:"spent"},spill:{prt:"_ed",pst:"spilt"},spin:{g:"_ning",pst:"spun",prt:"spun"},spit:{prt:"spat"},split:{prt:"_"},spread:{pst:"_"},spring:{prt:"sprung"},stand:{pst:"stood"},steal:{a:"_er",pst:"stole"},stick:{pst:"stuck"},sting:{pst:"stung"},stink:{pst:"stunk",prt:"stunk"},stream:{a:"_er"},strew:{prt:"_n"},strike:{g:"striking",pst:"struck"},suit:{a:"_er",g:"_ing",pst:"_ed"},sware:{prt:"sworn"},swear:{pst:"swore"},sweep:{prt:"swept"},swim:{g:"_ming",pst:"swam"},swing:{pst:"swung"},take:{fut:"will have _n",pst:"took",perf:"have _n",pluperf:"had _n"},teach:{pst:"taught",pres:"_es"},tear:{pst:"tore"},tell:{pst:"told"},think:{pst:"thought"},thrive:{prt:"_d"},tie:{g:"tying",pst:"_d"},undergo:{prt:"_ne"},understand:{pst:"understood"},upset:{prt:"_"},wait:{a:"_er",g:"_ing",pst:"_ed"},wake:{pst:"woke"},wear:{pst:"wore"},weave:{prt:"woven"},wed:{pst:"wed"},weep:{prt:"wept"},win:{g:"_ning",pst:"won"},wind:{prt:"wound"},withdraw:{pst:"withdrew"},wring:{prt:"wrung"},write:{g:"writing",prt:"written",pst:"wrote"}},Kr=Object.keys(qr);for(let e=0;e{let n=qr[t][e];n=n.replace("_",t);let a=_r[e];r[a]=n})),qr[t]=r}var Wr=qr;const Rr={b:[{reg:/([^aeiou][aeiou])b$/i,repl:{pr:"$1bs",pa:"$1bbed",gr:"$1bbing"}}],d:[{reg:/(end)$/i,repl:{pr:"$1s",pa:"ent",gr:"$1ing",ar:"$1er"}},{reg:/(eed)$/i,repl:{pr:"$1s",pa:"$1ed",gr:"$1ing",ar:"$1er"}},{reg:/(ed)$/i,repl:{pr:"$1s",pa:"$1ded",ar:"$1der",gr:"$1ding"}},{reg:/([^aeiou][ou])d$/i,repl:{pr:"$1ds",pa:"$1dded",gr:"$1dding"}}],e:[{reg:/(eave)$/i,repl:{pr:"$1s",pa:"$1d",gr:"eaving",ar:"$1r"}},{reg:/(ide)$/i,repl:{pr:"$1s",pa:"ode",gr:"iding",ar:"ider"}},{reg:/(t|sh?)(ake)$/i,repl:{pr:"$1$2s",pa:"$1ook",gr:"$1aking",ar:"$1$2r"}},{reg:/w(ake)$/i,repl:{pr:"w$1s",pa:"woke",gr:"waking",ar:"w$1r"}},{reg:/m(ake)$/i,repl:{pr:"m$1s",pa:"made",gr:"making",ar:"m$1r"}},{reg:/(a[tg]|i[zn]|ur|nc|gl|is)e$/i,repl:{pr:"$1es",pa:"$1ed",gr:"$1ing"}},{reg:/([bd]l)e$/i,repl:{pr:"$1es",pa:"$1ed",gr:"$1ing"}},{reg:/(om)e$/i,repl:{pr:"$1es",pa:"ame",gr:"$1ing"}}],g:[{reg:/([^aeiou][aou])g$/i,repl:{pr:"$1gs",pa:"$1gged",gr:"$1gging"}}],h:[{reg:/(..)([cs]h)$/i,repl:{pr:"$1$2es",pa:"$1$2ed",gr:"$1$2ing"}}],k:[{reg:/(ink)$/i,repl:{pr:"$1s",pa:"unk",gr:"$1ing",ar:"$1er"}}],m:[{reg:/([^aeiou][aeiou])m$/i,repl:{pr:"$1ms",pa:"$1mmed",gr:"$1mming"}}],n:[{reg:/(en)$/i,repl:{pr:"$1s",pa:"$1ed",gr:"$1ing"}}],p:[{reg:/(e)(ep)$/i,repl:{pr:"$1$2s",pa:"$1pt",gr:"$1$2ing",ar:"$1$2er"}},{reg:/([^aeiou][aeiou])p$/i,repl:{pr:"$1ps",pa:"$1pped",gr:"$1pping"}},{reg:/([aeiu])p$/i,repl:{pr:"$1ps",pa:"$1p",gr:"$1pping"}}],r:[{reg:/([td]er)$/i,repl:{pr:"$1s",pa:"$1ed",gr:"$1ing"}},{reg:/(er)$/i,repl:{pr:"$1s",pa:"$1ed",gr:"$1ing"}}],s:[{reg:/(ish|tch|ess)$/i,repl:{pr:"$1es",pa:"$1ed",gr:"$1ing"}}],t:[{reg:/(ion|end|e[nc]t)$/i,repl:{pr:"$1s",pa:"$1ed",gr:"$1ing"}},{reg:/(.eat)$/i,repl:{pr:"$1s",pa:"$1ed",gr:"$1ing"}},{reg:/([aeiu])t$/i,repl:{pr:"$1ts",pa:"$1t",gr:"$1tting"}},{reg:/([^aeiou][aeiou])t$/i,repl:{pr:"$1ts",pa:"$1tted",gr:"$1tting"}}],w:[{reg:/(.llow)$/i,repl:{pr:"$1s",pa:"$1ed"}},{reg:/(..)(ow)$/i,repl:{pr:"$1$2s",pa:"$1ew",gr:"$1$2ing",prt:"$1$2n"}}],y:[{reg:/(i|f|rr)y$/i,repl:{pr:"$1ies",pa:"$1ied",gr:"$1ying"}}],z:[{reg:/([aeiou]zz)$/i,repl:{pr:"$1es",pa:"$1ed",gr:"$1ing"}}]},Ur={pr:"PresentTense",pa:"PastTense",gr:"Gerund",prt:"Participle",ar:"Actor"},Qr=function(e,t){let r={},n=Object.keys(t.repl);for(let a=0;a0&&void 0!==arguments[0]?arguments[0]:"",t=e[e.length-1];if(!0===Rr.hasOwnProperty(t))for(let r=0;r"e"===e.charAt(e.length-1)?e.replace(/e$/,"ing"):e+"ing",PresentTense:e=>"s"===e.charAt(e.length-1)?e+"es":!0===Zr.test(e)?e.slice(0,-1)+"ies":e+"s",PastTense:e=>"e"===e.charAt(e.length-1)?e+"d":"ed"===e.substr(-2)?e:!0===Zr.test(e)?e.slice(0,-1)+"ied":e+"ed"};var en=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r={};return t&&t.irregulars&&!0===t.irregulars.verbs.hasOwnProperty(e)&&(r=Object.assign({},t.irregulars.verbs[e])),r=Object.assign({},Xr(e),r),void 0===r.Gerund&&(r.Gerund=Yr.Gerund(e)),void 0===r.PastTense&&(r.PastTense=Yr.PastTense(e)),void 0===r.PresentTense&&(r.PresentTense=Yr.PresentTense(e)),r};const tn=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/oud$/,/...p$/],rn=[/ary$/],nn={nice:"nicest",late:"latest",hard:"hardest",inner:"innermost",outer:"outermost",far:"furthest",worse:"worst",bad:"worst",good:"best",big:"biggest",large:"largest"},an=[{reg:/y$/i,repl:"iest"},{reg:/([aeiou])t$/i,repl:"$1ttest"},{reg:/([aeou])de$/i,repl:"$1dest"},{reg:/nge$/i,repl:"ngest"},{reg:/([aeiou])te$/i,repl:"$1test"}],on=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/old$/,/oud$/,/e[ae]p$/],sn=[/ary$/,/ous$/],ln={grey:"greyer",gray:"grayer",green:"greener",yellow:"yellower",red:"redder",good:"better",well:"better",bad:"worse",sad:"sadder",big:"bigger"},un=[{reg:/y$/i,repl:"ier"},{reg:/([aeiou])t$/i,repl:"$1tter"},{reg:/([aeou])de$/i,repl:"$1der"},{reg:/nge$/i,repl:"nger"}],cn={toSuperlative:function(e){if(nn.hasOwnProperty(e))return nn[e];for(let t=0;t0&&void 0!==arguments[0]?arguments[0]:"",t=(arguments.length>1?arguments[1]:void 0).irregulars.nouns;if(t.hasOwnProperty(e))return t[e];let r=pn(e);return null!==r?r:gn.test(e)?e+"es":e+"s"};const fn=[[/([^v])ies$/i,"$1y"],[/ises$/i,"isis"],[/(kn|[^o]l|w)ives$/i,"$1ife"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i,"$1f"],[/^(dwar|handkerchie|hoo|scar|whar)ves$/i,"$1f"],[/(antenn|formul|nebul|vertebr|vit)ae$/i,"$1a"],[/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i,"$1us"],[/(buffal|tomat|tornad)(oes)$/i,"$1o"],[/(eas)es$/i,"$1e"],[/(..[aeiou]s)es$/i,"$1"],[/(vert|ind|cort)(ices)$/i,"$1ex"],[/(matr|append)(ices)$/i,"$1ix"],[/(x|ch|ss|sh|z|o)es$/i,"$1"],[/men$/i,"man"],[/(n)ews$/i,"$1ews"],[/([ti])a$/i,"$1um"],[/([^aeiouy]|qu)ies$/i,"$1y"],[/(s)eries$/i,"$1eries"],[/(m)ovies$/i,"$1ovie"],[/([m|l])ice$/i,"$1ouse"],[/(cris|ax|test)es$/i,"$1is"],[/(alias|status)es$/i,"$1"],[/(ss)$/i,"$1"],[/(ics)$/i,"$1"],[/s$/i,""]],bn=function(e){return Object.keys(e).reduce(((t,r)=>(t[e[r]]=r,t)),{})};var yn=function(e,t){let r=t.irregulars.nouns,n=bn(r);if(n.hasOwnProperty(e))return n[e];for(let t=0;t(wn[t].forEach((r=>e[r]=t)),e)),{});const kn=vn,An=wn,Dn=function(e){let t=e.substr(e.length-3);if(!0===An.hasOwnProperty(t))return An[t];let r=e.substr(e.length-2);return!0===An.hasOwnProperty(r)?An[r]:"s"===e.substr(e.length-1)?"PresentTense":null},Pn=jr,$n=Jr,En=Lr,jn=wr,Hn={nouns:Sr,verbs:Wr},xn={conjugate:en,adjectives:hn,toPlural:mn,toSingular:yn,toInfinitive:function(e,t,r){if(!e)return"";if(!0===t.words.hasOwnProperty(e)){let r=t.irregulars.verbs,n=Object.keys(r);for(let t=0;t{let n=e[r];r=r.toLowerCase().trim(),t[r]=n})),$n.addWords(t,this.words,this)}addConjugations(e){return Object.assign(this.irregulars.verbs,e),this}addPlurals(e){return Object.assign(this.irregulars.nouns,e),this}addTags(e){return e=Object.assign({},e),this.tags=Object.assign(this.tags,e),this.tags=jn(this.tags),this}postProcess(e){return this.taggers.push(e),this}stats(){return{words:Object.keys(this.words).length,plurals:Object.keys(this.irregulars.nouns).length,conjugations:Object.keys(this.irregulars.verbs).length,compounds:Object.keys(this.hasCompound).length,postProcessors:this.taggers.length}}}const Cn=function(e){return JSON.parse(JSON.stringify(e))};Fn.prototype.clone=function(){let e=new Fn;return e.words=Object.assign({},this.words),e.hasCompound=Object.assign({},this.hasCompound),e.irregulars=Cn(this.irregulars),e.tags=Cn(this.tags),e.transforms=this.transforms,e.taggers=this.taggers,e};var Bn=Fn,Gn={};!function(e){e.all=function(){return this.parents()[0]||this},e.parent=function(){return this.from?this.from:this},e.parents=function(e){let t=[];const r=function(e){e.from&&(t.push(e.from),r(e.from))};return r(this),t=t.reverse(),"number"==typeof e?t[e]:t},e.clone=function(e){let t=this.list.map((t=>t.clone(e)));return this.buildFrom(t)},e.wordCount=function(){return this.list.reduce(((e,t)=>e+=t.wordCount()),0)},e.wordcount=e.wordCount}(Gn);var Tn={};!function(e){e.first=function(e){return void 0===e?this.get(0):this.slice(0,e)},e.last=function(e){if(void 0===e)return this.get(this.list.length-1);let t=this.list.length;return this.slice(t-e,t)},e.slice=function(e,t){let r=this.list.slice(e,t);return this.buildFrom(r)},e.eq=function(e){let t=this.list[e];return void 0===t?this.buildFrom([]):this.buildFrom([t])},e.get=e.eq,e.firstTerms=function(){return this.match("^.")},e.firstTerm=e.firstTerms,e.lastTerms=function(){return this.match(".$")},e.lastTerm=e.lastTerms,e.termList=function(e){let t=[];for(let r=0;rn.groups[e]));for(let e=0;ea.groups[e].group===t)),i.forEach((e=>{r.push(a.buildFrom(a.groups[e].start,a.groups[e].length))}))}return e.buildFrom(r)};e.groups=function(e){return void 0===e?t(this):("number"==typeof e&&(e=String(e)),r(this,e)||this.buildFrom([]))},e.group=e.groups,e.sentences=function(e){let t=[];return this.list.forEach((e=>{t.push(e.fullSentence())})),"number"==typeof e?this.buildFrom([t[e]]):this.buildFrom(t)},e.sentence=e.sentences}(Tn);var zn={};const On=function(e){let t=[],r=[];return e.forEach((e=>{!0!==e.optional&&!0!==e.negative&&(void 0!==e.tag&&t.push(e.tag),void 0!==e.word&&r.push(e.word))})),{tags:t,words:r}};var In=function(e,t){if(e._cache&&!0===e._cache.set){let{words:r,tags:n}=On(t);for(let t=0;t1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof n&&"number"!=typeof n&&null!==n||(n={group:n});let a=t(e,n);if(0===a.length)return this.buildFrom([]);if(!1===r(this,a))return this.buildFrom([]);let i=this.list.reduce(((e,t)=>e.concat(t.match(a))),[]);return void 0!==n.group&&null!==n.group&&""!==n.group?this.buildFrom(i).groups(n.group):this.buildFrom(i)},e.not=function(e){let n=t(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{});if(0===n.length||!1===r(this,n))return this;let a=this.list.reduce(((e,t)=>e.concat(t.not(n))),[]);return this.buildFrom(a)},e.matchOne=function(e){let n=t(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{});if(!1===r(this,n))return this.buildFrom([]);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:{});if(!1===r(this,n))return this.buildFrom([]);let a=this.list.filter((e=>!0===e.has(n)));return this.buildFrom(a)},e.ifNo=function(e){let r=t(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),n=this.list.filter((e=>!1===e.has(r)));return this.buildFrom(n)},e.has=function(e){let n=t(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{});return!1!==r(this,n)&&this.list.some((e=>!0===e.has(n)))},e.lookAhead=function(e){e||(e=".*");let r=t(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),n=[];return this.list.forEach((e=>{n=n.concat(e.lookAhead(r))})),n=n.filter((e=>e)),this.buildFrom(n)},e.lookAfter=e.lookAhead,e.lookBehind=function(e){e||(e=".*");let r=t(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),n=[];return this.list.forEach((e=>{n=n.concat(e.lookBehind(r))})),n=n.filter((e=>e)),this.buildFrom(n)},e.lookBefore=e.lookBehind,e.before=function(e){let r=t(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),n=this.if(r).list.map((e=>{let t=e.terms().map((e=>e.id)),n=e.match(r)[0],a=t.indexOf(n.start);return 0===a||-1===a?null:e.buildFrom(e.start,a)}));return n=n.filter((e=>null!==e)),this.buildFrom(n)},e.after=function(e){let r=t(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),n=this.if(r).list.map((e=>{let t=e.terms(),n=t.map((e=>e.id)),a=e.match(r)[0],i=n.indexOf(a.start);if(-1===i||!t[i+a.length])return null;let o=t[i+a.length].id,s=e.length-i-a.length;return e.buildFrom(o,s)}));return n=n.filter((e=>null!==e)),this.buildFrom(n)},e.hasAfter=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.filter((r=>r.lookAfter(e,t).found))},e.hasBefore=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.filter((r=>r.lookBefore(e,t).found))}}(zn);var Vn={};const Mn=function(e,t,r,n){let a=[];"string"==typeof e&&(a=e.split(" ")),t.list.forEach((i=>{let o=i.terms();!0===r&&(o=o.filter((r=>r.canBe(e,t.world)))),o.forEach(((r,i)=>{a.length>1?a[i]&&"."!==a[i]&&r.tag(a[i],n,t.world):r.tag(e,n,t.world)}))}))};Vn.tag=function(e,t){return e?(Mn(e,this,!1,t),this):this},Vn.tagSafe=function(e,t){return e?(Mn(e,this,!0,t),this):this},Vn.unTag=function(e,t){return this.list.forEach((r=>{r.terms().forEach((r=>r.unTag(e,t,this.world)))})),this},Vn.canBe=function(e){if(!e)return this;let t=this.world,r=this.list.reduce(((r,n)=>r.concat(n.canBe(e,t))),[]);return this.buildFrom(r)};var Jn={map:function(e){if(!e)return this;let t=this.list.map(((t,r)=>{let n=this.buildFrom([t]);n.from=null;let a=e(n,r);return a&&a.list&&a.list[0]?a.list[0]:a}));return t=t.filter((e=>e)),0===t.length?this.buildFrom(t):"object"!=typeof t[0]||"Phrase"!==t[0].isA?t:this.buildFrom(t)},forEach:function(e,t){return e?(this.list.forEach(((r,n)=>{let a=this.buildFrom([r]);!0===t&&(a.from=null),e(a,n)})),this):this},filter:function(e){if(!e)return this;let t=this.list.filter(((t,r)=>{let n=this.buildFrom([t]);return n.from=null,e(n,r)}));return this.buildFrom(t)},find:function(e){if(!e)return this;let t=this.list.find(((t,r)=>{let n=this.buildFrom([t]);return n.from=null,e(n,r)}));return t?this.buildFrom([t]):void 0},some:function(e){return e?this.list.some(((t,r)=>{let n=this.buildFrom([t]);return n.from=null,e(n,r)})):this},random:function(e){if(!this.found)return this;let t=Math.floor(Math.random()*this.list.length);if(void 0===e){let e=[this.list[t]];return this.buildFrom(e)}return t+e>this.length&&(t=this.length-e,t=t<0?0:t),this.slice(t,t+e)}},Ln={};const Sn=function(e){return e.split(/[ -]/g)},_n=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r={};return e.forEach(((e,n)=>{let a=!0;void 0!==t[n]&&(a=t[n]),e=(e=(e||"").toLowerCase()).replace(/[,;.!?]+$/,"");let i=Sn(e).map((e=>e.trim()));r[i[0]]=r[i[0]]||{},1===i.length?r[i[0]].value=a:(r[i[0]].more=r[i[0]].more||[],r[i[0]].more.push({rest:i.slice(1),value:a}))})),r};var qn=function(e,t,r){let n=_n(e,t),a=[];for(let e=0;ee.reduced));for(let e=0;e{void 0!==i[e+r.rest.length]&&!0===r.rest.every(((t,r)=>t===i[e+r+1]))&&a.push({id:t.terms()[e].id,value:r.value,length:r.rest.length+1})})),void 0!==n[i[e]].value&&a.push({id:t.terms()[e].id,value:n[i[e]].value,length:1}))}return a};!function(e){const t=qn,r=function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)};e.lookup=function(e){let n=[],a=r(e);!0===a&&(e=Object.keys(e).map((t=>(n.push(e[t]),t)))),"string"==typeof e&&(e=[e]),!0!==this._cache.set&&this.cache();let i=t(e,n,this),o=this.list[0];if(!0===a){let e={};return i.forEach((t=>{e[t.value]=e[t.value]||[],e[t.value].push(o.buildFrom(t.id,t.length))})),Object.keys(e).forEach((t=>{e[t]=this.buildFrom(e[t])})),e}return i=i.map((e=>o.buildFrom(e.id,e.length))),this.buildFrom(i)},e.lookUp=e.lookup}(Ln);var Kn={cache:function(e){e=e||{};let t={},r={};return this._cache.words=t,this._cache.tags=r,this._cache.set=!0,this.list.forEach(((n,a)=>{n.cache=n.cache||{},n.terms().forEach((n=>{t[n.reduced]&&!t.hasOwnProperty(n.reduced)||(t[n.reduced]=t[n.reduced]||[],t[n.reduced].push(a),Object.keys(n.tags).forEach((e=>{r[e]=r[e]||[],r[e].push(a)})),e.root&&(n.setRoot(this.world),t[n.root]=[a]))}))})),this},uncache:function(){return this._cache={},this.list.forEach((e=>{e.cache={}})),this.parents().forEach((e=>{e._cache={},e.list.forEach((e=>{e.cache={}}))})),this}},Wn={};const Rn=nr,Un=e=>e.charAt(0).toUpperCase()+e.substr(1);Wn.replaceWith=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e?(!0===t&&(t={keepTags:!0}),!1===t&&(t={keepTags:!1}),t=t||{},this.uncache(),this.list.forEach((r=>{let n,a=e;if("function"==typeof e&&(a=e(r)),a&&"object"==typeof a&&"Doc"===a.isA)n=a.list,this.pool().merge(a.pool());else{if("string"!=typeof a)return;{!1!==t.keepCase&&r.terms(0).isTitleCase()&&(a=Un(a)),n=Rn(a,this.world,this.pool());let e=this.buildFrom(n);e.tagger(),n=e.list}}if(!0===t.keepTags){let e=r.json({terms:{tags:!0}}).terms;n[0].terms().forEach(((t,r)=>{e[r]&&t.tagSafe(e[r].tags,"keptTag",this.world)}))}r.replace(n[0],this)})),this):this.delete()},Wn.replace=function(e,t,r){return void 0===t?this.replaceWith(e,r):(this.match(e).replaceWith(t,r),this)};var Qn={};!function(e){const t=nr,r=function(e){return e&&"[object Object]"===Object.prototype.toString.call(e)},n=function(e,r){let n=t(e,r.world)[0],a=r.buildFrom([n]);return a.tagger(),r.list=a.list,r};e.append=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e?this.found?(this.uncache(),this.list.forEach((n=>{let a;r(e)&&"Doc"===e.isA?a=e.list[0].clone():"string"==typeof e&&(a=t(e,this.world,this.pool())[0]),this.buildFrom([a]).tagger(),n.append(a,this)})),this):n(e,this):this},e.insertAfter=e.append,e.insertAt=e.append,e.prepend=function(e){return e?this.found?(this.uncache(),this.list.forEach((n=>{let a;r(e)&&"Doc"===e.isA?a=e.list[0].clone():"string"==typeof e&&(a=t(e,this.world,this.pool())[0]),this.buildFrom([a]).tagger(),n.prepend(a,this)})),this):n(e,this):this},e.insertBefore=e.prepend,e.concat=function(){this.uncache();let e=this.list.slice(0);for(let r=0;re.delete(this))),this},e.remove=e.delete}(Qn);var Zn={};const Xn={clean:!0,reduced:!0,root:!0};Zn.text=function(e){e=e||{};let t=!1;0===this.parents().length&&(t=!0),("root"===e||"object"==typeof e&&e.root)&&this.list.forEach((e=>{e.terms().forEach((e=>{null===e.root&&e.setRoot(this.world)}))}));let r=this.list.reduce(((r,n,a)=>{const i=!t&&0===a,o=!t&&a===this.list.length-1;return r+n.text(e,i,o)}),"");return!0!==Xn[e]&&!0!==e.reduced&&!0!==e.clean&&!0!==e.root||(r=r.trim()),r};var Yn={};const ea=function(e){let t=0,r=0,n={};return e.termList().forEach((e=>{n[e.id]={index:r,start:t+e.pre.length,length:e.text.length},t+=e.pre.length+e.text.length+e.post.length,r+=1})),n};var ta=function(e,t,r){let n=ea(e.all());(r.terms.index||r.index)&&t.forEach((e=>{e.terms.forEach((e=>{e.index=n[e.id].index})),e.index=e.terms[0].index})),(r.terms.offset||r.offset)&&t.forEach((e=>{e.terms.forEach((e=>{e.offset=n[e.id]||{}})),e.offset={index:e.terms[0].offset.index,start:e.terms[0].offset.start-e.text.indexOf(e.terms[0].text),length:e.text.length}}))};!function(e){const t=ta,r={text:!0,terms:!0,trim:!0},n=function(e){return(e=Object.assign({},r,e)).unique&&(e.reduced=!0),e.offset&&(e.text=!0,e.terms&&!0!==e.terms||(e.terms={}),e.terms.offset=!0),(e.index||e.terms.index)&&(e.terms=!0===e.terms?{}:e.terms,e.terms.id=!0),e};e.json=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if("number"==typeof e&&this.list[e])return this.list[e].json(r);e=n(e),!0===e.root&&this.list.forEach((e=>{e.terms().forEach((e=>{null===e.root&&e.setRoot(this.world)}))}));let a=this.list.map((t=>t.json(e,this.world)));if((e.terms.offset||e.offset||e.terms.index||e.index)&&t(this,a,e),e.frequency||e.freq||e.count){let e={};this.list.forEach((t=>{let r=t.text("reduced");e[r]=e[r]||0,e[r]+=1})),this.list.forEach(((t,r)=>{a[r].count=e[t.text("reduced")]}))}if(e.unique){let e={};a=a.filter((t=>!0!==e[t.reduced]&&(e[t.reduced]=!0,!0)))}return a},e.data=e.json}(Yn);var ra={},na={exports:{}};!function(e){const t="",r=function(e,t){for(e=e.toString();e.length{console.log('\n%c"'+e.text()+'"',"color: #e6d7b3;"),e.terms().forEach((e=>{let n=Object.keys(e.tags),i=e.text||"-";e.implicit&&(i="["+e.implicit+"]");let o="'"+i+"'";o=r(o,8);let s=n.find((e=>t[e]&&t[e].color)),l="steelblue";t[s]&&(l=t[s].color,l=a[l]),console.log(" ".concat(o," - %c").concat(n.join(", ")),"color: ".concat(l||"steelblue",";"))}))}))},o={green:function(e){return""+e+t},red:function(e){return""+e+t},blue:function(e){return""+e+t},magenta:function(e){return""+e+t},cyan:function(e){return""+e+t},yellow:function(e){return""+e+t},black:function(e){return""+e+t}},s=function(e,t){return(e=e.map((e=>{if(!t.tags.hasOwnProperty(e))return e;const r=t.tags[e].color||"blue";return o[r](e)}))).join(", ")},l=function(e){return n()?(i(e),e):(console.log(o.blue("=====")),e.list.forEach((t=>{console.log(o.blue(" -----")),t.terms().forEach((t=>{let n=Object.keys(t.tags),a=t.text||"-";t.implicit&&(a="["+t.implicit+"]"),a=o.yellow(a);let i="'"+a+"'";i=r(i,18);let l=o.blue(" | ")+i+" - "+s(n,e.world);console.log(l)}))})),console.log(""),e)};e.exports=l}(na);var aa=function(e){let t=e.json({text:!1,terms:!1,reduced:!0}),r={};t.forEach((e=>{r[e.reduced]||(e.count=0,r[e.reduced]=e),r[e.reduced].count+=1}));let n=Object.keys(r).map((e=>r[e]));return n.sort(((e,t)=>e.count>t.count?-1:e.counte.text)).filter((e=>e));if("freq"===e||"frequency"===e)return oa(this);if("terms"===e){let e=[];return this.json({text:!1,terms:{text:!0}}).forEach((t=>{let r=t.terms.map((e=>e.text));r=r.filter((e=>e)),e=e.concat(r)})),e}return"tags"===e?this.list.map((e=>e.terms().reduce(((e,t)=>(e[t.clean||t.implicit]=Object.keys(t.tags),e)),{}))):"debug"===e?(ia(this),this):this.text()};var sa={};const la={alpha:(e,t)=>{let r=e.text("clean"),n=t.text("clean");return rn?1:0},length:(e,t)=>{let r=e.text().trim().length,n=t.text().trim().length;return rn?-1:0},wordCount:(e,t)=>{let r=e.wordCount(),n=t.wordCount();return rn?-1:0}},ua=function(e){let t={};const r={case:!0,punctuation:!1,whitespace:!0,unicode:!0};return e.list.forEach((e=>{let n=e.text(r);t[n]=t[n]||0,t[n]+=1})),e.list.sort(((e,n)=>{let a=t[e.text(r)],i=t[n.text(r)];return ai?-1:0})),e},ca=function(e){let t={};return e.json({terms:{offset:!0}}).forEach((e=>{t[e.terms[0].id]=e.terms[0].offset.start})),e.list=e.list.sort(((e,r)=>t[e.start]>t[r.start]?1:t[e.start]{let r=e.text("reduced").trim()||e.text("implicit").trim();return!0!==t.hasOwnProperty(r)&&(t[r]=!0,!0)})),this.buildFrom(e)};var da={};const ga=i,pa=/[\[\]{}⟨⟩:,،、‒–—―…‹›«»‐\-;\/⁄·*\•^†‡°¡¿※№÷׺ª%‰=‱¶§~|‖¦©℗®℠™¤₳฿]/g,ma=/['‘’“”"′″‴]+/g,fa={whitespace:function(e){let t=e.list.map((e=>e.terms()));t.forEach(((e,r)=>{e.forEach(((n,a)=>{!0!==n.hasDash()?(n.pre=n.pre.replace(/\s/g,""),n.post=n.post.replace(/\s/g,""),(e.length-1!==a||t[r+1])&&(n.implicit&&!0===Boolean(n.text)||!0!==n.hasHyphen()&&(n.post+=" "))):n.post=" - "}))}))},punctuation:function(e){e.forEach((e=>{!0===e.hasHyphen()&&(e.post=" "),e.pre=e.pre.replace(pa,""),e.post=e.post.replace(pa,""),e.post=e.post.replace(/\.\.\./,""),!0===/!/.test(e.post)&&(e.post=e.post.replace(/!/g,""),e.post="!"+e.post),!0===/\?/.test(e.post)&&(e.post=e.post.replace(/[\?!]*/,""),e.post="?"+e.post)}))},unicode:function(e){e.forEach((e=>{!0!==e.isImplicit()&&(e.text=ga(e.text))}))},quotations:function(e){e.forEach((e=>{e.post=e.post.replace(ma,""),e.pre=e.pre.replace(ma,"")}))},adverbs:function(e){e.match("#Adverb").not("(not|nary|seldom|never|barely|almost|basically|so)").remove()},abbreviations:function(e){e.list.forEach((e=>{let t=e.terms();t.forEach(((e,r)=>{!0===e.tags.Abbreviation&&t[r+1]&&(e.post=e.post.replace(/^\./,""))}))}))}},ba={whitespace:!0,unicode:!0,punctuation:!0,emoji:!0,acronyms:!0,abbreviations:!0,case:!1,contractions:!1,parentheses:!1,quotations:!1,adverbs:!1,possessives:!1,verbs:!1,nouns:!1,honorifics:!1},ya={light:{},medium:{case:!0,contractions:!0,parentheses:!0,quotations:!0,adverbs:!0}};ya.heavy=Object.assign({},ya.medium,{possessives:!0,verbs:!0,nouns:!0,honorifics:!0}),da.normalize=function(e){"string"==typeof(e=e||{})&&(e=ya[e]||{}),e=Object.assign({},ba,e),this.uncache();let t=this.termList();return e.case&&this.toLowerCase(),e.whitespace&&fa.whitespace(this),e.unicode&&fa.unicode(t),e.punctuation&&fa.punctuation(t),e.emoji&&this.remove("(#Emoji|#Emoticon)"),e.acronyms&&this.acronyms().strip(),e.abbreviations&&fa.abbreviations(this),(e.contraction||e.contractions)&&this.contractions().expand(),e.parentheses&&this.parentheses().unwrap(),(e.quotations||e.quotes)&&fa.quotations(t),e.adverbs&&fa.adverbs(this),(e.possessive||e.possessives)&&this.possessives().strip(),e.verbs&&this.verbs().toInfinitive(),(e.nouns||e.plurals)&&this.nouns().toSingular(),e.honorifics&&this.remove("#Honorific"),this};var va={};!function(e){const t=ut;e.splitOn=function(e){if(!e)return this.parent().splitOn(this);let r=t(e),n=[];return this.list.forEach((e=>{let t=e.match(r);if(0===t.length)return void n.push(e);let a=e;t.forEach((e=>{let t=a.splitOn(e);t.before&&n.push(t.before),t.match&&n.push(t.match),a=t.after})),a&&n.push(a)})),this.buildFrom(n)},e.splitAfter=function(e){if(!e)return this.parent().splitAfter(this);let r=t(e),n=[];return this.list.forEach((e=>{let t=e.match(r);if(0===t.length)return void n.push(e);let a=e;t.forEach((e=>{let t=a.splitOn(e);t.before&&t.match?(t.before.length+=t.match.length,n.push(t.before)):t.match&&n.push(t.match),a=t.after})),a&&n.push(a)})),this.buildFrom(n)},e.split=e.splitAfter,e.splitBefore=function(e){if(!e)return this.parent().splitBefore(this);let r=t(e),n=[];return this.list.forEach((e=>{let t=e.match(r);if(0===t.length)return void n.push(e);let a=e;t.forEach((e=>{let t=a.splitOn(e);t.before&&n.push(t.before),t.match&&t.after&&(t.match.length+=t.after.length),a=t.match})),a&&n.push(a)})),this.buildFrom(n)},e.segment=function(e,t){e=e||{},t=t||{text:!0};let r=this,n=Object.keys(e);return n.forEach((e=>{r=r.splitOn(e)})),r.list.forEach((t=>{for(let r=0;r{let r=e.json(t);return r.segment=e.segment||null,r}))}}(va);var wa={};const ka=function(e,t){let r=e.world;return e.list.forEach((e=>{e.terms().forEach((e=>e[t](r)))})),e};wa.toLowerCase=function(){return ka(this,"toLowerCase")},wa.toUpperCase=function(){return ka(this,"toUpperCase")},wa.toTitleCase=function(){return ka(this,"toTitleCase")},wa.toCamelCase=function(){return this.list.forEach((e=>{let t=e.terms();t.forEach(((e,r)=>{0!==r&&e.toTitleCase(),r!==t.length-1&&(e.post="")}))})),this};var Aa={};!function(e){e.pre=function(e,t){return void 0===e?this.list[0].terms(0).pre:(this.list.forEach((r=>{let n=r.terms(0);!0===t?n.pre+=e:n.pre=e})),this)},e.post=function(e,t){return void 0===e?this.list.map((e=>{let t=e.terms();return t[t.length-1].post})):(this.list.forEach((r=>{let n=r.terms(),a=n[n.length-1];!0===t?a.post+=e:a.post=e})),this)},e.trim=function(){return this.list=this.list.map((e=>e.trim())),this},e.hyphenate=function(){return this.list.forEach((e=>{let t=e.terms();t.forEach(((e,r)=>{0!==r&&(e.pre=""),t[r+1]&&(e.post="-")}))})),this},e.dehyphenate=function(){const e=/(-|–|—)/;return this.list.forEach((t=>{t.terms().forEach((t=>{e.test(t.post)&&(t.post=" ")}))})),this},e.deHyphenate=e.dehyphenate,e.toQuotations=function(e,t){return e=e||'"',t=t||'"',this.list.forEach((r=>{let n=r.terms();n[0].pre=e+n[0].pre;let a=n[n.length-1];a.post=t+a.post})),this},e.toQuotation=e.toQuotations,e.toParentheses=function(e,t){return e=e||"(",t=t||")",this.list.forEach((r=>{let n=r.terms();n[0].pre=e+n[0].pre;let a=n[n.length-1];a.post=t+a.post})),this}}(Aa);var Da={join:function(e){this.uncache();let t=this.list[0],r=t.length,n={};for(let r=1;r{e.list.forEach((e=>{let r=e.terms();for(let n=0;n!0!==n[e.start]))})),this.buildFrom([t])}},Pa={};const $a=/[,\)"';:\-–—\.…]/,Ea=function(e,t){if(!e.found)return;let r=e.termList();for(let e=0;e{e.implicit=e.clean})),r[0].text+=t,r.slice(1).forEach((e=>{e.text=""}));for(let e=0;e{Ha[e[0]]=function(t){let r=this.match(e[1]);return"number"==typeof t&&(r=r.get(t)),r}})),Ha.emojis=Ha.emoji,Ha.atmentions=Ha.atMentions,Ha.words=Ha.terms,Ha.phoneNumbers=function(e){let t=this.splitAfter("@hasComma");return t=t.match("#PhoneNumber+"),"number"==typeof e&&(t=t.get(e)),t},Ha.money=function(e){let t=this.match("#Money #Currency?");return"number"==typeof e&&(t=t.get(e)),t},Ha.places=function(e){let t=this.match("(#City && @hasComma) (#Region|#Country)"),r=this.not(t).splitAfter("@hasComma");return r=r.concat(t),r.sort("index"),r=r.match("#Place+"),"number"==typeof e&&(r=r.get(e)),r},Ha.organizations=function(e){let t=this.clauses();return t=t.match("#Organization+"),"number"==typeof e&&(t=t.get(e)),t},Ha.entities=function(e){let t=this.clauses(),r=t.people();r=r.concat(t.places()),r=r.concat(t.organizations());let n=["someone","man","woman","mother","brother","sister","father"];return r=r.not(n),r.sort("sequence"),"number"==typeof e&&(r=r.get(e)),r},Ha.things=Ha.entities,Ha.topics=Ha.entities;var xa=Ha;const Na=/^(under|over)-?.{3}/,Fa=function(e,t,r){let n=r.words,a=e[t].reduced+" "+e[t+1].reduced;return void 0!==n[a]&&!0===n.hasOwnProperty(a)?(e[t].tag(n[a],"lexicon-two",r),e[t+1].tag(n[a],"lexicon-two",r),1):t+20){a+=r;continue}}if(void 0===r[i]||!0!==r.hasOwnProperty(i))if(i===e[a].reduced||!0!==r.hasOwnProperty(e[a].reduced)){if(!0===Na.test(i)){let n=i.replace(/^(under|over)-?/,"");!0===r.hasOwnProperty(n)&&e[a].tag(r[n],"noprefix-lexicon",t)}}else e[a].tag(r[e[a].reduced],"lexicon",t);else e[a].tag(r[i],"lexicon",t)}return e};const Ba=/[\'‘’‛‵′`´]$/,Ga=/^(m|k|cm|km|m)\/(s|h|hr)$/,Ta=[[/^[\w\.]+@[\w\.]+\.[a-z]{2,3}$/,"Email"],[/^#[a-z0-9_\u00C0-\u00FF]{2,}$/,"HashTag"],[/^@1?[0-9](am|pm)$/i,"Time"],[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i,"Time"],[/^@\w{2,}$/,"AtMention"],[/^(https?:\/\/|www\.)+\w+\.[a-z]{2,3}/,"Url"],[/^[a-z0-9./].+\.(com|net|gov|org|ly|edu|info|biz|dev|ru|jp|de|in|uk|br|io|ai)/,"Url"],[/^'[0-9]{2}$/,"Year"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/,"Time"],[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i,"Time"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i,"Time"],[/^[PMCE]ST$/,"Time"],[/^utc ?[+-]?[0-9]+?$/,"Time"],[/^[a-z0-9]*? o\'?clock$/,"Time"],[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i,"Date"],[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i,"Date"],[/^gmt[+-][0-9][0-9]?$/i,"Timezone"],[/^utc[+-][0-9][0-9]?$/i,"Timezone"],[/^ma?c\'.*/,"LastName"],[/^o\'[drlkn].*/,"LastName"],[/^ma?cd[aeiou]/,"LastName"],[/^(lol)+[sz]$/,"Expression"],[/^woo+a*?h?$/,"Expression"],[/^(un|de|re)\\-[a-z\u00C0-\u00FF]{2}/,"Verb"],[/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/,"Date"],[/^[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^(\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^[-+]?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(k|m|b|bn)?\+?$/,["Money","Value"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]\+?$/,["Money","Value"]],[/^[-+]?[\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i,["Money","Value"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|r?th)$/,["Ordinal","NumericValue"]],[/^\.[0-9]+\+?$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?%\+?$/,["Percent","Cardinal","NumericValue"]],[/^\.[0-9]+%$/,["Percent","Cardinal","NumericValue"]],[/^[0-9]{1,4}\/[0-9]{1,4}(st|nd|rd|th)?s?$/,["Fraction","NumericValue"]],[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/,["Value","NumberRange"]],[/^[0-9][0-9]?(:[0-9][0-9])?(am|pm)? ?[-–—] ?[0-9][0-9]?(:[0-9][0-9])?(am|pm)?$/,["Time","NumberRange"]],[/^[0-9.]+([a-z]{1,4})$/,"Value"]],za=/^[IVXLCDM]{2,}$/,Oa=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,Ia="Adjective",Va="Infinitive",Ma="PresentTense",Ja="Singular",La="PastTense",Sa="Adverb",_a="Expression",qa="Actor",Ka="Verb",Wa="Noun",Ra="LastName",Ua="Adjective",Qa="Infinitive",Za="PresentTense",Xa="Singular",Ya="PastTense",ei="Adverb",ti="Plural",ri="Actor",ni="Verb",ai="Noun",ii="LastName",oi="Modal",si={a:[[/.[aeiou]na$/,Wa],[/.[oau][wvl]ska$/,Ra],[/.[^aeiou]ica$/,Ja],[/^([hyj]a)+$/,_a]],c:[[/.[^aeiou]ic$/,Ia]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,La],[/.[aeo]{2}[bdgmnprvz]ed$/,La],[/.[aeiou][sg]hed$/,La],[/.[aeiou]red$/,La],[/.[aeiou]r?ried$/,La],[/.[bcdgtr]led$/,La],[/.[aoui]f?led$/,La],[/.[iao]sed$/,La],[/[aeiou]n?[cs]ed$/,La],[/[aeiou][rl]?[mnf]ed$/,La],[/[aeiou][ns]?c?ked$/,La],[/[aeiou][nl]?ged$/,La],[/.[tdbwxz]ed$/,La],[/[^aeiou][aeiou][tvx]ed$/,La],[/.[cdlmnprstv]ied$/,La],[/[^aeiou]ard$/,Ja],[/[aeiou][^aeiou]id$/,Ia],[/.[vrl]id$/,Ia]],e:[[/.[lnr]ize$/,Va],[/.[^aeiou]ise$/,Va],[/.[aeiou]te$/,Va],[/.[^aeiou][ai]ble$/,Ia],[/.[^aeiou]eable$/,Ia],[/.[ts]ive$/,Ia],[/[a-z]-like$/,Ia]],h:[[/.[^aeiouf]ish$/,Ia],[/.v[iy]ch$/,Ra],[/^ug?h+$/,_a],[/^uh[ -]?oh$/,_a],[/[a-z]-ish$/,Ia]],i:[[/.[oau][wvl]ski$/,Ra]],k:[[/^(k){2}$/,_a]],l:[[/.[gl]ial$/,Ia],[/.[^aeiou]ful$/,Ia],[/.[nrtumcd]al$/,Ia],[/.[^aeiou][ei]al$/,Ia]],m:[[/.[^aeiou]ium$/,Ja],[/[^aeiou]ism$/,Ja],[/^h*u*m+$/,_a],[/^\d+ ?[ap]m$/,"Date"]],n:[[/.[lsrnpb]ian$/,Ia],[/[^aeiou]ician$/,qa],[/[aeiou][ktrp]in$/,"Gerund"]],o:[[/^no+$/,_a],[/^(yo)+$/,_a],[/^woo+[pt]?$/,_a]],r:[[/.[bdfklmst]ler$/,"Noun"],[/[aeiou][pns]er$/,Ja],[/[^i]fer$/,Va],[/.[^aeiou][ao]pher$/,qa],[/.[lk]er$/,"Noun"],[/.ier$/,"Comparative"]],t:[[/.[di]est$/,"Superlative"],[/.[icldtgrv]ent$/,Ia],[/[aeiou].*ist$/,Ia],[/^[a-z]et$/,Ka]],s:[[/.[^aeiou]ises$/,Ma],[/.[rln]ates$/,Ma],[/.[^z]ens$/,Ka],[/.[lstrn]us$/,Ja],[/.[aeiou]sks$/,Ma],[/.[aeiou]kes$/,Ma],[/[aeiou][^aeiou]is$/,Ja],[/[a-z]\'s$/,Wa],[/^yes+$/,_a]],v:[[/.[^aeiou][ai][kln]ov$/,Ra]],y:[[/.[cts]hy$/,Ia],[/.[st]ty$/,Ia],[/.[gk]y$/,Ia],[/.[tnl]ary$/,Ia],[/.[oe]ry$/,Ja],[/[rdntkbhs]ly$/,Sa],[/...lly$/,Sa],[/[bszmp]{2}y$/,Ia],[/.(gg|bb|zz)ly$/,Ia],[/.[ai]my$/,Ia],[/[ea]{2}zy$/,Ia],[/.[^aeiou]ity$/,Ja]]},li=[null,null,{ea:Xa,ia:ai,ic:Ua,ly:ei,"'n":ni,"'t":ni},{oed:Ya,ued:Ya,xed:Ya," so":ei,"'ll":oi,"'re":"Copula",azy:Ua,eer:ai,end:ni,ped:Ya,ffy:Ua,ify:Qa,ing:"Gerund",ize:Qa,lar:Ua,mum:Ua,nes:Za,nny:Ua,oid:Ua,ous:Ua,que:Ua,rol:Xa,sis:Xa,zes:Za},{amed:Ya,aped:Ya,ched:Ya,lked:Ya,nded:Ya,cted:Ya,dged:Ya,akis:ii,cede:Qa,chuk:ii,czyk:ii,ects:Za,ends:ni,enko:ii,ette:Xa,fies:Za,fore:ei,gate:Qa,gone:Ua,ices:ti,ints:ti,ines:ti,ions:ti,less:ei,llen:Ua,made:Ua,nsen:ii,oses:Za,ould:oi,some:Ua,sson:ii,tage:Qa,teen:"Value",tion:Xa,tive:Ua,tors:ai,vice:Xa},{tized:Ya,urned:Ya,eased:Ya,ances:ti,bound:Ua,ettes:ti,fully:ei,ishes:Za,ities:ti,marek:ii,nssen:ii,ology:ai,ports:ti,rough:Ua,tches:Za,tieth:"Ordinal",tures:ti,wards:ei,where:ei},{auskas:ii,keeper:ri,logist:ri,teenth:"Value"},{opoulos:ii,borough:"Place",sdottir:ii}],ui=function(e,t){let r=e.clean,n=r[r.length-1];if(!0===si.hasOwnProperty(n)){let a=si[n];for(let i=0;i1;a-=1){let n=e.clean.substr(r-a,r);if(!0===li[n.length].hasOwnProperty(n)){let r=li[n.length][n];e.tagSafe(r,"suffix -"+n,t);break}}},hi=/^(\u00a9|\u00ae|[\u2319-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/,di={":(":!0,":)":!0,":P":!0,":p":!0,":O":!0,":3":!0,":|":!0,":/":!0,":\\":!0,":$":!0,":*":!0,":@":!0,":-(":!0,":-)":!0,":-P":!0,":-p":!0,":-O":!0,":-3":!0,":-|":!0,":-/":!0,":-\\":!0,":-$":!0,":-*":!0,":-@":!0,":^(":!0,":^)":!0,":^P":!0,":^p":!0,":^O":!0,":^3":!0,":^|":!0,":^/":!0,":^\\":!0,":^$":!0,":^*":!0,":^@":!0,"):":!0,"(:":!0,"$:":!0,"*:":!0,")-:":!0,"(-:":!0,"$-:":!0,"*-:":!0,")^:":!0,"(^:":!0,"$^:":!0,"*^:":!0,"<3":!0,"!(":"!==e.charAt(0)||null===e.match(/:.?$/)||e.match(" ")||e.length>35),pi=e=>(e=e.replace(/^[:;]/,":"),di.hasOwnProperty(e)),mi={lexicon:Ca,punctuation:function(e,t,r){let n=e[t];if(Ba.test(n.text)&&!Ba.test(n.pre)&&!Ba.test(n.post)&&n.clean.length>2){let e=n.clean[n.clean.length-2];if("s"===e)return void n.tag(["Possessive","Noun"],"end-tick",r);"n"===e&&n.tag(["Gerund"],"chillin",r)}Ga.test(n.text)&&n.tag("Unit","per-sec",r)},regex:function(e,t){let r=e.text;for(let n=0;n=2&&za.test(r)&&Oa.test(r)&&e.tag("RomanNumeral","xvii",t)},suffix:function(e,t){ci(e,t),ui(e,t)},emoji:(e,t)=>{let r=e.pre+e.text+e.post;r=r.trim(),r=r.replace(/[.!?,]$/,""),!0===gi(r)&&(e.tag("Emoji","comma-emoji",t),e.text=r,e.pre=e.pre.replace(":",""),e.post=e.post.replace(":","")),e.text.match(hi)&&(e.tag("Emoji","unicode-emoji",t),e.text=r),!0===pi(r)&&(e.tag("Emoticon","emoticon-emoji",t),e.text=r)}};var fi=function(e,t){let r=e.world;mi.lexicon(t,r);for(let e=0;ea.tags[e]));if(void 0!==e){let r=bi.afterThisPos[e];n.tag(r,"after-"+e,t);continue}}let i=e[r+1];if(i){if(!0===bi.beforeThisWord.hasOwnProperty(i.clean)){let e=bi.beforeThisWord[i.clean];n.tag(e,"before-"+i.clean,t);continue}let e=vi.find((e=>i.tags[e]));if(void 0!==e){let r=bi.beforeThisPos[e];n.tag(r,"before-"+e,t);continue}}}};const ki=/^[A-Z][a-z'\u00C0-\u00FF]/,Ai=/[0-9]/;var Di=function(e){let t=e.world;e.list.forEach((e=>{let r=e.terms();for(let e=1;e{if(!0!==e.isKnown()&&!0===Pi.test(e.clean)){let n=e.clean.replace($i,"");n&&n.length>3&&void 0!==r[n]&&!0===r.hasOwnProperty(n)&&e.tag(r[n],"stem-"+n,t)}}))};const ji=["Uncountable","Pronoun","Place","Value","Person","Month","WeekDay","Holiday"],Hi={isSingular:[/(ax|test)is$/i,/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,/(octop|vir)i$/i,/(rl)f$/i,/(alias|status)$/i,/(bu)s$/i,/(al|ad|at|er|et|ed|ad)o$/i,/(ti)um$/i,/(ti)a$/i,/sis$/i,/(?:(^f)fe|(lr)f)$/i,/hive$/i,/s[aeiou]+ns$/i,/(^aeiouy|qu)y$/i,/(x|ch|ss|sh|z)$/i,/(matr|vert|ind|cort)(ix|ex)$/i,/(m|l)ouse$/i,/(m|l)ice$/i,/(antenn|formul|nebul|vertebr|vit)a$/i,/.sis$/i,/^(?!talis|.*hu)(.*)man$/i],isPlural:[/(^v)ies$/i,/ises$/i,/ives$/i,/(antenn|formul|nebul|vertebr|vit)ae$/i,/(octop|vir|radi|nucle|fung|cact|stimul)i$/i,/(buffal|tomat|tornad)oes$/i,/(analy|ba|diagno|parenthe|progno|synop|the)ses$/i,/(vert|ind|cort)ices$/i,/(matr|append)ices$/i,/(x|ch|ss|sh|s|z|o)es$/i,/is$/i,/men$/i,/news$/i,/.tia$/i,/(^f)ves$/i,/(lr)ves$/i,/(^aeiouy|qu)ies$/i,/(m|l)ice$/i,/(cris|ax|test)es$/i,/(alias|status)es$/i,/ics$/i]},xi=[/ss$/,/sis$/,/[^aeiou][uo]s$/,/'s$/],Ni=[/i$/,/ae$/];var Fi=function(e,t){if(e.tags.Noun&&!e.tags.Acronym){let r=e.clean;if(e.tags.Singular||e.tags.Plural)return;if(r.length<=3)return void e.tag("Singular","short-singular",t);if(ji.find((t=>e.tags[t])))return;if(Hi.isPlural.find((e=>e.test(r))))return void e.tag("Plural","plural-rules",t);if(Hi.isSingular.find((e=>e.test(r))))return void e.tag("Singular","singular-rules",t);if(!0===/s$/.test(r)){if(xi.find((e=>e.test(r))))return;return void e.tag("Plural","plural-fallback",t)}if(Ni.find((e=>e.test(r))))return;e.tag("Singular","singular-fallback",t)}};let Ci=["academy","administration","agence","agences","agencies","agency","airlines","airways","army","assoc","associates","association","assurance","authority","autorite","aviation","bank","banque","board","boys","brands","brewery","brotherhood","brothers","building society","bureau","cafe","caisse","capital","care","cathedral","center","central bank","centre","chemicals","choir","chronicle","church","circus","clinic","clinique","club","co","coalition","coffee","collective","college","commission","committee","communications","community","company","comprehensive","computers","confederation","conference","conseil","consulting","containers","corporation","corps","corp","council","crew","daily news","data","departement","department","department store","departments","design","development","directorate","division","drilling","education","eglise","electric","electricity","energy","ensemble","enterprise","enterprises","entertainment","estate","etat","evening news","faculty","federation","financial","fm","foundation","fund","gas","gazette","girls","government","group","guild","health authority","herald","holdings","hospital","hotel","hotels","inc","industries","institut","institute","institute of technology","institutes","insurance","international","interstate","investment","investments","investors","journal","laboratory","labs","liberation army","limited","local authority","local health authority","machines","magazine","management","marine","marketing","markets","media","memorial","mercantile exchange","ministere","ministry","military","mobile","motor","motors","musee","museum","news","news service","observatory","office","oil","optical","orchestra","organization","partners","partnership","people's party","petrol","petroleum","pharmacare","pharmaceutical","pharmaceuticals","pizza","plc","police","polytechnic","post","power","press","productions","quartet","radio","regional authority","regional health authority","reserve","resources","restaurant","restaurants","savings","school","securities","service","services","social club","societe","society","sons","standard","state police","state university","stock exchange","subcommittee","syndicat","systems","telecommunications","telegraph","television","times","tribunal","tv","union","university","utilities","workers"].reduce((function(e,t){return e[t]="Noun",e}),{});const Bi=function(e){return!(!e.tags.Noun||e.tags.Pronoun||e.tags.Comma||e.tags.Possessive||!(e.tags.Organization||e.tags.Acronym||e.tags.Place||e.titleCase()))},Gi=/^[A-Z]('s|,)?$/,Ti=/([A-Z]\.){2}[A-Z]?/i,zi={I:!0,A:!0},Oi=function(e,t){let r=e.reduced;return!!e.tags.Acronym||!t.words[r]&&!(r.length>5)&&e.isAcronym()},Ii={neighbours:wi,case:Di,stem:Ei,plural:Fi,organizations:function(e,t){for(let r=0;r{!0!==e.tags.RomanNumeral&&(!0===Ti.test(e.text)&&e.tag("Acronym","period-acronym",t),e.isUpperCase()&&Oi(e,t)?(e.tag("Acronym","acronym-step",t),e.tag("Noun","acronym-infer",t)):!zi.hasOwnProperty(e.text)&&Gi.test(e.text)&&(e.tag("Acronym","one-letter-acronym",t),e.tag("Noun","one-letter-infer",t)),e.tags.Organization&&e.text.length<=3&&e.tag("Acronym","acronym-org",t),e.tags.Organization&&e.isUpperCase()&&e.text.length<=6&&e.tag("Acronym","acronym-org-case",t))}))}};var Vi=function(e,t){let r=e.world;return Ii.neighbours(t,r),Ii.case(e),Ii.stem(t,r),t.forEach((t=>{!1===t.isKnown()&&t.tag("Noun","noun-fallback",e.world)})),Ii.organizations(t,r),Ii.acronyms(t,r),t.forEach((t=>{Ii.plural(t,e.world)})),e};const Mi=/n't$/,Ji={"won't":["will","not"],wont:["will","not"],"can't":["can","not"],cant:["can","not"],cannot:["can","not"],"shan't":["should","not"],dont:["do","not"],dun:["do","not"]},Li=function(e,t){let r=t.terms(),n=r.indexOf(e),a=r.slice(0,n).find((e=>e.tags.Noun));return a&&a.tags.Plural?["are","not"]:["is","not"]},Si=/([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z]{1,2})$/i,_i={ll:"will",ve:"have",re:"are",m:"am","n't":"not"},qi={wanna:["want","to"],gonna:["going","to"],im:["i","am"],alot:["a","lot"],ive:["i","have"],imma:["I","will"],"where'd":["where","did"],whered:["where","did"],"when'd":["when","did"],whend:["when","did"],howd:["how","did"],whatd:["what","did"],dunno:["do","not","know"],brb:["be","right","back"],gtg:["got","to","go"],irl:["in","real","life"],tbh:["to","be","honest"],imo:["in","my","opinion"],til:["today","i","learned"],rn:["right","now"],twas:["it","was"],"@":["at"]},Ki=/([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]s$/i,Wi={that:!0,there:!0},Ri={here:!0,there:!0,everywhere:!0},Ui=(e,t)=>{if(e.tags.Possessive)return!0;if(e.tags.Pronoun||e.tags.QuestionWord)return!1;if(Wi.hasOwnProperty(e.reduced))return!1;let r=t.get(e.next);if(!r)return!0;if(r.tags.Verb)return!!r.tags.Infinitive||!!r.tags.PresentTense;if(r.tags.Noun)return!0!==Ri.hasOwnProperty(r.reduced);let n=t.get(r.next);return!(!n||!n.tags.Noun||n.tags.Pronoun)||(r.tags.Adjective||r.tags.Adverb||r.tags.Verb,!1)},Qi=(e,t)=>{let r=t.terms(),n=r.indexOf(e);return r.slice(n+1,n+3).find((e=>e.tags.PastTense))},Zi=/[a-z\u00C0-\u00FF]'d$/,Xi={how:!0,what:!0},Yi=/^([0-9.]{1,3}[a-z]{0,2}) ?[-–—] ?([0-9]{1,3}[a-z]{0,2})$/i,eo=/^([0-9][0-9]?(:[0-9][0-9])?(am|pm)?) ?[-–—] ?([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)$/i,to=/^(l|c|d|j|m|n|qu|s|t)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z\u00C0-\u00FF]+)$/i,ro={l:"le",c:"ce",d:"de",j:"je",m:"me",n:"ne",qu:"que",s:"se",t:"tu"},no=Ca,ao=nr,io=function(e,t){return!0===Ji.hasOwnProperty(e.clean)?Ji[e.clean]:"ain't"===e.clean||"aint"===e.clean?Li(e,t):!0===Mi.test(e.clean)?[e.clean.replace(Mi,""),"not"]:null},oo=function(e){let t=e.text.match(Si);return null===t?null:_i.hasOwnProperty(t[2])?[t[1],_i[t[2]]]:null},so=function(e){return qi.hasOwnProperty(e.clean)?qi[e.clean]:null},lo=function(e,t,r){let n=e.text.match(Ki);if(null!==n){if(!0===Ui(e,t.pool))return e.tag("#Possessive","isPossessive",r),null;if(null!==n)return Qi(e,t)?[n[1],"has"]:[n[1],"is"]}return null},uo=function(e,t){if(Zi.test(e.clean)){let r=e.clean.replace(/'d$/,""),n=t.terms(),a=n.indexOf(e),i=n.slice(a+1,a+4);for(let e=0;e{e.implicit=e.text,e.text="",e.clean="",e.pre="",e.post="",0===Object.keys(e.tags).length&&(e.tags.Noun=!0)})),r};var bo=function(e){let t=e.world;return e.list.forEach((r=>{let n=r.terms();for(let a=0;ae.list[t])),e.buildFrom(r)},vo=function(e,t){let r=e._cache.tags[t]||[];return r=r.map((t=>e.list[t])),e.buildFrom(r)};var wo=function(e){let t=vo(e,"Infinitive");return t.found&&(t=t.ifNo("@hasQuestionMark"),t=t.ifNo("(i|we|they)"),t.not("will be").match("[#Infinitive] (#Determiner|#Possessive) #Noun").notIf("(our|their)").match("#Infinitive").tag("Imperative","shut-the"),t.match("^[#Infinitive] #Adverb?$",0).tag("Imperative","go-fast"),t.match("[(do && #Infinitive)] not? #Verb",0).tag("Imperative","do-not"),t.match("[#Infinitive] (it|some) (#Comparative|#Preposition|please|now|again)",0).tag("Imperative","do-it")),t=yo(e,"like"),t.match("#Adverb like").notIf("(really|generally|typically|usually|sometimes|often|just) [like]").tag("Adverb","adverb-like"),t=vo(e,"Adjective"),t.match("#Determiner #Adjective$").notIf("(#Comparative|#Superlative)").terms(1).tag("Noun","the-adj-1"),t=vo(e,"FirstName"),t.match("#FirstName (#Noun|@titleCase)").ifNo("^#Possessive").ifNo("(#Pronoun|#Plural)").ifNo("@hasComma .").lastTerm().tag("#LastName","firstname-noun"),t=vo(e,"Value"),t=t.match("#Value #PresentTense").ifNo("#Copula"),t.found&&(!0===t.has("(one|1)")?t.terms(1).tag("Singular","one-presentTense"):t.terms(1).tag("Plural","value-presentTense")),e.match("^(well|so|okay)").tag("Expression","well-"),e.match("#Value [of a second]",0).unTag("Value","of-a-second"),e.match("#Value [seconds]",0).unTag("Value","30-seconds").tag(["Unit","Plural"]),t=vo(e,"Gerund"),t.match("(be|been) (#Adverb|not)+? #Gerund").not("#Verb$").tag("Auxiliary","be-walking"),e.match("(try|use|attempt|build|make) #Verb").ifNo("(@hasComma|#Negative|#PhrasalVerb|#Copula|will|be)").lastTerm().tag("#Noun","do-verb"),t=vo(e,"Possessive"),t=t.match("#Possessive [#Infinitive]",0),t.lookBehind("(let|made|make|force|ask)").found||t.tag("Noun","her-match"),e},ko=function(e){let t={};for(let r=0;r{!0!==e.optional&&!0!==e.negative&&(void 0!==e.tag&&t.push(e.tag),void 0!==e.word&&r.push(e.word))})),{tags:Lo(t),words:Lo(r)}},qo=function(e){let t=[];if(1===e.reg.filter((e=>void 0!==e.fastOr)).length){let r=e.reg.findIndex((e=>void 0!==e.fastOr));Object.keys(e.reg[r].fastOr).forEach((n=>{let a=Object.assign({},e);a.reg=a.reg.slice(0),a.reg[r]=Object.assign({},a.reg[r]),a.reg[r].word=n,delete a.reg[r].operator,delete a.reg[r].fastOr,t.push(a)}))}return t};let Ko=[];So.forEach((e=>{e.reg=Jo(e.match);let t=qo(e);t.length>0?Ko=Ko.concat(t):Ko.push(e)})),Ko.forEach((e=>(e.required=_o(e.reg),e)));const Wo=Ko,Ro=ko,Uo=function(e){if(0===e.length)return[];let t={};e.forEach((e=>{e=Ro(e);for(let r=0;rt[r]===e.length)),r=r.map((e=>Number(e))),r},Qo=wo,Zo=function(e){Wo.forEach((t=>{let r=[];t.required.words.forEach((t=>{r.push(e._cache.words[t]||[])})),t.required.tags.forEach((t=>{r.push(e._cache.tags[t]||[])}));let n=Uo(r);if(0===n.length)return;let a=n.map((t=>e.list[t])),i=e.buildFrom(a).match(t.reg,t.group);i.found&&(!0===t.safe?i.tagSafe(t.tag,t.reason):i.tag(t.tag,t.reason))}))},Xo=fi,Yo=Vi,es=bo,ts=function(e){return Zo(e),Qo(e),e};var rs=function(e){let t=e.termList();return e=Xo(e,t),e=Yo(e,t),(e=es(e)).cache(),(e=ts(e)).uncache(),e.world.taggers.forEach((t=>{t(e)})),e},ns=function(e){class t extends e{stripPeriods(){return this.termList().forEach((e=>{!0===e.tags.Abbreviation&&e.next&&(e.post=e.post.replace(/^\./,""));let t=e.text.replace(/\./,"");e.set(t)})),this}addPeriods(){return this.termList().forEach((e=>{e.post=e.post.replace(/^\./,""),e.post="."+e.post})),this}}return t.prototype.unwrap=t.prototype.stripPeriods,e.prototype.abbreviations=function(e){let r=this.match("#Abbreviation");return"number"==typeof e&&(r=r.get(e)),new t(r.list,this,this.world)},e};const as=/\./;var is=function(e){class t extends e{stripPeriods(){return this.termList().forEach((e=>{let t=e.text.replace(/\./g,"");e.set(t)})),this}addPeriods(){return this.termList().forEach((e=>{let t=e.text.replace(/\./g,"");t=t.split("").join("."),!1===as.test(e.post)&&(t+="."),e.set(t)})),this}}return t.prototype.unwrap=t.prototype.stripPeriods,t.prototype.strip=t.prototype.stripPeriods,e.prototype.acronyms=function(e){let r=this.match("#Acronym");return"number"==typeof e&&(r=r.get(e)),new t(r.list,this,this.world)},e},os=function(e){return e.prototype.clauses=function(t){let r=this.if("@hasComma").notIf("@hasComma @hasComma").notIf("@hasComma . .? (and|or) .").notIf("(#City && @hasComma) #Country").notIf("(#WeekDay && @hasComma) #Date").notIf("(#Date && @hasComma) #Year").notIf("@hasComma (too|also)$").match("@hasComma"),n=this.splitAfter(r),a=n.quotations();n=n.splitOn(a);let i=n.parentheses();n=n.splitOn(i);let o=n.if("#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb").match("#Conjunction");n=n.splitBefore(o);let s=n.if("if .{2,9} then .").match("then");n=n.splitBefore(s),n=n.splitBefore("as well as ."),n=n.splitBefore("such as ."),n=n.splitBefore("in addition to ."),n=n.splitAfter("@hasSemicolon"),n=n.splitAfter("@hasDash");let l=n.filter((e=>e.wordCount()>5&&e.match("#Verb+").length>=2));if(l.found){let e=l.splitAfter("#Noun .* #Verb .* #Noun+");n=n.splitOn(e.eq(0))}return"number"==typeof t&&(n=n.get(t)),new e(n.list,this,this.world)},e},ss=function(e){class t extends e{constructor(e,t,r){super(e,t,r),this.contracted=null}expand(){return this.list.forEach((e=>{let t=e.terms(),r=t[0].isTitleCase();t.forEach(((e,r)=>{e.set(e.implicit||e.text),e.implicit=void 0,r{let n=t(r).beforeLast;n.append(e),n.termList(0).addPunctuation(",")})),this}remove(e){return this.items().if(e).remove()}hasOxfordComma(){return this.filter((e=>t(e).hasOxford))}addOxfordComma(){let e=this.items(),t=e.eq(e.length-2);return t.found&&!1===t.has("@hasComma")&&t.post(", "),this}removeOxfordComma(){let e=this.items(),t=e.eq(e.length-2);return t.found&&!0===t.has("@hasComma")&&t.post(" "),this}}return r.prototype.things=r.prototype.items,e.prototype.lists=function(e){let t=this.if("@hasComma+ .? (and|or) not? ."),n=t.match("(#Noun|#Adjective|#Determiner|#Article)+ #Conjunction not? (#Article|#Determiner)? #Adjective? #Noun+").if("#Noun"),a=t.match("(#Adjective|#Adverb)+ #Conjunction not? #Adverb? #Adjective+"),i=t.match("(#Verb|#Adverb)+ #Conjunction not? #Adverb? #Verb+"),o=n.concat(a);return o=o.concat(i),o=o.if("@hasComma"),"number"==typeof e&&(o=t.get(e)),new r(o.list,this,this.world)},e};const us="(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)",cs={hour:"an",heir:"an",heirloom:"an",honest:"an",honour:"an",honor:"an",uber:"an"},hs={a:!0,e:!0,f:!0,h:!0,i:!0,l:!0,m:!0,n:!0,o:!0,r:!0,s:!0,x:!0},ds=[/^onc?e/i,/^u[bcfhjkqrstn][aeiou]/i,/^eul/i],gs={isSingular:[/(ax|test)is$/i,/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,/(octop|vir)i$/i,/(rl)f$/i,/(alias|status)$/i,/(bu)s$/i,/(al|ad|at|er|et|ed|ad)o$/i,/(ti)um$/i,/(ti)a$/i,/sis$/i,/(?:(^f)fe|(lr)f)$/i,/hive$/i,/(^aeiouy|qu)y$/i,/(x|ch|ss|sh|z)$/i,/(matr|vert|ind|cort)(ix|ex)$/i,/(m|l)ouse$/i,/(m|l)ice$/i,/(antenn|formul|nebul|vertebr|vit)a$/i,/.sis$/i,/^(?!talis|.*hu)(.*)man$/i],isPlural:[/(antenn|formul|nebul|vertebr|vit)ae$/i,/(octop|vir|radi|nucle|fung|cact|stimul)i$/i,/men$/i,/.tia$/i,/(m|l)ice$/i]},ps=/s$/,ms={he:"his",she:"hers",they:"theirs",we:"ours",i:"mine",you:"yours",her:"hers",their:"theirs",our:"ours",my:"mine",your:"yours"},fs=function(e){return!0===e.has("#Plural")||!0!==e.has(us)},bs=function(e){if(e.has("#Person")||e.has("#Place"))return"";if(e.has("#Plural"))return"the";let t=e.text("normal").trim();if(cs.hasOwnProperty(t))return cs[t];let r=t.substr(0,1);if(e.has("^@isAcronym")&&hs.hasOwnProperty(r))return"an";for(let e=0;et.test(e)))&&(!0===ps.test(e)||!!gs.isPlural.find((t=>t.test(e)))||null)},vs=function(e){let t=e.text("text").trim();return ms.hasOwnProperty(t)?(e.replaceWith(ms[t],!0),void e.tag("Possessive","toPossessive")):/s$/.test(t)?(t+="'",e.replaceWith(t,!0),void e.tag("Possessive","toPossessive")):(t+="'s",e.replaceWith(t,!0),void e.tag("Possessive","toPossessive"))},ws=function(e){let t={main:e};if(e.has("#Noun (of|by|for) .")){let r=e.splitAfter("[#Noun+]",0);t.main=r.eq(0),t.post=r.eq(1)}return t},ks={json:function(e){let t=null;"number"==typeof e&&(t=e,e=null),e=e||{text:!0,normal:!0,trim:!0,terms:!0};let r=[];return this.forEach((t=>{let n=t.json(e)[0];n.article=bs(t),r.push(n)})),null!==t?r[t]:r},adjectives:function(){let e=this.lookAhead("^(that|who|which)? (was|is|will)? be? #Adverb? #Adjective+");return e=e.concat(this.lookBehind("#Adjective+ #Adverb?$")),e=e.match("#Adjective"),e.sort("index")},isPlural:function(){return this.if("#Plural")},hasPlural:function(){return this.filter((e=>fs(e)))},toPlural:function(e){let t=this.world.transforms.toPlural;return this.forEach((r=>{if(r.has("#Plural")||!1===fs(r))return;let n=ws(r).main,a=n.text("reduced");if((n.has("#Singular")||!0!==ys(a))&&(a=t(a,this.world),n.replace(a).tag("#Plural"),e)){let e=n.lookBefore("(an|a) #Adjective?$").not("#Adjective");!0===e.found&&e.remove()}})),this},toSingular:function(e){let t=this.world.transforms.toSingular;return this.forEach((r=>{if(r.has("^#Singular+$")||!1===fs(r))return;let n=ws(r).main,a=n.text("reduced");if((n.has("#Plural")||!0===ys(a))&&(a=t(a,this.world),n.replace(a).tag("#Singular"),e)){let e=r,t=r.lookBefore("#Adjective");t.found&&(e=t);let n=bs(e);e.insertBefore(n)}})),this},toPossessive:function(){return this.forEach((e=>{vs(e)})),this}};var As=function(e){class t extends e{}return Object.assign(t.prototype,ks),e.prototype.nouns=function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.match("(#City && @hasComma) (#Region|#Country)"),a=this.not(n).splitAfter("@hasComma");a=a.concat(n);let i=a.quotations();return i.found&&(a=a.splitOn(i.eq(0))),a=a.match("#Noun+ (of|by)? the? #Noun+?"),!0!==r.keep_anaphora&&(a=a.not("#Pronoun"),a=a.not("(there|these)"),a=a.not("(#Month|#WeekDay)"),a=a.not("(my|our|your|their|her|his)")),a=a.not("(of|for|by|the)$"),"number"==typeof e&&(a=a.get(e)),new t(a.list,this,this.world)},e};const Ds=/\(/,Ps=/\)/;var $s=function(e){class t extends e{unwrap(){return this.list.forEach((e=>{let t=e.terms(0);t.pre=t.pre.replace(Ds,"");let r=e.lastTerm();r.post=r.post.replace(Ps,"")})),this}}return e.prototype.parentheses=function(e){let r=[];return this.list.forEach((e=>{let t=e.terms();for(let n=0;n{e.terms().forEach((e=>{let t=e.text.replace(/'s$/,"");e.set(t||e.text)}))})),this}}return e.prototype.possessives=function(e){let r=this.match("#Noun+? #Possessive");return"number"==typeof e&&(r=r.get(e)),new t(r.list,this,this.world)},e};const js={'"':'"',""":""","'":"'","“":"”","‘":"’","‟":"”","‛":"’","„":"”","⹂":"”","‚":"’","«":"»","‹":"›","‵":"′","‶":"″","‷":"‴","〝":"〞","`":"´","〟":"〞"},Hs=RegExp("("+Object.keys(js).join("|")+")");var xs=function(e){class t extends e{unwrap(){return this}}return e.prototype.quotations=function(e){let r=[];return this.list.forEach((e=>{let t=e.terms();for(let n=0;n{let t=!1,r=Os(e),n=e.negative.found;e.verb.lookBehind("i (#Adverb|#Verb)?$").found&&(t=!0);let a={PastTense:"was",PresentTense:"is",FutureTense:"will be",Infinitive:"is",Gerund:"being",Actor:"",PerfectTense:"been",Pluperfect:"been"};return r&&(a.PastTense="were",a.PresentTense="are",a.Infinitive="are"),!0===t&&(a.PastTense="was",a.PresentTense="am",a.Infinitive="am"),n&&(a.PastTense+=" not",a.PresentTense+=" not",a.FutureTense="will not be",a.Infinitive+=" not",a.PerfectTense="not "+a.PerfectTense,a.Pluperfect="not "+a.Pluperfect,a.Gerund="not "+a.Gerund),a},Ms=function(e){let t=e.verb.text();return{PastTense:t+" have",PresentTense:t,FutureTense:t,Infinitive:t}},Js=Cs,Ls=function(e,t){let r=e.verb;if(r.has("#Copula")||"be"===r.out("normal")&&e.auxiliary.has("will"))return Vs(e);if(e.auxiliary.has("are")&&r.has("#Gerund")){let r=e.original.clone(),n=r.clone().replace("are","were"),a=r.clone().replace("are","will be"),i=Is(e,t);return{PastTense:n.text(),PresentTense:r.text(),FutureTense:a.text(),Infinitive:i}}if(r.has("#Modal"))return Ms(e);let n=Is(e,t);if(!n)return{};let a=t.transforms.conjugate(n,t);a.Infinitive=n;let i=Js(e);!0===i&&(a.PresentTense=a.Infinitive);let o=e.verb.termList(0).hasHyphen();if(e.particle.found){let t=e.particle.text(),r=!0===o?"-":" ";Object.keys(a).forEach((e=>a[e]+=r+t))}const s=e.negative.found;return a.FutureTense=a.FutureTense||"will "+a.Infinitive,s&&(a.PastTense="did not "+a.Infinitive,a.FutureTense="will not "+a.Infinitive,i?(a.PresentTense="do not "+a.Infinitive,a.Infinitive="do not "+a.Infinitive):(a.PresentTense="does not "+a.Infinitive,a.Infinitive="does not "+a.Infinitive),a.Gerund="not "+a.Gerund),a},Ss=Ls;var _s={useParticiple:function(e){return!!e.auxiliary.has("(could|should|would|may|can|must)")||!!e.auxiliary.has("am .+? being")||!!e.auxiliary.has("had .+? been")},toParticiple:function(e,t){if(e.auxiliary.has("(have|had)")&&e.verb.has("#Participle"))return;let r=Ss(e,t),n=r.Participle||r.PastTense;n&&e.verb.replaceWith(n,!1),e.auxiliary.has("am .+? being")&&(e.auxiliary.remove("am"),e.auxiliary.replace("being","have been")),e.auxiliary.has("have")||e.auxiliary.append("have"),e.verb.tag("Participle","toParticiple"),e.auxiliary.replace("can","could"),e.auxiliary.replace("be have","have been"),e.auxiliary.replace("not have","have not"),e.auxiliary.tag("Auxiliary")}};const qs=function(e,t){let r=e.verb;if(!e.negative.found){if(e.auxiliary.found)return e.auxiliary.eq(0).append("not"),void(e.auxiliary.has("#Modal have not")&&e.auxiliary.replace("have not","not have"));if(r.has("(#Copula|will|has|had|do)"))r.append("not");else{if(r.has("#PastTense")){let n=Bs(e,t);return r.replaceWith(n,!0),void r.prepend("did not")}if(r.has("#PresentTense")){let n=Bs(e,t);return r.replaceWith(n,!0),void(Gs(e)?r.prepend("do not"):r.prepend("does not"))}if(r.has("#Gerund")){let n=Bs(e,t);return r.replaceWith(n,!0),void r.prepend("not")}Gs(e)?r.prepend("does not"):r.prepend("do not")}}},Ks=function(e){let t={adverb:e.match("#Adverb+"),negative:e.match("#Negative"),auxiliary:e.match("#Auxiliary+").not("(#Negative|#Adverb)"),particle:e.match("#Particle"),verb:e.match("#Verb+").not("(#Adverb|#Negative|#Auxiliary|#Particle)"),original:e,subject:zs(e)};if(t.verb.has("(#PresentTense|#PastTense|#Infinitive) #Gerund$")&&(t.verb=t.verb.not("#Gerund$")),!t.verb.found)return Object.keys(t).forEach((e=>{t[e]=t[e].not(".")})),t.verb=e,t;if(t.adverb&&t.adverb.found){let r=t.adverb.text("reduced")+"$";e.has(r)&&(t.adverbAfter=!0)}return t},Ws=Cs,Rs=Ts,Us=Ls,{toParticiple:Qs,useParticiple:Zs}=_s,Xs=function(e){return e.auxiliary.remove("(will|are|am|being)"),e.auxiliary.remove("(did|does)"),e.auxiliary.remove("(had|has|have)"),e.particle.remove(),e.negative.remove(),e},Ys={json:function(e){let t=null;"number"==typeof e&&(t=e,e=null),e=e||{text:!0,normal:!0,trim:!0,terms:!0};let r=[];return this.forEach((t=>{let n=t.json(e)[0],a=Ks(t);n.parts={},Object.keys(a).forEach((e=>{a[e]&&"Doc"===a[e].isA?n.parts[e]=a[e].text("normal"):n.parts[e]=a[e]})),n.isNegative=t.has("#Negative"),n.conjugations=Us(a,this.world),r.push(n)})),null!==t?r[t]:r},adverbs:function(){let e=[];this.forEach((t=>{let r=Ks(t).adverb;r.found&&(e=e.concat(r.list))}));let t=this.lookBehind("#Adverb+$");return t.found&&(e=t.list.concat(e)),t=this.lookAhead("^#Adverb+"),t.found&&(e=e.concat(t.list)),this.buildFrom(e)},isPlural:function(){let e=[];return this.forEach((t=>{let r=Ks(t);!0===Ws(r,this.world)&&e.push(t.list[0])})),this.buildFrom(e)},isSingular:function(){let e=[];return this.forEach((t=>{let r=Ks(t);!1===Ws(r,this.world)&&e.push(t.list[0])})),this.buildFrom(e)},conjugate:function(){let e=[];return this.forEach((t=>{let r=Ks(t),n=Us(r,this.world);e.push(n)})),e},toPastTense:function(){return this.forEach((e=>{let t=Ks(e);if(Zs(t))return void Qs(t,this.world);if(e.has("#Imperative"))return;if(e.has("be")&&e.lookBehind("to$").found)return;if(t.verb.has("#Gerund")&&t.auxiliary.has("(is|will|was)"))return void e.replace("is","was");let r=Us(t,this.world).PastTense;r&&(t=Xs(t),t.verb.replaceWith(r,!1),t.auxiliary.remove("(do|did|will)"))})),this},toPresentTense:function(){return this.forEach((e=>{if(e.has("#Imperative"))return;let t=Ks(e),r=Us(t,this.world),n=r.PresentTense;if(e.lookBehind("(i|we) (#Adverb|#Verb)?$").found&&(n=r.Infinitive),n){if(t.auxiliary.has("(have|had) been"))return t.auxiliary.replace("(have|had) been","am being"),void(r.Particle&&(n=r.Particle||r.PastTense));t.verb.replaceWith(n,!1),t.verb.tag("PresentTense"),t=Xs(t),t.auxiliary.remove("#Modal"),t.auxiliary.remove("(do|did|will)")}})),this},toFutureTense:function(){return this.forEach((e=>{let t=Ks(e);if(Zs(t))return;if(e.has("#Imperative"))return;let r=Us(t,this.world).FutureTense;r&&(t=Xs(t),t.auxiliary.remove("#Modal"),t.verb.replaceWith(r,!1),t.verb.tag("FutureTense"),t.auxiliary.remove("(do|did|will)"))})),this},toInfinitive:function(){return this.forEach((e=>{let t=Ks(e),r=Us(t,this.world).Infinitive;r&&(e.replaceWith(r,!1),e.tag("Infinitive"))})),this},toGerund:function(){return this.forEach((e=>{let t=Ks(e),r=Us(t,this.world).Gerund;r&&(e.replaceWith(r,!1),e.tag("Gerund"))})),this},toParticiple:function(){return this.forEach((e=>{let t=Ks(e),r=!t.auxiliary.found;Qs(t,this.world),r&&(t.verb.prepend(t.auxiliary.text()),t.auxiliary.remove())})),this},isNegative:function(){return this.if("#Negative")},isPositive:function(){return this.ifNo("#Negative")},isImperative:function(){return this.if("#Imperative")},toNegative:function(){return this.list.forEach((e=>{let t=this.buildFrom([e]),r=Ks(t);qs(r,t.world)})),this},toPositive:function(){let e=this.match("do not #Verb");return e.found&&e.remove("do not"),this.remove("#Negative")},subject:function(){let e=[];return this.forEach((t=>{let r=Rs(t);r.list[0]&&e.push(r.list[0])})),this.buildFrom(e)}},el=xa,tl=[ns,is,os,ss,ls,As,$s,Es,xs,function(e){class t extends e{}return Object.assign(t.prototype,Ys),t.prototype.negate=t.prototype.toNegative,e.prototype.verbs=function(e){let r=this.match("(#Adverb|#Auxiliary|#Verb|#Negative|#Particle)+");r=r.not("^#Adverb+"),r=r.not("#Adverb+$");let n=r.match("(#Adverb && @hasComma) #Adverb"),a=r.not(n).splitAfter("@hasComma");return a=a.concat(n),a.sort("index"),a=a.if("#Verb"),a.has("(is|was)$")&&(a=a.splitBefore("(is|was)$")),a.has("#PresentTense #Adverb #PresentTense")&&(a=a.splitBefore("#Adverb #PresentTense")),"number"==typeof e&&(a=a.get(e)),new t(a.list,this,this.world)},e},function(e){class t extends e{}return e.prototype.people=function(e){let r=this.splitAfter("@hasComma");return r=r.match("#Person+"),"number"==typeof e&&(r=r.get(e)),new t(r.list,this,this.world)},e}],rl={misc:ja,selections:xa},nl=rs,al=nr,il=function(e){return Object.keys(el).forEach((t=>e.prototype[t]=el[t])),tl.forEach((t=>t(e))),e};class ol{constructor(e,t,r){this.list=e,Object.defineProperty(this,"from",{enumerable:!1,value:t,writable:!0}),void 0===r&&void 0!==t&&(r=t.world),Object.defineProperty(this,"world",{enumerable:!1,value:r,writable:!0}),Object.defineProperty(this,"_cache",{enumerable:!1,writable:!0,value:{}}),Object.defineProperty(this,"found",{get:()=>this.list.length>0}),Object.defineProperty(this,"length",{get:()=>this.list.length}),Object.defineProperty(this,"isA",{get:()=>"Doc"})}tagger(){return nl(this)}pool(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}ol.prototype.buildFrom=function(e){return e=e.map((e=>e.clone(!0))),new ol(e,this,this.world)},ol.prototype.fromText=function(e){let t=al(e,this.world,this.pool());return this.buildFrom(t)},Object.assign(ol.prototype,rl.misc),Object.assign(ol.prototype,rl.selections),il(ol);const sl={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(sl).forEach((e=>ol.prototype[e]=ol.prototype[sl[e]]));const ll=Ca,ul=nr,cl=lr,hl=ur,dl=ol,gl=Dt,pl=le,ml=$t,fl=function(e){let t=e.termList();return ll(t,e.world),e.world.taggers.forEach((t=>{t(e)})),e},bl=ut;function yl(e){let t=e;const r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",r=arguments.length>1?arguments[1]:void 0;r&&t.addWords(r);let n=ul(e,t),a=new dl(n,null,t);return a.tagger(),a};return r.tokenize=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",r=arguments.length>1?arguments[1]:void 0,n=t;r&&(n=n.clone(),n.words={},n.addWords(r));let a=ul(e,n),i=new dl(a,null,n);return(r||i.world.taggers.length>0)&&fl(i),i},r.extend=function(e){return e(dl,t,this,gl,pl,ml),this},r.fromJSON=function(e){let r=cl(e,t);return new dl(r,null,t)},r.clone=function(){return yl(t.clone())},r.verbose=function(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return t.verbose(e),this},r.world=function(){return t},r.parseMatch=function(e,t){return bl(e,t)},r.version=hl,r.import=r.load,r.plugin=r.extend,r}return yl(new Bn)}()}(e);var t=function(e){let t=e.template("short description");if(t){return(t.json()||{}).description||""}return null};const r=function(e){return e.remove("and #Copula .*"),e};const n=function(e){return!!e.has("^(and|the|which|who|whom|also|a|an|the)")||(!!e.has("^(west|north|south|east|part) of")||(!!e.has("^#PastTense by .")||(!!e.has("^(occasionally|sometimes|frequently)")||(!!e.has("^such as")||!!e.has("^(including|featuring|depicting)")))))};const a=e.exports,i=function(e){return e.parentheses().remove(),e},o=function(e){let t=e.matchOne("#Copula+ (a|an|the|any|one) of?");if(t.found||(t=e.matchOne("#Copula+")),t.found||(t=e.matchOne("refers to (a|an|the|any)? of?")),t.found||(t=e.matchOne("(constitutes|describes) (a|an|the|any)? of?")),!t.found)return null;let n=e.splitOn(t),a=n.eq(1),i=a.match("(a|an|the|any)? of?");return a.remove("(a|an|the|any)? of?"),{before:n.eq(0),verb:n.eq(1),article:i,after:r(n.eq(2))}},s=function(e){return e.remove("and (also|eventually) (a|an|the|#Possessive) .*"),e.remove("!of (who|that|which) #Adverb? (#Copula|form|comprise|forms|comprises) .*"),e.remove("#Adverb? (located|situated|founded|found|formed|built|developed) .*"),e.remove("#Adverb? (located|situated|founded|found|formed|built|developed) .*"),e},l=function(e){return e.has("(#Place && @hasComma) #Country+$")&&e.remove("#Country+$"),e.has("#Noun (that|which|who) #PresentTense the .*")&&e.remove(" that #PresentTense the .*"),e.has("#Noun #PastTense by the .*")&&e.remove("#PastTense by the .*"),e.remove("#Demonym"),e.remove("(professional|former)"),e.remove("and? held annually .*"),e.remove("taking place each .*"),e.remove("^one of (the|many|several|#Value)+"),e.remove("^(a|an|the)? #Ordinal? #Superlative"),e.remove("^(a|an|the)? #Ordinal? most #Adjective"),e.remove("born in .*"),e.remove("born #Date+ in? #Place+?"),e.remove("(first|initially|originally)? (located|founded|started|based|formed) in .*"),e.remove("(which|who|that) (is|was) .*"),e.remove("^the name of"),e},u=function(e){e.has("#Noun (located|based|situated|sited|found|discovered) (in|on) #Place+$")?e.remove("(located|based) in #Place+$"):e.has("(#Noun|#Value) (in|on) the #Adjective? (region|province|district|coast|city) of #Place+$")?e.remove("(in|on) the #Adjective? (region|province|district|coast|city) of #Place+$"):e.has("(#Noun|#Value) in #Place+$")?e.remove("in #Place+$"):(e.remove("and? part of #Place+$"),e.remove("and? near #Place+$"));let t=e.clauses();if(t.length>1){let r=t.eq(0),a=t.eq(1);if(n(a))e=t.eq(0);else if(a.has("^(#PastTense)")&&r.has("(#Noun|#Value)$"))e=t.eq(0);else if(a.has("^(#Gerund)")&&r.has("#Noun$"))e=t.eq(0);else{let r=t.last();n(r)&&(t.list.pop(),e=t.join())}}return e.has("(#Noun|and) #PastTense by")&&e.remove("#PastTense by .*"),e.remove("and? designed to .*"),e.remove("and? owned by .*"),e.remove("and? consisting of .*"),e.has("@hasComma (which|who) #Verb")&&e.remove("(which|who) .*"),e},c=function(e){return e.remove("(small|large|minor|major)"),e.remove("(extinct|retired|annual|biweekly|monthly|daily)"),e.remove("(female|male)"),e.remove("(private|independent|official|unofficial|officially)"),e.remove("(southern|northern|eastern|western|northeastern|northwestern)"),e.remove("^(family|clade|genus|species|order) of"),e},h=function(e,t){if(e&&"function"==typeof e.text){let r=e.text();if(r&&r.length>t.min&&r.lengthnew RegExp("\\b".concat(e,"\\b"),"i")));var m={good:["male","female"].map((e=>new RegExp("\\b".concat(e,"\\b"),"i"))),bad:p,like:["male","female","century"].map((e=>new RegExp("\\b".concat(e,"\\b"),"i"))),dislike:["people","place","from","in","people from"].map((e=>new RegExp("\\b".concat(e,"\\b"))),"i")};const{like:f,dislike:b,good:y,bad:v}=m,w=/[0-9]{4}/,k=/s$/;const A=e.exports;const D=function(e){let t=e.categories(),r=t.filter((e=>y.find((t=>t.test(e)))));return r.length>0&&(t=r),t=t.filter((e=>!v.find((t=>t.test(e)))&&!w.test(e))),0===t.length?"":(r=t.filter((e=>f.find((t=>t.test(e))))),r.length>0&&(t=r),r=t.filter((e=>!1!==k.test(e)&&(1!==e.slice(" ").length&&void 0===b.find((t=>t.test(e)))))),r.length>0&&(t=r),t=t.sort(((e,t)=>{let r=e.split(" ").length,n=t.split(" ").length;return r>n?-1:r5&&e.length { + let chars = str.split(''); + chars.forEach((s, i) => { + if (unicode[s]) { + chars[i] = unicode[s]; + } + }); + return chars.join(''); }; - } - return _typeof(obj); -} + var unicode_1 = killUnicode$3; // console.log(killUnicode('bjŏȒk—Ɏó')); -function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -} - -function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } -} + const periodAcronym = /([A-Z]\.)+[A-Z]?,?$/; + const oneLetterAcronym$1 = /^[A-Z]\.,?$/; + const noPeriodAcronym = /[A-Z]{2,}('s|,)?$/; + const lowerCaseAcronym = /([a-z]\.)+[a-z]\.?$/; -function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; -} + const isAcronym$4 = function (str) { + //like N.D.A + if (periodAcronym.test(str) === true) { + return true; + } //like c.e.o -function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); -} + if (lowerCaseAcronym.test(str) === true) { + return true; + } //like 'F.' -function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); -} -function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; + if (oneLetterAcronym$1.test(str) === true) { + return true; + } //like NDA - return _setPrototypeOf(o, p); -} -function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; + if (noPeriodAcronym.test(str) === true) { + return true; + } - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); - return true; - } catch (e) { - return false; - } -} + return false; + }; -function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } + var isAcronym_1 = isAcronym$4; + const killUnicode$2 = unicode_1; + const isAcronym$3 = isAcronym_1; + const hasSlash$1 = /[a-z\u00C0-\u00FF] ?\/ ?[a-z\u00C0-\u00FF]/; + /** some basic operations on a string to reduce noise */ - return self; -} + const clean = function (str) { + str = str || ''; + str = str.toLowerCase(); + str = str.trim(); + let original = str; //(very) rough ASCII transliteration - bjŏrk -> bjork -function _possibleConstructorReturn(self, call) { - if (call && (typeof call === "object" || typeof call === "function")) { - return call; - } + str = killUnicode$2(str); //rough handling of slashes - 'see/saw' - return _assertThisInitialized(self); -} + if (hasSlash$1.test(str) === true) { + str = str.replace(/\/.*/, ''); + } //#tags, @mentions -function _createSuper(Derived) { - var hasNativeReflectConstruct = _isNativeReflectConstruct(); - return function _createSuperInternal() { - var Super = _getPrototypeOf(Derived), - result; + str = str.replace(/^[#@]/, ''); //punctuation - if (hasNativeReflectConstruct) { - var NewTarget = _getPrototypeOf(this).constructor; + str = str.replace(/[,;.!?]+$/, ''); // coerce single curly quotes - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } + str = str.replace(/[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]+/g, "'"); // coerce double curly quotes - return _possibleConstructorReturn(this, result); - }; -} //this is a not-well-thought-out way to reduce our dependence on `object===object` stuff + str = str.replace(/[\u0022\u00AB\u00BB\u201C\u201D\u201E\u201F\u2033\u2034\u2036\u2037\u2E42\u301D\u301E\u301F\uFF02]+/g, '"'); //coerce Unicode ellipses + str = str.replace(/\u2026/g, '...'); //en-dash -var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.split(''); //generates a unique id for this term + str = str.replace(/\u2013/g, '-'); //lookin'->looking (make it easier for conjugation) -function makeId(str) { - str = str || '_'; - var text = str + '-'; + str = str.replace(/([aeiou][ktrp])in$/, '$1ing'); //turn re-enactment to reenactment - for (var i = 0; i < 7; i++) { - text += chars[Math.floor(Math.random() * chars.length)]; - } + if (/^(re|un)-?[^aeiou]./.test(str) === true) { + str = str.replace('-', ''); + } //compact acronyms - return text; -} - -var _id = makeId; //a hugely-ignorant, and widely subjective transliteration of latin, cryllic, greek unicode characters to english ascii. -//approximate visual (not semantic or phonetic) relationship between unicode and ascii characters -//http://en.wikipedia.org/wiki/List_of_Unicode_characters -//https://docs.google.com/spreadsheet/ccc?key=0Ah46z755j7cVdFRDM1A2YVpwa1ZYWlpJM2pQZ003M0E - -var compact = { - '!': '¡', - '?': '¿Ɂ', - '"': '“”"❝❞', - "'": '‘‛❛❜', - '-': '—–', - a: 'ªÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАадѦѧӐӑӒӓƛɅæ', - b: 'ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ', - c: '¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼͽϲϹϽϾСсєҀҁҪҫ', - d: 'ÐĎďĐđƉƊȡƋƌǷ', - e: 'ÈÉÊËèéêëĒēĔĕĖėĘęĚěƎƏƐǝȄȅȆȇȨȩɆɇΈΕΞΣέεξϱϵ϶ЀЁЕЭеѐёҼҽҾҿӖӗӘәӚӛӬӭ', - f: 'ƑƒϜϝӺӻҒғſ', - g: 'ĜĝĞğĠġĢģƓǤǥǦǧǴǵ', - h: 'ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ', - I: 'ÌÍÎÏ', - i: 'ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇії', - j: 'ĴĵǰȷɈɉϳЈј', - k: 'ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ', - l: 'ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ', - m: 'ΜϺϻМмӍӎ', - n: 'ÑñŃńŅņŇňʼnŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ', - o: 'ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϭϴОФоѲѳӦӧӨөӪӫ', - p: 'ƤƿΡρϷϸϼРрҎҏÞ', - q: 'Ɋɋ', - r: 'ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ', - s: 'ŚśŜŝŞşŠšƧƨȘșȿЅѕ', - t: 'ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт', - u: 'µÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰμυϋύ', - v: 'νѴѵѶѷ', - w: 'ŴŵƜωώϖϢϣШЩшщѡѿ', - x: '×ΧχϗϰХхҲҳӼӽӾӿ', - y: 'ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ', - z: 'ŹźŻżŽžƩƵƶȤȥɀΖζ' -}; //decompress data into two hashes - -var unicode = {}; -Object.keys(compact).forEach(function (k) { - compact[k].split('').forEach(function (s) { - unicode[s] = k; - }); -}); -var killUnicode = function killUnicode(str) { - var chars = str.split(''); - chars.forEach(function (s, i) { - if (unicode[s]) { - chars[i] = unicode[s]; - } - }); - return chars.join(''); -}; + if (isAcronym$3(str)) { + str = str.replace(/\./g, ''); + } //strip leading & trailing grammatical punctuation -var unicode_1 = killUnicode; // console.log(killUnicode('bjŏȒk—Ɏó')); -var periodAcronym = /([A-Z]\.)+[A-Z]?,?$/; -var oneLetterAcronym$1 = /^[A-Z]\.,?$/; -var noPeriodAcronym = /[A-Z]{2,}('s|,)?$/; -var lowerCaseAcronym = /([a-z]\.)+[a-z]\.?$/; + if (/^[:;]/.test(str) === false) { + str = str.replace(/\.{3,}$/g, ''); + str = str.replace(/[",\.!:;\?\)]+$/g, ''); + str = str.replace(/^['"\(]+/g, ''); + } // remove zero-width characters -var isAcronym$2 = function isAcronym(str) { - //like N.D.A - if (periodAcronym.test(str) === true) { - return true; - } //like c.e.o + str = str.replace(/[\u200B-\u200D\uFEFF]/g, ''); //do this again.. - if (lowerCaseAcronym.test(str) === true) { - return true; - } //like 'F.' + str = str.trim(); //oh shucks, + if (str === '') { + str = original; + } //nice-numbers - if (oneLetterAcronym$1.test(str) === true) { - return true; - } //like NDA + str = str.replace(/([0-9]),([0-9])/g, '$1$2'); + return str; + }; - if (noPeriodAcronym.test(str) === true) { - return true; - } + var clean_1 = clean; // console.log(normalize('Dr. V Cooper')); - return false; -}; + /** reduced is one step further than clean */ -var isAcronym_1$1 = isAcronym$2; -var hasSlash$1 = /[a-z\u00C0-\u00FF] ?\/ ?[a-z\u00C0-\u00FF]/; -/** some basic operations on a string to reduce noise */ + const reduced = function (str) { + // remove apostrophes + str = str.replace(/['’]s$/, ''); + str = str.replace(/s['’]$/, 's'); + return str; + }; -var clean = function clean(str) { - str = str || ''; - str = str.toLowerCase(); - str = str.trim(); - var original = str; //(very) rough ASCII transliteration - bjŏrk -> bjork + var reduce$1 = reduced; + const normalize = clean_1; + const reduce = reduce$1; // basically, tokenize for terms. + //all punctuation marks, from https://en.wikipedia.org/wiki/Punctuation + //we have slightly different rules for start/end - like #hashtags. + + const startings = /^[ \n\t\.\[\](){}⟨⟩:,،、‒–—―…!‹›«»‐\-?‘’;\/⁄·&*•^†‡°¡¿※№÷׺ª%‰+−=‱¶′″‴§~\|‖¦©℗®℠™¤₳฿\u0022\uFF02\u0027\u201C\u201F\u201B\u201E\u2E42\u201A\u2035\u2036\u2037\u301D\u0060\u301F]+/; + const endings = /[ \n\t\.'\[\](){}⟨⟩:,،、‒–—―…!‹›«»‐\-?‘’;\/⁄·&*@•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~\|‖¦©℗®℠™¤₳฿\u0022\uFF02\u201D\u00B4\u301E]+$/; //money = ₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥ + + const hasSlash = /\//; + const hasApostrophe = /['’]/; + const hasAcronym = /^[a-z]\.([a-z]\.)+/i; + const minusNumber = /^[-+\.][0-9]/; + const shortYear = /^'[0-9]{2}/; + /** turn given text into a parsed-up object + * seperate the 'meat' of the word from the whitespace+punctuation + */ + + const parseTerm$1 = str => { + let original = str; + let pre = ''; + let post = ''; + str = str.replace(startings, found => { + pre = found; // support '-40' + + if ((pre === '-' || pre === '+' || pre === '.') && minusNumber.test(str)) { + pre = ''; + return found; + } // support years like '97 + + + if (pre === "'" && shortYear.test(str)) { + pre = ''; + return found; + } - str = unicode_1(str); //rough handling of slashes - 'see/saw' + return ''; + }); + str = str.replace(endings, found => { + post = found; // keep s-apostrophe - "flanders'" or "chillin'" - if (hasSlash$1.test(str) === true) { - str = str.replace(/\/.*/, ''); - } //#tags, @mentions + if (hasApostrophe.test(found) && /[sn]['’]$/.test(original) && hasApostrophe.test(pre) === false) { + post = post.replace(hasApostrophe, ''); + return "'"; + } //keep end-period in acronym - str = str.replace(/^[#@]/, ''); //punctuation + if (hasAcronym.test(str) === true) { + post = post.replace(/\./, ''); + return '.'; + } - str = str.replace(/[,;.!?]+$/, ''); // coerce single curly quotes + return ''; + }); //we went too far.. - str = str.replace(/[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]+/g, "'"); // coerce double curly quotes + if (str === '') { + // do a very mild parse, and hope for the best. + original = original.replace(/ *$/, after => { + post = after || ''; + return ''; + }); + str = original; + pre = ''; + post = post; + } // create the various forms of our text, + + + let clean = normalize(str); + const parsed = { + text: str, + clean: clean, + reduced: reduce(clean), + pre: pre, + post: post + }; // support aliases for slashes + + if (hasSlash.test(str)) { + str.split(hasSlash).forEach(word => { + parsed.alias = parsed.alias || {}; + parsed.alias[word.trim()] = true; + }); + } - str = str.replace(/[\u0022\u00AB\u00BB\u201C\u201D\u201E\u201F\u2033\u2034\u2036\u2037\u2E42\u301D\u301E\u301F\uFF02]+/g, '"'); //coerce Unicode ellipses + return parsed; + }; - str = str.replace(/\u2026/g, '...'); //en-dash + var parse$3 = parseTerm$1; + var _01Case = {}; - str = str.replace(/\u2013/g, '-'); //lookin'->looking (make it easier for conjugation) + (function (exports) { + const titleCase = /^[A-Z][a-z'\u00C0-\u00FF]/; + const upperCase = /^[A-Z]+s?$/; + /** convert all text to uppercase */ - str = str.replace(/([aeiou][ktrp])in$/, '$1ing'); //turn re-enactment to reenactment + exports.toUpperCase = function () { + this.text = this.text.toUpperCase(); + return this; + }; + /** convert all text to lowercase */ - if (/^(re|un)-?[^aeiou]./.test(str) === true) { - str = str.replace('-', ''); - } //compact acronyms + exports.toLowerCase = function () { + this.text = this.text.toLowerCase(); + return this; + }; + /** only set the first letter to uppercase + * leave any existing uppercase alone + */ - if (isAcronym_1$1(str)) { - str = str.replace(/\./g, ''); - } //strip leading & trailing grammatical punctuation + exports.toTitleCase = function () { + this.text = this.text.replace(/^ *[a-z\u00C0-\u00FF]/, x => x.toUpperCase()); //support unicode? - if (/^[:;]/.test(str) === false) { - str = str.replace(/\.{3,}$/g, ''); - str = str.replace(/[",\.!:;\?\)]+$/g, ''); - str = str.replace(/^['"\(]+/g, ''); - } // remove zero-width characters + return this; + }; + /** if all letters are uppercase */ - str = str.replace(/[\u200B-\u200D\uFEFF]/g, ''); //do this again.. + exports.isUpperCase = function () { + return upperCase.test(this.text); + }; + /** if the first letter is uppercase, and the rest are lowercase */ - str = str.trim(); //oh shucks, - if (str === '') { - str = original; - } //nice-numbers + exports.isTitleCase = function () { + return titleCase.test(this.text); + }; + exports.titleCase = exports.isTitleCase; + })(_01Case); - str = str.replace(/([0-9]),([0-9])/g, '$1$2'); - return str; -}; + var _02Punctuation$1 = {}; -var clean_1 = clean; // console.log(normalize('Dr. V Cooper')); + (function (exports) { + // these methods are called with '@hasComma' in the match syntax + // various unicode quotation-mark formats + const startQuote = /(\u0022|\uFF02|\u0027|\u201C|\u2018|\u201F|\u201B|\u201E|\u2E42|\u201A|\u00AB|\u2039|\u2035|\u2036|\u2037|\u301D|\u0060|\u301F)/; + const endQuote = /(\u0022|\uFF02|\u0027|\u201D|\u2019|\u201D|\u2019|\u201D|\u201D|\u2019|\u00BB|\u203A|\u2032|\u2033|\u2034|\u301E|\u00B4|\u301E)/; + /** search the term's 'post' punctuation */ -/** reduced is one step further than clean */ + exports.hasPost = function (punct) { + return this.post.indexOf(punct) !== -1; + }; + /** search the term's 'pre' punctuation */ -var reduced = function reduced(str) { - // remove apostrophes - str = str.replace(/['’]s$/, ''); - str = str.replace(/s['’]$/, 's'); - return str; -}; -var reduce = reduced; //all punctuation marks, from https://en.wikipedia.org/wiki/Punctuation -//we have slightly different rules for start/end - like #hashtags. - -var startings = /^[ \n\t\.\[\](){}⟨⟩:,،、‒–—―…!‹›«»‐\-?‘’;\/⁄·&*•^†‡°¡¿※№÷׺ª%‰+−=‱¶′″‴§~\|‖¦©℗®℠™¤₳฿\u0022\uFF02\u0027\u201C\u201F\u201B\u201E\u2E42\u201A\u2035\u2036\u2037\u301D\u0060\u301F]+/; -var endings = /[ \n\t\.'\[\](){}⟨⟩:,،、‒–—―…!‹›«»‐\-?‘’;\/⁄·&*@•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~\|‖¦©℗®℠™¤₳฿\u0022\uFF02\u201D\u00B4\u301E]+$/; //money = ₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥ - -var hasSlash = /\//; -var hasApostrophe = /['’]/; -var hasAcronym = /^[a-z]\.([a-z]\.)+/i; -var minusNumber = /^[-+\.][0-9]/; -var shortYear = /^'[0-9]{2}/; -/** turn given text into a parsed-up object - * seperate the 'meat' of the word from the whitespace+punctuation - */ - -var parseTerm = function parseTerm(str) { - var original = str; - var pre = ''; - var post = ''; - str = str.replace(startings, function (found) { - pre = found; // support '-40' - - if ((pre === '-' || pre === '+' || pre === '.') && minusNumber.test(str)) { - pre = ''; - return found; - } // support years like '97 + exports.hasPre = function (punct) { + return this.pre.indexOf(punct) !== -1; + }; + /** does it have a quotation symbol? */ - if (pre === "'" && shortYear.test(str)) { - pre = ''; - return found; - } + exports.hasQuote = function () { + return startQuote.test(this.pre) || endQuote.test(this.post); + }; - return ''; - }); - str = str.replace(endings, function (found) { - post = found; // keep s-apostrophe - "flanders'" or "chillin'" + exports.hasQuotation = exports.hasQuote; + /** does it have a comma? */ - if (hasApostrophe.test(found) && /[sn]['’]$/.test(original) && hasApostrophe.test(pre) === false) { - post = post.replace(hasApostrophe, ''); - return "'"; - } //keep end-period in acronym + exports.hasComma = function () { + return this.hasPost(','); + }; + /** does it end in a period? */ - if (hasAcronym.test(str) === true) { - post = post.replace(/\./, ''); - return '.'; - } + exports.hasPeriod = function () { + return this.hasPost('.') === true && this.hasPost('...') === false; + }; + /** does it end in an exclamation */ - return ''; - }); //we went too far.. - if (str === '') { - // do a very mild parse, and hope for the best. - original = original.replace(/ *$/, function (after) { - post = after || ''; - return ''; - }); - str = original; - pre = ''; - post = post; - } // create the various forms of our text, - - - var clean = clean_1(str); - var parsed = { - text: str, - clean: clean, - reduced: reduce(clean), - pre: pre, - post: post - }; // support aliases for slashes - - if (hasSlash.test(str)) { - str.split(hasSlash).forEach(function (word) { - parsed.alias = parsed.alias || {}; - parsed.alias[word.trim()] = true; - }); - } + exports.hasExclamation = function () { + return this.hasPost('!'); + }; + /** does it end with a question mark? */ - return parsed; -}; -var parse$2 = parseTerm; + exports.hasQuestionMark = function () { + return this.hasPost('?') || this.hasPost('¿'); + }; + /** is there a ... at the end? */ -function createCommonjsModule(fn) { - var module = { - exports: {} - }; - return fn(module, module.exports), module.exports; -} -var _01Case = createCommonjsModule(function (module, exports) { - var titleCase = /^[A-Z][a-z'\u00C0-\u00FF]/; - var upperCase = /^[A-Z]+s?$/; - /** convert all text to uppercase */ + exports.hasEllipses = function () { + return this.hasPost('..') || this.hasPost('…') || this.hasPre('..') || this.hasPre('…'); + }; + /** is there a semicolon after this word? */ - exports.toUpperCase = function () { - this.text = this.text.toUpperCase(); - return this; - }; - /** convert all text to lowercase */ + exports.hasSemicolon = function () { + return this.hasPost(';'); + }; + /** is there a slash '/' in this word? */ - exports.toLowerCase = function () { - this.text = this.text.toLowerCase(); - return this; - }; - /** only set the first letter to uppercase - * leave any existing uppercase alone - */ + exports.hasSlash = function () { + return /\//.test(this.text); + }; + /** a hyphen connects two words like-this */ - exports.toTitleCase = function () { - this.text = this.text.replace(/^ *[a-z\u00C0-\u00FF]/, function (x) { - return x.toUpperCase(); - }); //support unicode? - return this; - }; - /** if all letters are uppercase */ + exports.hasHyphen = function () { + const hyphen = /^(-|–|—)$/; + return hyphen.test(this.post) || hyphen.test(this.pre); + }; + /** a dash separates words - like that */ - exports.isUpperCase = function () { - return upperCase.test(this.text); - }; - /** if the first letter is uppercase, and the rest are lowercase */ + exports.hasDash = function () { + const hyphen = / (-|–|—) /; + return hyphen.test(this.post) || hyphen.test(this.pre); + }; + /** is it multiple words combinded */ - exports.isTitleCase = function () { - return titleCase.test(this.text); - }; + exports.hasContraction = function () { + return Boolean(this.implicit); + }; + /** try to sensibly put this punctuation mark into the term */ - exports.titleCase = exports.isTitleCase; -}); -var _02Punctuation$1 = createCommonjsModule(function (module, exports) { - // these methods are called with '@hasComma' in the match syntax - // various unicode quotation-mark formats - var startQuote = /(\u0022|\uFF02|\u0027|\u201C|\u2018|\u201F|\u201B|\u201E|\u2E42|\u201A|\u00AB|\u2039|\u2035|\u2036|\u2037|\u301D|\u0060|\u301F)/; - var endQuote = /(\u0022|\uFF02|\u0027|\u201D|\u2019|\u201D|\u2019|\u201D|\u201D|\u2019|\u00BB|\u203A|\u2032|\u2033|\u2034|\u301E|\u00B4|\u301E)/; - /** search the term's 'post' punctuation */ + exports.addPunctuation = function (punct) { + // dont add doubles + if (punct === ',' || punct === ';') { + this.post = this.post.replace(punct, ''); + } - exports.hasPost = function (punct) { - return this.post.indexOf(punct) !== -1; - }; - /** search the term's 'pre' punctuation */ + this.post = punct + this.post; + return this; + }; + })(_02Punctuation$1); + var _03Misc = {}; // Based on tad-lispy /node-damerau-levenshtein + // https://github.com/tad-lispy/node-damerau-levenshtein/blob/master/index.js + // count steps (insertions, deletions, substitutions, or transpositions) - exports.hasPre = function (punct) { - return this.pre.indexOf(punct) !== -1; - }; - /** does it have a quotation symbol? */ + const editDistance = function (strA, strB) { + let aLength = strA.length, + bLength = strB.length; // fail-fast + if (aLength === 0) { + return bLength; + } - exports.hasQuote = function () { - return startQuote.test(this.pre) || endQuote.test(this.post); - }; + if (bLength === 0) { + return aLength; + } // If the limit is not defined it will be calculate from this and that args. - exports.hasQuotation = exports.hasQuote; - /** does it have a comma? */ - exports.hasComma = function () { - return this.hasPost(','); - }; - /** does it end in a period? */ + let limit = (bLength > aLength ? bLength : aLength) + 1; + if (Math.abs(aLength - bLength) > (limit || 100)) { + return limit || 100; + } // init the array - exports.hasPeriod = function () { - return this.hasPost('.') === true && this.hasPost('...') === false; - }; - /** does it end in an exclamation */ + let matrix = []; - exports.hasExclamation = function () { - return this.hasPost('!'); - }; - /** does it end with a question mark? */ + for (let i = 0; i < limit; i++) { + matrix[i] = [i]; + matrix[i].length = limit; + } + for (let i = 0; i < limit; i++) { + matrix[0][i] = i; + } // Calculate matrix. - exports.hasQuestionMark = function () { - return this.hasPost('?') || this.hasPost('¿'); - }; - /** is there a ... at the end? */ + let j, a_index, b_index, cost, min, t; - exports.hasEllipses = function () { - return this.hasPost('..') || this.hasPost('…') || this.hasPre('..') || this.hasPre('…'); - }; - /** is there a semicolon after this word? */ + for (let i = 1; i <= aLength; ++i) { + a_index = strA[i - 1]; + for (j = 1; j <= bLength; ++j) { + // Check the jagged distance total so far + if (i === j && matrix[i][j] > 4) { + return aLength; + } - exports.hasSemicolon = function () { - return this.hasPost(';'); - }; - /** is there a slash '/' in this word? */ + b_index = strB[j - 1]; + cost = a_index === b_index ? 0 : 1; // Step 5 + // Calculate the minimum (much faster than Math.min(...)). + min = matrix[i - 1][j] + 1; // Deletion. - exports.hasSlash = function () { - return /\//.test(this.text); - }; - /** a hyphen connects two words like-this */ + if ((t = matrix[i][j - 1] + 1) < min) min = t; // Insertion. + if ((t = matrix[i - 1][j - 1] + cost) < min) min = t; // Substitution. + // Update matrix. - exports.hasHyphen = function () { - var hyphen = /^(-|–|—)$/; - return hyphen.test(this.post) || hyphen.test(this.pre); - }; - /** a dash separates words - like that */ + let shouldUpdate = i > 1 && j > 1 && a_index === strB[j - 2] && strA[i - 2] === b_index && (t = matrix[i - 2][j - 2] + cost) < min; + if (shouldUpdate) { + matrix[i][j] = t; + } else { + matrix[i][j] = min; + } + } + } // return number of steps - exports.hasDash = function () { - var hyphen = / (-|–|—) /; - return hyphen.test(this.post) || hyphen.test(this.pre); - }; - /** is it multiple words combinded */ + return matrix[aLength][bLength]; + }; // score similarity by from 0-1 (steps/length) - exports.hasContraction = function () { - return Boolean(this.implicit); - }; - /** try to sensibly put this punctuation mark into the term */ + const fuzzyMatch = function (strA, strB) { + let minLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3; - exports.addPunctuation = function (punct) { - // dont add doubles - if (punct === ',' || punct === ';') { - this.post = this.post.replace(punct, ''); - } + if (strA === strB) { + return 1; + } //don't even bother on tiny strings - this.post = punct + this.post; - return this; - }; -}); // fuzzy-match (damerau-levenshtein) -// Based on tad-lispy /node-damerau-levenshtein -// https://github.com/tad-lispy/node-damerau-levenshtein/blob/master/index.js -// count steps (insertions, deletions, substitutions, or transpositions) + if (strA.length < minLength || strB.length < minLength) { + return 0; + } -var editDistance = function editDistance(strA, strB) { - var aLength = strA.length, - bLength = strB.length; // fail-fast + const steps = editDistance(strA, strB); + let length = Math.max(strA.length, strB.length); + let relative = length === 0 ? 0 : steps / length; + let similarity = 1 - relative; + return similarity; + }; - if (aLength === 0) { - return bLength; - } + var _fuzzy = fuzzyMatch; // console.log(fuzzyMatch('test', 'test')) //exact match - if (bLength === 0) { - return aLength; - } // If the limit is not defined it will be calculate from this and that args. + const fuzzy = _fuzzy; //declare it up here + let wrapMatch = function () {}; + /** ignore optional/greedy logic, straight-up term match*/ - var limit = (bLength > aLength ? bLength : aLength) + 1; - if (Math.abs(aLength - bLength) > (limit || 100)) { - return limit || 100; - } // init the array + const doesMatch$1 = function (t, reg, index, length) { + // support id matches + if (reg.id === t.id) { + return true; + } // support '.' - var matrix = []; + if (reg.anything === true) { + return true; + } // support '^' (in parentheses) - for (var i = 0; i < limit; i++) { - matrix[i] = [i]; - matrix[i].length = limit; - } - for (var _i = 0; _i < limit; _i++) { - matrix[0][_i] = _i; - } // Calculate matrix. + if (reg.start === true && index !== 0) { + return false; + } // support '$' (in parentheses) - var j, a_index, b_index, cost, min, t; + if (reg.end === true && index !== length - 1) { + return false; + } //support a text match - for (var _i2 = 1; _i2 <= aLength; ++_i2) { - a_index = strA[_i2 - 1]; - for (j = 1; j <= bLength; ++j) { - // Check the jagged distance total so far - if (_i2 === j && matrix[_i2][j] > 4) { - return aLength; - } + if (reg.word !== undefined) { + //match contractions + if (t.implicit !== null && t.implicit === reg.word) { + return true; + } // term aliases for slashes and things - b_index = strB[j - 1]; - cost = a_index === b_index ? 0 : 1; // Step 5 - // Calculate the minimum (much faster than Math.min(...)). - min = matrix[_i2 - 1][j] + 1; // Deletion. + if (t.alias !== undefined && t.alias.hasOwnProperty(reg.word)) { + return true; + } // support ~ match - if ((t = matrix[_i2][j - 1] + 1) < min) min = t; // Insertion. - if ((t = matrix[_i2 - 1][j - 1] + cost) < min) min = t; // Substitution. - // Update matrix. + if (reg.soft === true && reg.word === t.root) { + return true; + } // support fuzzy match param - var shouldUpdate = _i2 > 1 && j > 1 && a_index === strB[j - 2] && strA[_i2 - 2] === b_index && (t = matrix[_i2 - 2][j - 2] + cost) < min; - if (shouldUpdate) { - matrix[_i2][j] = t; - } else { - matrix[_i2][j] = min; - } - } - } // return number of steps + if (reg.fuzzy !== undefined) { + let score = fuzzy(reg.word, t.reduced); + if (score > reg.fuzzy) { + return true; + } // support fuzzy + soft match - return matrix[aLength][bLength]; -}; // score similarity by from 0-1 (steps/length) + if (reg.soft === true) { + score = fuzzy(reg.word, t.root); -var fuzzyMatch = function fuzzyMatch(strA, strB) { - var minLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3; + if (score > reg.fuzzy) { + return true; + } + } + } //match either .clean or .text - if (strA === strB) { - return 1; - } //don't even bother on tiny strings + return reg.word === t.clean || reg.word === t.text || reg.word === t.reduced; + } //support #Tag - if (strA.length < minLength || strB.length < minLength) { - return 0; - } - var steps = editDistance(strA, strB); - var length = Math.max(strA.length, strB.length); - var relative = length === 0 ? 0 : steps / length; - var similarity = 1 - relative; - return similarity; -}; + if (reg.tag !== undefined) { + return t.tags[reg.tag] === true; + } //support @method -var _fuzzy = fuzzyMatch; // console.log(fuzzyMatch('test', 'test')) //exact match -var wrapMatch = function wrapMatch() {}; -/** ignore optional/greedy logic, straight-up term match*/ + if (reg.method !== undefined) { + if (typeof t[reg.method] === 'function' && t[reg.method]() === true) { + return true; + } + return false; + } //support /reg/ -var doesMatch = function doesMatch(t, reg, index, length) { - // support id matches - if (reg.id === t.id) { - return true; - } // support '.' + if (reg.regex !== undefined) { + return reg.regex.test(t.clean); + } // support optimized (one|two) - if (reg.anything === true) { - return true; - } // support '^' (in parentheses) + if (reg.fastOr !== undefined) { + if (t.implicit && reg.fastOr.hasOwnProperty(t.implicit) === true) { + return true; + } - if (reg.start === true && index !== 0) { - return false; - } // support '$' (in parentheses) + return reg.fastOr.hasOwnProperty(t.reduced) || reg.fastOr.hasOwnProperty(t.text); + } //support slower (one|two) - if (reg.end === true && index !== length - 1) { - return false; - } //support a text match + if (reg.choices !== undefined) { + // try to support && operator + if (reg.operator === 'and') { + // must match them all + return reg.choices.every(r => wrapMatch(t, r, index, length)); + } // or must match one - if (reg.word !== undefined) { - //match contractions - if (t.implicit !== null && t.implicit === reg.word) { - return true; - } // term aliases for slashes and things + return reg.choices.some(r => wrapMatch(t, r, index, length)); + } + return false; + }; // wrap result for !negative match logic - if (t.alias !== undefined && t.alias.hasOwnProperty(reg.word)) { - return true; - } // support ~ match + wrapMatch = function (t, reg, index, length) { + let result = doesMatch$1(t, reg, index, length); - if (reg.soft === true && reg.word === t.root) { - return true; - } // support fuzzy match param + if (reg.negative === true) { + return !result; + } + return result; + }; - if (reg.fuzzy !== undefined) { - var score = _fuzzy(reg.word, t.reduced); + var _doesMatch = wrapMatch; + const doesMatch = _doesMatch; + const isAcronym$2 = isAcronym_1; // these tags aren't juicy-enough - if (score > reg.fuzzy) { - return true; - } // support fuzzy + soft match + const boring = {}; + /** check a match object against this term */ + _03Misc.doesMatch = function (reg, index, length) { + return doesMatch(this, reg, index, length); + }; + /** does this term look like an acronym? */ - if (reg.soft === true) { - score = _fuzzy(reg.word, t.root); - if (score > reg.fuzzy) { - return true; - } - } - } //match either .clean or .text + _03Misc.isAcronym = function () { + return isAcronym$2(this.text); + }; + /** is this term implied by a contraction? */ - return reg.word === t.clean || reg.word === t.text || reg.word === t.reduced; - } //support #Tag + _03Misc.isImplicit = function () { + return this.text === '' && Boolean(this.implicit); + }; + /** does the term have at least one good tag? */ - if (reg.tag !== undefined) { - return t.tags[reg.tag] === true; - } //support @method + _03Misc.isKnown = function () { + return Object.keys(this.tags).some(t => boring[t] !== true); + }; + /** cache the root property of the term */ - if (reg.method !== undefined) { - if (typeof t[reg.method] === 'function' && t[reg.method]() === true) { - return true; - } + _03Misc.setRoot = function (world) { + let transform = world.transforms; + let str = this.implicit || this.clean; - return false; - } //support /reg/ + if (this.tags.Plural) { + str = transform.toSingular(str, world); + } + if (this.tags.Verb && !this.tags.Negative && !this.tags.Infinitive) { + let tense = null; - if (reg.regex !== undefined) { - return reg.regex.test(t.clean); - } // support optimized (one|two) + if (this.tags.PastTense) { + tense = 'PastTense'; + } else if (this.tags.Gerund) { + tense = 'Gerund'; + } else if (this.tags.PresentTense) { + tense = 'PresentTense'; + } else if (this.tags.Participle) { + tense = 'Participle'; + } else if (this.tags.Actor) { + tense = 'Actor'; + } + str = transform.toInfinitive(str, world, tense); + } - if (reg.fastOr !== undefined) { - if (t.implicit && reg.fastOr.hasOwnProperty(t.implicit) === true) { - return true; - } + this.root = str; + }; - return reg.fastOr.hasOwnProperty(t.reduced) || reg.fastOr.hasOwnProperty(t.text); - } //support slower (one|two) + var _04Text = {}; + const killUnicode$1 = unicode_1; + const hasSpace$1 = /[\s-]/; + const isUpperCase = /^[A-Z-]+$/; // const titleCase = str => { + // return str.charAt(0).toUpperCase() + str.substr(1) + // } + /** return various text formats of this term */ - if (reg.choices !== undefined) { - // try to support && operator - if (reg.operator === 'and') { - // must match them all - return reg.choices.every(function (r) { - return wrapMatch(t, r, index, length); - }); - } // or must match one + _04Text.textOut = function (options, showPre, showPost) { + options = options || {}; + let word = this.text; + let before = this.pre; + let after = this.post; // -word- + if (options.reduced === true) { + word = this.reduced || ''; + } - return reg.choices.some(function (r) { - return wrapMatch(t, r, index, length); - }); - } + if (options.root === true) { + word = this.root || ''; + } - return false; -}; // wrap result for !negative match logic + if (options.implicit === true && this.implicit) { + word = this.implicit || ''; + } + if (options.normal === true) { + word = this.clean || this.text || ''; + } -wrapMatch = function wrapMatch(t, reg, index, length) { - var result = doesMatch(t, reg, index, length); + if (options.root === true) { + word = this.root || this.reduced || ''; + } - if (reg.negative === true) { - return !result; - } + if (options.unicode === true) { + word = killUnicode$1(word); + } // cleanup case - return result; -}; -var _doesMatch = wrapMatch; -var boring = {}; -/** check a match object against this term */ + if (options.titlecase === true) { + if (this.tags.ProperNoun && !this.titleCase()) ;else if (this.tags.Acronym) { + word = word.toUpperCase(); //uppercase acronyms + } else if (isUpperCase.test(word) && !this.tags.Acronym) { + // lowercase everything else + word = word.toLowerCase(); + } + } -var doesMatch_1 = function doesMatch_1(reg, index, length) { - return _doesMatch(this, reg, index, length); -}; -/** does this term look like an acronym? */ + if (options.lowercase === true) { + word = word.toLowerCase(); + } // remove the '.'s from 'F.B.I.' (safely) -var isAcronym_1 = function isAcronym_1() { - return isAcronym_1$1(this.text); -}; -/** is this term implied by a contraction? */ + if (options.acronyms === true && this.tags.Acronym) { + word = word.replace(/\./g, ''); + } // -before/after- -var isImplicit = function isImplicit() { - return this.text === '' && Boolean(this.implicit); -}; -/** does the term have at least one good tag? */ + if (options.whitespace === true || options.root === true) { + before = ''; + after = ' '; + if ((hasSpace$1.test(this.post) === false || options.last) && !this.implicit) { + after = ''; + } + } -var isKnown = function isKnown() { - return Object.keys(this.tags).some(function (t) { - return boring[t] !== true; - }); -}; -/** cache the root property of the term */ + if (options.punctuation === true && !options.root) { + //normalized end punctuation + if (this.hasPost('.') === true) { + after = '.' + after; + } else if (this.hasPost('?') === true) { + after = '?' + after; + } else if (this.hasPost('!') === true) { + after = '!' + after; + } else if (this.hasPost(',') === true) { + after = ',' + after; + } else if (this.hasEllipses() === true) { + after = '...' + after; + } + } + if (showPre !== true) { + before = ''; + } -var setRoot = function setRoot(world) { - var transform = world.transforms; - var str = this.implicit || this.clean; + if (showPost !== true) { + // let keep = after.match(/\)/) || '' + after = ''; //keep //after.replace(/[ .?!,]+/, '') + } // remove the '.' from 'Mrs.' (safely) - if (this.tags.Plural) { - str = transform.toSingular(str, world); - } - if (this.tags.Verb && !this.tags.Negative && !this.tags.Infinitive) { - var tense = null; - - if (this.tags.PastTense) { - tense = 'PastTense'; - } else if (this.tags.Gerund) { - tense = 'Gerund'; - } else if (this.tags.PresentTense) { - tense = 'PresentTense'; - } else if (this.tags.Participle) { - tense = 'Participle'; - } else if (this.tags.Actor) { - tense = 'Actor'; - } + if (options.abbreviations === true && this.tags.Abbreviation) { + after = after.replace(/^\./, ''); + } - str = transform.toInfinitive(str, world, tense); - } + return before + word + after; + }; - this.root = str; -}; + var _05Json$1 = {}; + const boringTags = { + Auxiliary: 1, + Possessive: 1 + }; + /** a subjective ranking of tags kinda tfidf-based */ -var _03Misc = { - doesMatch: doesMatch_1, - isAcronym: isAcronym_1, - isImplicit: isImplicit, - isKnown: isKnown, - setRoot: setRoot -}; -var hasSpace$1 = /[\s-]/; -var isUpperCase = /^[A-Z-]+$/; // const titleCase = str => { -// return str.charAt(0).toUpperCase() + str.substr(1) -// } + const rankTags$1 = function (term, world) { + let tags = Object.keys(term.tags); + const tagSet = world.tags; + tags = tags.sort((a, b) => { + //bury the tags we dont want + if (boringTags[b] || !tagSet[b]) { + return -1; + } // unknown tags are interesting -/** return various text formats of this term */ -var textOut = function textOut(options, showPre, showPost) { - options = options || {}; - var word = this.text; - var before = this.pre; - var after = this.post; // -word- + if (!tagSet[b]) { + return 1; + } - if (options.reduced === true) { - word = this.reduced || ''; - } + if (!tagSet[a]) { + return 0; + } // then sort by #of parent tags (most-specific tags first) - if (options.root === true) { - word = this.root || ''; - } - if (options.implicit === true && this.implicit) { - word = this.implicit || ''; - } + if (tagSet[a].lineage.length > tagSet[b].lineage.length) { + return 1; + } - if (options.normal === true) { - word = this.clean || this.text || ''; - } + if (tagSet[a].isA.length > tagSet[b].isA.length) { + return -1; + } - if (options.root === true) { - word = this.root || this.reduced || ''; - } + return 0; + }); + return tags; + }; - if (options.unicode === true) { - word = unicode_1(word); - } // cleanup case + var _bestTag = rankTags$1; + const rankTags = _bestTag; + const jsonDefault = { + text: true, + tags: true, + implicit: true, + whitespace: true, + clean: false, + id: false, + index: false, + offset: false, + bestTag: false + }; + /** return various metadata for this term */ + _05Json$1.json = function (options, world) { + options = options || {}; + options = Object.assign({}, jsonDefault, options); + let result = {}; // default on - if (options.titlecase === true) { - if (this.tags.ProperNoun && !this.titleCase()) ;else if (this.tags.Acronym) { - word = word.toUpperCase(); //uppercase acronyms - } else if (isUpperCase.test(word) && !this.tags.Acronym) { - // lowercase everything else - word = word.toLowerCase(); - } - } + if (options.text) { + result.text = this.text; + } - if (options.lowercase === true) { - word = word.toLowerCase(); - } // remove the '.'s from 'F.B.I.' (safely) + if (options.normal) { + result.normal = this.clean; + } + if (options.tags) { + result.tags = Object.keys(this.tags); + } // default off - if (options.acronyms === true && this.tags.Acronym) { - word = word.replace(/\./g, ''); - } // -before/after- + if (options.clean) { + result.clean = this.clean; + } - if (options.whitespace === true || options.root === true) { - before = ''; - after = ' '; + if (options.id || options.offset) { + result.id = this.id; + } - if ((hasSpace$1.test(this.post) === false || options.last) && !this.implicit) { - after = ''; - } - } + if (options.implicit && this.implicit !== null) { + result.implicit = this.implicit; + } - if (options.punctuation === true && !options.root) { - //normalized end punctuation - if (this.hasPost('.') === true) { - after = '.' + after; - } else if (this.hasPost('?') === true) { - after = '?' + after; - } else if (this.hasPost('!') === true) { - after = '!' + after; - } else if (this.hasPost(',') === true) { - after = ',' + after; - } else if (this.hasEllipses() === true) { - after = '...' + after; - } - } + if (options.whitespace) { + result.pre = this.pre; + result.post = this.post; + } - if (showPre !== true) { - before = ''; - } + if (options.bestTag) { + result.bestTag = rankTags(this, world)[0]; + } - if (showPost !== true) { - // let keep = after.match(/\)/) || '' - after = ''; //keep //after.replace(/[ .?!,]+/, '') - } // remove the '.' from 'Mrs.' (safely) + return result; + }; + var methods$d = Object.assign({}, _01Case, _02Punctuation$1, _03Misc, _04Text, _05Json$1); + var tag = {}; + var fns$3 = {}; - if (options.abbreviations === true && this.tags.Abbreviation) { - after = after.replace(/^\./, ''); - } + function isClientSide() { + return typeof window !== 'undefined' && window.document; + } + /** add spaces at the end */ - return before + word + after; -}; -var _04Text = { - textOut: textOut -}; -var boringTags = { - Auxiliary: 1, - Possessive: 1 -}; -/** a subjective ranking of tags kinda tfidf-based */ - -var rankTags = function rankTags(term, world) { - var tags = Object.keys(term.tags); - var tagSet = world.tags; - tags = tags.sort(function (a, b) { - //bury the tags we dont want - if (boringTags[b] || !tagSet[b]) { - return -1; - } // unknown tags are interesting + const padEnd = function (str, width) { + str = str.toString(); + while (str.length < width) { + str += ' '; + } - if (!tagSet[b]) { - return 1; - } + return str; + }; + /** output for verbose-mode */ - if (!tagSet[a]) { - return 0; - } // then sort by #of parent tags (most-specific tags first) + fns$3.logTag = function (t, tag, reason) { + if (isClientSide()) { + console.log('%c' + padEnd(t.clean, 3) + ' + ' + tag + ' ', 'color: #6accb2;'); + return; + } //server-side - if (tagSet[a].lineage.length > tagSet[b].lineage.length) { - return 1; - } - if (tagSet[a].isA.length > tagSet[b].isA.length) { - return -1; - } + let log = '\x1b[33m' + padEnd(t.clean, 15) + '\x1b[0m + \x1b[32m' + tag + '\x1b[0m '; - return 0; - }); - return tags; -}; + if (reason) { + log = padEnd(log, 35) + ' ' + reason + ''; + } -var _bestTag = rankTags; -var jsonDefault = { - text: true, - tags: true, - implicit: true, - whitespace: true, - clean: false, - id: false, - index: false, - offset: false, - bestTag: false -}; -/** return various metadata for this term */ + console.log(log); + }; + /** output for verbose mode */ -var json$1 = function json(options, world) { - options = options || {}; - options = Object.assign({}, jsonDefault, options); - var result = {}; // default on - if (options.text) { - result.text = this.text; - } + fns$3.logUntag = function (t, tag, reason) { + if (isClientSide()) { + console.log('%c' + padEnd(t.clean, 3) + ' - ' + tag + ' ', 'color: #AB5850;'); + return; + } //server-side - if (options.normal) { - result.normal = this.clean; - } - if (options.tags) { - result.tags = Object.keys(this.tags); - } // default off + let log = '\x1b[33m' + padEnd(t.clean, 3) + ' \x1b[31m - #' + tag + '\x1b[0m '; + if (reason) { + log = padEnd(log, 35) + ' ' + reason; + } - if (options.clean) { - result.clean = this.clean; - } + console.log(log); + }; - if (options.id || options.offset) { - result.id = this.id; - } + fns$3.isArray = function (arr) { + return Object.prototype.toString.call(arr) === '[object Array]'; + }; - if (options.implicit && this.implicit !== null) { - result.implicit = this.implicit; - } + fns$3.titleCase = str => { + return str.charAt(0).toUpperCase() + str.substr(1); + }; - if (options.whitespace) { - result.pre = this.pre; - result.post = this.post; - } + const fns$2 = fns$3; + /** add a tag, and its descendents, to a term */ - if (options.bestTag) { - result.bestTag = _bestTag(this, world)[0]; - } + const addTag = function (t, tag, reason, world) { + let tagset = world.tags; //support '.' or '-' notation for skipping the tag - return result; -}; + if (tag === '' || tag === '.' || tag === '-') { + return; + } -var _05Json$1 = { - json: json$1 -}; -var methods$8 = Object.assign({}, _01Case, _02Punctuation$1, _03Misc, _04Text, _05Json$1); + if (tag[0] === '#') { + tag = tag.replace(/^#/, ''); + } -function isClientSide() { - return typeof window !== 'undefined' && window.document; -} -/** add spaces at the end */ + tag = fns$2.titleCase(tag); //if we already got this one + if (t.tags[tag] === true) { + return; + } // log it? -var padEnd = function padEnd(str, width) { - str = str.toString(); - while (str.length < width) { - str += ' '; - } + const isVerbose = world.isVerbose(); - return str; -}; -/** output for verbose-mode */ + if (isVerbose === true) { + fns$2.logTag(t, tag, reason); + } //add tag -var logTag = function logTag(t, tag, reason) { - if (isClientSide()) { - console.log('%c' + padEnd(t.clean, 3) + ' + ' + tag + ' ', 'color: #6accb2;'); - return; - } //server-side + t.tags[tag] = true; //whee! + //check tagset for any additional things to do... + if (tagset.hasOwnProperty(tag) === true) { + //add parent Tags + tagset[tag].isA.forEach(down => { + t.tags[down] = true; - var log = '\x1b[33m' + padEnd(t.clean, 15) + '\x1b[0m + \x1b[32m' + tag + '\x1b[0m '; + if (isVerbose === true) { + fns$2.logTag(t, '→ ' + down); + } + }); //remove any contrary tags - if (reason) { - log = padEnd(log, 35) + ' ' + reason + ''; - } + t.unTag(tagset[tag].notA, '←', world); + } + }; + /** support an array of tags */ - console.log(log); -}; -/** output for verbose mode */ + const addTags = function (term, tags, reason, world) { + if (typeof tags !== 'string') { + for (let i = 0; i < tags.length; i++) { + addTag(term, tags[i], reason, world); + } // tags.forEach(tag => addTag(term, tag, reason, world)) -var logUntag = function logUntag(t, tag, reason) { - if (isClientSide()) { - console.log('%c' + padEnd(t.clean, 3) + ' - ' + tag + ' ', 'color: #AB5850;'); - return; - } //server-side + } else { + addTag(term, tags, reason, world); + } + }; + var add$1 = addTags; + const fns$1 = fns$3; + const lowerCase = /^[a-z]/; - var log = '\x1b[33m' + padEnd(t.clean, 3) + ' \x1b[31m - #' + tag + '\x1b[0m '; + const titleCase$3 = str => { + return str.charAt(0).toUpperCase() + str.substr(1); + }; + /** remove this tag, and its descentents from the term */ - if (reason) { - log = padEnd(log, 35) + ' ' + reason; - } - console.log(log); -}; + const unTag$1 = function (t, tag, reason, world) { + const isVerbose = world.isVerbose(); //support '*' for removing all tags -var isArray$3 = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; -}; + if (tag === '*') { + t.tags = {}; + return t; + } -var titleCase$4 = function titleCase(str) { - return str.charAt(0).toUpperCase() + str.substr(1); -}; + tag = tag.replace(/^#/, ''); -var fns$1 = { - logTag: logTag, - logUntag: logUntag, - isArray: isArray$3, - titleCase: titleCase$4 -}; -/** add a tag, and its descendents, to a term */ + if (lowerCase.test(tag) === true) { + tag = titleCase$3(tag); + } // remove the tag -var addTag = function addTag(t, tag, reason, world) { - var tagset = world.tags; //support '.' or '-' notation for skipping the tag - if (tag === '' || tag === '.' || tag === '-') { - return; - } + if (t.tags[tag] === true) { + delete t.tags[tag]; //log in verbose-mode - if (tag[0] === '#') { - tag = tag.replace(/^#/, ''); - } + if (isVerbose === true) { + fns$1.logUntag(t, tag, reason); + } + } //delete downstream tags too - tag = fns$1.titleCase(tag); //if we already got this one - if (t.tags[tag] === true) { - return; - } // log it? + const tagset = world.tags; + if (tagset[tag]) { + let lineage = tagset[tag].lineage; - var isVerbose = world.isVerbose(); + for (let i = 0; i < lineage.length; i++) { + if (t.tags[lineage[i]] === true) { + delete t.tags[lineage[i]]; - if (isVerbose === true) { - fns$1.logTag(t, tag, reason); - } //add tag + if (isVerbose === true) { + fns$1.logUntag(t, ' - ' + lineage[i]); + } + } + } + } + return t; + }; //handle an array of tags - t.tags[tag] = true; //whee! - //check tagset for any additional things to do... - if (tagset.hasOwnProperty(tag) === true) { - //add parent Tags - tagset[tag].isA.forEach(function (down) { - t.tags[down] = true; + const untagAll = function (term, tags, reason, world) { + if (typeof tags !== 'string' && tags) { + for (let i = 0; i < tags.length; i++) { + unTag$1(term, tags[i], reason, world); + } - if (isVerbose === true) { - fns$1.logTag(t, '→ ' + down); + return; } - }); //remove any contrary tags - t.unTag(tagset[tag].notA, '←', world); - } -}; -/** support an array of tags */ + unTag$1(term, tags, reason, world); + }; + var unTag_1 = untagAll; -var addTags = function addTags(term, tags, reason, world) { - if (typeof tags !== 'string') { - for (var i = 0; i < tags.length; i++) { - addTag(term, tags[i], reason, world); - } // tags.forEach(tag => addTag(term, tag, reason, world)) + const canBe$1 = function (term, tag, world) { + const tagset = world.tags; // cleanup tag - } else { - addTag(term, tags, reason, world); - } -}; + if (tag[0] === '#') { + tag = tag.replace(/^#/, ''); + } //fail-fast -var add = addTags; -var lowerCase = /^[a-z]/; -var titleCase$3 = function titleCase(str) { - return str.charAt(0).toUpperCase() + str.substr(1); -}; -/** remove this tag, and its descentents from the term */ + if (tagset[tag] === undefined) { + return true; + } //loop through tag's contradictory tags -var unTag$1 = function unTag(t, tag, reason, world) { - var isVerbose = world.isVerbose(); //support '*' for removing all tags + let enemies = tagset[tag].notA || []; - if (tag === '*') { - t.tags = {}; - return t; - } + for (let i = 0; i < enemies.length; i++) { + if (term.tags[enemies[i]] === true) { + return false; + } + } - tag = tag.replace(/^#/, ''); + if (tagset[tag].isA !== undefined) { + return canBe$1(term, tagset[tag].isA, world); //recursive + } - if (lowerCase.test(tag) === true) { - tag = titleCase$3(tag); - } // remove the tag + return true; + }; + var canBe_1 = canBe$1; + const add = add$1; + const unTag = unTag_1; + const canBe = canBe_1; + /** add a tag or tags, and their descendents to this term + * @param {string | string[]} tags - a tag or tags + * @param {string?} [reason] a clue for debugging + */ + + tag.tag = function (tags, reason, world) { + add(this, tags, reason, world); + return this; + }; + /** only tag this term if it's consistent with it's current tags */ - if (t.tags[tag] === true) { - delete t.tags[tag]; //log in verbose-mode - if (isVerbose === true) { - fns$1.logUntag(t, tag, reason); - } - } //delete downstream tags too + tag.tagSafe = function (tags, reason, world) { + if (canBe(this, tags, world)) { + add(this, tags, reason, world); + } + return this; + }; + /** remove a tag or tags, and their descendents from this term + * @param {string | string[]} tags - a tag or tags + * @param {string?} [reason] a clue for debugging + */ - var tagset = world.tags; - if (tagset[tag]) { - var lineage = tagset[tag].lineage; + tag.unTag = function (tags, reason, world) { + unTag(this, tags, reason, world); + return this; + }; + /** is this tag consistent with the word's current tags? + * @param {string | string[]} tags - a tag or tags + * @returns {boolean} + */ - for (var i = 0; i < lineage.length; i++) { - if (t.tags[lineage[i]] === true) { - delete t.tags[lineage[i]]; - if (isVerbose === true) { - fns$1.logUntag(t, ' - ' + lineage[i]); + tag.canBe = function (tags, world) { + return canBe(this, tags, world); + }; + + const makeId$1 = _id; + const parseTerm = parse$3; + const methods$c = methods$d; + const tagMethods = tag; + + class Term$3 { + constructor() { + let text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + text = String(text); + let obj = parseTerm(text); // the various forms of our text + + this.text = obj.text || ''; + this.clean = obj.clean; + this.reduced = obj.reduced; + this.root = null; + this.implicit = null; + this.pre = obj.pre || ''; + this.post = obj.post || ''; + this.tags = {}; + this.prev = null; + this.next = null; + this.id = makeId$1(obj.clean); + this.isA = 'Term'; // easier than .constructor... + // support alternative matches + + if (obj.alias) { + this.alias = obj.alias; } } - } - } + /** set the text of the Term to something else*/ - return t; -}; //handle an array of tags + set(str) { + let obj = parseTerm(str); + this.text = obj.text; + this.clean = obj.clean; + this.reduced = obj.reduced; + this.root = null; + this.implicit = null; + return this; + } -var untagAll = function untagAll(term, tags, reason, world) { - if (typeof tags !== 'string' && tags) { - for (var i = 0; i < tags.length; i++) { - unTag$1(term, tags[i], reason, world); } + /** create a deep-copy of this term */ - return; - } - unTag$1(term, tags, reason, world); -}; + Term$3.prototype.clone = function () { + let term = new Term$3(this.text); + term.pre = this.pre; + term.post = this.post; + term.clean = this.clean; + term.reduced = this.reduced; + term.root = this.root; + term.implicit = this.implicit; + term.tags = Object.assign({}, this.tags); //use the old id, so it can be matched with .match(doc) + // term.id = this.id -var unTag_1$1 = untagAll; + return term; + }; -var canBe$2 = function canBe(term, tag, world) { - var tagset = world.tags; // cleanup tag + Object.assign(Term$3.prototype, methods$c); + Object.assign(Term$3.prototype, tagMethods); + var Term_1 = Term$3; + var _01Utils$1 = {}; + /** return a flat array of Term objects */ - if (tag[0] === '#') { - tag = tag.replace(/^#/, ''); - } //fail-fast + _01Utils$1.terms = function (n) { + if (this.length === 0) { + return []; + } // use cache, if it exists - if (tagset[tag] === undefined) { - return true; - } //loop through tag's contradictory tags + if (this.cache.terms) { + if (n !== undefined) { + return this.cache.terms[n]; + } + return this.cache.terms; + } - var enemies = tagset[tag].notA || []; + let terms = [this.pool.get(this.start)]; - for (var i = 0; i < enemies.length; i++) { - if (term.tags[enemies[i]] === true) { - return false; - } - } + for (let i = 0; i < this.length - 1; i += 1) { + let id = terms[terms.length - 1].next; - if (tagset[tag].isA !== undefined) { - return canBe(term, tagset[tag].isA, world); //recursive - } + if (id === null) { + // throw new Error('linked-list broken') + console.error("Compromise error: Linked list broken in phrase '" + this.start + "'"); + break; + } - return true; -}; + let term = this.pool.get(id); + terms.push(term); //return this one? -var canBe_1$1 = canBe$2; -/** add a tag or tags, and their descendents to this term - * @param {string | string[]} tags - a tag or tags - * @param {string?} [reason] a clue for debugging - */ + if (n !== undefined && n === i) { + return terms[n]; + } + } -var tag_1 = function tag_1(tags, reason, world) { - add(this, tags, reason, world); - return this; -}; -/** only tag this term if it's consistent with it's current tags */ + if (n === undefined) { + this.cache.terms = terms; + } + if (n !== undefined) { + return terms[n]; + } -var tagSafe$1 = function tagSafe(tags, reason, world) { - if (canBe_1$1(this, tags, world)) { - add(this, tags, reason, world); - } + return terms; + }; + /** return a shallow or deep copy of this phrase */ - return this; -}; -/** remove a tag or tags, and their descendents from this term - * @param {string | string[]} tags - a tag or tags - * @param {string?} [reason] a clue for debugging - */ + _01Utils$1.clone = function (isShallow) { + if (isShallow) { + let p = this.buildFrom(this.start, this.length); + p.cache = this.cache; + return p; + } //how do we clone part of the pool? -var unTag_1 = function unTag_1(tags, reason, world) { - unTag_1$1(this, tags, reason, world); - return this; -}; -/** is this tag consistent with the word's current tags? - * @param {string | string[]} tags - a tag or tags - * @returns {boolean} - */ + let terms = this.terms(); + let newTerms = terms.map(t => t.clone()); // console.log(newTerms) + //connect these new ids up -var canBe_1 = function canBe_1(tags, world) { - return canBe_1$1(this, tags, world); -}; + newTerms.forEach((t, i) => { + //add it to the pool.. + this.pool.add(t); -var tag$1 = { - tag: tag_1, - tagSafe: tagSafe$1, - unTag: unTag_1, - canBe: canBe_1 -}; + if (newTerms[i + 1]) { + t.next = newTerms[i + 1].id; + } -var Term = /*#__PURE__*/function () { - function Term() { - var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - - _classCallCheck(this, Term); - - text = String(text); - var obj = parse$2(text); // the various forms of our text - - this.text = obj.text || ''; - this.clean = obj.clean; - this.reduced = obj.reduced; - this.root = null; - this.implicit = null; - this.pre = obj.pre || ''; - this.post = obj.post || ''; - this.tags = {}; - this.prev = null; - this.next = null; - this.id = _id(obj.clean); - this.isA = 'Term'; // easier than .constructor... - // support alternative matches - - if (obj.alias) { - this.alias = obj.alias; - } - } - /** set the text of the Term to something else*/ + if (newTerms[i - 1]) { + t.prev = newTerms[i - 1].id; + } + }); + return this.buildFrom(newTerms[0].id, newTerms.length); + }; + /** return last term object */ - _createClass(Term, [{ - key: "set", - value: function set(str) { - var obj = parse$2(str); - this.text = obj.text; - this.clean = obj.clean; - return this; - } - }]); + _01Utils$1.lastTerm = function () { + let terms = this.terms(); + return terms[terms.length - 1]; + }; + /** quick lookup for a term id */ - return Term; -}(); -/** create a deep-copy of this term */ + _01Utils$1.hasId = function (wantId) { + if (this.length === 0 || !wantId) { + return false; + } -Term.prototype.clone = function () { - var term = new Term(this.text); - term.pre = this.pre; - term.post = this.post; - term.clean = this.clean; - term.reduced = this.reduced; - term.root = this.root; - term.implicit = this.implicit; - term.tags = Object.assign({}, this.tags); //use the old id, so it can be matched with .match(doc) - // term.id = this.id + if (this.start === wantId) { + return true; + } // use cache, if available - return term; -}; -Object.assign(Term.prototype, methods$8); -Object.assign(Term.prototype, tag$1); -var Term_1 = Term; -/** return a flat array of Term objects */ + if (this.cache.terms) { + let terms = this.cache.terms; -var terms = function terms(n) { - if (this.length === 0) { - return []; - } // use cache, if it exists + for (let i = 0; i < terms.length; i++) { + if (terms[i].id === wantId) { + return true; + } + } + return false; + } // otherwise, go through each term - if (this.cache.terms) { - if (n !== undefined) { - return this.cache.terms[n]; - } - return this.cache.terms; - } + let lastId = this.start; - var terms = [this.pool.get(this.start)]; + for (let i = 0; i < this.length - 1; i += 1) { + let term = this.pool.get(lastId); - for (var i = 0; i < this.length - 1; i += 1) { - var id = terms[terms.length - 1].next; + if (term === undefined) { + console.error("Compromise error: Linked list broken. Missing term '".concat(lastId, "' in phrase '").concat(this.start, "'\n")); // throw new Error('linked List error') - if (id === null) { - // throw new Error('linked-list broken') - console.error("Compromise error: Linked list broken in phrase '" + this.start + "'"); - break; - } + return false; + } - var term = this.pool.get(id); - terms.push(term); //return this one? + if (term.next === wantId) { + return true; + } - if (n !== undefined && n === i) { - return terms[n]; - } - } + lastId = term.next; + } - if (n === undefined) { - this.cache.terms = terms; - } + return false; + }; + /** how many seperate, non-empty words is it? */ - if (n !== undefined) { - return terms[n]; - } - return terms; -}; -/** return a shallow or deep copy of this phrase */ + _01Utils$1.wordCount = function () { + return this.terms().filter(t => t.text !== '').length; + }; + /** get the full-sentence this phrase belongs to */ -var clone$1 = function clone(isShallow) { - var _this = this; + _01Utils$1.fullSentence = function () { + let t = this.terms(0); //find first term in sentence - if (isShallow) { - var p = this.buildFrom(this.start, this.length); - p.cache = this.cache; - return p; - } //how do we clone part of the pool? + while (t.prev) { + t = this.pool.get(t.prev); + } + let start = t.id; + let len = 1; //go to end of sentence - var terms = this.terms(); - var newTerms = terms.map(function (t) { - return t.clone(); - }); // console.log(newTerms) - //connect these new ids up + while (t.next) { + t = this.pool.get(t.next); + len += 1; + } - newTerms.forEach(function (t, i) { - //add it to the pool.. - _this.pool.add(t); + return this.buildFrom(start, len); + }; - if (newTerms[i + 1]) { - t.next = newTerms[i + 1].id; - } + var _02Text = {}; - if (newTerms[i - 1]) { - t.prev = newTerms[i - 1].id; - } - }); - return this.buildFrom(newTerms[0].id, newTerms.length); -}; -/** return last term object */ + const trimEnd = function (str) { + return str.replace(/ +$/, ''); + }; + /** produce output in the given format */ + + + _02Text.text = function () { + let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + let isFirst = arguments.length > 1 ? arguments[1] : undefined; + let isLast = arguments.length > 2 ? arguments[2] : undefined; + + if (typeof options === 'string') { + if (options === 'normal') { + options = { + whitespace: true, + unicode: true, + lowercase: true, + punctuation: true, + acronyms: true, + abbreviations: true, + implicit: true, + normal: true + }; + } else if (options === 'clean') { + options = { + titlecase: false, + lowercase: true, + punctuation: true, + whitespace: true, + unicode: true, + implicit: true, + normal: true + }; + } else if (options === 'reduced') { + options = { + punctuation: false, + //Hmm: is this reversed? + titlecase: false, + lowercase: true, + whitespace: true, + unicode: true, + implicit: true, + reduced: true + }; + } else if (options === 'implicit') { + options = { + punctuation: true, + implicit: true, + whitespace: true, + trim: true + }; + } else if (options === 'root') { + options = { + titlecase: false, + lowercase: true, + punctuation: true, + whitespace: true, + unicode: true, + implicit: true, + root: true + }; + } else { + options = {}; + } + } + let terms = this.terms(); //this this phrase a complete sentence? -var lastTerm = function lastTerm() { - var terms = this.terms(); - return terms[terms.length - 1]; -}; -/** quick lookup for a term id */ + let isFull = false; + if (terms[0] && terms[0].prev === null && terms[terms.length - 1].next === null) { + isFull = true; + } -var hasId = function hasId(wantId) { - if (this.length === 0 || !wantId) { - return false; - } + let text = terms.reduce((str, t, i) => { + // don't output intro space for a contraction-match i'm good => "[am] good" + if (i === 0 && t.text === '' && t.implicit !== null && !options.implicit) { + return str; + } - if (this.start === wantId) { - return true; - } // use cache, if available + options.last = isLast && i === terms.length - 1; + let showPre = true; + let showPost = true; + if (isFull === false) { + // dont show beginning whitespace + if (i === 0 && isFirst) { + showPre = false; + } // dont show end-whitespace - if (this.cache.terms) { - var _terms = this.cache.terms; - for (var i = 0; i < _terms.length; i++) { - if (_terms[i].id === wantId) { - return true; - } - } + if (i === terms.length - 1 && isLast) { + showPost = false; + } + } - return false; - } // otherwise, go through each term + let txt = t.textOut(options, showPre, showPost); // console.log(terms) + // if (options.titlecase && i === 0) { + // txt = titleCase(txt) + // } + return str + txt; + }, ''); //full-phrases show punctuation, but not whitespace - var lastId = this.start; + if (isFull === true && isLast) { + text = trimEnd(text); + } - for (var _i = 0; _i < this.length - 1; _i += 1) { - var term = this.pool.get(lastId); + if (options.trim === true) { + text = text.trim(); + } - if (term === undefined) { - console.error("Compromise error: Linked list broken. Missing term '".concat(lastId, "' in phrase '").concat(this.start, "'\n")); // throw new Error('linked List error') + return text; + }; - return false; - } + var _03Change = {}; + /** remove start and end whitespace */ - if (term.next === wantId) { - return true; - } + _03Change.trim = function () { + let terms = this.terms(); - lastId = term.next; - } + if (terms.length > 0) { + //trim starting + terms[0].pre = terms[0].pre.replace(/^\s+/, ''); //trim ending - return false; -}; -/** how many seperate, non-empty words is it? */ + let lastTerm = terms[terms.length - 1]; + lastTerm.post = lastTerm.post.replace(/\s+$/, ''); + } + return this; + }; -var wordCount = function wordCount() { - return this.terms().filter(function (t) { - return t.text !== ''; - }).length; -}; -/** get the full-sentence this phrase belongs to */ + var _04Insert = {}; + const endOfSentence = /[.?!]\s*$/; // replacing a 'word.' with a 'word!' + const combinePost = function (before, after) { + //only transfer the whitespace + if (endOfSentence.test(after)) { + let whitespace = before.match(/\s*$/); + return after + whitespace; + } -var fullSentence = function fullSentence() { - var t = this.terms(0); //find first term in sentence + return before; + }; //add whitespace to the start of the second bit - while (t.prev) { - t = this.pool.get(t.prev); - } - var start = t.id; - var len = 1; //go to end of sentence + const addWhitespace$1 = function (beforeTerms, newTerms) { + // add any existing pre-whitespace to beginning + newTerms[0].pre = beforeTerms[0].pre; + let lastTerm = beforeTerms[beforeTerms.length - 1]; //add any existing punctuation to end of our new terms - while (t.next) { - t = this.pool.get(t.next); - len += 1; - } + let newTerm = newTerms[newTerms.length - 1]; + newTerm.post = combinePost(lastTerm.post, newTerm.post); // remove existing punctuation - return this.buildFrom(start, len); -}; + lastTerm.post = ''; //before ←[space] - after -var _01Utils$1 = { - terms: terms, - clone: clone$1, - lastTerm: lastTerm, - hasId: hasId, - wordCount: wordCount, - fullSentence: fullSentence -}; + if (lastTerm.post === '') { + lastTerm.post += ' '; + } + }; //insert this segment into the linked-list -var trimEnd = function trimEnd(str) { - return str.replace(/ +$/, ''); -}; -/** produce output in the given format */ + const stitchIn$1 = function (beforeTerms, newTerms, pool) { + let lastBefore = beforeTerms[beforeTerms.length - 1]; + let lastNew = newTerms[newTerms.length - 1]; + let afterId = lastBefore.next; //connect ours in (main → newPhrase) -var text$1 = function text() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var isFirst = arguments.length > 1 ? arguments[1] : undefined; - var isLast = arguments.length > 2 ? arguments[2] : undefined; + lastBefore.next = newTerms[0].id; //stich the end in (newPhrase → after) - if (typeof options === 'string') { - if (options === 'normal') { - options = { - whitespace: true, - unicode: true, - lowercase: true, - punctuation: true, - acronyms: true, - abbreviations: true, - implicit: true, - normal: true - }; - } else if (options === 'clean') { - options = { - titlecase: false, - lowercase: true, - punctuation: true, - whitespace: true, - unicode: true, - implicit: true, - normal: true - }; - } else if (options === 'reduced') { - options = { - punctuation: false, - //Hmm: is this reversed? - titlecase: false, - lowercase: true, - whitespace: true, - unicode: true, - implicit: true, - reduced: true - }; - } else if (options === 'implicit') { - options = { - punctuation: true, - implicit: true, - whitespace: true, - trim: true - }; - } else if (options === 'root') { - options = { - titlecase: false, - lowercase: true, - punctuation: true, - whitespace: true, - unicode: true, - implicit: true, - root: true - }; - } else { - options = {}; - } - } + lastNew.next = afterId; //do it backwards, too - var terms = this.terms(); //this this phrase a complete sentence? + if (afterId) { + // newPhrase ← after + let afterTerm = pool.get(afterId); + afterTerm.prev = lastNew.id; + } // before ← newPhrase - var isFull = false; - if (terms[0] && terms[0].prev === null && terms[terms.length - 1].next === null) { - isFull = true; - } + let beforeId = beforeTerms[0].id; - var text = terms.reduce(function (str, t, i) { - // don't output intro space for a contraction-match i'm good => "[am] good" - if (i === 0 && t.text === '' && t.implicit !== null && !options.implicit) { - return str; - } + if (beforeId) { + let newTerm = newTerms[0]; + newTerm.prev = beforeId; + } + }; // avoid stretching a phrase twice. - options.last = isLast && i === terms.length - 1; - var showPre = true; - var showPost = true; - if (isFull === false) { - // dont show beginning whitespace - if (i === 0 && isFirst) { - showPre = false; - } // dont show end-whitespace + const unique$6 = function (list) { + return list.filter((o, i) => { + return list.indexOf(o) === i; + }); + }; //append one phrase onto another. - if (i === terms.length - 1 && isLast) { - showPost = false; - } - } + const appendPhrase = function (before, newPhrase, doc) { + let beforeTerms = before.terms(); + let newTerms = newPhrase.terms(); //spruce-up the whitespace issues - var txt = t.textOut(options, showPre, showPost); // console.log(terms) - // if (options.titlecase && i === 0) { - // txt = titleCase(txt) - // } + addWhitespace$1(beforeTerms, newTerms); //insert this segment into the linked-list - return str + txt; - }, ''); //full-phrases show punctuation, but not whitespace + stitchIn$1(beforeTerms, newTerms, before.pool); // stretch! + // make each effected phrase longer - if (isFull === true && isLast) { - text = trimEnd(text); - } + let toStretch = [before]; + let hasId = before.start; + let docs = [doc]; + docs = docs.concat(doc.parents()); // find them all! - if (options.trim === true) { - text = text.trim(); - } + docs.forEach(parent => { + // only the phrases that should change + let shouldChange = parent.list.filter(p => { + return p.hasId(hasId); + }); + toStretch = toStretch.concat(shouldChange); + }); // don't double-count a phrase - return text; -}; + toStretch = unique$6(toStretch); + toStretch.forEach(p => { + p.length += newPhrase.length; + }); + before.cache = {}; + return before; + }; -var _02Text = { - text: text$1 -}; -/** remove start and end whitespace */ + var append$1 = appendPhrase; + const hasSpace = / /; //a new space needs to be added, either on the new phrase, or the old one + // '[new] [◻old]' -or- '[old] [◻new] [old]' -var trim = function trim() { - var terms = this.terms(); + const addWhitespace = function (newTerms) { + //add a space before our new text? + // add a space after our text + let lastTerm = newTerms[newTerms.length - 1]; - if (terms.length > 0) { - //trim starting - terms[0].pre = terms[0].pre.replace(/^\s+/, ''); //trim ending + if (hasSpace.test(lastTerm.post) === false) { + lastTerm.post += ' '; + } - var lastTerm = terms[terms.length - 1]; - lastTerm.post = lastTerm.post.replace(/\s+$/, ''); - } + return; + }; //insert this segment into the linked-list - return this; -}; -var _03Change = { - trim: trim -}; -var endOfSentence = /[.?!]\s*$/; // replacing a 'word.' with a 'word!' + const stitchIn = function (main, newPhrase, newTerms) { + // [newPhrase] → [main] + let lastTerm = newTerms[newTerms.length - 1]; + lastTerm.next = main.start; // [before] → [main] -var combinePost = function combinePost(before, after) { - //only transfer the whitespace - if (endOfSentence.test(after)) { - var whitespace = before.match(/\s*$/); - return after + whitespace; - } + let pool = main.pool; + let start = pool.get(main.start); - return before; -}; //add whitespace to the start of the second bit + if (start.prev) { + let before = pool.get(start.prev); + before.next = newPhrase.start; + } //do it backwards, too + // before ← newPhrase -var addWhitespace$1 = function addWhitespace(beforeTerms, newTerms) { - // add any existing pre-whitespace to beginning - newTerms[0].pre = beforeTerms[0].pre; - var lastTerm = beforeTerms[beforeTerms.length - 1]; //add any existing punctuation to end of our new terms + newTerms[0].prev = main.terms(0).prev; // newPhrase ← main - var newTerm = newTerms[newTerms.length - 1]; - newTerm.post = combinePost(lastTerm.post, newTerm.post); // remove existing punctuation + main.terms(0).prev = lastTerm.id; + }; - lastTerm.post = ''; //before ←[space] - after + const unique$5 = function (list) { + return list.filter((o, i) => { + return list.indexOf(o) === i; + }); + }; //append one phrase onto another - if (lastTerm.post === '') { - lastTerm.post += ' '; - } -}; //insert this segment into the linked-list + const joinPhrase = function (original, newPhrase, doc) { + const starterId = original.start; + let newTerms = newPhrase.terms(); //spruce-up the whitespace issues -var stitchIn$1 = function stitchIn(beforeTerms, newTerms, pool) { - var lastBefore = beforeTerms[beforeTerms.length - 1]; - var lastNew = newTerms[newTerms.length - 1]; - var afterId = lastBefore.next; //connect ours in (main → newPhrase) + addWhitespace(newTerms); //insert this segment into the linked-list - lastBefore.next = newTerms[0].id; //stich the end in (newPhrase → after) + stitchIn(original, newPhrase, newTerms); //increase the length of our phrases - lastNew.next = afterId; //do it backwards, too + let toStretch = [original]; + let docs = [doc]; + docs = docs.concat(doc.parents()); + docs.forEach(d => { + // only the phrases that should change + let shouldChange = d.list.filter(p => { + return p.hasId(starterId) || p.hasId(newPhrase.start); + }); + toStretch = toStretch.concat(shouldChange); + }); // don't double-count - if (afterId) { - // newPhrase ← after - var afterTerm = pool.get(afterId); - afterTerm.prev = lastNew.id; - } // before ← newPhrase + toStretch = unique$5(toStretch); // stretch these phrases + toStretch.forEach(p => { + p.length += newPhrase.length; // change the start too, if necessary - var beforeId = beforeTerms[0].id; + if (p.start === starterId) { + p.start = newPhrase.start; + } - if (beforeId) { - var newTerm = newTerms[0]; - newTerm.prev = beforeId; - } -}; // avoid stretching a phrase twice. + p.cache = {}; + }); + return original; + }; + var prepend$1 = joinPhrase; -var unique$5 = function unique(list) { - return list.filter(function (o, i) { - return list.indexOf(o) === i; - }); -}; //append one phrase onto another. + const shrinkAll = function (doc, id, deleteLength, after) { + let arr = doc.parents(); + arr.push(doc); + arr.forEach(d => { + //find our phrase to shrink + let phrase = d.list.find(p => p.hasId(id)); + if (!phrase) { + return; + } -var appendPhrase = function appendPhrase(before, newPhrase, doc) { - var beforeTerms = before.terms(); - var newTerms = newPhrase.terms(); //spruce-up the whitespace issues + phrase.length -= deleteLength; // does it start with this soon-removed word? - addWhitespace$1(beforeTerms, newTerms); //insert this segment into the linked-list + if (phrase.start === id) { + phrase.start = after.id; + } - stitchIn$1(beforeTerms, newTerms, before.pool); // stretch! - // make each effected phrase longer + phrase.cache = {}; + }); // cleanup empty phrase objects - var toStretch = [before]; - var hasId = before.start; - var docs = [doc]; - docs = docs.concat(doc.parents()); // find them all! + doc.list = doc.list.filter(p => { + if (!p.start || !p.length) { + return false; + } - docs.forEach(function (parent) { - // only the phrases that should change - var shouldChange = parent.list.filter(function (p) { - return p.hasId(hasId); - }); - toStretch = toStretch.concat(shouldChange); - }); // don't double-count a phrase + return true; + }); + }; + /** wrap the linked-list around these terms + * so they don't appear any more + */ - toStretch = unique$5(toStretch); - toStretch.forEach(function (p) { - p.length += newPhrase.length; - }); - before.cache = {}; - return before; -}; -var append = appendPhrase; -var hasSpace = / /; //a new space needs to be added, either on the new phrase, or the old one -// '[new] [◻old]' -or- '[old] [◻new] [old]' + const deletePhrase$1 = function (phrase, doc) { + let pool = doc.pool(); + let terms = phrase.terms(); //grab both sides of the chain, -var addWhitespace = function addWhitespace(newTerms) { - //add a space before our new text? - // add a space after our text - var lastTerm = newTerms[newTerms.length - 1]; + let prev = pool.get(terms[0].prev) || {}; + let after = pool.get(terms[terms.length - 1].next) || {}; - if (hasSpace.test(lastTerm.post) === false) { - lastTerm.post += ' '; - } + if (terms[0].implicit && prev.implicit) { + prev.set(prev.implicit); + prev.post += ' '; + } // //first, change phrase lengths - return; -}; //insert this segment into the linked-list + shrinkAll(doc, phrase.start, phrase.length, after); // connect [prev]->[after] -var stitchIn = function stitchIn(main, newPhrase, newTerms) { - // [newPhrase] → [main] - var lastTerm = newTerms[newTerms.length - 1]; - lastTerm.next = main.start; // [before] → [main] + if (prev) { + prev.next = after.id; + } // connect [prev]<-[after] - var pool = main.pool; - var start = pool.get(main.start); - if (start.prev) { - var before = pool.get(start.prev); - before.next = newPhrase.start; - } //do it backwards, too - // before ← newPhrase + if (after) { + after.prev = prev.id; + } // lastly, actually delete the terms from the pool? + // for (let i = 0; i < terms.length; i++) { + // pool.remove(terms[i].id) + // } + }; - newTerms[0].prev = main.terms(0).prev; // newPhrase ← main + var _delete = deletePhrase$1; + const append = append$1; + const prepend = prepend$1; + const deletePhrase = _delete; // const tokenize = require('../../01-tokenizer') - main.terms(0).prev = lastTerm.id; -}; + /** put this text at the end */ -var unique$4 = function unique(list) { - return list.filter(function (o, i) { - return list.indexOf(o) === i; - }); -}; //append one phrase onto another + _04Insert.append = function (newPhrase, doc) { + append(this, newPhrase, doc); + return this; + }; + /** add this text to the beginning */ -var joinPhrase = function joinPhrase(original, newPhrase, doc) { - var starterId = original.start; - var newTerms = newPhrase.terms(); //spruce-up the whitespace issues + _04Insert.prepend = function (newPhrase, doc) { + prepend(this, newPhrase, doc); + return this; + }; - addWhitespace(newTerms); //insert this segment into the linked-list + _04Insert.delete = function (doc) { + deletePhrase(this, doc); + return this; + }; // stich-in newPhrase, stretch 'doc' + parents - stitchIn(original, newPhrase, newTerms); //increase the length of our phrases - var toStretch = [original]; - var docs = [doc]; - docs = docs.concat(doc.parents()); - docs.forEach(function (d) { - // only the phrases that should change - var shouldChange = d.list.filter(function (p) { - return p.hasId(starterId) || p.hasId(newPhrase.start); - }); - toStretch = toStretch.concat(shouldChange); - }); // don't double-count + _04Insert.replace = function (newPhrase, doc) { + //add it do the end + let firstLength = this.length; + append(this, newPhrase, doc); //delete original terms - toStretch = unique$4(toStretch); // stretch these phrases + let tmp = this.buildFrom(this.start, this.length); + tmp.length = firstLength; + deletePhrase(tmp, doc); + }; + /** + * Turn this phrase object into 3 phrase objects + */ - toStretch.forEach(function (p) { - p.length += newPhrase.length; // change the start too, if necessary - if (p.start === starterId) { - p.start = newPhrase.start; - } + _04Insert.splitOn = function (p) { + let terms = this.terms(); + let result = { + before: null, + match: null, + after: null + }; + let index = terms.findIndex(t => t.id === p.start); - p.cache = {}; - }); - return original; -}; + if (index === -1) { + return result; + } //make all three sections into phrase-objects -var prepend = joinPhrase; //recursively decrease the length of all the parent phrases -var shrinkAll = function shrinkAll(doc, id, deleteLength, after) { - var arr = doc.parents(); - arr.push(doc); - arr.forEach(function (d) { - //find our phrase to shrink - var phrase = d.list.find(function (p) { - return p.hasId(id); - }); + let start = terms.slice(0, index); - if (!phrase) { - return; - } + if (start.length > 0) { + result.before = this.buildFrom(start[0].id, start.length); + } - phrase.length -= deleteLength; // does it start with this soon-removed word? + let match = terms.slice(index, index + p.length); - if (phrase.start === id) { - phrase.start = after.id; - } + if (match.length > 0) { + result.match = this.buildFrom(match[0].id, match.length); + } - phrase.cache = {}; - }); // cleanup empty phrase objects + let end = terms.slice(index + p.length, terms.length); - doc.list = doc.list.filter(function (p) { - if (!p.start || !p.length) { - return false; - } + if (end.length > 0) { + result.after = this.buildFrom(end[0].id, end.length, this.pool); + } - return true; - }); -}; -/** wrap the linked-list around these terms - * so they don't appear any more - */ + return result; + }; + var _05Json = {}; + /** return json metadata for this phrase */ -var deletePhrase = function deletePhrase(phrase, doc) { - var pool = doc.pool(); - var terms = phrase.terms(); //grab both sides of the chain, + _05Json.json = function () { + let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + let world = arguments.length > 1 ? arguments[1] : undefined; + let res = {}; // text data - var prev = pool.get(terms[0].prev) || {}; - var after = pool.get(terms[terms.length - 1].next) || {}; - - if (terms[0].implicit && prev.implicit) { - prev.set(prev.implicit); - prev.post += ' '; - } // //first, change phrase lengths + if (options.text) { + res.text = this.text(); + } + if (options.normal) { + res.normal = this.text('normal'); + } - shrinkAll(doc, phrase.start, phrase.length, after); // connect [prev]->[after] + if (options.clean) { + res.clean = this.text('clean'); + } - if (prev) { - prev.next = after.id; - } // connect [prev]<-[after] + if (options.reduced) { + res.reduced = this.text('reduced'); + } + if (options.implicit) { + res.implicit = this.text('implicit'); + } - if (after) { - after.prev = prev.id; - } // lastly, actually delete the terms from the pool? - // for (let i = 0; i < terms.length; i++) { - // pool.remove(terms[i].id) - // } + if (options.root) { + res.root = this.text('root'); + } -}; + if (options.trim) { + if (res.text) { + res.text = res.text.trim(); + } -var _delete$1 = deletePhrase; -/** put this text at the end */ + if (res.normal) { + res.normal = res.normal.trim(); + } -var append_1 = function append_1(newPhrase, doc) { - append(this, newPhrase, doc); - return this; -}; -/** add this text to the beginning */ + if (res.reduced) { + res.reduced = res.reduced.trim(); + } + } // terms data -var prepend_1 = function prepend_1(newPhrase, doc) { - prepend(this, newPhrase, doc); - return this; -}; + if (options.terms) { + if (options.terms === true) { + options.terms = {}; + } -var _delete = function _delete(doc) { - _delete$1(this, doc); + res.terms = this.terms().map(t => t.json(options.terms, world)); + } - return this; -}; // stich-in newPhrase, stretch 'doc' + parents + return res; + }; + var _06Lookahead = {}; + /** match any terms after this phrase */ -var replace$1 = function replace(newPhrase, doc) { - //add it do the end - var firstLength = this.length; - append(this, newPhrase, doc); //delete original terms + _06Lookahead.lookAhead = function (regs) { + // if empty match string, return everything after + if (!regs) { + regs = '.*'; + } - var tmp = this.buildFrom(this.start, this.length); - tmp.length = firstLength; + let pool = this.pool; // get a list of all terms preceding our start - _delete$1(tmp, doc); -}; -/** - * Turn this phrase object into 3 phrase objects - */ + let terms = []; + const getAfter = function (id) { + let term = pool.get(id); -var splitOn = function splitOn(p) { - var terms = this.terms(); - var result = { - before: null, - match: null, - after: null - }; - var index = terms.findIndex(function (t) { - return t.id === p.start; - }); + if (!term) { + return; + } - if (index === -1) { - return result; - } //make all three sections into phrase-objects + terms.push(term); + if (term.prev) { + getAfter(term.next); //recursion + } + }; - var start = terms.slice(0, index); + let all = this.terms(); + let lastTerm = all[all.length - 1]; + getAfter(lastTerm.next); - if (start.length > 0) { - result.before = this.buildFrom(start[0].id, start.length); - } + if (terms.length === 0) { + return []; + } // got the terms, make a phrase from them - var match = terms.slice(index, index + p.length); - if (match.length > 0) { - result.match = this.buildFrom(match[0].id, match.length); - } + let p = this.buildFrom(terms[0].id, terms.length); + return p.match(regs); + }; + /** match any terms before this phrase */ - var end = terms.slice(index + p.length, terms.length); - if (end.length > 0) { - result.after = this.buildFrom(end[0].id, end.length, this.pool); - } + _06Lookahead.lookBehind = function (regs) { + // if empty match string, return everything before + if (!regs) { + regs = '.*'; + } - return result; -}; + let pool = this.pool; // get a list of all terms preceding our start -var _04Insert = { - append: append_1, - prepend: prepend_1, - "delete": _delete, - replace: replace$1, - splitOn: splitOn -}; -/** return json metadata for this phrase */ + let terms = []; -var json = function json() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var world = arguments.length > 1 ? arguments[1] : undefined; - var res = {}; // text data + const getBefore = function (id) { + let term = pool.get(id); - if (options.text) { - res.text = this.text(); - } + if (!term) { + return; + } - if (options.normal) { - res.normal = this.text('normal'); - } + terms.push(term); - if (options.clean) { - res.clean = this.text('clean'); - } + if (term.prev) { + getBefore(term.prev); //recursion + } + }; - if (options.reduced) { - res.reduced = this.text('reduced'); - } + let term = pool.get(this.start); + getBefore(term.prev); - if (options.implicit) { - res.implicit = this.text('implicit'); - } + if (terms.length === 0) { + return []; + } // got the terms, make a phrase from them - if (options.root) { - res.root = this.text('root'); - } - if (options.trim) { - if (res.text) { - res.text = res.text.trim(); - } + let p = this.buildFrom(terms[terms.length - 1].id, terms.length); + return p.match(regs); + }; - if (res.normal) { - res.normal = res.normal.trim(); - } + var methods$b = Object.assign({}, _01Utils$1, _02Text, _03Change, _04Insert, _05Json, _06Lookahead); + var match = {}; - if (res.reduced) { - res.reduced = res.reduced.trim(); - } - } // terms data + const failFast$2 = function (p, regs) { + if (regs.length === 0) { + return true; + } + for (let i = 0; i < regs.length; i += 1) { + let reg = regs[i]; //logical quick-ones - if (options.terms) { - if (options.terms === true) { - options.terms = {}; - } + if (reg.optional !== true && reg.negative !== true) { + //start/end impossibilites + if (reg.start === true && i > 0) { + return true; + } + } //this is not possible - res.terms = this.terms().map(function (t) { - return t.json(options.terms, world); - }); - } - return res; -}; + if (reg.anything === true && reg.negative === true) { + return true; + } + } -var _05Json = { - json: json -}; -/** match any terms after this phrase */ + return false; + }; -var lookAhead = function lookAhead(regs) { - // if empty match string, return everything after - if (!regs) { - regs = '.*'; - } + var _02FailFast = failFast$2; + var _matchLogic = {}; + + (function (exports) { + //found a match? it's greedy? keep going! + exports.getGreedy = function (state, endReg) { + // for greedy checking, we no longer care about the reg.start + // value, and leaving it can cause failures for anchored greedy + // matches. ditto for end-greedy matches: we need an earlier non- + // ending match to succceed until we get to the actual end. + let reg = Object.assign({}, state.regs[state.r], { + start: false, + end: false + }); + let start = state.t; - var pool = this.pool; // get a list of all terms preceding our start + for (; state.t < state.terms.length; state.t += 1) { + //stop for next-reg match + if (endReg && state.terms[state.t].doesMatch(endReg, state.start_i + state.t, state.phrase_length)) { + return state.t; + } - var terms = []; + let count = state.t - start + 1; // is it max-length now? - var getAfter = function getAfter(id) { - var term = pool.get(id); + if (reg.max !== undefined && count === reg.max) { + return state.t; + } //stop here - if (!term) { - return; - } - terms.push(term); + if (state.terms[state.t].doesMatch(reg, state.start_i + state.t, state.phrase_length) === false) { + // is it too short? + if (reg.min !== undefined && count < reg.min) { + return null; + } - if (term.prev) { - getAfter(term.next); //recursion - } - }; + return state.t; + } + } - var all = this.terms(); - var lastTerm = all[all.length - 1]; - getAfter(lastTerm.next); + return state.t; + }; //'unspecific greedy' is a weird situation. - if (terms.length === 0) { - return []; - } // got the terms, make a phrase from them + exports.greedyTo = function (state, nextReg) { + let t = state.t; //if there's no next one, just go off the end! - var p = this.buildFrom(terms[0].id, terms.length); - return p.match(regs); -}; -/** match any terms before this phrase */ + if (!nextReg) { + return state.terms.length; + } //otherwise, we're looking for the next one -var lookBehind = function lookBehind(regs) { - // if empty match string, return everything before - if (!regs) { - regs = '.*'; - } + for (; t < state.terms.length; t += 1) { + if (state.terms[t].doesMatch(nextReg, state.start_i + t, state.phrase_length) === true) { + return t; + } + } //guess it doesn't exist, then. - var pool = this.pool; // get a list of all terms preceding our start - var terms = []; + return null; + }; //we have a special case where an end-anchored greedy match may need to + //start matching before the actual end; we do this by (temporarily!) + //removing the "end" property from the matching token... since this is + //very situation-specific, we *only* do this when we really need to. - var getBefore = function getBefore(id) { - var term = pool.get(id); - if (!term) { - return; - } + exports.isEndGreedy = function (reg, state) { + if (reg.end === true && reg.greedy === true) { + if (state.start_i + state.t < state.phrase_length - 1) { + let tmpReg = Object.assign({}, reg, { + end: false + }); - terms.push(term); + if (state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length) === true) { + return true; + } + } + } - if (term.prev) { - getBefore(term.prev); //recursion - } - }; + return false; + }; // match complex OR cases like (a|b|foo bar) - var term = pool.get(this.start); - getBefore(term.prev); - if (terms.length === 0) { - return []; - } // got the terms, make a phrase from them + exports.doOrBlock = function (state) { + let skipN = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + let block = state.regs[state.r]; + let wasFound = false; // do each multiword sequence + for (let c = 0; c < block.choices.length; c += 1) { + // try to match this list of tokens + let regs = block.choices[c]; + wasFound = regs.every((cr, w_index) => { + let extra = 0; + let t = state.t + w_index + skipN + extra; - var p = this.buildFrom(terms[terms.length - 1].id, terms.length); - return p.match(regs); -}; + if (state.terms[t] === undefined) { + return false; + } -var _06Lookahead = { - lookAhead: lookAhead, - lookBehind: lookBehind -}; -var methods$7 = Object.assign({}, _01Utils$1, _02Text, _03Change, _04Insert, _05Json, _06Lookahead); // try to avoid doing the match + let foundBlock = state.terms[t].doesMatch(cr, t + state.start_i, state.phrase_length); // this can be greedy - '(foo+ bar)' -var failFast$1 = function failFast(p, regs) { - if (regs.length === 0) { - return true; - } + if (foundBlock === true && cr.greedy === true) { + for (let i = 1; i < state.terms.length; i += 1) { + let term = state.terms[t + i]; - for (var i = 0; i < regs.length; i += 1) { - var reg = regs[i]; //logical quick-ones + if (term) { + let keepGoing = term.doesMatch(cr, state.start_i + i, state.phrase_length); - if (reg.optional !== true && reg.negative !== true) { - //start/end impossibilites - if (reg.start === true && i > 0) { - return true; - } - } //this is not possible + if (keepGoing === true) { + extra += 1; + } else { + break; + } + } + } + } + skipN += extra; + return foundBlock; + }); - if (reg.anything === true && reg.negative === true) { - return true; - } - } + if (wasFound) { + skipN += regs.length; + break; + } + } // we found a match - is it greedy though? - return false; -}; -var _02FailFast = failFast$1; - -var _matchLogic = createCommonjsModule(function (module, exports) { - //found a match? it's greedy? keep going! - exports.getGreedy = function (state, endReg) { - // for greedy checking, we no longer care about the reg.start - // value, and leaving it can cause failures for anchored greedy - // matches. ditto for end-greedy matches: we need an earlier non- - // ending match to succceed until we get to the actual end. - var reg = Object.assign({}, state.regs[state.r], { - start: false, - end: false - }); - var start = state.t; + if (wasFound && block.greedy === true) { + return exports.doOrBlock(state, skipN); // try it again! + } - for (; state.t < state.terms.length; state.t += 1) { - //stop for next-reg match - if (endReg && state.terms[state.t].doesMatch(endReg, state.start_i + state.t, state.phrase_length)) { - return state.t; - } + return skipN; + }; // match AND cases like (#Noun && foo) - var count = state.t - start + 1; // is it max-length now? - if (reg.max !== undefined && count === reg.max) { - return state.t; - } //stop here + exports.doAndBlock = function (state) { + let longest = 0; // all blocks must match, and we return the greediest match + let reg = state.regs[state.r]; + let allDidMatch = reg.choices.every(block => { + // for multi-word blocks, all must match + let allWords = block.every((cr, w_index) => { + let tryTerm = state.t + w_index; - if (state.terms[state.t].doesMatch(reg, state.start_i + state.t, state.phrase_length) === false) { - // is it too short? - if (reg.min !== undefined && count < reg.min) { - return null; - } + if (state.terms[tryTerm] === undefined) { + return false; + } - return state.t; - } - } + return state.terms[tryTerm].doesMatch(cr, tryTerm, state.phrase_length); + }); - return state.t; - }; //'unspecific greedy' is a weird situation. + if (allWords === true && block.length > longest) { + longest = block.length; + } + return allWords; + }); - exports.greedyTo = function (state, nextReg) { - var t = state.t; //if there's no next one, just go off the end! + if (allDidMatch === true) { + return longest; + } - if (!nextReg) { - return state.terms.length; - } //otherwise, we're looking for the next one + return false; + }; // get or create named group - for (; t < state.terms.length; t += 1) { - if (state.terms[t].doesMatch(nextReg, state.start_i + t, state.phrase_length) === true) { - return t; - } - } //guess it doesn't exist, then. + exports.getGroup = function (state, term_index, name) { + if (state.groups[state.groupId]) { + return state.groups[state.groupId]; + } + const termId = state.terms[term_index].id; + state.groups[state.groupId] = { + group: String(name), + start: termId, + length: 0 + }; + return state.groups[state.groupId]; + }; + })(_matchLogic); + + const makeId = _id; + const logic = _matchLogic; // i formally apologize for how complicated this is. + + /** tries to match a sequence of terms, starting from here */ + + const tryHere = function (terms, regs, start_i, phrase_length) { + // all the variables that matter + let state = { + t: 0, + //the term index we're on + terms: terms, + //the working slice of term objects + r: 0, + // the reg index we're on + regs: regs, + //our match conditions + groups: {}, + //all named-group matches + start_i: start_i, + // term index we're starting from + phrase_length: phrase_length, + // # of terms in the sentence + hasGroup: false, + groupId: null, + previousGroup: null + }; // we must satisfy each rule in 'regs' + + for (; state.r < regs.length; state.r += 1) { + let reg = regs[state.r]; // Check if this reg has a named capture group + + state.hasGroup = typeof reg.named === 'string' || typeof reg.named === 'number'; // Reuse previous capture group if same - return null; - }; //we have a special case where an end-anchored greedy match may need to - //start matching before the actual end; we do this by (temporarily!) - //removing the "end" property from the matching token... since this is - //very situation-specific, we *only* do this when we really need to. + if (state.hasGroup === true) { + const prev = regs[state.r - 1]; + if (prev && prev.named === reg.named && state.previousGroup) { + state.groupId = state.previousGroup; + } else { + state.groupId = makeId(reg.named); + state.previousGroup = state.groupId; + } + } //have we run-out of terms? - exports.isEndGreedy = function (reg, state) { - if (reg.end === true && reg.greedy === true) { - if (state.start_i + state.t < state.phrase_length - 1) { - var tmpReg = Object.assign({}, reg, { - end: false - }); - if (state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length) === true) { - return true; - } - } - } + if (!state.terms[state.t]) { + //are all remaining regs optional or negative? + const haveNeeds = regs.slice(state.r).some(remain => !remain.optional); - return false; - }; // match complex OR cases like (a|b|foo bar) + if (haveNeeds === false) { + break; //done! + } + return null; // die + } //support 'unspecific greedy' .* properly - exports.doOrBlock = function (state) { - var skipN = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - var block = state.regs[state.r]; - var wasFound = false; // do each multiword sequence - for (var c = 0; c < block.choices.length; c += 1) { - // try to match this list of tokens - var regs = block.choices[c]; - wasFound = regs.every(function (cr, w_index) { - var extra = 0; - var t = state.t + w_index + skipN + extra; + if (reg.anything === true && reg.greedy === true) { + let skipto = logic.greedyTo(state, regs[state.r + 1]); //maybe we couldn't find it - if (state.terms[t] === undefined) { - return false; - } + if (skipto === null || skipto === 0) { + return null; + } // ensure it's long enough - var foundBlock = state.terms[t].doesMatch(cr, t + state.start_i, state.phrase_length); // this can be greedy - '(foo+ bar)' - if (foundBlock === true && cr.greedy === true) { - for (var i = 1; i < state.terms.length; i += 1) { - var term = state.terms[t + i]; + if (reg.min !== undefined && skipto - state.t < reg.min) { + return null; + } // reduce it back, if it's too long - if (term) { - var keepGoing = term.doesMatch(cr, state.start_i + i, state.phrase_length); - if (keepGoing === true) { - extra += 1; - } else { - break; - } - } - } - } + if (reg.max !== undefined && skipto - state.t > reg.max) { + state.t = state.t + reg.max; + continue; + } // is it really this easy?.... - skipN += extra; - return foundBlock; - }); - if (wasFound) { - skipN += regs.length; - break; - } - } // we found a match - is it greedy though? + if (state.hasGroup === true) { + const g = logic.getGroup(state, state.t, reg.named); + g.length = skipto - state.t; + } + state.t = skipto; + continue; + } // support multi-word OR (a|b|foo bar) - if (wasFound && block.greedy === true) { - return exports.doOrBlock(state, skipN); // try it again! - } - return skipN; - }; // match AND cases like (#Noun && foo) + if (reg.choices !== undefined && reg.operator === 'or') { + let skipNum = logic.doOrBlock(state); + if (skipNum) { + // handle 'not' logic + if (reg.negative === true) { + return null; // die + } - exports.doAndBlock = function (state) { - var longest = 0; // all blocks must match, and we return the greediest match + if (state.hasGroup === true) { + const g = logic.getGroup(state, state.t, reg.named); + g.length += skipNum; + } - var reg = state.regs[state.r]; - var allDidMatch = reg.choices.every(function (block) { - // for multi-word blocks, all must match - var allWords = block.every(function (cr, w_index) { - var tryTerm = state.t + w_index; + state.t += skipNum; + continue; + } else if (!reg.optional) { + return null; //die + } + } // support AND (#Noun && foo) blocks - if (state.terms[tryTerm] === undefined) { - return false; - } - return state.terms[tryTerm].doesMatch(cr, tryTerm, state.phrase_length); - }); + if (reg.choices !== undefined && reg.operator === 'and') { + let skipNum = logic.doAndBlock(state); - if (allWords === true && block.length > longest) { - longest = block.length; - } + if (skipNum) { + // handle 'not' logic + if (reg.negative === true) { + return null; // die + } - return allWords; - }); + if (state.hasGroup === true) { + const g = logic.getGroup(state, state.t, reg.named); + g.length += skipNum; + } - if (allDidMatch === true) { - return longest; - } + state.t += skipNum; + continue; + } else if (!reg.optional) { + return null; //die + } + } // ok, finally test the term/reg - return false; - }; // get or create named group + let term = state.terms[state.t]; + let doesMatch = term.doesMatch(reg, state.start_i + state.t, state.phrase_length); - exports.getGroup = function (state, term_index, name) { - if (state.groups[state.groupId]) { - return state.groups[state.groupId]; - } + if (reg.anything === true || doesMatch === true || logic.isEndGreedy(reg, state)) { + let startAt = state.t; // if it's a negative optional match... :0 - var termId = state.terms[term_index].id; - state.groups[state.groupId] = { - group: String(name), - start: termId, - length: 0 - }; - return state.groups[state.groupId]; - }; -}); -/** tries to match a sequence of terms, starting from here */ - - -var tryHere = function tryHere(terms, regs, start_i, phrase_length) { - // all the variables that matter - var state = { - t: 0, - //the term index we're on - terms: terms, - //the working slice of term objects - r: 0, - // the reg index we're on - regs: regs, - //our match conditions - groups: {}, - //all named-group matches - start_i: start_i, - // term index we're starting from - phrase_length: phrase_length, - // # of terms in the sentence - hasGroup: false, - groupId: null, - previousGroup: null - }; // we must satisfy each rule in 'regs' - - for (; state.r < regs.length; state.r += 1) { - var reg = regs[state.r]; // Check if this reg has a named capture group - - state.hasGroup = typeof reg.named === 'string' || typeof reg.named === 'number'; // Reuse previous capture group if same - - if (state.hasGroup === true) { - var prev = regs[state.r - 1]; - - if (prev && prev.named === reg.named && state.previousGroup) { - state.groupId = state.previousGroup; - } else { - state.groupId = _id(reg.named); - state.previousGroup = state.groupId; - } - } //have we run-out of terms? + if (reg.optional && regs[state.r + 1] && reg.negative) { + continue; + } // okay, it was a match, but if it's optional too, + // we should check the next reg too, to skip it? - if (!state.terms[state.t]) { - //are all remaining regs optional or negative? - var haveNeeds = regs.slice(state.r).some(function (remain) { - return !remain.optional; - }); + if (reg.optional && regs[state.r + 1]) { + // does the next reg match it too? + let nextRegMatched = term.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length); - if (haveNeeds === false) { - break; //done! - } + if (reg.negative || nextRegMatched) { + // but does the next reg match the next term?? + // only skip if it doesn't + let nextTerm = state.terms[state.t + 1]; - return null; // die - } //support 'unspecific greedy' .* properly + if (!nextTerm || !nextTerm.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length)) { + state.r += 1; + } + } + } //advance to the next term! - if (reg.anything === true && reg.greedy === true) { - var skipto = _matchLogic.greedyTo(state, regs[state.r + 1]); // ensure it's long enough + state.t += 1; //check any ending '$' flags + if (reg.end === true) { + //if this isn't the last term, refuse the match + if (state.t !== state.terms.length && reg.greedy !== true) { + return null; //die + } + } //try keep it going! - if (reg.min !== undefined && skipto - state.t < reg.min) { - return null; - } // reduce it back, if it's too long + if (reg.greedy === true) { + state.t = logic.getGreedy(state, regs[state.r + 1]); - if (reg.max !== undefined && skipto - state.t > reg.max) { - state.t = state.t + reg.max; - continue; - } + if (state.t === null) { + return null; //greedy was too short + } - if (skipto === null) { - return null; //couldn't find it - } // is it really this easy?.... + if (reg.min && reg.min > state.t) { + return null; //greedy was too short + } // if this was also an end-anchor match, check to see we really + // reached the end - if (state.hasGroup === true) { - var g = _matchLogic.getGroup(state, state.t, reg.named); + if (reg.end === true && state.start_i + state.t !== phrase_length) { + return null; //greedy didn't reach the end + } + } - g.length = skipto - state.t; - } + if (state.hasGroup === true) { + // Get or create capture group + const g = logic.getGroup(state, startAt, reg.named); // Update group - add greedy or increment length - state.t = skipto; - continue; - } // support multi-word OR (a|b|foo bar) + if (state.t > 1 && reg.greedy) { + g.length += state.t - startAt; + } else { + g.length++; + } + } + continue; + } // ok, it doesn't match. + // did it *actually match* a negative? - if (reg.choices !== undefined && reg.operator === 'or') { - var skipNum = _matchLogic.doOrBlock(state); - if (skipNum) { - // handle 'not' logic - if (reg.negative === true) { - return null; // die - } + if (reg.negative) { + let tmpReg = Object.assign({}, reg); + tmpReg.negative = false; // try removing it - if (state.hasGroup === true) { - var _g = _matchLogic.getGroup(state, state.t, reg.named); + let foundNeg = state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length); - _g.length += skipNum; - } + if (foundNeg === true) { + return null; //bye! + } + } //bah, who cares, keep going - state.t += skipNum; - continue; - } else if (!reg.optional) { - return null; //die - } - } // support AND (#Noun && foo) blocks + if (reg.optional === true) { + continue; + } // should we skip-over an implicit word? - if (reg.choices !== undefined && reg.operator === 'and') { - var _skipNum = _matchLogic.doAndBlock(state); - if (_skipNum) { - // handle 'not' logic - if (reg.negative === true) { - return null; // die - } + if (state.terms[state.t].isImplicit() && regs[state.r - 1] && state.terms[state.t + 1]) { + // if the last match was implicit too, we're missing a word. + if (state.terms[state.t - 1] && state.terms[state.t - 1].implicit === regs[state.r - 1].word) { + return null; + } // does the next one match? - if (state.hasGroup === true) { - var _g2 = _matchLogic.getGroup(state, state.t, reg.named); - _g2.length += _skipNum; + if (state.terms[state.t + 1].doesMatch(reg, state.start_i + state.t, state.phrase_length)) { + state.t += 2; + continue; + } } - state.t += _skipNum; - continue; - } else if (!reg.optional) { return null; //die - } - } // ok, finally test the term/reg + } //return our result - var term = state.terms[state.t]; - var doesMatch = term.doesMatch(reg, state.start_i + state.t, state.phrase_length); + return { + match: state.terms.slice(0, state.t), + groups: state.groups + }; + }; - if (reg.anything === true || doesMatch === true || _matchLogic.isEndGreedy(reg, state)) { - var startAt = state.t; // if it's a negative optional match... :0 + var _03TryMatch = tryHere; - if (reg.optional && regs[state.r + 1] && reg.negative) { - continue; - } // okay, it was a match, but if it's optional too, - // we should check the next reg too, to skip it? + const postProcess$3 = function (terms, regs, matches) { + if (!matches || matches.length === 0) { + return matches; + } // ensure end reg has the end term - if (reg.optional && regs[state.r + 1]) { - // does the next reg match it too? - var nextRegMatched = term.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length); + let atEnd = regs.some(r => r.end); - if (reg.negative || nextRegMatched) { - // but does the next reg match the next term?? - // only skip if it doesn't - var nextTerm = state.terms[state.t + 1]; + if (atEnd) { + let lastTerm = terms[terms.length - 1]; + matches = matches.filter(_ref => { + let { + match: arr + } = _ref; + return arr.indexOf(lastTerm) !== -1; + }); + } - if (!nextTerm || !nextTerm.doesMatch(regs[state.r + 1], state.start_i + state.t, state.phrase_length)) { - state.r += 1; - } - } - } //advance to the next term! + return matches; + }; + var _04PostProcess = postProcess$3; // suffixes: ? ] + * $ {2,6} ~ + // [\?\]\+\*\$~]* + // prefixes: ! [ ^ + // [\!\[\^]* + // match 'foo /yes/' and not 'foo/no/bar' - state.t += 1; //check any ending '$' flags + const bySlashes = /(?:^|\s)([\!\[\^]*(?:<[^<]*>)?\/.*?[^\\\/]\/[\?\]\+\*\$~]*)(?:\s|$)/; // match '(yes) but not foo(no)bar' - if (reg.end === true) { - //if this isn't the last term, refuse the match - if (state.t !== state.terms.length && reg.greedy !== true) { - return null; //die - } - } //try keep it going! + const byParentheses = /([\!\[\^]*(?:<[^<]*>)?\([^\)]+[^\\\)]\)[\?\]\+\*\$~]*)(?:\s|$)/; // okay + const byWord = / /g; - if (reg.greedy === true) { - state.t = _matchLogic.getGreedy(state, regs[state.r + 1]); + const isBlock = str => { + return /^[\!\[\^]*(<[^<]*>)?\(/.test(str) && /\)[\?\]\+\*\$~]*$/.test(str); + }; - if (state.t === null) { - return null; //greedy was too short - } + const isReg = str => { + return /^[\!\[\^]*(<[^<]*>)?\//.test(str) && /\/[\?\]\+\*\$~]*$/.test(str); + }; - if (reg.min && reg.min > state.t) { - return null; //greedy was too short - } // if this was also an end-anchor match, check to see we really - // reached the end + const cleanUp = function (arr) { + arr = arr.map(str => str.trim()); + arr = arr.filter(str => str); + return arr; + }; + const parseBlocks$1 = function (txt) { + // parse by /regex/ first + let arr = txt.split(bySlashes); + let res = []; // parse by (blocks), next - if (reg.end === true && state.start_i + state.t !== phrase_length) { - return null; //greedy didn't reach the end + arr.forEach(str => { + if (isReg(str)) { + res.push(str); + return; } - } - if (state.hasGroup === true) { - // Get or create capture group - var _g3 = _matchLogic.getGroup(state, startAt, reg.named); // Update group - add greedy or increment length - - - if (state.t > 1 && reg.greedy) { - _g3.length += state.t - startAt; + res = res.concat(str.split(byParentheses)); + }); + res = cleanUp(res); // split by spaces, now + + let final = []; + res.forEach(str => { + if (isBlock(str)) { + final.push(str); + } else if (isReg(str)) { + final.push(str); } else { - _g3.length++; + final = final.concat(str.split(byWord)); } - } + }); + final = cleanUp(final); + return final; + }; - continue; - } // ok, it doesn't match. - // did it *actually match* a negative? + var _01ParseBlocks = parseBlocks$1; // console.log('(one two) (upto) [#Date+]'.split(byParentheses)) + + /* break-down a match expression into this: + { + word:'', + tag:'', + regex:'', + start:false, + end:false, + negative:false, + anything:false, + greedy:false, + optional:false, + named:'', + choices:[], + } + */ + + const hasMinMax = /\{([0-9]+,?[0-9]*)\}/; + const andSign = /&&/; + const captureName = new RegExp(/^<\s*?(\S+)\s*?>/); + + const titleCase$2 = str => { + return str.charAt(0).toUpperCase() + str.substr(1); + }; + const end = function (str) { + return str[str.length - 1]; + }; - if (reg.negative) { - var tmpReg = Object.assign({}, reg); - tmpReg.negative = false; // try removing it + const start = function (str) { + return str[0]; + }; - var foundNeg = state.terms[state.t].doesMatch(tmpReg, state.start_i + state.t, state.phrase_length); + const stripStart = function (str) { + return str.substr(1); + }; - if (foundNeg === true) { - return null; //bye! - } - } //bah, who cares, keep going + const stripEnd = function (str) { + return str.substr(0, str.length - 1); + }; + const stripBoth = function (str) { + str = stripStart(str); + str = stripEnd(str); + return str; + }; // - if (reg.optional === true) { - continue; - } // should we skip-over an implicit word? + const parseToken$1 = function (w) { + let obj = {}; //collect any flags (do it twice) - if (state.terms[state.t].isImplicit() && regs[state.r - 1] && state.terms[state.t + 1]) { - // if the last match was implicit too, we're missing a word. - if (state.terms[state.t - 1] && state.terms[state.t - 1].implicit === regs[state.r - 1].word) { - return null; - } // does the next one match? + for (let i = 0; i < 2; i += 1) { + //end-flag + if (end(w) === '$') { + obj.end = true; + w = stripEnd(w); + } //front-flag - if (state.terms[state.t + 1].doesMatch(reg, state.start_i + state.t, state.phrase_length)) { - state.t += 2; - continue; - } - } + if (start(w) === '^') { + obj.start = true; + w = stripStart(w); + } //capture group (this one can span multiple-terms) - return null; //die - } //return our result + if (start(w) === '[' || end(w) === ']') { + obj.named = true; - return { - match: state.terms.slice(0, state.t), - groups: state.groups - }; -}; + if (start(w) === '[') { + obj.groupType = end(w) === ']' ? 'single' : 'start'; + } else { + obj.groupType = 'end'; + } -var _03TryMatch = tryHere; // final checks on the validity of our results + w = w.replace(/^\[/, ''); + w = w.replace(/\]$/, ''); // Use capture group name -var postProcess$1 = function postProcess(terms, regs, matches) { - if (!matches || matches.length === 0) { - return matches; - } // ensure end reg has the end term + if (start(w) === '<') { + const res = captureName.exec(w); + if (res.length >= 2) { + obj.named = res[1]; + w = w.replace(res[0], ''); + } + } + } //back-flags - var atEnd = regs.some(function (r) { - return r.end; - }); - if (atEnd) { - var lastTerm = terms[terms.length - 1]; - matches = matches.filter(function (_ref) { - var arr = _ref.match; - return arr.indexOf(lastTerm) !== -1; - }); - } + if (end(w) === '+') { + obj.greedy = true; + w = stripEnd(w); + } - return matches; -}; + if (w !== '*' && end(w) === '*' && w !== '\\*') { + obj.greedy = true; + w = stripEnd(w); + } -var _04PostProcess = postProcess$1; // supported suffix-flags: -// suffixes: ? ] + * $ {2,6} ~ -// [\?\]\+\*\$~]* -// prefixes: ! [ ^ -// [\!\[\^]* -// match 'foo /yes/' and not 'foo/no/bar' + if (end(w) === '?') { + obj.optional = true; + w = stripEnd(w); + } -var bySlashes = /(?:^|\s)([\!\[\^]*(?:<[^<]*>)?\/.*?[^\\\/]\/[\?\]\+\*\$~]*)(?:\s|$)/; // match '(yes) but not foo(no)bar' + if (start(w) === '!') { + obj.negative = true; // obj.optional = true -var byParentheses = /([\!\[\^]*(?:<[^<]*>)?\([^\)]+[^\\\)]\)[\?\]\+\*\$~]*)(?:\s|$)/; // okay + w = stripStart(w); + } //wrapped-flags -var byWord = / /g; -var isBlock = function isBlock(str) { - return /^[\!\[\^]*(<[^<]*>)?\(/.test(str) && /\)[\?\]\+\*\$~]*$/.test(str); -}; + if (start(w) === '(' && end(w) === ')') { + // support (one && two) + if (andSign.test(w)) { + obj.choices = w.split(andSign); + obj.operator = 'and'; + } else { + obj.choices = w.split('|'); + obj.operator = 'or'; + } //remove '(' and ')' -var isReg = function isReg(str) { - return /^[\!\[\^]*(<[^<]*>)?\//.test(str) && /\/[\?\]\+\*\$~]*$/.test(str); -}; -var cleanUp$1 = function cleanUp(arr) { - arr = arr.map(function (str) { - return str.trim(); - }); - arr = arr.filter(function (str) { - return str; - }); - return arr; -}; + obj.choices[0] = stripStart(obj.choices[0]); + let last = obj.choices.length - 1; + obj.choices[last] = stripEnd(obj.choices[last]); // clean up the results -var parseBlocks = function parseBlocks(txt) { - // parse by /regex/ first - var arr = txt.split(bySlashes); - var res = []; // parse by (blocks), next + obj.choices = obj.choices.map(s => s.trim()); + obj.choices = obj.choices.filter(s => s); //recursion alert! - arr.forEach(function (str) { - if (isReg(str)) { - res.push(str); - return; - } + obj.choices = obj.choices.map(str => { + return str.split(/ /g).map(parseToken$1); + }); + w = ''; + } //regex - res = res.concat(str.split(byParentheses)); - }); - res = cleanUp$1(res); // split by spaces, now - - var _final = []; - res.forEach(function (str) { - if (isBlock(str)) { - _final.push(str); - } else if (isReg(str)) { - _final.push(str); - } else { - _final = _final.concat(str.split(byWord)); - } - }); - _final = cleanUp$1(_final); - return _final; -}; -var _01ParseBlocks = parseBlocks; // console.log('(one two) (upto) [#Date+]'.split(byParentheses)) + if (start(w) === '/' && end(w) === '/') { + w = stripBoth(w); + obj.regex = new RegExp(w); //potential vuln - security/detect-non-literal-regexp -/* break-down a match expression into this: -{ - word:'', - tag:'', - regex:'', + return obj; + } //soft-match - start:false, - end:false, - negative:false, - anything:false, - greedy:false, - optional:false, - named:'', - choices:[], -} -*/ + if (start(w) === '~' && end(w) === '~') { + w = stripBoth(w); + obj.soft = true; + obj.word = w; + return obj; + } + } // support #Tag{1,9} -var hasMinMax = /\{([0-9]+,?[0-9]*)\}/; -var andSign = /&&/; -var captureName = new RegExp(/^<\s*?(\S+)\s*?>/); -var titleCase$2 = function titleCase(str) { - return str.charAt(0).toUpperCase() + str.substr(1); -}; + if (hasMinMax.test(w) === true) { + w = w.replace(hasMinMax, (a, b) => { + let arr = b.split(/,/g); -var end = function end(str) { - return str[str.length - 1]; -}; + if (arr.length === 1) { + // '{3}' Exactly three times + obj.min = Number(arr[0]); + obj.max = Number(arr[0]); + } else { + // '{2,4}' Two to four times + // '{3,}' Three or more times + obj.min = Number(arr[0]); + obj.max = Number(arr[1] || 999); + } // use same method as '+' -var start = function start(str) { - return str[0]; -}; -var stripStart = function stripStart(str) { - return str.substr(1); -}; + obj.greedy = true; // 0 as min means the same as '?' -var stripEnd = function stripEnd(str) { - return str.substr(0, str.length - 1); -}; + obj.optional = true; + return ''; + }); + } //do the actual token content -var stripBoth = function stripBoth(str) { - str = stripStart(str); - str = stripEnd(str); - return str; -}; // + if (start(w) === '#') { + obj.tag = stripStart(w); + obj.tag = titleCase$2(obj.tag); + return obj; + } //dynamic function on a term object -var parseToken = function parseToken(w) { - var obj = {}; //collect any flags (do it twice) - for (var i = 0; i < 2; i += 1) { - //end-flag - if (end(w) === '$') { - obj.end = true; - w = stripEnd(w); - } //front-flag + if (start(w) === '@') { + obj.method = stripStart(w); + return obj; + } + if (w === '.') { + obj.anything = true; + return obj; + } //support alone-astrix - if (start(w) === '^') { - obj.start = true; - w = stripStart(w); - } //capture group (this one can span multiple-terms) + if (w === '*') { + obj.anything = true; + obj.greedy = true; + obj.optional = true; + return obj; + } - if (start(w) === '[' || end(w) === ']') { - obj.named = true; + if (w) { + //somehow handle encoded-chars? + w = w.replace('\\*', '*'); + w = w.replace('\\.', '.'); + obj.word = w.toLowerCase(); + } - if (start(w) === '[') { - obj.groupType = end(w) === ']' ? 'single' : 'start'; - } else { - obj.groupType = 'end'; - } + return obj; + }; - w = w.replace(/^\[/, ''); - w = w.replace(/\]$/, ''); // Use capture group name + var _02ParseToken = parseToken$1; - if (start(w) === '<') { - var res = captureName.exec(w); + const nameGroups = function (tokens) { + let convert = false; + let index = -1; + let current; //'fill in' capture groups between start-end - if (res.length >= 2) { - obj.named = res[1]; - w = w.replace(res[0], ''); - } - } - } //back-flags + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; // Give name to un-named single tokens + if (token.groupType === 'single' && token.named === true) { + index += 1; + token.named = index; + continue; + } // Start converting tokens - if (end(w) === '+') { - obj.greedy = true; - w = stripEnd(w); - } - if (w !== '*' && end(w) === '*' && w !== '\\*') { - obj.greedy = true; - w = stripEnd(w); - } + if (token.groupType === 'start') { + convert = true; - if (end(w) === '?') { - obj.optional = true; - w = stripEnd(w); - } + if (typeof token.named === 'string' || typeof token.named === 'number') { + current = token.named; + } else { + index += 1; + current = index; + } + } // Ensure this token has the right name - if (start(w) === '!') { - obj.negative = true; // obj.optional = true - w = stripStart(w); - } //wrapped-flags + if (convert) { + token.named = current; + } // Stop converting tokens - if (start(w) === '(' && end(w) === ')') { - // support (one && two) - if (andSign.test(w)) { - obj.choices = w.split(andSign); - obj.operator = 'and'; - } else { - obj.choices = w.split('|'); - obj.operator = 'or'; - } //remove '(' and ')' + if (token.groupType === 'end') { + convert = false; + } + } + return tokens; + }; // optimize an 'or' lookup, when the (a|b|c) list is simple or multi-word - obj.choices[0] = stripStart(obj.choices[0]); - var last = obj.choices.length - 1; - obj.choices[last] = stripEnd(obj.choices[last]); // clean up the results - obj.choices = obj.choices.map(function (s) { - return s.trim(); - }); - obj.choices = obj.choices.filter(function (s) { - return s; - }); //recursion alert! + const doFastOrMode = function (tokens) { + return tokens.map(token => { + if (token.choices !== undefined) { + // are they all straight-up words? then optimize them. + let shouldPack = token.choices.every(block => { + if (block.length !== 1) { + return false; + } - obj.choices = obj.choices.map(function (str) { - return str.split(/ /g).map(parseToken); - }); - w = ''; - } //regex + let reg = block[0]; + if (reg.word !== undefined && reg.negative !== true && reg.optional !== true && reg.method !== true) { + return true; //reg is simple-enough + } - if (start(w) === '/' && end(w) === '/') { - w = stripBoth(w); - obj.regex = new RegExp(w); //potential vuln - security/detect-non-literal-regexp + return false; + }); - return obj; - } //soft-match + if (shouldPack === true) { + let oneOf = {}; + token.choices.forEach(block => { + oneOf[block[0].word] = true; + }); + token.fastOr = oneOf; + delete token.choices; + } + } + return token; + }); + }; // allow multiword OR (foo|one two) + // const doMultiWord = function (tokens) { + // return tokens.map(token => { + // if (token.choices !== undefined) { + // let isMulti = token.choices.find(o => hasASpace.test(o.word)) || false + // if (isMulti !== false) { + // token.multiword = true + // // turn all choices into arrays + // token.choices = token.choices.map(choice => { + // if (choice.word) { + // choice.sequence = choice.word.split(hasASpace) + // delete choice.word + // } + // return choice + // }) + // } + // } + // return token + // }) + // } + // const doBlockMode = function (tokens) { + // return tokens.map(token => { + // // we've already setup fastOr mode + // if (token.choices !== undefined) { + // // console.log(token) + // } + // return token + // }) + // } - if (start(w) === '~' && end(w) === '~') { - w = stripBoth(w); - obj.soft = true; - obj.word = w; - return obj; - } - } // support #Tag{1,9} + const postProcess$2 = function (tokens) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + // ensure all capture groups are filled between start and end + // give all capture groups names + let count = tokens.filter(t => t.groupType).length; - if (hasMinMax.test(w) === true) { - w = w.replace(hasMinMax, function (a, b) { - var arr = b.split(/,/g); + if (count > 0) { + tokens = nameGroups(tokens); + } // convert 'choices' format to 'fastOr' format - if (arr.length === 1) { - // '{3}' Exactly three times - obj.min = Number(arr[0]); - obj.max = Number(arr[0]); - } else { - // '{2,4}' Two to four times - // '{3,}' Three or more times - obj.min = Number(arr[0]); - obj.max = Number(arr[1] || 999); - } // use same method as '+' + if (!opts.fuzzy) { + tokens = doFastOrMode(tokens); + } // support multiword OR (foo bar|baz) + // tokens = doMultiWord(tokens) + // support (one two three) + // tokens = doBlockMode(tokens) - obj.greedy = true; // 0 as min means the same as '?' - obj.optional = true; - return ''; - }); - } //do the actual token content + return tokens; + }; + var _03PostProcess = postProcess$2; + const parseBlocks = _01ParseBlocks; + const parseToken = _02ParseToken; + const postProcess$1 = _03PostProcess; - if (start(w) === '#') { - obj.tag = stripStart(w); - obj.tag = titleCase$2(obj.tag); - return obj; - } //dynamic function on a term object + const isArray$2 = function (arr) { + return Object.prototype.toString.call(arr) === '[object Array]'; + }; //turn an array into a 'choices' list - if (start(w) === '@') { - obj.method = stripStart(w); - return obj; - } + const byArray = function (arr) { + let blocks = arr.map(s => { + return [{ + word: s + }]; + }); + return [{ + choices: blocks, + operator: 'or' + }]; + }; // turn a Doc object into a reg of ids to lookup - if (w === '.') { - obj.anything = true; - return obj; - } //support alone-astrix + const fromDoc = function (doc) { + if (!doc || !doc.list || !doc.list[0]) { + return []; + } - if (w === '*') { - obj.anything = true; - obj.greedy = true; - obj.optional = true; - return obj; - } + let regs = []; + doc.list.forEach(p => { + let ids = []; + p.terms().forEach(t => { + ids.push(t.id); + }); + regs.push(ids); + }); + return [{ + idBlocks: regs + }]; + }; // add fuzziness etc to each reg - if (w) { - //somehow handle encoded-chars? - w = w.replace('\\*', '*'); - w = w.replace('\\.', '.'); - obj.word = w.toLowerCase(); - } - return obj; -}; + const addOptions = function (tokens, opts) { + // add default fuzzy-search limit + if (opts.fuzzy === true) { + opts.fuzzy = 0.85; + } -var _02ParseToken = parseToken; // name any [unnamed] capture-groups with a number + if (typeof opts.fuzzy === 'number') { + tokens = tokens.map(reg => { + // add a fuzzy-match on 'word' tokens + if (opts.fuzzy > 0 && reg.word) { + reg.fuzzy = opts.fuzzy; + } //add it to or|and choices too -var nameGroups = function nameGroups(tokens) { - var convert = false; - var index = -1; - var current; //'fill in' capture groups between start-end - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; // Give name to un-named single tokens + if (reg.choices) { + reg.choices.forEach(block => { + block.forEach(r => { + r.fuzzy = opts.fuzzy; + }); + }); + } - if (token.groupType === 'single' && token.named === true) { - index += 1; - token.named = index; - continue; - } // Start converting tokens + return reg; + }); + } + return tokens; + }; + /** parse a match-syntax string into json */ - if (token.groupType === 'start') { - convert = true; - if (typeof token.named === 'string' || typeof token.named === 'number') { - current = token.named; - } else { - index += 1; - current = index; - } - } // Ensure this token has the right name + const syntax$1 = function (input) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + // fail-fast + if (input === null || input === undefined || input === '') { + return []; + } //try to support a ton of different formats: - if (convert) { - token.named = current; - } // Stop converting tokens + if (typeof input === 'object') { + if (isArray$2(input)) { + if (input.length === 0 || !input[0]) { + return []; + } //is it a pre-parsed reg-list? - if (token.groupType === 'end') { - convert = false; - } - } - return tokens; -}; // optimize an 'or' lookup, when the (a|b|c) list is simple or multi-word + if (typeof input[0] === 'object') { + return input; + } //support a flat array of normalized words -var doFastOrMode = function doFastOrMode(tokens) { - return tokens.map(function (token) { - if (token.choices !== undefined) { - // are they all straight-up words? then optimize them. - var shouldPack = token.choices.every(function (block) { - if (block.length !== 1) { - return false; - } + if (typeof input[0] === 'string') { + return byArray(input); + } + } //support passing-in a compromise object as a match - var reg = block[0]; - if (reg.word !== undefined && reg.negative !== true && reg.optional !== true && reg.method !== true) { - return true; //reg is simple-enough + if (input && input.isA === 'Doc') { + return fromDoc(input); } - return false; - }); - - if (shouldPack === true) { - var oneOf = {}; - token.choices.forEach(function (block) { - oneOf[block[0].word] = true; - }); - token.fastOr = oneOf; - delete token.choices; + return []; } - } - - return token; - }); -}; // allow multiword OR (foo|one two) -// const doMultiWord = function (tokens) { -// return tokens.map(token => { -// if (token.choices !== undefined) { -// let isMulti = token.choices.find(o => hasASpace.test(o.word)) || false -// if (isMulti !== false) { -// token.multiword = true -// // turn all choices into arrays -// token.choices = token.choices.map(choice => { -// if (choice.word) { -// choice.sequence = choice.word.split(hasASpace) -// delete choice.word -// } -// return choice -// }) -// } -// } -// return token -// }) -// } -// const doBlockMode = function (tokens) { -// return tokens.map(token => { -// // we've already setup fastOr mode -// if (token.choices !== undefined) { -// // console.log(token) -// } -// return token -// }) -// } - - -var postProcess = function postProcess(tokens) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // ensure all capture groups are filled between start and end - // give all capture groups names - - var count = tokens.filter(function (t) { - return t.groupType; - }).length; - - if (count > 0) { - tokens = nameGroups(tokens); - } // convert 'choices' format to 'fastOr' format - - - if (!opts.fuzzy) { - tokens = doFastOrMode(tokens); - } // support multiword OR (foo bar|baz) - // tokens = doMultiWord(tokens) - // support (one two three) - // tokens = doBlockMode(tokens) - - - return tokens; -}; -var _03PostProcess = postProcess; + if (typeof input === 'number') { + input = String(input); //go for it? + } -var isArray$2 = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; -}; //turn an array into a 'choices' list + let tokens = parseBlocks(input); //turn them into objects + tokens = tokens.map(str => parseToken(str)); //clean up anything weird -var byArray = function byArray(arr) { - var blocks = arr.map(function (s) { - return [{ - word: s - }]; - }); - return [{ - choices: blocks, - operator: 'or' - }]; -}; // turn a Doc object into a reg of ids to lookup + tokens = postProcess$1(tokens, opts); // add fuzzy limits, etc + tokens = addOptions(tokens, opts); // console.log(tokens) -var fromDoc = function fromDoc(doc) { - if (!doc || !doc.list || !doc.list[0]) { - return []; - } + return tokens; + }; - var regs = []; - doc.list.forEach(function (p) { - var ids = []; - p.terms().forEach(function (t) { - ids.push(t.id); - }); - regs.push(ids); - }); - return [{ - idBlocks: regs - }]; -}; // add fuzziness etc to each reg + var matchSyntax = syntax$1; // console.log(syntax('[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)')) + // take a phrase and find any of the idBlocks in it + const idLookup$1 = function (terms, regs) { + let matches = []; + let blocklist = regs[0].idBlocks; -var addOptions = function addOptions(tokens, opts) { - // add default fuzzy-search limit - if (opts.fuzzy === true) { - opts.fuzzy = 0.85; - } + for (let t = 0; t < terms.length; t += 1) { + blocklist.forEach(block => { + if (block.length === 0) { + return; + } - if (typeof opts.fuzzy === 'number') { - tokens = tokens.map(function (reg) { - // add a fuzzy-match on 'word' tokens - if (opts.fuzzy > 0 && reg.word) { - reg.fuzzy = opts.fuzzy; - } //add it to or|and choices too + let foundAll = block.every((id, i) => { + return terms[t + i].id === id; + }); + if (foundAll) { + matches.push({ + match: terms.slice(t, t + block.length) + }); // skip top-loop forward - if (reg.choices) { - reg.choices.forEach(function (block) { - block.forEach(function (r) { - r.fuzzy = opts.fuzzy; - }); + t += block.length - 1; + } }); } - return reg; - }); - } - - return tokens; -}; -/** parse a match-syntax string into json */ + return matches; + }; + var idLookup_1 = idLookup$1; + const failFast$1 = _02FailFast; + const tryMatch = _03TryMatch; + const postProcess = _04PostProcess; + const syntax = matchSyntax; + const idLookup = idLookup_1; + /** returns a simple array of arrays */ -var syntax = function syntax(input) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // fail-fast + const matchAll$2 = function (p, regs) { + let matchOne = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - if (input === null || input === undefined || input === '') { - return []; - } //try to support a ton of different formats: + //if we forgot to parse it.. + if (typeof regs === 'string') { + regs = syntax(regs); + } //try to dismiss it, at-once - if (_typeof(input) === 'object') { - if (isArray$2(input)) { - if (input.length === 0 || !input[0]) { + if (failFast$1(p, regs) === true) { return []; - } //is it a pre-parsed reg-list? + } //any match needs to be this long, at least - if (_typeof(input[0]) === 'object') { - return input; - } //support a flat array of normalized words + const minLength = regs.filter(r => r.optional !== true && r.negative !== true).length; + let terms = p.terms(); + let matches = []; // these id-lookups can be super-fast + if (regs[0].idBlocks) { + let res = idLookup(terms, regs); - if (typeof input[0] === 'string') { - return byArray(input); - } - } //support passing-in a compromise object as a match + if (res && res.length > 0) { + return postProcess(terms, regs, res); + } + } //optimisation for '^' start logic - if (input && input.isA === 'Doc') { - return fromDoc(input); - } + if (regs[0].start === true) { + let res = tryMatch(terms, regs, 0, terms.length); - return []; - } + if (res && res.match && res.match.length > 0) { + res.match = res.match.filter(m => m); + matches.push(res); + } - if (typeof input === 'number') { - input = String(input); //go for it? - } + return postProcess(terms, regs, matches); + } //try starting, from every term - var tokens = _01ParseBlocks(input); //turn them into objects + for (let i = 0; i < terms.length; i += 1) { + // slice may be too short + if (i + minLength > terms.length) { + break; + } //try it! - tokens = tokens.map(function (str) { - return _02ParseToken(str); - }); //clean up anything weird - tokens = _03PostProcess(tokens, opts); // add fuzzy limits, etc + let res = tryMatch(terms.slice(i), regs, i, terms.length); - tokens = addOptions(tokens, opts); // console.log(tokens) + if (res && res.match && res.match.length > 0) { + //zoom forward! + i += res.match.length - 1; //[capture-groups] return some null responses - return tokens; -}; + res.match = res.match.filter(m => m); + matches.push(res); //ok, maybe that's enough? -var matchSyntax = syntax; // console.log(syntax('[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)')) -// match an explicit sequence of term ids -// take a phrase and find any of the idBlocks in it + if (matchOne === true) { + return postProcess(terms, regs, matches); + } + } + } -var idLookup = function idLookup(terms, regs) { - var matches = []; - var blocklist = regs[0].idBlocks; + return postProcess(terms, regs, matches); + }; - var _loop = function _loop(_t) { - blocklist.forEach(function (block) { - if (block.length === 0) { - t = _t; - return; - } + var _01MatchAll = matchAll$2; + const matchAll$1 = _01MatchAll; + /** return anything that doesn't match. + * returns a simple array of arrays + */ + + const notMatch$1 = function (p, regs) { + let found = {}; + let arr = matchAll$1(p, regs); + arr.forEach(_ref2 => { + let { + match: ts + } = _ref2; + ts.forEach(t => { + found[t.id] = true; + }); + }); //return anything not found + + let terms = p.terms(); + let result = []; + let current = []; + terms.forEach(t => { + if (found[t.id] === true) { + if (current.length > 0) { + result.push(current); + current = []; + } - var foundAll = block.every(function (id, i) { - t = _t; - return terms[_t + i].id === id; - }); + return; + } - if (foundAll) { - matches.push({ - match: terms.slice(_t, _t + block.length) - }); // skip top-loop forward + current.push(t); + }); - _t += block.length - 1; + if (current.length > 0) { + result.push(current); } - }); - t = _t; - }; - for (var t = 0; t < terms.length; t += 1) { - _loop(t); - } + return result; + }; - return matches; -}; + var not = notMatch$1; + const matchAll = _01MatchAll; + const notMatch = not; + /** return an array of matching phrases */ + + match.match = function (regs) { + let justOne = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + let matches = matchAll(this, regs, justOne); //make them phrase objects + + matches = matches.map(_ref3 => { + let { + match, + groups + } = _ref3; + let p = this.buildFrom(match[0].id, match.length, groups); + p.cache.terms = match; + return p; + }); + return matches; + }; + /** return boolean if one match is found */ -var idLookup_1 = idLookup; -/** returns a simple array of arrays */ -var matchAll = function matchAll(p, regs) { - var matchOne = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; //if we forgot to parse it.. + match.has = function (regs) { + let matches = matchAll(this, regs, true); + return matches.length > 0; + }; + /** remove all matches from the result */ - if (typeof regs === 'string') { - regs = matchSyntax(regs); - } //try to dismiss it, at-once + match.not = function (regs) { + let matches = notMatch(this, regs); //make them phrase objects - if (_02FailFast(p, regs) === true) { - return []; - } //any match needs to be this long, at least + matches = matches.map(list => { + return this.buildFrom(list[0].id, list.length); + }); + return matches; + }; + /** return a list of phrases that can have this tag */ - var minLength = regs.filter(function (r) { - return r.optional !== true && r.negative !== true; - }).length; - var terms = p.terms(); - var matches = []; // these id-lookups can be super-fast + match.canBe = function (tag, world) { + let results = []; + let terms = this.terms(); + let previous = false; - if (regs[0].idBlocks) { - var res = idLookup_1(terms, regs); + for (let i = 0; i < terms.length; i += 1) { + let can = terms[i].canBe(tag, world); - if (res && res.length > 0) { - return _04PostProcess(terms, regs, res); - } - } //optimisation for '^' start logic + if (can === true) { + if (previous === true) { + //add it to the end + results[results.length - 1].push(terms[i]); + } else { + results.push([terms[i]]); //make a new one + } + previous = can; + } + } //turn them into Phrase objects - if (regs[0].start === true) { - var _res = _03TryMatch(terms, regs, 0, terms.length); - if (_res && _res.match && _res.match.length > 0) { - _res.match = _res.match.filter(function (m) { - return m; + results = results.filter(a => a.length > 0).map(arr => { + return this.buildFrom(arr[0].id, arr.length); }); - matches.push(_res); - } - - return _04PostProcess(terms, regs, matches); - } //try starting, from every term + return results; + }; + const methods$a = methods$b; + const matchMethods = match; // const tokenize = require('../01-tokenizer') - for (var i = 0; i < terms.length; i += 1) { - // slice may be too short - if (i + minLength > terms.length) { - break; - } //try it! + class Phrase$3 { + constructor(id, length, pool) { + this.start = id; + this.length = length; + this.isA = 'Phrase'; // easier than .constructor... + Object.defineProperty(this, 'pool', { + enumerable: false, + writable: true, + value: pool + }); + Object.defineProperty(this, 'cache', { + enumerable: false, + writable: true, + value: {} + }); + Object.defineProperty(this, 'groups', { + enumerable: false, + writable: true, + value: {} + }); + } - var _res2 = _03TryMatch(terms.slice(i), regs, i, terms.length); + } + /** create a new Phrase object from an id and length */ - if (_res2 && _res2.match && _res2.match.length > 0) { - //zoom forward! - i += _res2.match.length - 1; //[capture-groups] return some null responses - _res2.match = _res2.match.filter(function (m) { - return m; - }); - matches.push(_res2); //ok, maybe that's enough? + Phrase$3.prototype.buildFrom = function (id, length, groups) { + let p = new Phrase$3(id, length, this.pool); //copy-over or replace capture-groups too - if (matchOne === true) { - return _04PostProcess(terms, regs, matches); + if (groups && Object.keys(groups).length > 0) { + p.groups = groups; + } else { + p.groups = this.groups; } - } - } - return _04PostProcess(terms, regs, matches); -}; + return p; + }; //apply methods -var _01MatchAll = matchAll; -/** return anything that doesn't match. - * returns a simple array of arrays - */ -var notMatch = function notMatch(p, regs) { - var found = {}; + Object.assign(Phrase$3.prototype, matchMethods); + Object.assign(Phrase$3.prototype, methods$a); //apply aliases - var arr = _01MatchAll(p, regs); + const aliases$1 = { + term: 'terms' + }; + Object.keys(aliases$1).forEach(k => Phrase$3.prototype[k] = Phrase$3.prototype[aliases$1[k]]); + var Phrase_1 = Phrase$3; + /** a key-value store of all terms in our Document */ + + class Pool$3 { + constructor() { + let words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + //quiet this property in console.logs + Object.defineProperty(this, 'words', { + enumerable: false, + value: words + }); + } + /** throw a new term object in */ - arr.forEach(function (_ref) { - var ts = _ref.match; - ts.forEach(function (t) { - found[t.id] = true; - }); - }); //return anything not found - var terms = p.terms(); - var result = []; - var current = []; - terms.forEach(function (t) { - if (found[t.id] === true) { - if (current.length > 0) { - result.push(current); - current = []; + add(term) { + this.words[term.id] = term; + return this; } + /** find a term by it's id */ - return; - } - current.push(t); - }); + get(id) { + return this.words[id]; + } + /** find a term by it's id */ - if (current.length > 0) { - result.push(current); - } - return result; -}; + remove(id) { + delete this.words[id]; + } -var not$1 = notMatch; -/** return an array of matching phrases */ + merge(pool) { + Object.assign(this.words, pool.words); + return this; + } + /** helper method */ -var match_1 = function match_1(regs) { - var _this = this; - var justOne = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + stats() { + return { + words: Object.keys(this.words).length + }; + } - var matches = _01MatchAll(this, regs, justOne); //make them phrase objects + } + /** make a deep-copy of all terms */ - matches = matches.map(function (_ref) { - var match = _ref.match, - groups = _ref.groups; + Pool$3.prototype.clone = function () { + let keys = Object.keys(this.words); + let words = keys.reduce((h, k) => { + let t = this.words[k].clone(); + h[t.id] = t; + return h; + }, {}); + return new Pool$3(words); + }; - var p = _this.buildFrom(match[0].id, match.length, groups); + var Pool_1 = Pool$3; - p.cache.terms = match; - return p; - }); - return matches; -}; -/** return boolean if one match is found */ + const linkTerms$2 = terms => { + terms.forEach((term, i) => { + if (i > 0) { + term.prev = terms[i - 1].id; + } + if (terms[i + 1]) { + term.next = terms[i + 1].id; + } + }); + }; -var has = function has(regs) { - var matches = _01MatchAll(this, regs, true); + var _linkTerms = linkTerms$2; // Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc. + // @spencermountain 2017 MIT + //proper nouns with exclamation marks + // const blacklist = { + // yahoo: true, + // joomla: true, + // jeopardy: true, + // } + //regs- - return matches.length > 0; -}; -/** remove all matches from the result */ + const initSplit = /(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g; + const hasSomething = /\S/; + const isAcronym$1 = /[ .][A-Z]\.? *$/i; + const hasEllipse = /(?:\u2026|\.{2,}) *$/; + const newLine = /((?:\r?\n|\r)+)/; // Match different new-line formats + const hasLetter = /[a-z0-9\u00C0-\u00FF\u00a9\u00ae\u2000-\u3300\ud000-\udfff]/i; + const startWhitespace = /^\s+/; // Start with a regex: -var not = function not(regs) { - var _this2 = this; + const naiive_split = function (text) { + let all = []; //first, split by newline - var matches = not$1(this, regs); //make them phrase objects + let lines = text.split(newLine); - matches = matches.map(function (list) { - return _this2.buildFrom(list[0].id, list.length); - }); - return matches; -}; -/** return a list of phrases that can have this tag */ + for (let i = 0; i < lines.length; i++) { + //split by period, question-mark, and exclamation-mark + let arr = lines[i].split(initSplit); + for (let o = 0; o < arr.length; o++) { + all.push(arr[o]); + } + } -var canBe$1 = function canBe(tag, world) { - var _this3 = this; + return all; + }; - var results = []; - var terms = this.terms(); - var previous = false; + const testIsAcronym = function (str, suffix) { + // early exit + if (suffix.indexOf('.') === -1) { + return false; + } - for (var i = 0; i < terms.length; i += 1) { - var can = terms[i].canBe(tag, world); + return isAcronym$1.test(str); + }; - if (can === true) { - if (previous === true) { - //add it to the end - results[results.length - 1].push(terms[i]); - } else { - results.push([terms[i]]); //make a new one + const testHasEllipse = function (str, suffix) { + // early exit + if (suffix.indexOf('.') === -1) { + return false; } - previous = can; - } - } //turn them into Phrase objects + return hasEllipse.test(str); + }; + const testHasLetter = function (suffix, prefixHasLetter) { + return prefixHasLetter || hasLetter.test(suffix); + }; + /** does this look like a sentence? */ - results = results.filter(function (a) { - return a.length > 0; - }).map(function (arr) { - return _this3.buildFrom(arr[0].id, arr.length); - }); - return results; -}; -var match = { - match: match_1, - has: has, - not: not, - canBe: canBe$1 -}; + const isSentence = function (str, suffix, abbrevs, prefixContext) { + // must have a letter + prefixContext.hasLetter = testHasLetter(suffix, prefixContext.hasLetter); -var Phrase = function Phrase(id, length, pool) { - _classCallCheck(this, Phrase); + if (!prefixContext.hasLetter) { + return false; + } // check for 'F.B.I.' - this.start = id; - this.length = length; - this.isA = 'Phrase'; // easier than .constructor... - Object.defineProperty(this, 'pool', { - enumerable: false, - writable: true, - value: pool - }); - Object.defineProperty(this, 'cache', { - enumerable: false, - writable: true, - value: {} - }); - Object.defineProperty(this, 'groups', { - enumerable: false, - writable: true, - value: {} - }); -}; -/** create a new Phrase object from an id and length */ + if (testIsAcronym(str, suffix)) { + return false; + } //check for '...' -Phrase.prototype.buildFrom = function (id, length, groups) { - var p = new Phrase(id, length, this.pool); //copy-over or replace capture-groups too + if (testHasEllipse(str, suffix)) { + return false; + } - if (groups && Object.keys(groups).length > 0) { - p.groups = groups; - } else { - p.groups = this.groups; - } + let txt = str.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/, ''); + let words = txt.split(' '); + let lastWord = words[words.length - 1].toLowerCase(); // check for 'Mr.' - return p; -}; //apply methods + if (abbrevs.hasOwnProperty(lastWord)) { + return false; + } // //check for jeopardy! + // if (blacklist.hasOwnProperty(lastWord)) { + // return false + // } -Object.assign(Phrase.prototype, match); -Object.assign(Phrase.prototype, methods$7); //apply aliases + return true; + }; -var aliases$1 = { - term: 'terms' -}; -Object.keys(aliases$1).forEach(function (k) { - return Phrase.prototype[k] = Phrase.prototype[aliases$1[k]]; -}); -var Phrase_1 = Phrase; -/** a key-value store of all terms in our Document */ + const splitSentences$1 = function (text, world) { + let abbrevs = world.cache.abbreviations; + text = text || ''; + text = String(text); + let sentences = []; // First do a greedy-split.. -var Pool = /*#__PURE__*/function () { - function Pool() { - var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + let chunks = []; // Ensure it 'smells like' a sentence - _classCallCheck(this, Pool); //quiet this property in console.logs + if (!text || typeof text !== 'string' || hasSomething.test(text) === false) { + return sentences; + } // cleanup unicode-spaces - Object.defineProperty(this, 'words', { - enumerable: false, - value: words - }); - } - /** throw a new term object in */ + text = text.replace('\xa0', ' '); // Start somewhere: + let splits = naiive_split(text); // Filter-out the crap ones - _createClass(Pool, [{ - key: "add", - value: function add(term) { - this.words[term.id] = term; - return this; - } - /** find a term by it's id */ + for (let i = 0; i < splits.length; i++) { + let s = splits[i]; - }, { - key: "get", - value: function get(id) { - return this.words[id]; - } - /** find a term by it's id */ + if (s === undefined || s === '') { + continue; + } //this is meaningful whitespace + + + if (hasSomething.test(s) === false) { + //add it to the last one + if (chunks[chunks.length - 1]) { + chunks[chunks.length - 1] += s; + continue; + } else if (splits[i + 1]) { + //add it to the next one + splits[i + 1] = s + splits[i + 1]; + continue; + } + } //else, only whitespace, no terms, no sentence - }, { - key: "remove", - value: function remove(id) { - delete this.words[id]; - } - }, { - key: "merge", - value: function merge(pool) { - Object.assign(this.words, pool.words); - return this; - } - /** helper method */ - }, { - key: "stats", - value: function stats() { - return { - words: Object.keys(this.words).length - }; - } - }]); + chunks.push(s); + } //detection of non-sentence chunks: + //loop through these chunks, and join the non-sentence chunks back together.. - return Pool; -}(); -/** make a deep-copy of all terms */ + let suffix = chunks[0] || ''; + const prefixContext = { + hasLetter: false + }; -Pool.prototype.clone = function () { - var _this = this; + for (let i = 0; i < chunks.length; i++) { + let c = chunks[i]; //should this chunk be combined with the next one? + + if (chunks[i + 1] && isSentence(c, suffix, abbrevs, prefixContext) === false) { + suffix = chunks[i + 1] || ''; + chunks[i + 1] = c + suffix; + } else if (c && c.length > 0) { + //&& hasLetter.test(c) + //this chunk is a proper sentence.. + sentences.push(c); + suffix = chunks[i + 1] || ''; + prefixContext.hasLetter = false; + } - var keys = Object.keys(this.words); - var words = keys.reduce(function (h, k) { - var t = _this.words[k].clone(); + chunks[i] = ''; + } //if we never got a sentence, return the given text - h[t.id] = t; - return h; - }, {}); - return new Pool(words); -}; -var Pool_1 = Pool; //add forward/backward 'linked-list' prev/next ids + if (sentences.length === 0) { + return [text]; + } //move whitespace to the ends of sentences, when possible + //['hello',' world'] -> ['hello ','world'] -var linkTerms = function linkTerms(terms) { - terms.forEach(function (term, i) { - if (i > 0) { - term.prev = terms[i - 1].id; - } - if (terms[i + 1]) { - term.next = terms[i + 1].id; - } - }); -}; + for (let i = 1; i < sentences.length; i += 1) { + let ws = sentences[i].match(startWhitespace); -var _linkTerms = linkTerms; //(Rule-based sentence boundary segmentation) - chop given text into its proper sentences. -// Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc. -// @spencermountain 2017 MIT -//proper nouns with exclamation marks -// const blacklist = { -// yahoo: true, -// joomla: true, -// jeopardy: true, -// } -//regs- - -var initSplit = /(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g; -var hasSomething = /\S/; -var isAcronym$1 = /[ .][A-Z]\.? *$/i; -var hasEllipse = /(?:\u2026|\.{2,}) *$/; -var newLine = /((?:\r?\n|\r)+)/; // Match different new-line formats - -var hasLetter = /[a-z0-9\u00C0-\u00FF\u00a9\u00ae\u2000-\u3300\ud000-\udfff]/i; -var startWhitespace = /^\s+/; // Start with a regex: - -var naiive_split = function naiive_split(text) { - var all = []; //first, split by newline - - var lines = text.split(newLine); - - for (var i = 0; i < lines.length; i++) { - //split by period, question-mark, and exclamation-mark - var arr = lines[i].split(initSplit); - - for (var o = 0; o < arr.length; o++) { - all.push(arr[o]); - } - } + if (ws !== null) { + sentences[i - 1] += ws[0]; + sentences[i] = sentences[i].replace(startWhitespace, ''); + } + } - return all; -}; -/** does this look like a sentence? */ + return sentences; + }; + var _01Sentences = splitSentences$1; // console.log(sentence_parser('john f. kennedy')); + + const wordlike = /\S/; + const isBoundary = /^[!?.]+$/; + const naiiveSplit = /(\S+)/; + const isSlash = /[a-z] ?\/ ?[a-z]*$/; + let notWord = ['.', '?', '!', ':', ';', '-', '–', '—', '--', '...', '(', ')', '[', ']', '"', "'", '`']; + notWord = notWord.reduce((h, c) => { + h[c] = true; + return h; + }, {}); + + const hasHyphen = function (str) { + //dont split 're-do' + if (/^(re|un|micro|macro|trans|bi|mono|over)-?[^aeiou]./.test(str) === true) { + return false; + } //dont split 'bat-like' -var isSentence = function isSentence(str, abbrevs) { - // check for 'F.B.I.' - if (isAcronym$1.test(str) === true) { - return false; - } //check for '...' + if (/^([a-z\u00C0-\u00FF/]+)(-|–|—)(like|ish|less|able)/i.test(str) === true) { + return false; + } //letter-number 'aug-20' - if (hasEllipse.test(str) === true) { - return false; - } // must have a letter + let reg = /^([a-z\u00C0-\u00FF`"'/]+)(-|–|—)([a-z0-9\u00C0-\u00FF].*)/i; - if (hasLetter.test(str) === false) { - return false; - } + if (reg.test(str) === true) { + return true; + } //number-letter '20-aug' - var txt = str.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/, ''); - var words = txt.split(' '); - var lastWord = words[words.length - 1].toLowerCase(); // check for 'Mr.' - if (abbrevs.hasOwnProperty(lastWord)) { - return false; - } // //check for jeopardy! - // if (blacklist.hasOwnProperty(lastWord)) { - // return false - // } + let reg2 = /^([0-9]{1,4})(-|–|—)([a-z\u00C0-\u00FF`"'/-]+$)/i; + if (reg2.test(str) === true) { + return true; + } - return true; -}; + return false; + }; // combine '2 - 5' like '2-5' is -var splitSentences = function splitSentences(text, world) { - var abbrevs = world.cache.abbreviations; - text = text || ''; - text = String(text); - var sentences = []; // First do a greedy-split.. - var chunks = []; // Ensure it 'smells like' a sentence + const combineRanges = function (arr) { + const startRange = /^[0-9]{1,4}(:[0-9][0-9])?([a-z]{1,2})? ?(-|–|—) ?$/; + const endRange = /^[0-9]{1,4}([a-z]{1,2})? ?$/; - if (!text || typeof text !== 'string' || hasSomething.test(text) === false) { - return sentences; - } // cleanup unicode-spaces + for (let i = 0; i < arr.length - 1; i += 1) { + if (arr[i + 1] && startRange.test(arr[i]) && endRange.test(arr[i + 1])) { + arr[i] = arr[i] + arr[i + 1]; + arr[i + 1] = null; + } + } + return arr; + }; // 'he / she' should be one word - text = text.replace('\xa0', ' '); // Start somewhere: - var splits = naiive_split(text); // Filter-out the crap ones + const combineSlashes = function (arr) { + for (let i = 1; i < arr.length - 1; i++) { + if (isSlash.test(arr[i])) { + arr[i - 1] += arr[i] + arr[i + 1]; + arr[i] = null; + arr[i + 1] = null; + } + } - for (var i = 0; i < splits.length; i++) { - var s = splits[i]; + return arr; + }; - if (s === undefined || s === '') { - continue; - } //this is meaningful whitespace + const splitHyphens = function (word) { + let arr = []; //support multiple-hyphenated-terms + const hyphens = word.split(/[-–—]/); + let whichDash = '-'; + let found = word.match(/[-–—]/); - if (hasSomething.test(s) === false) { - //add it to the last one - if (chunks[chunks.length - 1]) { - chunks[chunks.length - 1] += s; - continue; - } else if (splits[i + 1]) { - //add it to the next one - splits[i + 1] = s + splits[i + 1]; - continue; + if (found && found[0]) { + whichDash = found; } - } //else, only whitespace, no terms, no sentence + for (let o = 0; o < hyphens.length; o++) { + if (o === hyphens.length - 1) { + arr.push(hyphens[o]); + } else { + arr.push(hyphens[o] + whichDash); + } + } - chunks.push(s); - } //detection of non-sentence chunks: - //loop through these chunks, and join the non-sentence chunks back together.. + return arr; + }; + const isArray$1 = function (arr) { + return Object.prototype.toString.call(arr) === '[object Array]'; + }; //turn a string into an array of strings (naiive for now, lumped later) - for (var _i = 0; _i < chunks.length; _i++) { - var c = chunks[_i]; //should this chunk be combined with the next one? - if (chunks[_i + 1] && isSentence(c, abbrevs) === false) { - chunks[_i + 1] = c + (chunks[_i + 1] || ''); - } else if (c && c.length > 0) { - //&& hasLetter.test(c) - //this chunk is a proper sentence.. - sentences.push(c); - chunks[_i] = ''; - } - } //if we never got a sentence, return the given text + const splitWords = function (str) { + let result = []; + let arr = []; //start with a naiive split + str = str || ''; - if (sentences.length === 0) { - return [text]; - } //move whitespace to the ends of sentences, when possible - //['hello',' world'] -> ['hello ','world'] + if (typeof str === 'number') { + str = String(str); + } + if (isArray$1(str)) { + return str; + } - for (var _i2 = 1; _i2 < sentences.length; _i2 += 1) { - var ws = sentences[_i2].match(startWhitespace); + const words = str.split(naiiveSplit); - if (ws !== null) { - sentences[_i2 - 1] += ws[0]; - sentences[_i2] = sentences[_i2].replace(startWhitespace, ''); - } - } + for (let i = 0; i < words.length; i++) { + //split 'one-two' + if (hasHyphen(words[i]) === true) { + arr = arr.concat(splitHyphens(words[i])); + continue; + } - return sentences; -}; + arr.push(words[i]); + } //greedy merge whitespace+arr to the right -var _01Sentences = splitSentences; // console.log(sentence_parser('john f. kennedy')); -var wordlike = /\S/; -var isBoundary = /^[!?.]+$/; -var naiiveSplit = /(\S+)/; -var isSlash = /[a-z] ?\/ ?[a-z]*$/; -var notWord = ['.', '?', '!', ':', ';', '-', '–', '—', '--', '...', '(', ')', '[', ']', '"', "'", '`']; -notWord = notWord.reduce(function (h, c) { - h[c] = true; - return h; -}, {}); + let carry = ''; -var hasHyphen = function hasHyphen(str) { - //dont split 're-do' - if (/^(re|un)-?[^aeiou]./.test(str) === true) { - return false; - } //letter-number 'aug-20' + for (let i = 0; i < arr.length; i++) { + let word = arr[i]; //if it's more than a whitespace + if (wordlike.test(word) === true && notWord.hasOwnProperty(word) === false && isBoundary.test(word) === false) { + //put whitespace on end of previous term, if possible + if (result.length > 0) { + result[result.length - 1] += carry; + result.push(word); + } else { + //otherwise, but whitespace before + result.push(carry + word); + } - var reg = /^([a-z\u00C0-\u00FF`"'/]+)(-|–|—)([a-z0-9\u00C0-\u00FF].*)/i; + carry = ''; + } else { + carry += word; + } + } //handle last one - if (reg.test(str) === true) { - return true; - } //number-letter '20-aug' + if (carry) { + if (result.length === 0) { + result[0] = ''; + } - var reg2 = /^([0-9]{1,4})(-|–|—)([a-z\u00C0-\u00FF`"'/-]+$)/i; + result[result.length - 1] += carry; //put it on the end + } // combine 'one / two' - if (reg2.test(str) === true) { - return true; - } //support weird number-emdash combo '2010–2011' - // let reg2 = /^([0-9]+)(–|—)([0-9].*)/i - // if (reg2.test(str)) { - // return true - // } + result = combineSlashes(result); + result = combineRanges(result); // remove empty results - return false; -}; // 'he / she' should be one word - - -var combineSlashes = function combineSlashes(arr) { - for (var i = 1; i < arr.length - 1; i++) { - if (isSlash.test(arr[i])) { - arr[i - 1] += arr[i] + arr[i + 1]; - arr[i] = null; - arr[i + 1] = null; - } - } - - return arr; -}; - -var splitHyphens = function splitHyphens(word) { - var arr = []; //support multiple-hyphenated-terms - - var hyphens = word.split(/[-–—]/); - var whichDash = '-'; - var found = word.match(/[-–—]/); - - if (found && found[0]) { - whichDash = found; - } - - for (var o = 0; o < hyphens.length; o++) { - if (o === hyphens.length - 1) { - arr.push(hyphens[o]); - } else { - arr.push(hyphens[o] + whichDash); - } - } - - return arr; -}; - -var isArray$1 = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; -}; //turn a string into an array of strings (naiive for now, lumped later) - - -var splitWords = function splitWords(str) { - var result = []; - var arr = []; //start with a naiive split - - str = str || ''; - - if (typeof str === 'number') { - str = String(str); - } - - if (isArray$1(str)) { - return str; - } - - var words = str.split(naiiveSplit); - - for (var i = 0; i < words.length; i++) { - //split 'one-two' - if (hasHyphen(words[i]) === true) { - arr = arr.concat(splitHyphens(words[i])); - continue; - } - - arr.push(words[i]); - } //greedy merge whitespace+arr to the right - - - var carry = ''; - - for (var _i = 0; _i < arr.length; _i++) { - var word = arr[_i]; //if it's more than a whitespace - - if (wordlike.test(word) === true && notWord.hasOwnProperty(word) === false && isBoundary.test(word) === false) { - //put whitespace on end of previous term, if possible - if (result.length > 0) { - result[result.length - 1] += carry; - result.push(word); - } else { - //otherwise, but whitespace before - result.push(carry + word); - } - - carry = ''; - } else { - carry += word; - } - } //handle last one - - - if (carry) { - if (result.length === 0) { - result[0] = ''; - } - - result[result.length - 1] += carry; //put it on the end - } // combine 'one / two' - - - result = combineSlashes(result); // remove empty results - - result = result.filter(function (s) { - return s; - }); - return result; -}; - -var _02Words = splitWords; - -var isArray = function isArray(arr) { - return Object.prototype.toString.call(arr) === '[object Array]'; -}; -/** turn a string into an array of Phrase objects */ - - -var fromText = function fromText() { - var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var world = arguments.length > 1 ? arguments[1] : undefined; - var pool = arguments.length > 2 ? arguments[2] : undefined; - var sentences = null; //a bit of validation, first - - if (typeof text !== 'string') { - if (typeof text === 'number') { - text = String(text); - } else if (isArray(text)) { - sentences = text; - } - } //tokenize into words - - - sentences = sentences || _01Sentences(text, world); - sentences = sentences.map(function (str) { - return _02Words(str); - }); //turn them into proper objects - - pool = pool || new Pool_1(); - var phrases = sentences.map(function (terms) { - terms = terms.map(function (str) { - var term = new Term_1(str); - pool.add(term); - return term; - }); //add next/previous ids - - _linkTerms(terms); //return phrase objects - - - var p = new Phrase_1(terms[0].id, terms.length, pool); - p.cache.terms = terms; - return p; - }); //return them ready for a Document object - - return phrases; -}; + result = result.filter(s => s); + return result; + }; -var _01Tokenizer = fromText; + var _02Words = splitWords; + const Term$2 = Term_1; + const Phrase$2 = Phrase_1; + const Pool$2 = Pool_1; + const linkTerms$1 = _linkTerms; + const splitSentences = _01Sentences; + const splitTerms = _02Words; -var fromJSON = function fromJSON(json, world) { - var pool = new Pool_1(); - var phrases = json.map(function (p, k) { - var terms = p.terms.map(function (o, i) { - var term = new Term_1(o.text); - term.pre = o.pre !== undefined ? o.pre : ''; + const isArray = function (arr) { + return Object.prototype.toString.call(arr) === '[object Array]'; + }; + /** turn a string into an array of Phrase objects */ - if (o.post === undefined) { - o.post = ' '; //no given space for very last term - if (i >= p.terms.length - 1) { - o.post = '. '; + const fromText = function () { + let text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let world = arguments.length > 1 ? arguments[1] : undefined; + let pool = arguments.length > 2 ? arguments[2] : undefined; + let sentences = null; //a bit of validation, first - if (k >= p.terms.length - 1) { - o.post = '.'; - } + if (typeof text !== 'string') { + if (typeof text === 'number') { + text = String(text); + } else if (isArray(text)) { + sentences = text; } - } - - term.post = o.post !== undefined ? o.post : ' '; - - if (o.tags) { - o.tags.forEach(function (tag) { - return term.tag(tag, '', world); - }); - } - - pool.add(term); - return term; - }); //add prev/next links - - _linkTerms(terms); // return a proper Phrase object - - - return new Phrase_1(terms[0].id, terms.length, pool); - }); - return phrases; -}; - -var fromJSON_1 = fromJSON; -var _version = '13.10.5'; -var entity = ['Person', 'Place', 'Organization']; -var nouns$1 = { - Noun: { - notA: ['Verb', 'Adjective', 'Adverb'] - }, - // - singular - Singular: { - isA: 'Noun', - notA: 'Plural' - }, - //a specific thing that's capitalized - ProperNoun: { - isA: 'Noun' - }, - // -- people - Person: { - isA: ['ProperNoun', 'Singular'], - notA: ['Place', 'Organization', 'Date'] - }, - FirstName: { - isA: 'Person' - }, - MaleName: { - isA: 'FirstName', - notA: ['FemaleName', 'LastName'] - }, - FemaleName: { - isA: 'FirstName', - notA: ['MaleName', 'LastName'] - }, - LastName: { - isA: 'Person', - notA: ['FirstName'] - }, - NickName: { - isA: 'Person', - notA: ['FirstName', 'LastName'] - }, - Honorific: { - isA: 'Noun', - notA: ['FirstName', 'LastName', 'Value'] - }, - // -- places - Place: { - isA: 'Singular', - notA: ['Person', 'Organization'] - }, - Country: { - isA: ['Place', 'ProperNoun'], - notA: ['City'] - }, - City: { - isA: ['Place', 'ProperNoun'], - notA: ['Country'] - }, - Region: { - isA: ['Place', 'ProperNoun'] - }, - Address: { - isA: 'Place' - }, - //---Orgs--- - Organization: { - isA: ['Singular', 'ProperNoun'], - notA: ['Person', 'Place'] - }, - SportsTeam: { - isA: 'Organization' - }, - School: { - isA: 'Organization' - }, - Company: { - isA: 'Organization' - }, - // - plural - Plural: { - isA: 'Noun', - notA: ['Singular'] - }, - //(not plural or singular) - Uncountable: { - isA: 'Noun' - }, - Pronoun: { - isA: 'Noun', - notA: entity - }, - //a word for someone doing something -'plumber' - Actor: { - isA: 'Noun', - notA: entity - }, - //a gerund-as-noun - 'swimming' - Activity: { - isA: 'Noun', - notA: ['Person', 'Place'] - }, - //'kilograms' - Unit: { - isA: 'Noun', - notA: entity - }, - //'Canadians' - Demonym: { - isA: ['Noun', 'ProperNoun'], - notA: entity - }, - //`john's` - Possessive: { - isA: 'Noun' // notA: 'Pronoun', - - } -}; -var verbs$1 = { - Verb: { - notA: ['Noun', 'Adjective', 'Adverb', 'Value'] - }, - // walks - PresentTense: { - isA: 'Verb', - notA: ['PastTense', 'FutureTense'] - }, - // neutral form - 'walk' - Infinitive: { - isA: 'PresentTense', - notA: ['PastTense', 'Gerund'] - }, - //close the door! - Imperative: { - isA: 'Infinitive' // notA: ['PresentTense', 'PastTense', 'FutureTense', 'Gerund'], - - }, - // walking - Gerund: { - isA: 'PresentTense', - notA: ['PastTense', 'Copula', 'FutureTense'] - }, - // walked - PastTense: { - isA: 'Verb', - notA: ['FutureTense'] - }, - // will walk - FutureTense: { - isA: 'Verb' - }, - // is - Copula: { - isA: 'Verb' - }, - // would have - Modal: { - isA: 'Verb', - notA: ['Infinitive'] - }, - // had walked - PerfectTense: { - isA: 'Verb', - notA: 'Gerund' - }, - Pluperfect: { - isA: 'Verb' - }, - // shown - Participle: { - isA: 'PastTense' - }, - // show up - PhrasalVerb: { - isA: 'Verb' - }, - //'up' part - Particle: { - isA: 'PhrasalVerb' - }, - //this can be an adverb - Auxiliary: { - notA: ['Noun', 'Adjective', 'Value'] - } -}; -var values = { - Value: { - notA: ['Verb', 'Adjective', 'Adverb'] - }, - Ordinal: { - isA: 'Value', - notA: ['Cardinal'] - }, - Cardinal: { - isA: 'Value', - notA: ['Ordinal'] - }, - Fraction: { - isA: 'Value', - notA: ['Noun'] - }, - RomanNumeral: { - isA: 'Cardinal', - //can be a person, too - notA: ['Ordinal', 'TextValue'] - }, - TextValue: { - isA: 'Value', - notA: ['NumericValue'] - }, - NumericValue: { - isA: 'Value', - notA: ['TextValue'] - }, - Money: { - isA: 'Cardinal' - }, - Percent: { - isA: 'Value' - } -}; -var anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value', 'QuestionWord']; -var misc$1 = { - //--Adjectives-- - Adjective: { - notA: ['Noun', 'Verb', 'Adverb', 'Value'] - }, - // adjectives that can conjugate - Comparable: { - isA: ['Adjective'] - }, - // better - Comparative: { - isA: ['Adjective'] - }, - // best - Superlative: { - isA: ['Adjective'], - notA: ['Comparative'] - }, - NumberRange: { - isA: ['Contraction'] - }, - Adverb: { - notA: ['Noun', 'Verb', 'Adjective', 'Value'] - }, - // Dates: - //not a noun, but usually is - Date: { - notA: ['Verb', 'Adverb', 'Preposition', 'Adjective'] - }, - Month: { - isA: ['Date', 'Singular'], - notA: ['Year', 'WeekDay', 'Time'] - }, - WeekDay: { - isA: ['Date', 'Noun'] - }, - // 'PST' - Timezone: { - isA: ['Date', 'Noun'], - notA: ['Adjective', 'ProperNoun'] - }, - // '9:20pm' - Time: { - isA: ['Date'], - notA: ['AtMention'] - }, - //glue - Determiner: { - notA: anything - }, - Conjunction: { - notA: anything - }, - Preposition: { - notA: anything - }, - // what, who, why - QuestionWord: { - notA: ['Determiner'] - }, - // peso, euro - Currency: { - isA: ['Noun'] - }, - // ughh - Expression: { - notA: ['Noun', 'Adjective', 'Verb', 'Adverb'] - }, - // dr. - Abbreviation: {}, - // internet tags - Url: { - notA: ['HashTag', 'PhoneNumber', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'] - }, - PhoneNumber: { - notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'] - }, - HashTag: {}, - AtMention: { - isA: ['Noun'], - notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'Email'] - }, - Emoji: { - notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'] - }, - Emoticon: { - notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'] - }, - Email: { - notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'] - }, - //non-exclusive - Acronym: { - notA: ['Plural', 'RomanNumeral'] - }, - Negative: { - notA: ['Noun', 'Adjective', 'Value'] - }, - // if, unless, were - Condition: { - notA: ['Verb', 'Adjective', 'Noun', 'Value'] - } -}; // i just made these up - -var colorMap = { - Noun: 'blue', - Verb: 'green', - Negative: 'green', - Date: 'red', - Value: 'red', - Adjective: 'magenta', - Preposition: 'cyan', - Conjunction: 'cyan', - Determiner: 'cyan', - Adverb: 'cyan' -}; -/** add a debug color to some tags */ - -var addColors = function addColors(tags) { - Object.keys(tags).forEach(function (k) { - // assigned from plugin, for example - if (tags[k].color) { - tags[k].color = tags[k].color; - return; - } // defined above - - - if (colorMap[k]) { - tags[k].color = colorMap[k]; - return; - } + } //tokenize into words - tags[k].isA.some(function (t) { - if (colorMap[t]) { - tags[k].color = colorMap[t]; - return true; - } - - return false; - }); - }); - return tags; -}; - -var _color = addColors; - -var unique$3 = function unique(arr) { - return arr.filter(function (v, i, a) { - return a.indexOf(v) === i; - }); -}; //add 'downward' tags (that immediately depend on this one) + sentences = sentences || splitSentences(text, world); + sentences = sentences.map(str => splitTerms(str)); //turn them into proper objects -var inferIsA = function inferIsA(tags) { - Object.keys(tags).forEach(function (k) { - var tag = tags[k]; - var len = tag.isA.length; + pool = pool || new Pool$2(); + let phrases = sentences.map(terms => { + terms = terms.map(str => { + let term = new Term$2(str); + pool.add(term); + return term; + }); //add next/previous ids - for (var i = 0; i < len; i++) { - var down = tag.isA[i]; + linkTerms$1(terms); //return phrase objects - if (tags[down]) { - tag.isA = tag.isA.concat(tags[down].isA); - } - } // clean it up + let p = new Phrase$2(terms[0].id, terms.length, pool); + p.cache.terms = terms; + return p; + }); //return them ready for a Document object + return phrases; + }; - tag.isA = unique$3(tag.isA); - }); - return tags; -}; + var _01Tokenizer = fromText; + const Term$1 = Term_1; + const Phrase$1 = Phrase_1; + const Pool$1 = Pool_1; + const linkTerms = _linkTerms; -var _isA = inferIsA; + const fromJSON$1 = function (json, world) { + let pool = new Pool$1(); + let phrases = json.map((p, k) => { + let terms = p.terms.map((o, i) => { + let term = new Term$1(o.text); + term.pre = o.pre !== undefined ? o.pre : ''; -var unique$2 = function unique(arr) { - return arr.filter(function (v, i, a) { - return a.indexOf(v) === i; - }); -}; // crawl the tag-graph and infer any conflicts -// faster than doing this at tag-time + if (o.post === undefined) { + o.post = ' '; //no given space for very last term + if (i >= p.terms.length - 1) { + o.post = '. '; -var inferNotA = function inferNotA(tags) { - var keys = Object.keys(tags); - keys.forEach(function (k) { - var tag = tags[k]; - tag.notA = tag.notA || []; - tag.isA.forEach(function (down) { - if (tags[down] && tags[down].notA) { - // borrow its conflicts - var notA = typeof tags[down].notA === 'string' ? [tags[down].isA] : tags[down].notA || []; - tag.notA = tag.notA.concat(notA); - } - }); // any tag that lists us as a conflict, we conflict it back. + if (k >= p.terms.length - 1) { + o.post = '.'; + } + } + } - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; + term.post = o.post !== undefined ? o.post : ' '; - if (tags[key].notA.indexOf(k) !== -1) { - tag.notA.push(key); - } - } // clean it up + if (o.tags) { + o.tags.forEach(tag => term.tag(tag, '', world)); + } + pool.add(term); + return term; + }); //add prev/next links - tag.notA = unique$2(tag.notA); - }); - return tags; -}; + linkTerms(terms); // return a proper Phrase object -var _notA = inferNotA; // a lineage is all 'incoming' tags that have this as 'isA' + return new Phrase$1(terms[0].id, terms.length, pool); + }); + return phrases; + }; -var inferLineage = function inferLineage(tags) { - var keys = Object.keys(tags); - keys.forEach(function (k) { - var tag = tags[k]; - tag.lineage = []; // find all tags with it in their 'isA' set + var fromJSON_1 = fromJSON$1; + var _version = '13.11.4'; + const entity = ['Person', 'Place', 'Organization']; + var nouns$2 = { + Noun: { + notA: ['Verb', 'Adjective', 'Adverb'] + }, + // - singular + Singular: { + isA: 'Noun', + notA: 'Plural' + }, + //a specific thing that's capitalized + ProperNoun: { + isA: 'Noun' + }, + // -- people + Person: { + isA: ['ProperNoun', 'Singular'], + notA: ['Place', 'Organization', 'Date'] + }, + FirstName: { + isA: 'Person' + }, + MaleName: { + isA: 'FirstName', + notA: ['FemaleName', 'LastName'] + }, + FemaleName: { + isA: 'FirstName', + notA: ['MaleName', 'LastName'] + }, + LastName: { + isA: 'Person', + notA: ['FirstName'] + }, + NickName: { + isA: 'Person', + notA: ['FirstName', 'LastName'] + }, + Honorific: { + isA: 'Noun', + notA: ['FirstName', 'LastName', 'Value'] + }, + // -- places + Place: { + isA: 'Singular', + notA: ['Person', 'Organization'] + }, + Country: { + isA: ['Place', 'ProperNoun'], + notA: ['City'] + }, + City: { + isA: ['Place', 'ProperNoun'], + notA: ['Country'] + }, + Region: { + isA: ['Place', 'ProperNoun'] + }, + Address: { + isA: 'Place' + }, + //---Orgs--- + Organization: { + isA: ['Singular', 'ProperNoun'], + notA: ['Person', 'Place'] + }, + SportsTeam: { + isA: 'Organization' + }, + School: { + isA: 'Organization' + }, + Company: { + isA: 'Organization' + }, + // - plural + Plural: { + isA: 'Noun', + notA: ['Singular'] + }, + //(not plural or singular) + Uncountable: { + isA: 'Noun' + }, + Pronoun: { + isA: 'Noun', + notA: entity + }, + //a word for someone doing something -'plumber' + Actor: { + isA: 'Noun', + notA: entity + }, + //a gerund-as-noun - 'swimming' + Activity: { + isA: 'Noun', + notA: ['Person', 'Place'] + }, + //'kilograms' + Unit: { + isA: 'Noun', + notA: entity + }, + //'Canadians' + Demonym: { + isA: ['Noun', 'ProperNoun'], + notA: entity + }, + //`john's` + Possessive: { + isA: 'Noun' // notA: 'Pronoun', - for (var i = 0; i < keys.length; i++) { - if (tags[keys[i]].isA.indexOf(k) !== -1) { - tag.lineage.push(keys[i]); } - } - }); - return tags; -}; - -var _lineage = inferLineage; - -var validate = function validate(tags) { - // cleanup format - Object.keys(tags).forEach(function (k) { - var tag = tags[k]; // ensure isA is an array - - tag.isA = tag.isA || []; - - if (typeof tag.isA === 'string') { - tag.isA = [tag.isA]; - } // ensure notA is an array - - - tag.notA = tag.notA || []; - - if (typeof tag.notA === 'string') { - tag.notA = [tag.notA]; - } - }); - return tags; -}; // build-out the tag-graph structure - - -var inferTags = function inferTags(tags) { - // validate data - tags = validate(tags); // build its 'down tags' - - tags = _isA(tags); // infer the conflicts - - tags = _notA(tags); // debug tag color - - tags = _color(tags); // find incoming links - - tags = _lineage(tags); - return tags; -}; - -var inference = inferTags; - -var addIn = function addIn(obj, tags) { - Object.keys(obj).forEach(function (k) { - tags[k] = obj[k]; - }); -}; - -var build = function build() { - var tags = {}; - addIn(nouns$1, tags); - addIn(verbs$1, tags); - addIn(values, tags); - addIn(misc$1, tags); // do the graph-stuff - - tags = inference(tags); - return tags; -}; - -var tags = build(); -var _data = { - "Comparative": "true¦better", - "Superlative": "true¦earlier", - "PresentTense": "true¦is,sounds", - "Value": "true¦a few", - "Noun": "true¦a5b4c2f1here,ie,lit,m0no doubt,pd,tce;a,d;t,y;a,ca,o0;l,rp;a,l;d,l,rc", - "Copula": "true¦a1is,w0;as,ere;m,re", - "PastTense": "true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan", - "Condition": "true¦if,lest,unless", - "Preposition": "true¦'o,-,aLbIcHdGexcept,fFiDmidQnotwithstandiRoBpSqua,sAt6u3vi2w0;/o,hereNith0;!in,oR;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oJ;ans,ince,o that;',f0n2ut;!f;f,n0;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut", - "Gerund": "true¦accord0be0develop0go0result0stain0;ing", - "Negative": "true¦n0;ever,o0;!n,t", - "QuestionWord": "true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s", - "Plural": "true¦records", - "Conjunction": "true¦&,aFbBcuz,how9in caEno8o7p5supposing,t2v1wh0yet;eth9ile;ers4s;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh", - "Abbreviation": "true¦a0Jb0Gc0Ad08e05f02g01h00iYjWkanVlTmNnKoJpFque,rDs8t6u5v2w0;is0r,y0B;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;ce,e0;l,mp,nn,x;ask,e2fc,gt,i1q,r,s,t,u0;pt,rg;r,tu;c,nJp0;!t;b,d,e0;pGs,v;a,d,ennNhd,l,p,r1s0vt;!eud;ef,o0;b,f,n;ct,kla,nt;e0ov;b0e;!r;a4d,essrs,i1lle,me,r7s0t;!tr;n1s0;c,ter;!n;!j,r,sc;at,it,lb,ng,t0;!d;!s;an,d,r,u0;l,n;a,da,e,n0;c,f;on,wy;a,en,ov;e1ig,l0m,r,t,y;!a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0ist,r;c,f,pt,t;a3ca,l,m2o0pl,res,yn;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v", - "Pronoun": "true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s", - "Singular": "true¦0:15;1:12;2:18;a15b0Sc0Jd0Ce09f04gZhViUjel0kitty,lSmOnNoMpHquestionGrEs9t6u4w3;ay,om02;nc0Zs 3;doll0Kst0M; rex,a4h3ic,ragedy,v show;ere,i2;l0x return;i6ky,omeoMt3uper bowl,yst14;ep4ri2u3;de0Xff;faSmoS;st1ze;al0i2o3;om,se;! mark;a6i1la5r4u3;dPrpoH;eroga00ie0Gobl0U;te,y1;rt,te0N;bjWceJthers,verview;othi2umb1;a5ee08o3;del,m3nopo0rni2th1;!my;n,yf0;i3unch;ne;ci2nsect;ead start,o3uman right;l0me4u3;se;! run;adf0entlem6irl02laci1od,rand4u3;l0y; slam,fa3mo3;th1;an;a6ella,ly,ol0r4un3;di2;ee market,iWo3;nti1sP;mi0th1;conomy,gg,ner7ven4x3;ampTecu9;i2t;ad8e5inn1o3ragonf0ude;cumentGg3i0l0or;gy;ath,t3;ec3;tive;!dy;a9eili2h7i5o3redit card;ttage,u3;ri1sin;ty,vil w3;ar;andeli1ocol3;ate;n3rF;ary;aCel0lesJo8r5u3;n3tterf0;ti2;eakfa4o3;!th1;st;dy,tt5y3;!fri3;end;le;nki2r3;ri1;er;d5l0noma0u3;nt;ly; homin5verti3;si2;ng;em", - "FemaleName": "true¦0:J3;1:J7;2:IG;3:IF;4:IX;5:IK;6:JO;7:H0;8:JG;9:JK;A:HN;B:HY;C:IT;D:IP;E:JD;F:HC;G:I0;aGRbFLcDPdCYeBOfB4gADh9Ti9Gj8Gk7Gl60m49n3No3Jp37qu36r2Ds16t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof2;e3Uf2la,ra;h3iKlIna,ynH;ab,ep;da,ma;da,h3iHra;nab;aKeJi0Fol5BuIvH;etAonDO;i0na;le0sen2;el,gm3Jn,rGJs8W;aoHme0nyi;m62yAE;aMendDYhiDFiH;dele8lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;cIktoriBMlAole7viH;anC3enJ0;kF9tor2;da,lA9nus,rHs0;a,nHoniH4;a,iFQ;leHnesH4;nIHrH;i1y;g8rHxH5;su5te;aYeUhRiNoLrIuHy3;i,la;acIZiHu0L;c2na,sH;hBPta;nHr0H;iBNya;aJffaEOnHs6;a,gtiH;ng;!nFQra;aIeHomasi0;a,l9Po8Ares1;l2ndolwethu;g9Go88rIssH;!a,ie;eHi,ri9;sa,za;bPlNmLnJrIs6tHwa0;ia0um;a63yn;iHya;a,ka,s6;arB6e3iHmEDra;!ka;a,iH;a,t6;at6it6;a0Fcarlet3We0BhXiTkye,neza0oRtNuIyH;bIBlvi1;e,ha,mayIEni7sIzH;an3MetAie,y;anHi9;!a,e,nH;aDe;aJeH;fHl5GphH;an4;cHZr5;b2fiA8m0OnHphi1;d3ia,ja,ya;er3lJmon1nIobh8PtH;a,i;dy;lEPv2;aMeIirHo0risF7y5;a,lDK;ba,e0i5lJrH;iHrDOyl;!d8Hfa;ia,lDX;hd,iMki3nJrIu0w0yH;la,ma,na;i,le8on,ron;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye81vH;da,inj;e0ife;en1i0ma;anA5bNd3Nh1RiBkMlLmJndIrHs6vannaD;aDi0;ra,y;aHi3;nt6ra;lDKma,ome;ee0in8Ru3;in1ri0;a05e00hYiVoIuH;by,thDH;bScRghQl2KnPsJwIxH;anAXie,y;an,e0;aIeHie,lE; merBLann9ll1marDBt7;!lHnn1;iHyn;e,nH;a,d9K;da,i,na;ayy8D;hel62io;bDKer7yn;a,cIkHmas,n9Fta,ya;ki,o;helGki;ea,iannGDoH;da,n1K;an0bJem9Agi0iInHta,y0;a88ee;han83na;a,eH;cEAkaD;bi0chIe,i0mo0nHquEKvCy0;di,ia;aEIelHiB;!e,le;een4ia0;aNeMhKipaluk,oJrHute66;iHudenCQ;scil3LyamvaB;lly,rt2;ilome0oebe,ylH;is,lis;arl,ggy,nelope,r5t3;ige,m0TnKo5rvaDGtIulH;a,etAin1;ricHsy,tBY;a,e,ia;do3i06;ctav2dIfCZis6lHphCZumC3yunbileg;a,ga,iv2;eHvAC;l2tA;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aDeCma;ll1mi;aNcLhariBOkKlaJna,sHta,vi;anHha;ur;!y;a,iDTki;hoGk9VolH;a,eDJ;!mh;hir,lHna,risFsreC;!a,lBT;asuLdKh2i6CnJomi9rgEPtHzanin zah3;aHhal4;li1s6;cy,etA;a,e8iEV;nngu30;a09ckenz4e01iMoJrignayani,uriDDyH;a,rH;a,lNna,tG;bi0i3llBInH;a,iH;ca,ka,qD3;a,cTkaSlNmi,nLrItzi,yH;ar;aIiam,lH;anEO;!l,nB;dy,eHh,n4;nhGrva;aKdJiCPlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5EgNi,lKrH;edi79iIjem,on,yH;em,l;em,sF;an4iHliF;nHsCE;a,da;!an,han;b0DcASd0Be,g09ha,i08ja,l06n04rLsoum60tKuIv82x9IyHz4;a,bell,ra,soB9;de,rH;a,eC;h8Fild1t4;a,cYgUiKjor4l7Sn4s6tJwa,yH;!aHbe6Wja8lAE;m,nBH;a,ha,in1;!aJbCBeIja,lEna,sHt64;!a,ol,sa;!l1H;! Jh,mInH;!a,e,n1;!awit,i;aliAHcJeduarBfernIjHlui5Y;o6Ful2;anB;ecil2la3;arJeIie,oHr44ueriA;!t;!ry;et42i37;el4Ui76y;dHon,ue5;akran7y;ak,en,iHk,lo3O;a,ka,nB;a,re,s4te;daHg4;!l3A;alEd4elHge,isDBon0;ei8in1yn;el,le;a0Ne0CiYoQuLyH;d2la,nH;!a,dIeBGnHsCL;!a,eBF;a,sCJ;aCWcJel0PiFlIna,pHz;e,i7;a,u,wa;iHy;a0Se,ja,l2JnB;is,l1SrJttIuHvel4;el5is1;e,ie;aKeIi9na,rH;a86i9;lHn1t7;ei;!in1;aSbb9CdRepa,lMnJsIv2zH;!a,be5LetAz4;a,etA;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lHy;iHy;aA0e;!aH;!n5F;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx4y5;iHt4;c2t2;e2LlCG;la,nHra;a,ie,o3;a,or1;a,gh,laH;!ni;!h,nH;a,d3e,n5P;cOdon97iNkes6mi9Ana,rMtJurIvHxmi,y5;ern1in2;a,e54ie,yn;as6iIoH;nya,ya;fa,s6;a,isF;a,la;ey,ie,y;a04eZhXiOlAKoNrJyH;lHra;a,ee,ie;istHy6D;a,en,iIyH;!na;!e,n59;nul,ri,urtnB0;aOerNlAZmJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stC;!na,ra;aHei3ongordzol;dij1w5;el7QiKjsi,lJnIrH;a,i,ri;d3na,za;ey,i,lBDs4y;ra,s6;bi7cAJdiat7IeB2iRlQmPnyakuma19rNss6KtKvi7yH;!e,lH;a,eH;e,i8L;a6DeIhHi4NlEri0y;ar6Ber6Bie,leCrB2y;!lyn8Gri0;a,en,iHl5Soli0yn;!ma,n3VsF;a5il1;ei8Ei,l4;a,tl6L;a07eYiVoNuH;anLdKliHst63;a8HeHsF;!n8tH;!a,te;e5Ji3Jy;a,i7;!anNcelEd6RelGhan7RlLni,sIva0yH;a,ce;eHie;fHlEph5U;a,in1;eHie;en,n1;!a,e,n41;lHng;!i1ClH;!i1B;anMle0nJrIsH;i8Csi8C;i,ri;!a,elGif2CnH;a,etAiHy;!e,f2A;a,e8EiInH;a,e8DiH;e,n1;cMd1mi,nIque4Xsmin3Ovie3y8zH;min9;a9eIiH;ce,e,n1s;!lHsFt0F;e,le;inIk4lEquelH;in1yn;da,ta;lRmPnOo0rNsIvaHzaro;!a0lu,na;aJiIlaHob84;!n9N;do3;!belHdo3;!a,e,l39;a77en1i0ma;a,di3es,gr6Yji;a8elBogH;en1;a,e8iHo0se;a0na;aSeOiJoHusFyacin2B;da,ll4rten23snH;a,i9Q;lImaH;ri;aIdHlaI;a,egard;ry;ath1CiJlInriet7rmi8sH;sa,t1B;en2Sga,mi;di;bi2Dil8IlNnMrJsItHwa,yl8Iz7H;i5St4;n5Yti;iHmo51ri52;etH;!te;aDnaD;a,ey,l4;a03eXiSlQoOrKunJwH;enHyne1Q;!dolE;ay,el;acIetHiselB;a,chC;e,ieH;!la;ld1AogooH;sh;adys,enHor2yn2H;a,da,na;aKgi,lIna,ov89selHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald3Pi,m3Ctru8B;etAi4W;a,eHna;s26vieve;ma;bIil,le,mHrnet,yG;al5Ni5;i5FrielH;a,l1;aVeSiRloOoz2rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0O;n1s61;!ca;!rH;a,encH;e,ia;en,o0;lIn0rnH;!anB;ec2ic2;jr,n7rKtHy9;emIiHma,ouma7;ha,ma,n;eh;ah,iBrah,za0;cr4Nd0Ne0Mi0Lk7l04mWn4YrTsNtMuLvH;aJelIiH;!e,ta;in0Gyn;!ngel2S;geni1la,ni45;h5Sta;mLperanKtH;eIhHrel5;er;l30r9;za;a,eralB;iHma,nest2Jyn;cHka,n;a,ka;a,eMiJmH;aHie,y;!li8;lHn1;ee,iHy;a,e,ja;lHrald;da,y;aWeUiNlMma,no3oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c2da,f,nMsJzaH;!betHve7;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a;!in1na;leCs6;vi;eIiHna,wi0;e,th;l,n;aYeMh2iLjeneKoHul30;lor5Tminiq4In3FrHtt4;a,eCis,la,othHthy;ea,y;ba;an0AnaDon8x4ya;anQbPde,eOiMja,lJmetr2nHsir5K;a,iH;ce,se;a,iIla,orHphi8;es,is;a,l6D;dHrdH;re;!d5Cna;!b2HoraDra;a,d3nH;!a,e;hl2i0l0HmNnLphn1rIvi1XyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,etAiH;!ca,el1Cka,z;arHia;is;a0Se0Oh05i03lVoKrIynH;di,th2;istHy05;al,i0;lPnMrIurH;tn1E;aJd2NiHn2Nri8;!nH;a,e,n1;!l1X;cepci59n4sH;tanHuelo;ce,za;eHleC;en,tA;aJeoIotH;il51;!pat3;ir9rJudH;etAiH;a,ne;a,e,iH;ce,sZ;a3er3ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Ren,iHy;!an1e,n1;deJlseIrH;!i9yl;a,y;li8;nMrH;isKlImH;ai8;a,eHotA;n1tA;!sa;d3elGtH;al,elG;cIlH;esAi44;el2ilH;e,ia,y;itlZlYmilXndWrOsMtHy5;aKeJhHri0;erHleCrEy;in1;ri0;li0ri0;a33sH;a32ie;a,iNlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eHie,o7y;ne,y;na,sF;a0Hi0H;a,e,l1;is7l4;in,yn;a0Ie02iZlXoUrH;andSeQiJoIyH;an0nn;nwEok9;an3DdgLg0XtH;n2XtH;!aInH;ey,i,y;ny;etH;!t9;an0e,nH;da,na;i9y;bbi9glarIlo05nH;i7n4;ka;ancHossom,ythe;a,he;an17lja0nHsm3I;i7tH;ou;aUcky,linTni7rPssOtJulaDvH;!erlH;ey,y;hJsy,tH;e,iHy9;e,na;!anH;ie,y;!ie;nHt6yl;adIiH;ce;etAi8;ay,da;!triH;ce,z;rbJyaH;rmH;aa;a3ie,o3ra;a2Sb2Md23g1Zi1Qj5l16m0Xn09oi,r04sUtTuPvOwa,yIzH;ra,u0;aKes6gJlIseH;!l;in;un;!nH;a,na;a,i2Ir2J;drJgus1RrIsteH;ja;el2;a,ey,i,y;aahua,he0;hIi2Gja,mi7s2DtrH;id;aMlIraqHt21;at;eIi9yH;!n;e,iHy;gh;!nH;ti;iJleIo6pi7;ta;en,n1tA;aHelG;!n1J;a00dje5eYgUiSjQnJohito,toHya;inetAnH;el5ia;!aKeIiHmJ;e,ka;!mHtA;ar4;!belIliFmU;sa;!le;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tA;te;! JbImHstasiNya;ar2;el;cla3jul2pau5;aLberKeliJiHy;e,l2naH;!ta;a,ja;!ly;hGiIl2nB;da;a,ra;le;aWba,ePiMlKma,thJyH;a,c2sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c2is6jaKksaKna,sJxH;aHia;!nd3;ia,saH;nd3;ra;ia;i0nIyH;ah,na;a,is,naDoud;la;c6da,leCmNnLsH;haDlH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lEsH;on;yn;!lH;i8yn;ne;aKbIiHrL;!gaK;ey,i9y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya", - "Actor": "true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJecretary,oldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt", - "Honorific": "true¦a01bYcQdPeOfiJgIhon,jr,king,lHmCoffic00p7queen,r3s0taoiseach,vice6;e1fc,gt,ir,r,u0;ltRpt,rg;cond liInBrgeaJ;abbi,e0;ar1p9s,v0;!erend; admirX;astOhd,r0vt;esideDi1of0;!essM;me mini4nce0;!ss;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al", - "SportsTeam": "true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls", - "Uncountable": "true¦0:1I;1:16;2:1X;a1Rb1Jc1Ad17e10f0Ug0Nh0Ii0Ej0Dknowled1Ql08mYnews,oXpTrOsDt8vi7w3;a5ea0Bi4oo3;d,l;ldlife,ne;rmth,t0;neg17ol0Ctae;e6h5oothpaste,r3una;affTou3;ble,sers,t;ermod1Mund0;a,nnis;aBcene0Aeri1hAil9kittl1now,o8p6t4u3;g10nshi0Q;ati1Le3;am,el;ace1Ee3;ci1ed;ap,cc0;k,v0;eep,ingl1;d0Dfe18l3nd,tish;m11t;a6e4ic3;e,ke0M;c3laxa0Isearch;ogni0Hrea0H;bi1in;aPe5hys2last9o3ress04;l3rk,w0;it2yA;a12trZ;bstetr2il,xygen;aAe8ilk,o5u3;mps,s3;ic;n3o0I;ey,o3;gamy;a3chan2;sl1t;chine3il,themat2; learn0Bry;aught0e5i4ogi0Su3;ck,g0I;ce,ghtn08ngui0QteratN;a3isM;th0;ewelAusti0L;ce,mp3nformaUtself;a3ortan0J;ti3;en0H;a6isto5o3;ck3mework,n3spitali0B;ey;ry;ir,libut,ppiD;ene6o4r3um,ymna0D;aCound;l3ssip;d,f; 3t2;editQpo3;ol;i7lour,o4urnit3;ure;od,rgive3uri0wl;ne3;ss;c9sh;conom2duca8lectr7n5quip6th2very3;body,o3thH;ne;joy3tertain3;ment;iciPon2;tiI;ar4iabet1raugh4;es;ts;aAelcius,h6iv2l5o3urrency;al,ld w3nfusiDttD;ar;ass2oth5;aos,e3;e4w3;ing;se;r7sh;a7eef,i4lood,owls,read,utt0;er;lliar4s3;on;ds;g3ss;ga3;ge;c8dvi7ero5ir4mnes3rt,thlet2;ty;craft;b2d3naut2;ynam2;ce;id,ou3;st2;ics", - "Infinitive": "true¦0:6S;1:76;2:5C;3:74;4:73;5:67;6:6F;7:6Y;8:6Q;9:72;A:70;B:5X;C:6X;D:6L;E:77;F:5B;a6Kb66c57d4De3Xf3Jg3Dh37i2Uj2Sk2Ql2Hm26n23o1Yp1Jr0Rs06tYuTvOwHyG;awn,ield;aJe1Zhist6iIoGre6D;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raE;d0t;aJiHoG;te,w;eGsC;!w;l6Jry;nHpGr4se;gra4Pli41;dGi9lo5Zpub3Q;erGo;mi5Cw1I;aMeLhKig5SoJrHuGwi7;ne,rn;aGe0Mi5Uu7y;de,in,nsf0p,v5J;r2ZuD;ank,reatB;nd,st;lk,rg1Qs9;aZcWeVhTi4Dkip,lSmRnee3Lo52pQtJuGwitD;bmCck,ff0gge7ppHrGspe5;ge,pri1rou4Zvi3;ly,o36;aLeKoJrHuG;dy,mb6;aFeGi3;ngthBss,tD;p,re;m,p;in,ke,r0Qy;la58oil,rink6;e1Zi6o3J;am,ip;a2iv0oG;ck,rtBut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu8fYgXje5lUmTnt,pQquPsKtJvGwa5V;eGiew,o36;al,l,rG;se,t;aFi2u44;eJi7oItG;!o2rG;i5uc20;l3rt;mb6nt,r3;e7i2;air,eHlGo43r0K;a8y;at;aFemb0i3Zo3;aHeGi3y;a1nt;te,x;a5Dr0J;act1Yer,le5u1;a13ei3k5PoGyc6;gni2Cnci6rd;ch,li2Bs5N;i1nG;ge,k;aTerSiRlOoMrIuG;b21ll,mp,rGsh;cha1s4Q;ai1eIiEoG;cGdu8greAhibCmi1te7vi2W;eAlaim;di5pa2ss,veE;iEp,rtr46sGur;e,t;aHead,uG;g,n4;n,y;ck,le;fo34mCsi7;ck,iErt4Mss,u1;bJccur,ff0pera9utweIverGwe;co47lap,ta22u1wG;helm;igh;ser3taF;eHotG;e,i8;ed,gle5;aMeLiIoHuG;ltip3Grd0;nit13ve;nHrr12sreprG;eseE;d,g6us;asu2lt,n0Nr4;intaFna4rHtG;ch,t0;ch,kGry;et;aMeLiJoGu1C;aHck,oGve;k,sB;d,n;ft,g35ke,mCnk,st2YveG;!n;a2Fc0Et;b0Nck,uG;gh,nD;iGno34;ck,ll,ss;am,oFuG;d4mp;gno2mQnGss3H;cOdica9flu0MhNsKtIvG;eGol3;nt,st;erGrodu8;a5fe2;i7tG;aGru5;ll;abCibC;lu1Fr1D;agi24pG;lemeEo22ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppBrm,te;aKloAove1PrIuG;arGeAi15;ant39d;aGip,ow,umb6;b,sp;in,th0ze;aReaQiOlMoJrHuncG;ti3J;acGeshB;tu2;cus,lHrG;ce,eca7m,s30;d,l24;a1ZoG;at,od,w;gu2lGni1Xt,x;e,l;r,tu2;il,stBvG;or;a15cho,le5mSnPstNvalua9xG;a0AcLerKi7pGte19;a18eHi2laFoGreA;rt,se;ct,riG;en8;ci1t;el,han4;abGima9;li1J;ab6couXdHfor8ga4han8j03riDsu2t0vG;isi2Vy;!u2;body,er4pG;hasiGow0;ze;a07eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iZor8;aKcHliGmiApl1Btingui14;ke;oGuA;uGv0;ra4;gr1YppG;ear,ro3;cOeNfLliv0ma0Fny,pKsHterG;mi0G;cribe,er3iHtrG;oy;gn,re;a0Be0Ai5osC;eGi0By;at,ct;m,pB;iIlHrG;ea1;a2i06;de;ma4n8rGte;e,kB;a0Ae09h06i9l04oJrG;aHeGoAu0Hy;a9dC;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin8;rt,y;aFin0VrG;a7ibu9ol;iGtitu9;d0st;iHoGroE;rm;gu2rm;rn;biLfoKmaJpG;a2laF;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aSePloOoMrIuG;lGry;ly;igHuG;sh;htB;en;a7mb,o7rrGth0un8;ow;ck;ar,lHnefCtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waC;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia9uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun8sw0tG;icipa9;ce;lHt0;er;e4ow;ee;rd;aRdIju7mCoR;it;st;!reA;ss;cJhie3knowled4tiva9;te;ge;ve;eIouEu1;se;nt;pt;on", - "Unit": "true¦0:19;a14b12c0Od0Ne0Lf0Gg0Ch09in0Hjoule0k02l00mNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Nb,d0Dears old,o1;tt0H;att0b;able4b3d,e2on1sp;!ne0;a2r0D;!l,sp;spo04; ft,uare 1;c0Id0Hf3i0Fkilo0Jm1ya0E;e0Mil1;e0li0H;eet0o0D;t,uart0;ascals,e2i1ou0Pt;c0Mnt0;rcent,t02;hms,uYz;an0JewtT;/s,b,e9g,i3l,m2p1²,³;h,s;!²;!/h,cro5l1;e1li08;! pFs1²;! 1;anEpD;g06s0B;gQter1;! 2s1;! 1;per second;b,i00m,u1x;men0x0;b,elvin0g,ilo2m1nR;!/h,ph,²;byZgXmeter1;! p2s1;! p1;er1; hour;e1g,r0z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s", - "Organization": "true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c", - "Demonym": "true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an", - "Possessive": "true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne", - "Currency": "true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s", - "City": "true¦0:73;1:61;2:6G;3:5U;4:5R;a68b54c4Id4Ae46f3Yg3Jh38i2Zj2Uk2Dl22m1Kn19o16p0Uq0Sr0Ls01tPuOvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3J;greb,nzib5G;ang2e5okoha3Uunfu;katerin3Jrev0;a5n0O;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1K;hi5Zkl3C;l63xford;aw;a6ern2i5ladivost5Molgogr6K;en3lni6R;lenc6Dncouv2Yr3ughn;lan bat1Drumqi,trecht;aDbilisi,eCheBi9o8r7u5;l21n63r5;in,ku;ipoli,ondh62;kyo,m34ron1QulouS;an5jua3l2Zmisoa6Era3;j4Xshui; hag65ssaloni2L;gucigal28hr0l av1W;briz,i6llinn,mpe5Ang5rtu,shk2X;i2Msh0;an,chu1n0p2Iyu0;aEeDh8kopje,owe1It7u5ydney;ra5zh51;ba0Jt;aten is59ockholm,rasbou6Auttga31;an8e6i5;jiazhua1llo1m60y0;f54n5;ya1zh4L;gh3Ot4U;att4Ao1Yv49;cramen18int DlBn5o paulo,ppo3Wrajevo; 7aa,t5;a 5ia3Io domin3I;a3fe,m1O;antonCdie3Gfrancisco,j5ped3Ssalv8;o5u0;se;em,v5z2B;ad0I;lou59peters29;aAe9i7o5;me,sar5t5A;io;ga,o5yadh;! de janei3I;cife,ykjavik;b4Uip4lei2Mnc2Swalpindi;ingdao,u5;ez2i0Q;aEeDhCiBo8r7u6yong5;ya1;eb5Aya1;ag54etor53;rt5zn0; 5la4Fo;au prin0Nelizabe29sa05;ls3Srae5Ctts2B;iladelph4Ynom pe1Doenix;r26tah tik3I;ler00naji,r4Pt5;na,r36;ak47des0Lm1Rr6s5ttawa;a3Ylo;an,d07;a8ew6i5ovosibir1Oyc;ng2Hs; 5cast39;del27orlea46taip16york;g8iro4Xn5pl2Zshv36v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0Y;aFeCi9o6u5;mb2Cni28sc40;gadishu,nt6s5;c17ul;evideo,re31;ami,l6n18s5;kolc,sissauga;an,waukee;cca,d5lbour2Pmph41;an,ell5i3;in,ín;cau,drAkass2Tl9n8r5shh4A;aca6ib5rakesh,se2N;or;i1Ty;a4EchEdal12i47;mo;id;aCeiAi8o6u5vRy2;anLckn0Rdhia3;n5s angel28;d2g bea1O;brev2De3Kma5nz,sb2verpo2A;!ss29;c5pzig;est0C; p6g5ho2Yn0Gusan27;os;az,la35;aHharFiClaipeBo9rak0Hu7y5;iv,o5;to;ala lump4n5;mi1sh0;be,hi0Llka2Zpavog4si5wlo2;ce;da;ev,n5rkuk;gSsha5;sa;k5toum;iv;bIdu3llakuric0Tmpa3Gn6ohsiu1ra5un1Lwaguc0T;c0Sj;d5o,p4;ah1Vy;a7e6i5ohannesZ;l1Xn0;dd37rusalem;ip4k5;ar2J;bad0mph1QnBrkutYs8ta01z5̇zm7;m6tapala5;pa;ir;fah0l6tanb5;ul;am2Zi2I;che2d5;ianap2Lo21;aBe8o5yder2W; chi mi6ms,nolulu,u5;st2;nh;f6lsin5rakli2;ki;ei;ifa,lifax,m7n5rb1Dva3;gAnov5oi;er;bu2Wilt2;aFdanEenDhCiPlasgBo9raz,u5;a5jr21;dal6ng5yaquil;zh1H;aja2Lupe;ld coa18then5;bu2P;ow;ent;e0Toa;sk;lw7n5za;dhi5gt1C;nag0S;ay;aisal26es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Nl paso;in5mont2;bur5;gh;aAe8ha0Visp4o7resd0Ju5;b5esseldorf,rb0shanbe;ai,l0G;ha,nggu0rtmu11;hradRl5troit;hi;donghHe5k08li0masc1Xr es sala1HugavpiY;gu,je2;aKebu,hAo5raio03uriti1P;lo7n6penhag0Ar5;do1Nk;akLst0V;gVm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;n5ttogr12;digarh,g5;ch8sha,zh06;i9lga8mayenJn6pe town,r5;acCdiff;ber18c5;un;ry;ro;aUeMhJirmingh0ToIr9u5;chareRdapeRenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil0Mtisla7zzav5;il5;le;va;goZst2;op6ubaneshw5;ar;al;iBl9ng8r5;g6l5n;in;en;aluru,hazi;fa5grade,o horizonte;st;ji1rut;ghd0BkGnAot9r7s6yan n4;ur;el,r07;celo3ranquil09;na;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a04b01cc00ddis abaZgartaYhmedWizawl,lQmNnHqaZrEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a6chora5kaNtwerp;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 8buquerq7e5giers,maty;ppo,xandr5;ia;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg", - "Country": "true¦0:39;1:2M;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om3DpZqat1KrXsKtCu6v4wal3yemTz2;a25imbabwe;es,lis and futu2Y;a2enezue32ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2Y;k.,s.2; 28a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Ys and caic1U; and 2-2;toba1K;go,kel0Znga;iw2Wji2nz2S;ki2U;aCcotl1eBi8lov7o5pa2Cri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Rriname;lomon1Wmal0uth 2;afr2JkLsud2P;ak0en0;erra leoEn2;gapo1Xt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele25luc0mart20;epublic of ir0Dom2Duss0w2;an26;a3eHhilippinTitcairn1Lo2uerto riM;l1rtugE;ki2Cl3nama,pua new0Ura2;gu6;au,esti2;ne;aAe8i6or2;folk1Hth3w2;ay; k2ern mariana1C;or0N;caragua,ger2ue;!ia;p2ther19w zeal1;al;mib0u2;ru;a6exi5icro0Ao2yanm05;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagasc00l6r4urit3yot2;te;an0i15;shall0Wtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed01;a5e4i2uxembourg;b2echtenste11thu1F;er0ya;ban0Hsotho;os,tv0;azakh1Ee3iriba03o2uwait,yrgyz1E;rWsovo;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an", - "Region": "true¦0:2M;1:2S;2:2J;a2Pb2Cc1Yd1Tes1Sf1Qg1Kh1Gi1Bj17k12l0Zm0On07o05pZqWrTsKtFuCv9w5y3zacatec2T;akut0o0Du3;cat2k07;a4est 3isconsin,yomi1L;bengal,vi6;rwick2Ashington3;! dc;er4i3;rgin0;acruz,mont;dmurt0t3;ah,tar3; 2Ka0W;a5e4laxca1Qripu1Wu3;scaDva;langa1nnessee,x2E;bas0Um3smNtar24;aulip2Cil nadu;a8i6o4taf10u3ylh1E;ffYrr03s19;me1Bno1Puth 3;cVdU;ber0c3kkim,naloa;hu2ily;n4skatchew2xo3;ny; luis potosi,ta catari1;a3hode9;j3ngp06;asth2shahi;ingh24u3;e3intana roo;bec,en5reta0Q;ara7e5rince edward3unjab; i3;sl0A;i,nnsylv3rnambu0A;an0;!na;axa0Xdisha,h3klaho1Zntar3reg6ss0Ax0F;io;aIeDo5u3;evo le3nav0V;on;r3tt16va scot0;f8mandy,th3; 3ampton15;c5d4yo3;rk13;ako1M;aroli1;olk;bras1Lva0Bw3; 4foundland3;! and labrador;brunswick,hamp0Wjers3mexiRyork state;ey;galOyarit;a9eghala0Mi5o3;nta1r3;dov0elos;ch5dlanCn4ss3zor11;issippi,ouri;as geraOneso18;ig2oac2;dhy12harasht0Gine,ni4r3ssachusetts;anhao,i el,ylF;p3toba;ur;anca0Ie3incoln0IouisH;e3iR;ds;a5e4h3omi;aka06ul1;ntucky,ra01;bardino,lmyk0ns0Qr3;achay,el0nata0X;alis5har3iangxi;kh3;and;co;daho,llino6n3owa;d4gush3;et0;ia1;is;a5ert4i3un2;dalFm0D;fordZ;mpYrya1waii;ansu,eorg0lou7oa,u3;an4erre3izhou,jarat;ro;ajuato,gdo3;ng;cesterS;lori3uji2;da;sex;ageTe6o4uran3;go;rs3;et;lawaLrbyK;aEeaDh8o3rimea ,umbr0;ahui6l5nnectic4rsi3ventry;ca;ut;i02orado;la;e4hattisgarh,i3uvash0;apQhuahua;chn4rke3;ss0;ya;ra;lFm3;bridge6peche;a8ihar,r7u3;ck3ryat0;ingham3;shi3;re;emen,itish columb0;h0ja cal7lk6s3v6;hkorto3que;st2;an;ar0;iforn0;ia;dygea,guascalientes,lAndhr8r4ss3;am;izo1kans4un3;achal 6;as;na;a 3;pradesh;a5ber4t3;ai;ta;ba4s3;ka;ma", - "Place": "true¦a0Eb0Bc04d03e02f00gVhUiRjfk,kOlMmJneGoFpBque,rd,s9t6u5v4w1y0;akutOyz;ake isFis1y0;!o;!c;a,ostok,t;laanbaatar,p02safa,t;ahiti,e1he 0;bronx,hamptons;nn,x;a0fo,oho,t,under7yd;khalNsk;a2e1h0itcairn;l,x;k,nnN;!cif04;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dNnn;gadZlibu,nhattZ;a0gw,hr;s,x;an1osrae,rasnoyar0ul;sk;!s;a1cn,da,nd0st;ianRochina;!x;arlem,kg,nd,oHwy;a3re0;at 0enwich;brita0lakH;in;!y village;co,l0ra;!a;urope,vergladC;ak,en,fw,ist,own4xb;al5dg,gk,h2l1o0rA;lo,nn;!t;a1ina0uuk;town;morro,tham;!if;cn,e1kk,l0rooklyn;vd;l air,verly hills;frica,lta,m7n3r2sia,tl1ve,zor0;es;!ant2;ct1iz;adyr,tarct0;ic0; oce0;an;ericas,s", - "MaleName": "true¦0:E5;1:D6;2:DO;3:AY;4:D2;5:CG;6:B6;7:CW;8:C8;9:DK;A:DL;B:A6;C:C2;aCObBLcAJd9He8Nf85g7Ih6Ui6Ej5Ek52l4Dm35n2To2Np2Fqu2Dr1Ls11t0Eu0Dv07wTxSyIzD;aDor0;cDh9Tkaria,n5W;hEkD;!aCM;ar5WeCL;aLoFuD;sDu2KvBY;if,uf;nFsEusD;ouf,sD;ef;aDg;s,tD;an,h0;hli,nBMssX;avi3ho4;aMeKiFoDyaC2;jcie8Clfgang,odrow,utD;!er;lDnst1;bFey,frD1lD;aBDiD;am,e,s;e9Fur;i,nde6sD;!l8t1;de,lErrAyD;l1ne;lDt3;aAAy;aGiDladimir,ojte7Z;cEha0kt69nceDrgAJva0;!nt;e3Vt67;lentDnA5;in4Y;ghBVlyss5Cnax,sm0;aXeShOiMoHrFuEyD;!l3ro7s1;n9r5C;avAWeDist0oy,um0;ntAOv5Zy;bGdFmDny;!as,mDoharu;aCTie,y;!d;iBy;mDt5;!my,othy;adFeoEia8GomD;!as;!do8P;!de5;dGrD;en9LrD;an9KeDy;ll,n9J;!dy;dgh,ha,iDnn3req,tsu4T;cB5ka;aTcotRePhLiJoHpenc3tDur1Vylve9Kzym1;anFeDua8D;f0phBTvDwa8C;e62ie;!islaw,l8;lom1nBFuD;leyma7ta;dDlBm1yabonga;!dhart7Bn8;aFeD;lDrm0;d1t1;h7Une,qu10un,wn,y7;aDbasti0k2Al4Rrg4Oth,ymoAU;m5n;!tD;!ie,y;lEmDnti2Eq5Bul;!ke5MmCu4;ik,vato7X;aYeUheAAiQoHuEyD;an,ou;b7NdEf5pe7SssD;!elBZ;ol3Fy;an,bKcJdIel,geHh0landBQmGnFry,sEyD;!ce;coe,s;!aAHnC;an,eo;l47r;e5Og3n8olfo,ri7A;co,ky;bCeB7;cDl8;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ubAx,yDza;an1InY;gA8iD;naA4s;ch70fa4lHmGndFpha4sEul,wi2HyD;an,mo82;h7Vm5;alBDol2Uy;iATon;f,ph;ent2inD;cy,t1;aIeGhilFier72ol,rD;aka16eD;m,st1;!ip,lip;dALrcy,tD;ar,e3Gr1X;b4Kdra7Ft4ZulD;!o17;ctav3Fi3liv3mAFndrej,rHsEtDum9wA;is,to;aEc9k9m0vD;al5Z;ma;i,l53vL;aLeJiFoDu3A;aDel,j5l0ma0r3K;h,m;cEg4i49kD;!au,h7Uola;holBkDolB;!olB;al,d,il,ls1vD;il8Y;hom,thD;anDy;!a4i4;aZeWiMoHuEyD;l2Jr1;hamEr6XstaD;fa,p5C;ed,mH;di0We,hamFis2FntEsDussa;es,he;e,y;ad,ed,mD;ad,ed;cIgu4hai,kGlFnEtchD;!e6;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk8;aEeD;al,l;el,l;hElv2rD;le,ri6v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe6;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha6tDv2;iDy;!m,n;in,on;!el,oPus;!el9IoOus;iGu4;achDcolm,ik;ai,y;amEdi,eDmoud;sh;adDm5T;ou;aXeQiOlo3EoKuEyD;le,nd1;cGiFkDth3uk;aDe;!s;gi,s,z;as,iaD;no;g0nn7SrenFuDv8Jwe6;!iD;e,s;!zo;am,oD;n4r;a8Cevi,la5JnIoGst3thaFvD;eDi;nte;bo;!nD;!a6Sel;!ny;mFnErDur5Hwr5H;ry,s;ce,d1;ar,o5A;aLeGhaled,iDrist5Iu4Vy6X;er0p,rD;by,k,ollD;os;en0iGnDrmit,v44;!dEnDt5Z;e1Ay;a6ri59;r,th;cp3j5m66na73rEsp9them,uD;ri;im,l;a02eUiSoGuD;an,lDst2;en,iD;an,en,o,us;aNeLhnKkubBnIrGsD;eEhDi8Bue;!ua;!ph;dDge;an,i,on;!aDny;h,s,th5I;!ath5Hie,nC;!l,sDy;ph;o,qu2;an,mD;!mC;d,ffIrFsD;sDus;!e;a6BemEmai7oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKdAkImHrFsEvi3yD;!dAs1;on,p3;ed,od,rDv56;e5Nod;al,es4Xis1;a,e,oDub;b,v;k,ob,quD;es;aWbQchiPgNkeMlija,nuLonut,rJsFtDv0;ai,suD;ki;aEha0i7DmaDsac;el,il;ac,iaD;h,s;a,vinDw2;!g;k,nngu5S;!r;nacDor;io;ka;ai,rahD;im;aPeJoIuDyd9;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4JdA;an,s0;lGo50rFuDv8;hi4Gki,tD;a,o;is1y;an,ey;k,s;!im;ib;aVeRiPlenOoLrHuD;ilEsD;!tavo;herme,lerD;mo;aFegDov3;!g,orD;io,y;dy,h5Wnt;nzaErD;an,d1;lo;!n;lbe5Ano,oD;rg3Hvan5A;ne,oFrD;aDry;ld,rd5H;ffr8rge;brElArDv2;la28r3Sth,y;e3EielD;!i5;aTePiNlLorr0NrD;anFedDitz;!dCeDri2B;ri2A;cFkD;!ie,lD;in,yn;esLisD;!co,z36;etch3oD;yd;d4lDnn,onn;ip;deriFliEng,rnD;an06;pe,x;co;bi0di,hd;ar04dZfrYit0lSmKnHo2rFsteb0th0uge7vDymAzra;an,eD;ns,re36;gi,i0DnDrol,v2w2;est4Pie;oEriqDzo;ue;ch;aJerIiEmD;aIe2Z;lErD;!h0;!iD;o,s;s1y;nu4;be0Cd1iGliFmEt1viDwood;n,s;er,o;ot1Ys;!as,j4NsD;ha;a2en;!dCg9mGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay7ight;a7dl8nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e6ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay7ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne6rDyl;eDin,yl;l3Bn;n,o,us;!e,i4ny;iDon;an,en,on;e,lB;as;a09e07hYiar0lNoIrGuEyrD;il,us;rtD;!is;aDistob0U;ig;dy,lGnErD;ey,neli5y;or,rD;ad;by,e,in,l2t1;aIeFiDyK;fDnt;fo0Ft1;meEt5velaD;nd;nt;rFuEyD;!t1;de;enD;ce;aIeGrisEuD;ck;!tD;i0oph3;st3;er;d,rDs;b4leD;s,y;cDdric,s9;il;lGmer1rD;ey,lEro6y;ll;!os,t1;eb,v2;a07eZiVlaUoRrEuDyr1;ddy,rtK;aLeGiFuEyD;an,ce,on;ce,no;an,ce;nEtD;!t;dEtD;!on;an,on;dEndD;en,on;!foDl8y;rd;bErDyd;is;!by;i7ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n8rDt;eDy;tt;ey;dDeE;ar,iD;le;ar17b0Vd0Rf0Pgust2hm0Mi0Jja0Il04m00nSputsiRrIsaHuFveEyDziz;a0kh0;ry;gust5st2;us;hi;aKchJiIjun,maHnFon,tDy0;hDu09;ur;av,oD;ld;an,nd0H;!el,ki;ie;ta;aq;as,dIgel0CtD;hoGoD;i7nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePdAeJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;dAm9;ar;en;ad,eD;d,t;in;onD;so;aEi,olfDri0vik;!o;mDn;!a;dHeGraEuD;!bakr,lfazl;hDm;am;!l;allIelFoulaye,ulD;!lDrF;ah,o;! rD;ahm0;an;ah;av,on", - "LastName": "true¦0:9F;1:9V;2:9H;3:9X;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:6E;B:77;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaB;aBhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsB;liA1s3;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukA;lk5roby5;dAllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisB;dor95lst31m2rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps3s0Y;hirAkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot2lliv4zuB;aEein0oD;i67j3Lyan8V;l6rm0;kol5lovy5re6Psa,to,uD;ng,sa;iDy5Z;rn5tD;!h;l5YmDngh,rbu;mo6Do6J;aFeDimizu;hu,vchD;en7Cuk;la,r17;gu8mDoh,pulve8Trra4R;jDyD;on5;evi6Filtz,miDneid0roed0ulz,warz;dEtD;!z;!t;ar42h6ito,lFnDr2saBto,v2;ch7d0AtDz;a4Pe,os;as,ihAm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins3;!on;bei0LcEes,vDzzo;as,e8;ci,hards3;ag4es,it0ut0y9;dFmEnDsmu7Zv5F;tan1;ir7os;ic,u;aSeLhJiGoErDut6;asad,if5Zochazk1W;lishc24pDrti62u55we66;e2Tov48;cEe09nD;as,to;as60hl0;aDillips;k,m,n5K;de3AetIna,rGtD;ersErovDtersC;!a,ic;en,on;eDic,ry,ss3;i8ra,tz,z;ers;h71k,rk0tEvD;ic,l3T;el,t2O;bJconnor,g2ClGnei5PrEzD;demir,turk;ella3MtDwe5N;ega,iz;iDof6GsC;vDyn1F;ei8;aPri1;aLeJguy1iFoDune44ym4;rodahl,vDwak;ak3Uik5otn56;eEkolDlsCx3;ic,ov6X;ls1miD;!n1;ils3mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov2;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dAti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkAqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k2nDo;d,gu;mbarDpe2Rvr2;di;!nDu,yana1R;coln,dD;bDholm;erg;bed5TfeGhtFitn0kaEn6rDw2G;oy;!j;in1on1;bvDvD;re;iDmmy,rsCu,voie;ne,t11;aTennedy,h4iSlQnez46oJrGuEvar4woD;k,n;cerDmar58znets5;a,o2G;aDem0i2Zyeziu;sni3PvD;ch3U;bay4Frh0Jsk0TvaFwalDzl5;czDsB;yk;cFlD;!cDen3Q;huk;!ev2ic,s;e6uiveD;rt;eff0l2mu8nnun1;hn,lloe,minsBrEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r2;e2JhFnErge2Ju2NvD;anA;es,ss3;anEnsD;en,on,t3;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks3obs1;brahimAglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz2fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers3;kkiEnD;on1;la,n1;dz2g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw3;o,staf2Utierr7zm4;ayDg2iffitUub0;li1G;lub3Rme0JnD;calv9zale0I;aj,i;l,mDordaL;en7;iev3B;gnJlGmaFnd2No,rDs2Nuthi0;cDza;ia;ge;eaElD;agh0i,o;no;e,on;ab0erMiIjeldsted,lor9oGrFuD;cDent9ji3F;hs;an1Wiedm4;ntaDrt6st0urni0;na;lipEsD;ch0;ovD;!ic;hatAnandeVrD;arDei8;a,i;ov2;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s3;er,is3wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov2;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e3uD;ca;hl,mcevsBnErw6t2EviD;d5es,s;ieDku1S;ls1;ki;a05e00hNiobMlarkLoFrD;ivDuz;elli;h1lGntFop0rDs26x;byn,reD;a,ia;i,rer0O;em4liD;ns;!e;anu;aLeIiu,oGriDuJwe;stD;eDiaD;ns1;i,ng,uFwDy;!dhury;!n,onEuD;ng;!g;kEnDtterjee,v7;!d,g;ma,raboD;rty;bGl09ng2rD;eghetEnD;a,y;ti;an,ota0M;cer9lder3mpbeIrFstDvadi08;iDro;llo;doEt0uDvalho;so;so,zo;ll;es;a09eXhUiSlNoGrFyD;rne,tyD;qi;ank5iem,ooks,yant;gdan5nFruya,su,uchEyHziD;c,n5;ard;darDik;enD;ko;ov;aEondD;al;nEzD;ev2;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss3;asD;hi;er,ham;b2ch,ez,hMiley,kk0nHrDu0;bEnDua;es,i0;ieDosa;ri;dDik;a8yopadhyD;ay;ra;er;k,ng;ic;cosZdYguilXkhtXlSnJrGsl4yD;aEd6;in;la;aEsl4;an;ujo,ya;dFgelD;ovD;!a;ersGov,reD;aDjL;ss1;en;en,on,s3;on;eksejGiyGmeiFvD;ar7es;ez;da;ev;ar;ams;ta", - "WeekDay": "true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s", - "Month": "true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il", - "Date": "true¦ago,t2week0yesterd4; e0e0;nd;mr2o0;d0morrow;ay;!w", - "FirstName": "true¦aKblair,cGdevFgabrieEhinaDjBk8l7m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g6ne;a1el0ina,org5;!okuh9;naia,r0;ion,lo;ashawn,uca;asCe1ir0rE;an;lsAnyat2rry;am0ess6ie,ude;ie,m5;ta;le;an,on;as2h0;arl0eyenne;ie;ey,sidy;lex2ndr1ubr0;ey;a,ea;is", - "Person": "true¦ashton kutchTbScNdLeJgastOhHinez,jFkEleDmCnettKoBp9r4s3t2v0;a0irgin maH;lentino rossi,n go3;aylor,heresa may,iger woods,yra banks;addam hussain,carlett johanssKlobodan milosevic,uC;ay romano,e3o1ush limbau0;gh;d stewart,nald0;inho,o;ese witherspoFilly;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0;on;dinal wols1son0;! palm2;ey;arack obama,rock;er", - "Verb": "true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en", - "PhrasalVerb": "true¦0:7E;1:72;2:7Q;3:7G;4:6V;5:7T;6:7I;7:6O;8:71;9:6P;A:5T;B:7C;C:7J;D:6Q;E:7L;F:7D;G:7S;H:46;a7Yb6Jc5Sd5Oe5Mf4Lg43h3Miron0j3Ik3Dl2Xm2Ln2Jo2Hp1ZquietDr1Ms0FtVuTvacuum 1wLyammerBzI;eroAip JonI;e0k0;by,up;aOeLhKiJorIrit5H;d 1k35;mp0n2Xpe0r7s7;eel Fip G;aJiIn2L;gh 0Crd0;n Fr 3S;it 60k7lk6rm 6Bsh 7Lt6Ov53;rgeBsI;e 9herA;aXeVhTiPoNrKuIype 68;ckArn I;d2in,o3Vup;aJiIot0y 2L;ckleDp G;ckDde 02;neDp Is4Q;d2o71up;ck KdJe Igh69me0p o0Kre0;aw3ba4d2in,up;e 60y 1;by,oC;ink Irow 6B;ba4ov8up;aIe 4Vll52;m 1r 01;ckBke Jlk I;ov8u53;aIba4d2in,o3Fup;ba4ft8p58w3;a0Nc0Me0Gh0Ci09l05m04n03o02pXquare WtOuMwI;earKiI;ngJtch I;aw3ba4o75; by;ck Iit 1m 1ss0;in,up;aNe10iMoKrIucH;aigh1ZiI;ke 6En3C;p Irm22;by,in,oC;nHr 1tc3V;cHmp0nd Ir6Xve6y 1;ba4d2up;d2oCup;arHeLiKlJrIurB;ingBuc7;a3Hit 47;l16n 1;e5Qll0;be4Prt0;ap 4Row F;ash 5Doke0;eep JiIow 9;c3Yp 1;in,oI;ff,v8;gn 4WngJt Iz7;d2o5up; al52le0;aKoIu4S;ot Iut0w 6B;aw3ba4f3IoC;cHdeAk56ve6;e Mll0nd LtI; Itl4G;d2in,o5upI;!on;aw3ba4d2in,o2Aup;o5to;al4Zout0rap4Z;il6v7;aTeQiPoLuI;b 4Sle0n Istl7;aIba4d2in5Ho3Tt3Bu3R;c29w3;ll Kot JuI;g2Vnd6;a29f32o5;arEin,o5;ng 51p6;aIel6inAnt0;c5Bd I;o33u0L;cHt0;aVeUiTlRoPrMsyc2JuI;ll Kt I;aIba4d2in,o1Rt3Fup;p3Kw3;ap3Jd2in,o5t3Dup;attleBess JiLoI;p 1;ah1Ron;iIp 5Fr3XurDwer 5F;nt0;ay4BuI;gAmp 9;ck Gg0leBn 9p48;el 4JncilA;c41ir 2Rn0ss KtJy I;ba4oC; d2c27;aw3ba4o1C;pIw3W;e3Vt F;arrowDerd0oI;d6teD;aQeNiMoKuI;ddl7lI;l 3I;cHp 1uth6ve I;al3Md2in,o5up;ss0x 1;asur7lJss I;a1Jup;t 9;ke Jn 9rIs1Sx0;k 9ry6;do,o47up;aVeTiOoIuck0;aMc3Gg LoIse0;k Ise3E;aft8ba4d2forw2Jin45ov8uI;nd8p;in,o0Q;d 9;e LghtKnJsIv1Y;ten G;e 1k 1; 1e36;arEd2;av1Mt 36velI; o3T;c7p 1sh ItchBugh6y20;in3To5;eJick6nock I;d2o3P;eIyA;l 2Pp I;aw3ba4d2fXin,o0Bto,up;aKoJuI;ic7mpA;ke30tD;c39zz 1;aUePiMoJuI;nkerDrry 1s0Z;lIneArse2W;d Ie 1;ba4d2fast,o05up;de Jt I;ba4on,up;aw3o5;aIlp0;d Kl 2Ar It 1;fIof;rom;in,oXu1H;cHm 1nJve Iz25;it,to;d Ig 2EkerK;d2in,o5;aWeQive Oloss 22oKrJunI; f0Q;in3Gow 2A; Iof 0Y;aJb1Dit,oIrEt0Su18;ff,n,v8;bo5ft8hOw3;aw3ba4d2in,oIup,w3;ff,n,ut;a1Dek0t I;aJb17d2oIrEup;ff,n,ut,v8;cJhIl1WrEt,w3;ead;ross;d aJnI;g 1;bo5;a0Ce05iWlSoOrKuI;cHel 1;k 1;eJighten IownBy 1;aw3oC;eIshe1N; 1z7;lKol I;aIwi1G;bo5rE;d 9low 1;aJeIip0;sh0;g 9ke0mIrI;e G;gPlNnLrJsIzzle0;h G;e Im 1;aw3ba4up;d0isI;h 1;e Il 19;aw3fN;ht ba4ure0;eNnJsI;s 1;cKd I;fIoC;or;e F;dWl 1;cMll Irm0t0W;ap05bKd2in,oJtI;hrough;ff,ut,v8;a4ehi20;e J;at0dge0nd Iy7;oCup;oKrI;ess 9op I;aw3bUin,o1D; 0Eubl7;aYhVlean 9oIross Fut 10;me LoJuntI; o1T;k 1l I;d2oC;aObNforLin,oKtJuI;nd8;ogeth8;ut,v8;th,wI;ard;a4y;pIrEw3;art;eIipA;ck FeI;r 1;lOncel0rLsKtch JveA; in;o1Cup;h Ft6;ry JvI;e 01;aw3o18;l ImD;aIba4d2o16up;rEw3;a0Ne0El07oYrNuI;bblKcklZil05lk 9ndlZrn 0Bst JtIy Gzz6;t F;in,o5up;e I;ov8;anReaPiIush6;ghMng I;aJba4d2forIin,o5up;th;bo5lIrEw3;ong;teI;n 1;k I;d2in,o5up;ch0;arPgDil 9n7oLssKttlJunce Ix F;aw3ba4;e 9; arE;k Ft 1;e 1;d2up; d2;d 1;aNeed0oIurt0;cKw I;aw3ba4d2o5up;ck;k I;in,oP;ck0nk0st6; oOaLef 1nd I;d2ov8up;er;up;r0t I;d2in,oIup;ff,ut;ff,nI;to;ck Oil0nKrgJsI;h F;ainBe F;g FkB; on;in,o5; o5;aw3d2o5up;ay;cRdNsk Kuction6; oC;ff;arEo5;ouI;nd;d I;d2oIup;ff,n;own;t G;o5up;ut", - "Modal": "true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld", - "Adjective": "true¦0:7P;1:84;2:83;3:8A;4:7W;5:5S;6:4N;7:4O;8:58;9:6I;A:81;a6Wb6Gc63d5Je54f4Hg49h3Wi39j37k36l2Vm2Ln2Bo1Wp1Dquack,r12s0Ft07uMvJwByear5;arp0eFholeEiDoB;man5oBu6P;d6Rzy;despr7Ls5S;!sa7;eClBste2A;co1Nl o4W;!k5;aCiBola4M;b89ce versa,ol5H;ca3gabo6Gnilla;ltUnHpCrb5Msu4tterB;!mo7G; Eb1SpDsBti1M;ca7etBide dKtairs;!ti2;er,i3U;f36to da1;aLbeco75convin29deIeHfair,ivers4knGprecedVrEsCwB;iel3Nritt6A;i1XuB;pervis0spec3Y;eBu5;cognHgul6Tl6T;own;ndi2v64xpect0;cid0rB;!grou5ZsB;iz0tood;b7pp0Dssu6UuthorB;iz0;i26ra;aGeEhDi6AoCrB;i1oubl0us3M;geth8p,rp6Vuc67;ough4Wril33;en60l32mpBrr2X;o6Ati2;boo,lBn;ent0;aWcVeThSiQmug,nobbi3LoOpNqueami3LtFuBymb6H;bDi gener5DpBrpri6D;erBre0N;! dup8b,i2C;du0seq52;anda77eGiFrBunni2y3F;aightCiB;ki2p0; fBfB;or5K;ll,r5S;aBreotyp0;dfa6Cmi2;a55ec2Gir1Hlend6Cot on; call0le,mb8phist1XrBu0Vvi48;d6Ary;gnifica3nB;ce51g7;am2Re8ocki2ut;cBda1em5lfi32ni1Wpa6Jre6;o1Er42;at5Gient28reec5G;cr0me;aJeEiCoB;bu60tt51uQy4;ghtBv4;!-2Bf9;ar,bel,condi1du6Dfres5AlEpublic42sCtard0vB;ea26;is4CoB;lu1na3;aQe1Cuc4A;b5TciBllyi2;al,st;aOeLicayu6lac5Ropuli5QrCuB;bl5Jmp0n51;eGiDoB;!b07fu5RmiBp8;ne3si2;mCor,sBva1;ti6;a53e;ci5MmB;a0EiB;er,um;ac20rBti1;feAma2XpleBv38;xi2;rBst;allelDtB;-tiBi4;me;!ed;bLffJkIld fashion0nHpGrg1Eth8utFvB;al,erB;!all,niCt,wB;eiBrouB;ght;do0Ter,g2Qsi4B;en,posi1; boa5Og2Oli6;!ay; gua5MbBli6;eat;eDsB;cBer0Eole1;e6u3O;d2Xse;aJeIiHoBua4X;nFrCtB;ab7;thB;!eB;rn;chala3descri58stop;ght5;arby,cessa44ighbor5xt;k0usia1A;aIeGiDoBultip7;bi7derBl0Vnth5ot,st;a1n;nBx0;dblo0RiaBor;tu37;ande3Qdi4NnaBre;ci2;cBgenta,in,j01keshift,le,mmoth,ny,sculi6;ab33ho;aKeFiCoBu15;uti14vi2;mCteraB;l,te;it0;ftEgBth4;al,eCitiB;ma1;nda3K;!-0C;ngu3Zst,tt8;ap1Xind5no0A;agg0uB;niMstifi0veni7;de4gno4Klleg4mQnEpso 20rB;a1rB;eleBita0J;va3; KaJbr0corIdGfluenQiQnFsEtCviB;go0Fti2;aAen3SoxB;ic3B;a6i2Vul0D;a1er,oce3;iCoB;or;reA;deq3Qppr33;fBsitu,vitro;ro3;mFpB;arDerfeAoBrop8;li1rtB;a3ed;ti4;eBi0S;d2Vn3C;aIeFiDoBumdr3I;ne36ok0rrBs08ur5;if2Z;ghfalut1QspB;an2X;aClB;liYpf9;li2;lEnDrB;d04roB;wi2;dy;f,low0;ainf9ener2Oiga24lHoGraDuB;ilBng ho;ty;cCtB;ef9is;ef9;ne,od;ea2Iob4;aTeNinMlKoFrB;a1VeDoz1MustB;raB;ti2;e2Gq10tf9;oDrB; keeps,eBm8tuna1;g03ign;liB;sh;aBue3;g31tte1P;al,i1;dFmCrB;ti7;a7ini6;ne;le; up;bl0i3l27r Cux,voB;ri1uri1;oBreac1E;ff;aLfficie3lKmHnFreAthere4veExB;aAcess,pe1QtraCuB;be2Nl0E;!va1E;n,ryday; BcouraEti0O;rou1sui1;erCiB;ne3;gi2;abo23dMe17i1;g8sB;t,ygB;oi2;er;aReJiDoBrea14ue;mina3ne,ubB;le,tf9;dact1Bfficu1OsCvB;er1K;creDeas0gruntl0hone1FordCtB;a3ressM;er5;et; HadpGfFgene1PliDrang0spe1PtCvoB;ut;ail0ermin0;be1Mca1ghB;tf9;ia3;an;facto;i5magBngeroUs0G;ed,i2;ly;ertaMhief,ivil,oDrB;aBowd0u0G;mp0vZz0;loImGnCrrBve0P;eAu1I;cre1fu0LgrDsCtB;empo0Dra0E;ta3;ue3;mer08pleB;te,x;ni4ss4;in;aNeIizarHlFoCrB;and new,isk,okN;gCna fiUttom,urgeoB;is;us;ank,indB;!i2;re;autif9hiDloCnBst,yoD;eUt;v0w;nd;ul;ckCnkru0WrrB;en;!wards; priori,b0Mc0Jd09fra08g04h03lYmWntiquVppSrMsIttracti06utheHvEwB;aCkB;wa0T;ke,re;ant garCerB;age;de;ntU;leep,piDsuDtonB;isB;hi2;ri2;ab,bitEroDtiB;fiB;ci4;ga3;raB;ry;are3etiNrB;oprB;ia1;at0;aJuB;si2;arEcohCeBiIl,oof;rt;olB;ic;mi2;ead;ainDgressiConiB;zi2;ve;st;id; IeGuFvB;aCerB;se;nc0;ed;lt;pt,qB;ua1;hoc,infinitB;um;cuCtu4u1;al;ra1;erLlKoIruHsCuB;nda3;e3oCtraA;ct;lu1rbi2;ng;te;pt;aBve;rd;aze,e;ra3;nt", - "Comparable": "true¦0:41;1:4I;2:45;3:2Y;4:4B;5:3X;a4Ob44c3Od3De35f2Rg2Fh24i1Vj1Uk1Rl1Jm1Dn17o15p0Vqu0Tr0KsTtMuIvFw7y6za13;ell27ou4;aBe9hi1Yi7r6;o4y;ck0Ode,l6n1ry,se;d,y;a6i4Mt;k,ry;n1Tr6sK;m,y;a7e6ulgar;nge5rda2xi4;g9in,st;g0n6pco3Mse5;like0t6;i1r6;ue;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te5;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft3;aAe9iff,r7u6;pXr1;a6ict,o4;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi4;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp3;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p3;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in5le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b3isy,rm15sy;ce,mb3;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt3ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti4;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b3id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te5;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t3uiY;u1y;aIeeb3iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get5mG;my;erce8n6rm;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi4;gey,lm8r6;e5i4;ful;!i4;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i4;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd", - "TextOrdinal": "true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th", - "Cardinal": "true¦bHeEf8hundred,mHnineAone,qu6s4t0zero;en,h2rGw0;e0o;lve,n8;irt9ousandEree;e0ix5;pt1ven4xt1;adr0int0;illion;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion0;!s", - "Expression": "true¦a02b01dXeVfuck,gShLlImHnGoDpBshAtsk,u7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la", - "Adverb": "true¦a08by 06d02eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,well,ye0;p,s; to,wards5;h1iny bit,o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hYtimes,w09;a1e0;alT;ndomSthN;ar excellDer0oint blank; Nhaps;f3n0;ce0ly;! 0;ag02moW; courIten;ewKo0; longEt 0;onIwithstanding;aybe,eanwhiAore0;!ovB;! aboU;deed,steV;en0;ce;or2u0;lArther0;!moJ; 0ev3;examp0good,suH;le;n1v0;er; mas0ough;se;e0irect1; 1finite0;ly;ju8trop;far,n0;ow; DbroCd nauseam,gBl6ny3part,s2t 0w4;be6l0mo6wor6;arge,ea5; soon,ide;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori", - "Determiner": "true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er" -}; - -var seq = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", - cache$1 = seq.split("").reduce(function (n, o, e) { - return n[o] = e, n; -}, {}), - toAlphaCode = function toAlphaCode(n) { - if (void 0 !== seq[n]) return seq[n]; - var o = 1, - e = 36, - t = ""; - - for (; n >= e; n -= e, o++, e *= 36) {} - - for (; o--;) { - var _o = n % 36; - - t = String.fromCharCode((_o < 10 ? 48 : 55) + _o) + t, n = (n - _o) / 36; - } - - return t; -}, - fromAlphaCode = function fromAlphaCode(n) { - if (void 0 !== cache$1[n]) return cache$1[n]; - var o = 0, - e = 1, - t = 36, - r = 1; - - for (; e < n.length; o += t, e++, t *= 36) {} - - for (var _e = n.length - 1; _e >= 0; _e--, r *= 36) { - var _t = n.charCodeAt(_e) - 48; - - _t > 10 && (_t -= 7), o += _t * r; - } - - return o; -}; - -var encoding = { - toAlphaCode: toAlphaCode, - fromAlphaCode: fromAlphaCode -}, - symbols = function symbols(n) { - var o = new RegExp("([0-9A-Z]+):([0-9A-Z]+)"); - - for (var e = 0; e < n.nodes.length; e++) { - var t = o.exec(n.nodes[e]); - - if (!t) { - n.symCount = e; - break; - } - - n.syms[encoding.fromAlphaCode(t[1])] = encoding.fromAlphaCode(t[2]); - } - - n.nodes = n.nodes.slice(n.symCount, n.nodes.length); -}; - -var indexFromRef = function indexFromRef(n, o, e) { - var t = encoding.fromAlphaCode(o); - return t < n.symCount ? n.syms[t] : e + t + 1 - n.symCount; -}, - toArray = function toArray(n) { - var o = [], - e = function e(t, r) { - var s = n.nodes[t]; - "!" === s[0] && (o.push(r), s = s.slice(1)); - var c = s.split(/([A-Z0-9,]+)/g); - - for (var _s = 0; _s < c.length; _s += 2) { - var u = c[_s], - i = c[_s + 1]; - if (!u) continue; - var l = r + u; - - if ("," === i || void 0 === i) { - o.push(l); - continue; - } - - var f = indexFromRef(n, i, t); - e(f, l); - } - }; - - return e(0, ""), o; -}, - unpack = function unpack(n) { - var o = { - nodes: n.split(";"), - syms: [], - symCount: 0 - }; - return n.match(":") && symbols(o), toArray(o); -}; - -var unpack_1$1 = unpack, - unpack_1$1$1 = function unpack_1$1$1(n) { - var o = n.split("|").reduce(function (n, o) { - var e = o.split("¦"); - return n[e[0]] = e[1], n; - }, {}), - e = {}; - return Object.keys(o).forEach(function (n) { - var t = unpack_1$1(o[n]); - "true" === n && (n = !0); - - for (var _o2 = 0; _o2 < t.length; _o2++) { - var r = t[_o2]; - !0 === e.hasOwnProperty(r) ? !1 === Array.isArray(e[r]) ? e[r] = [e[r], n] : e[r].push(n) : e[r] = n; - } - }), e; -}; - -var efrtUnpack_min = unpack_1$1$1; //words that can't be compressed, for whatever reason - -var misc = { - // numbers - '20th century fox': 'Organization', - // '3m': 'Organization', - '7 eleven': 'Organization', - 'motel 6': 'Organization', - g8: 'Organization', - vh1: 'Organization', - q1: 'Date', - q2: 'Date', - q3: 'Date', - q4: 'Date', - her: ['Possessive', 'Pronoun'], - his: ['Possessive', 'Pronoun'], - their: ['Possessive', 'Pronoun'], - themselves: ['Possessive', 'Pronoun'], - your: ['Possessive', 'Pronoun'], - our: ['Possessive', 'Pronoun'], - my: ['Possessive', 'Pronoun'], - its: ['Possessive', 'Pronoun'] -}; -var fancy = { - Unit: function Unit(lex, w) { - lex[w] = ['Abbreviation', 'Unit']; - }, - Cardinal: function Cardinal(lex, w) { - lex[w] = ['TextValue', 'Cardinal']; - }, - TextOrdinal: function TextOrdinal(lex, w) { - lex[w] = ['Ordinal', 'TextValue']; - lex[w + 's'] = ['TextValue', 'Fraction']; // add 'millionths' - }, - // add plural/singular forms - Singular: function Singular(lex, w, world) { - lex[w] = 'Singular'; - var plural = world.transforms.toPlural(w, world); - lex[plural] = lex[plural] || 'Plural'; - }, - // conjugate these verbs - Infinitive: function Infinitive(lex, w, world) { - lex[w] = 'Infinitive'; - var conj = world.transforms.conjugate(w, world); - var tags = Object.keys(conj); - - for (var i = 0; i < tags.length; i++) { - var str = conj[tags[i]]; - lex[str] = lex[str] || tags[i]; // only if it's safe - } - }, - // conjugate other Adjectival forms - Comparable: function Comparable(lex, w, world) { - lex[w] = 'Comparable'; - var conj = world.transforms.adjectives(w); - var tags = Object.keys(conj); - - for (var i = 0; i < tags.length; i++) { - var word = conj[tags[i]]; - lex[word] = lex[word] || tags[i]; // only if it's safe - } - }, - //conjugate phrasal-verbs - PhrasalVerb: function PhrasalVerb(lex, w, world) { - // whole thing - lex[w] = ['PhrasalVerb', 'Infinitive']; //add original form - - var words = w.split(' '); // lex[words[0]] = lex[words[0]] || 'Infinitive' - // //conjugate first word - - var conj = world.transforms.conjugate(words[0], world); - var tags = Object.keys(conj); - - for (var i = 0; i < tags.length; i++) { - var str = conj[tags[i]] + ' ' + words[1]; - lex[str] = lex[str] || ['PhrasalVerb', tags[i]]; - world.hasCompound[conj[tags[i]]] = true; - } - }, - // inflect our demonyms - 'germans' - Demonym: function Demonym(lex, w, world) { - lex[w] = 'Demonym'; - var plural = world.transforms.toPlural(w, world); - lex[plural] = lex[plural] || ['Demonym', 'Plural']; // only if it's safe - } -}; // let a user explode their lexicon, too - -var addWords = function addWords(wordsObj, lex, world) { - Object.keys(wordsObj).forEach(function (word) { - var tag = wordsObj[word]; // abbreviation-words are used in our tokenizer - - if (tag === 'Abbreviation' || tag === 'Unit') { - world.cache.abbreviations[word] = true; - } // cache multi-words - - - var multi = word.split(' '); - - if (multi.length > 1) { - world.hasCompound[multi[0]] = true; - } // do some ad-hoc work before adding it - - - if (fancy[tag] !== undefined) { - fancy[tag](lex, word, world); - return; - } //set it in our lexicon, basic - - - if (lex[word] === undefined) { - lex[word] = tag; - return; - } // if we already have that word - - - if (typeof lex[word] === 'string') { - lex[word] = [lex[word]]; - } - - if (typeof tag === 'string') { - lex[word].push(tag); - } else { - lex[word] = lex[word].concat(tag); - } - }); -}; // we do some ad-hoc stuff here, building-up our word-list - - -var buildOut = function buildOut(world) { - //our bag of words - var lexicon = Object.assign({}, misc); // start adding words to the lex - - Object.keys(_data).forEach(function (tag) { - var wordsObj = efrtUnpack_min(_data[tag]); // this part sucks - - Object.keys(wordsObj).forEach(function (w) { - wordsObj[w] = tag; - }); - addWords(wordsObj, lexicon, world); - }); // console.log(Object.keys(lexicon).length) - - return lexicon; -}; - -var unpack_1 = { - buildOut: buildOut, - addWords: addWords -}; // add words from plurals and conjugations data - -var addIrregulars = function addIrregulars(world) { - //add irregular plural nouns - var nouns = world.irregulars.nouns; - var words = Object.keys(nouns); - - for (var i = 0; i < words.length; i++) { - var w = words[i]; - world.words[w] = 'Singular'; - world.words[nouns[w]] = 'Plural'; - } // add irregular verb conjugations - - - var verbs = world.irregulars.verbs; - var keys = Object.keys(verbs); - - var _loop = function _loop(_i) { - var inf = keys[_i]; //add only if it it's safe... - - world.words[inf] = world.words[inf] || 'Infinitive'; - var forms = world.transforms.conjugate(inf, world); - forms = Object.assign(forms, verbs[inf]); //add the others - - Object.keys(forms).forEach(function (tag) { - world.words[forms[tag]] = world.words[forms[tag]] || tag; // lexicon should prefer other tags, over participle - - if (world.words[forms[tag]] === 'Participle') { - world.words[forms[tag]] = tag; + }; + var verbs$2 = { + Verb: { + notA: ['Noun', 'Adjective', 'Adverb', 'Value', 'Expression'] + }, + // walks + PresentTense: { + isA: 'Verb', + notA: ['PastTense', 'FutureTense'] + }, + // neutral form - 'walk' + Infinitive: { + isA: 'PresentTense', + notA: ['PastTense', 'Gerund'] + }, + //close the door! + Imperative: { + isA: 'Infinitive' // notA: ['PresentTense', 'PastTense', 'FutureTense', 'Gerund'], + + }, + // walking + Gerund: { + isA: 'PresentTense', + notA: ['PastTense', 'Copula', 'FutureTense'] + }, + // walked + PastTense: { + isA: 'Verb', + notA: ['FutureTense'] + }, + // will walk + FutureTense: { + isA: 'Verb' + }, + // is + Copula: { + isA: 'Verb' + }, + // would have + Modal: { + isA: 'Verb', + notA: ['Infinitive'] + }, + // had walked + PerfectTense: { + isA: 'Verb', + notA: 'Gerund' + }, + Pluperfect: { + isA: 'Verb' + }, + // shown + Participle: { + isA: 'PastTense' + }, + // show up + PhrasalVerb: { + isA: 'Verb' + }, + //'up' part + Particle: { + isA: 'PhrasalVerb' + }, + //this can be an adverb + Auxiliary: { + notA: ['Noun', 'Adjective', 'Value'] } - }); - }; - - for (var _i = 0; _i < keys.length; _i++) { - _loop(_i); - } -}; - -var addIrregulars_1 = addIrregulars; //nouns with irregular plural/singular forms -//used in noun.inflect, and also in the lexicon. - -var plurals = { - addendum: 'addenda', - alga: 'algae', - alumna: 'alumnae', - alumnus: 'alumni', - analysis: 'analyses', - antenna: 'antennae', - appendix: 'appendices', - avocado: 'avocados', - axis: 'axes', - bacillus: 'bacilli', - barracks: 'barracks', - beau: 'beaux', - bus: 'buses', - cactus: 'cacti', - chateau: 'chateaux', - child: 'children', - circus: 'circuses', - clothes: 'clothes', - corpus: 'corpora', - criterion: 'criteria', - curriculum: 'curricula', - database: 'databases', - deer: 'deer', - diagnosis: 'diagnoses', - echo: 'echoes', - embargo: 'embargoes', - epoch: 'epochs', - foot: 'feet', - formula: 'formulae', - fungus: 'fungi', - genus: 'genera', - goose: 'geese', - halo: 'halos', - hippopotamus: 'hippopotami', - index: 'indices', - larva: 'larvae', - leaf: 'leaves', - libretto: 'libretti', - loaf: 'loaves', - man: 'men', - matrix: 'matrices', - memorandum: 'memoranda', - modulus: 'moduli', - mosquito: 'mosquitoes', - mouse: 'mice', - // move: 'moves', - nebula: 'nebulae', - nucleus: 'nuclei', - octopus: 'octopi', - opus: 'opera', - ovum: 'ova', - ox: 'oxen', - parenthesis: 'parentheses', - person: 'people', - phenomenon: 'phenomena', - prognosis: 'prognoses', - quiz: 'quizzes', - radius: 'radii', - referendum: 'referenda', - rodeo: 'rodeos', - sex: 'sexes', - shoe: 'shoes', - sombrero: 'sombreros', - stimulus: 'stimuli', - stomach: 'stomachs', - syllabus: 'syllabi', - synopsis: 'synopses', - tableau: 'tableaux', - thesis: 'theses', - thief: 'thieves', - tooth: 'teeth', - tornado: 'tornados', - tuxedo: 'tuxedos', - vertebra: 'vertebrae' // virus: 'viri', - // zero: 'zeros', - -}; // a list of irregular verb conjugations -// used in verbs().conjugate() -// but also added to our lexicon -//use shorter key-names - -var mapping$1 = { - g: 'Gerund', - prt: 'Participle', - perf: 'PerfectTense', - pst: 'PastTense', - fut: 'FuturePerfect', - pres: 'PresentTense', - pluperf: 'Pluperfect', - a: 'Actor' -}; // '_' in conjugations is the infinitive form -// (order matters, to the lexicon) - -var conjugations = { - act: { - a: '_or' - }, - ache: { - pst: 'ached', - g: 'aching' - }, - age: { - g: 'ageing', - pst: 'aged', - pres: 'ages' - }, - aim: { - a: '_er', - g: '_ing', - pst: '_ed' - }, - arise: { - prt: '_n', - pst: 'arose' - }, - babysit: { - a: '_ter', - pst: 'babysat' - }, - ban: { - a: '', - g: '_ning', - pst: '_ned' - }, - be: { - a: '', - g: 'am', - prt: 'been', - pst: 'was', - pres: 'is' - }, - beat: { - a: '_er', - g: '_ing', - prt: '_en' - }, - become: { - prt: '_' - }, - begin: { - g: '_ning', - prt: 'begun', - pst: 'began' - }, - being: { - g: 'are', - pst: 'were', - pres: 'are' - }, - bend: { - prt: 'bent' - }, - bet: { - a: '_ter', - prt: '_' - }, - bind: { - pst: 'bound' - }, - bite: { - g: 'biting', - prt: 'bitten', - pst: 'bit' - }, - bleed: { - pst: 'bled', - prt: 'bled' - }, - blow: { - prt: '_n', - pst: 'blew' - }, - boil: { - a: '_er' - }, - brake: { - prt: 'broken' - }, - "break": { - pst: 'broke' - }, - breed: { - pst: 'bred' - }, - bring: { - pst: 'brought', - prt: 'brought' - }, - broadcast: { - pst: '_' - }, - budget: { - pst: '_ed' - }, - build: { - pst: 'built', - prt: 'built' - }, - burn: { - prt: '_ed' - }, - burst: { - prt: '_' - }, - buy: { - pst: 'bought', - prt: 'bought' - }, - can: { - a: '', - fut: '_', - g: '', - pst: 'could', - perf: 'could', - pluperf: 'could', - pres: '_' - }, - "catch": { - pst: 'caught' - }, - choose: { - g: 'choosing', - prt: 'chosen', - pst: 'chose' - }, - cling: { - prt: 'clung' - }, - come: { - prt: '_', - pst: 'came', - g: 'coming' - }, - compete: { - a: 'competitor', - g: 'competing', - pst: '_d' - }, - cost: { - pst: '_' - }, - creep: { - prt: 'crept' - }, - cut: { - prt: '_' - }, - deal: { - pst: '_t', - prt: '_t' - }, - develop: { - a: '_er', - g: '_ing', - pst: '_ed' - }, - die: { - g: 'dying', - pst: '_d' - }, - dig: { - g: '_ging', - pst: 'dug', - prt: 'dug' - }, - dive: { - prt: '_d' - }, - "do": { - pst: 'did', - pres: '_es' - }, - draw: { - prt: '_n', - pst: 'drew' - }, - dream: { - prt: '_t' - }, - drink: { - prt: 'drunk', - pst: 'drank' - }, - drive: { - g: 'driving', - prt: '_n', - pst: 'drove' - }, - drop: { - g: '_ping', - pst: '_ped' - }, - eat: { - a: '_er', - g: '_ing', - prt: '_en', - pst: 'ate' - }, - edit: { - pst: '_ed', - g: '_ing' - }, - egg: { - pst: '_ed' - }, - fall: { - prt: '_en', - pst: 'fell' - }, - feed: { - prt: 'fed', - pst: 'fed' - }, - feel: { - a: '_er', - pst: 'felt' - }, - fight: { - pst: 'fought', - prt: 'fought' - }, - find: { - pst: 'found' - }, - flee: { - g: '_ing', - prt: 'fled' - }, - fling: { - prt: 'flung' - }, - fly: { - prt: 'flown', - pst: 'flew' - }, - forbid: { - pst: 'forbade' - }, - forget: { - g: '_ing', - prt: 'forgotten', - pst: 'forgot' - }, - forgive: { - g: 'forgiving', - prt: '_n', - pst: 'forgave' - }, - free: { - a: '', - g: '_ing' - }, - freeze: { - g: 'freezing', - prt: 'frozen', - pst: 'froze' - }, - get: { - pst: 'got', - prt: 'gotten' - }, - give: { - g: 'giving', - prt: '_n', - pst: 'gave' - }, - go: { - prt: '_ne', - pst: 'went', - pres: 'goes' - }, - grow: { - prt: '_n' - }, - guide: { - pst: '_d' - }, - hang: { - pst: 'hung', - prt: 'hung' - }, - have: { - g: 'having', - pst: 'had', - prt: 'had', - pres: 'has' - }, - hear: { - pst: '_d', - prt: '_d' - }, - hide: { - prt: 'hidden', - pst: 'hid' - }, - hit: { - prt: '_' - }, - hold: { - pst: 'held', - prt: 'held' - }, - hurt: { - pst: '_', - prt: '_' - }, - ice: { - g: 'icing', - pst: '_d' - }, - imply: { - pst: 'implied', - pres: 'implies' - }, - is: { - a: '', - g: 'being', - pst: 'was', - pres: '_' - }, - keep: { - prt: 'kept' - }, - kneel: { - prt: 'knelt' - }, - know: { - prt: '_n' - }, - lay: { - pst: 'laid', - prt: 'laid' - }, - lead: { - pst: 'led', - prt: 'led' - }, - leap: { - prt: '_t' - }, - leave: { - pst: 'left', - prt: 'left' - }, - lend: { - prt: 'lent' - }, - lie: { - g: 'lying', - pst: 'lay' - }, - light: { - pst: 'lit', - prt: 'lit' - }, - log: { - g: '_ging', - pst: '_ged' - }, - loose: { - prt: 'lost' - }, - lose: { - g: 'losing', - pst: 'lost' - }, - make: { - pst: 'made', - prt: 'made' - }, - mean: { - pst: '_t', - prt: '_t' - }, - meet: { - a: '_er', - g: '_ing', - pst: 'met', - prt: 'met' - }, - miss: { - pres: '_' - }, - name: { - g: 'naming' - }, - patrol: { - g: '_ling', - pst: '_led' - }, - pay: { - pst: 'paid', - prt: 'paid' - }, - prove: { - prt: '_n' - }, - puke: { - g: 'puking' - }, - put: { - prt: '_' - }, - quit: { - prt: '_' - }, - read: { - pst: '_', - prt: '_' - }, - ride: { - prt: 'ridden' - }, - reside: { - pst: '_d' - }, - ring: { - pst: 'rang', - prt: 'rung' - }, - rise: { - fut: 'will have _n', - g: 'rising', - prt: '_n', - pst: 'rose', - pluperf: 'had _n' - }, - rub: { - g: '_bing', - pst: '_bed' - }, - run: { - g: '_ning', - prt: '_', - pst: 'ran' - }, - say: { - pst: 'said', - prt: 'said', - pres: '_s' - }, - seat: { - pst: 'sat', - prt: 'sat' - }, - see: { - g: '_ing', - prt: '_n', - pst: 'saw' - }, - seek: { - prt: 'sought' - }, - sell: { - pst: 'sold', - prt: 'sold' - }, - send: { - prt: 'sent' - }, - set: { - prt: '_' - }, - sew: { - prt: '_n' - }, - shake: { - prt: '_n' - }, - shave: { - prt: '_d' - }, - shed: { - g: '_ding', - pst: '_', - pres: '_s' - }, - shine: { - pst: 'shone', - prt: 'shone' - }, - shoot: { - pst: 'shot', - prt: 'shot' - }, - show: { - pst: '_ed' - }, - shut: { - prt: '_' - }, - sing: { - prt: 'sung', - pst: 'sang' - }, - sink: { - pst: 'sank', - pluperf: 'had sunk' - }, - sit: { - pst: 'sat' - }, - ski: { - pst: '_ied' - }, - slay: { - prt: 'slain' - }, - sleep: { - prt: 'slept' - }, - slide: { - pst: 'slid', - prt: 'slid' - }, - smash: { - pres: '_es' - }, - sneak: { - prt: 'snuck' - }, - speak: { - fut: 'will have spoken', - prt: 'spoken', - pst: 'spoke', - perf: 'have spoken', - pluperf: 'had spoken' - }, - speed: { - prt: 'sped' - }, - spend: { - prt: 'spent' - }, - spill: { - prt: '_ed', - pst: 'spilt' - }, - spin: { - g: '_ning', - pst: 'spun', - prt: 'spun' - }, - spit: { - prt: 'spat' - }, - split: { - prt: '_' - }, - spread: { - pst: '_' - }, - spring: { - prt: 'sprung' - }, - stand: { - pst: 'stood' - }, - steal: { - a: '_er', - pst: 'stole' - }, - stick: { - pst: 'stuck' - }, - sting: { - pst: 'stung' - }, - stink: { - pst: 'stunk', - prt: 'stunk' - }, - stream: { - a: '_er' - }, - strew: { - prt: '_n' - }, - strike: { - g: 'striking', - pst: 'struck' - }, - suit: { - a: '_er', - g: '_ing', - pst: '_ed' - }, - sware: { - prt: 'sworn' - }, - swear: { - pst: 'swore' - }, - sweep: { - prt: 'swept' - }, - swim: { - g: '_ming', - pst: 'swam' - }, - swing: { - pst: 'swung' - }, - take: { - fut: 'will have _n', - pst: 'took', - perf: 'have _n', - pluperf: 'had _n' - }, - teach: { - pst: 'taught', - pres: '_es' - }, - tear: { - pst: 'tore' - }, - tell: { - pst: 'told' - }, - think: { - pst: 'thought' - }, - thrive: { - prt: '_d' - }, - tie: { - g: 'tying', - pst: '_d' - }, - undergo: { - prt: '_ne' - }, - understand: { - pst: 'understood' - }, - upset: { - prt: '_' - }, - wait: { - a: '_er', - g: '_ing', - pst: '_ed' - }, - wake: { - pst: 'woke' - }, - wear: { - pst: 'wore' - }, - weave: { - prt: 'woven' - }, - wed: { - pst: 'wed' - }, - weep: { - prt: 'wept' - }, - win: { - g: '_ning', - pst: 'won' - }, - wind: { - prt: 'wound' - }, - withdraw: { - pst: 'withdrew' - }, - wring: { - prt: 'wrung' - }, - write: { - g: 'writing', - prt: 'written', - pst: 'wrote' - } -}; //uncompress our ad-hoc compression scheme - -var keys = Object.keys(conjugations); - -var _loop = function _loop(i) { - var inf = keys[i]; - var _final = {}; - Object.keys(conjugations[inf]).forEach(function (key) { - var str = conjugations[inf][key]; //swap-in infinitives for '_' - - str = str.replace('_', inf); - var full = mapping$1[key]; - _final[full] = str; - }); //over-write original - - conjugations[inf] = _final; -}; - -for (var i = 0; i < keys.length; i++) { - _loop(i); -} - -var conjugations_1 = conjugations; -var endsWith$1 = { - b: [{ - reg: /([^aeiou][aeiou])b$/i, - repl: { - pr: '$1bs', - pa: '$1bbed', - gr: '$1bbing' - } - }], - d: [{ - reg: /(end)$/i, - repl: { - pr: '$1s', - pa: 'ent', - gr: '$1ing', - ar: '$1er' - } - }, { - reg: /(eed)$/i, - repl: { - pr: '$1s', - pa: '$1ed', - gr: '$1ing', - ar: '$1er' - } - }, { - reg: /(ed)$/i, - repl: { - pr: '$1s', - pa: '$1ded', - ar: '$1der', - gr: '$1ding' - } - }, { - reg: /([^aeiou][ou])d$/i, - repl: { - pr: '$1ds', - pa: '$1dded', - gr: '$1dding' - } - }], - e: [{ - reg: /(eave)$/i, - repl: { - pr: '$1s', - pa: '$1d', - gr: 'eaving', - ar: '$1r' - } - }, { - reg: /(ide)$/i, - repl: { - pr: '$1s', - pa: 'ode', - gr: 'iding', - ar: 'ider' - } - }, { - //shake - reg: /(t|sh?)(ake)$/i, - repl: { - pr: '$1$2s', - pa: '$1ook', - gr: '$1aking', - ar: '$1$2r' - } - }, { - //awake - reg: /w(ake)$/i, - repl: { - pr: 'w$1s', - pa: 'woke', - gr: 'waking', - ar: 'w$1r' - } - }, { - //make - reg: /m(ake)$/i, - repl: { - pr: 'm$1s', - pa: 'made', - gr: 'making', - ar: 'm$1r' - } - }, { - reg: /(a[tg]|i[zn]|ur|nc|gl|is)e$/i, - repl: { - pr: '$1es', - pa: '$1ed', - gr: '$1ing' // prt: '$1en', - - } - }, { - reg: /([bd]l)e$/i, - repl: { - pr: '$1es', - pa: '$1ed', - gr: '$1ing' - } - }, { - reg: /(om)e$/i, - repl: { - pr: '$1es', - pa: 'ame', - gr: '$1ing' - } - }], - g: [{ - reg: /([^aeiou][ou])g$/i, - repl: { - pr: '$1gs', - pa: '$1gged', - gr: '$1gging' - } - }], - h: [{ - reg: /(..)([cs]h)$/i, - repl: { - pr: '$1$2es', - pa: '$1$2ed', - gr: '$1$2ing' - } - }], - k: [{ - reg: /(ink)$/i, - repl: { - pr: '$1s', - pa: 'unk', - gr: '$1ing', - ar: '$1er' - } - }], - m: [{ - reg: /([^aeiou][aeiou])m$/i, - repl: { - pr: '$1ms', - pa: '$1mmed', - gr: '$1mming' - } - }], - n: [{ - reg: /(en)$/i, - repl: { - pr: '$1s', - pa: '$1ed', - gr: '$1ing' - } - }], - p: [{ - reg: /(e)(ep)$/i, - repl: { - pr: '$1$2s', - pa: '$1pt', - gr: '$1$2ing', - ar: '$1$2er' - } - }, { - reg: /([^aeiou][aeiou])p$/i, - repl: { - pr: '$1ps', - pa: '$1pped', - gr: '$1pping' - } - }, { - reg: /([aeiu])p$/i, - repl: { - pr: '$1ps', - pa: '$1p', - gr: '$1pping' - } - }], - r: [{ - reg: /([td]er)$/i, - repl: { - pr: '$1s', - pa: '$1ed', - gr: '$1ing' - } - }, { - reg: /(er)$/i, - repl: { - pr: '$1s', - pa: '$1ed', - gr: '$1ing' - } - }], - s: [{ - reg: /(ish|tch|ess)$/i, - repl: { - pr: '$1es', - pa: '$1ed', - gr: '$1ing' - } - }], - t: [{ - reg: /(ion|end|e[nc]t)$/i, - repl: { - pr: '$1s', - pa: '$1ed', - gr: '$1ing' - } - }, { - reg: /(.eat)$/i, - repl: { - pr: '$1s', - pa: '$1ed', - gr: '$1ing' - } - }, { - reg: /([aeiu])t$/i, - repl: { - pr: '$1ts', - pa: '$1t', - gr: '$1tting' - } - }, { - reg: /([^aeiou][aeiou])t$/i, - repl: { - pr: '$1ts', - pa: '$1tted', - gr: '$1tting' - } - }], - w: [{ - reg: /(.llow)$/i, - //follow, allow - repl: { - pr: '$1s', - pa: '$1ed' - } - }, { - reg: /(..)(ow)$/i, - //grow - repl: { - pr: '$1$2s', - pa: '$1ew', - gr: '$1$2ing', - prt: '$1$2n' - } - }], - y: [{ - reg: /(i|f|rr)y$/i, - repl: { - pr: '$1ies', - pa: '$1ied', - gr: '$1ying' - } - }], - z: [{ - reg: /([aeiou]zz)$/i, - repl: { - pr: '$1es', - pa: '$1ed', - gr: '$1ing' - } - }] -}; -var suffixes$1 = endsWith$1; -var posMap = { - pr: 'PresentTense', - pa: 'PastTense', - gr: 'Gerund', - prt: 'Participle', - ar: 'Actor' -}; - -var doTransform = function doTransform(str, obj) { - var found = {}; - var keys = Object.keys(obj.repl); - - for (var i = 0; i < keys.length; i += 1) { - var pos = keys[i]; - found[posMap[pos]] = str.replace(obj.reg, obj.repl[pos]); - } - - return found; -}; //look at the end of the word for clues - - -var checkSuffix = function checkSuffix() { - var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var c = str[str.length - 1]; - - if (suffixes$1.hasOwnProperty(c) === true) { - for (var r = 0; r < suffixes$1[c].length; r += 1) { - var reg = suffixes$1[c][r].reg; - - if (reg.test(str) === true) { - return doTransform(str, suffixes$1[c][r]); + }; + var values$1 = { + Value: { + notA: ['Verb', 'Adjective', 'Adverb'] + }, + Ordinal: { + isA: 'Value', + notA: ['Cardinal'] + }, + Cardinal: { + isA: 'Value', + notA: ['Ordinal'] + }, + Fraction: { + isA: 'Value', + notA: ['Noun'] + }, + RomanNumeral: { + isA: 'Cardinal', + //can be a person, too + notA: ['Ordinal', 'TextValue'] + }, + TextValue: { + isA: 'Value', + notA: ['NumericValue'] + }, + NumericValue: { + isA: 'Value', + notA: ['TextValue'] + }, + Money: { + isA: 'Cardinal' + }, + Percent: { + isA: 'Value' } - } - } - - return {}; -}; - -var _01Suffixes = checkSuffix; //non-specifc, 'hail-mary' transforms from infinitive, into other forms - -var hasY = /[bcdfghjklmnpqrstvwxz]y$/; -var generic = { - Gerund: function Gerund(inf) { - if (inf.charAt(inf.length - 1) === 'e') { - return inf.replace(/e$/, 'ing'); - } - - return inf + 'ing'; - }, - PresentTense: function PresentTense(inf) { - if (inf.charAt(inf.length - 1) === 's') { - return inf + 'es'; - } - - if (hasY.test(inf) === true) { - return inf.slice(0, -1) + 'ies'; - } - - return inf + 's'; - }, - PastTense: function PastTense(inf) { - if (inf.charAt(inf.length - 1) === 'e') { - return inf + 'd'; - } - - if (inf.substr(-2) === 'ed') { - return inf; - } - - if (hasY.test(inf) === true) { - return inf.slice(0, -1) + 'ied'; - } - - return inf + 'ed'; - } -}; -var _02Generic = generic; //we assume the input word is a proper infinitive - -var conjugate$2 = function conjugate() { - var inf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var world = arguments.length > 1 ? arguments[1] : undefined; - var found = {}; // 1. look at irregulars - //the lexicon doesn't pass this in - - if (world && world.irregulars) { - if (world.irregulars.verbs.hasOwnProperty(inf) === true) { - found = Object.assign({}, world.irregulars.verbs[inf]); - } - } //2. rule-based regex - - - found = Object.assign({}, _01Suffixes(inf), found); //3. generic transformations - //'buzzing' - - if (found.Gerund === undefined) { - found.Gerund = _02Generic.Gerund(inf); - } //'buzzed' - - - if (found.PastTense === undefined) { - found.PastTense = _02Generic.PastTense(inf); - } //'buzzes' - - - if (found.PresentTense === undefined) { - found.PresentTense = _02Generic.PresentTense(inf); - } - - return found; -}; - -var conjugate_1$1 = conjugate$2; // console.log(conjugate('bake')) -//turn 'quick' into 'quickest' - -var do_rules$1 = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/]; -var dont_rules$1 = [/ary$/]; -var irregulars$5 = { - nice: 'nicest', - late: 'latest', - hard: 'hardest', - inner: 'innermost', - outer: 'outermost', - far: 'furthest', - worse: 'worst', - bad: 'worst', - good: 'best', - big: 'biggest', - large: 'largest' -}; -var transforms$2 = [{ - reg: /y$/i, - repl: 'iest' -}, { - reg: /([aeiou])t$/i, - repl: '$1ttest' -}, { - reg: /([aeou])de$/i, - repl: '$1dest' -}, { - reg: /nge$/i, - repl: 'ngest' -}, { - reg: /([aeiou])te$/i, - repl: '$1test' -}]; - -var to_superlative = function to_superlative(str) { - //irregulars - if (irregulars$5.hasOwnProperty(str)) { - return irregulars$5[str]; - } //known transforms - - - for (var i = 0; i < transforms$2.length; i++) { - if (transforms$2[i].reg.test(str)) { - return str.replace(transforms$2[i].reg, transforms$2[i].repl); - } - } //dont-rules - - - for (var _i = 0; _i < dont_rules$1.length; _i++) { - if (dont_rules$1[_i].test(str) === true) { - return null; - } - } //do-rules - - - for (var _i2 = 0; _i2 < do_rules$1.length; _i2++) { - if (do_rules$1[_i2].test(str) === true) { - if (str.charAt(str.length - 1) === 'e') { - return str + 'st'; + }; + const anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value', 'QuestionWord']; + var misc$3 = { + //--Adjectives-- + Adjective: { + notA: ['Noun', 'Verb', 'Adverb', 'Value'] + }, + // adjectives that can conjugate + Comparable: { + isA: ['Adjective'] + }, + // better + Comparative: { + isA: ['Adjective'] + }, + // best + Superlative: { + isA: ['Adjective'], + notA: ['Comparative'] + }, + NumberRange: {// isA: ['Contraction'], + }, + Adverb: { + notA: ['Noun', 'Verb', 'Adjective', 'Value'] + }, + // Dates: + //not a noun, but usually is + Date: { + notA: ['Verb', 'Adverb', 'Preposition', 'Adjective'] + }, + Month: { + isA: ['Date', 'Singular'], + notA: ['Year', 'WeekDay', 'Time'] + }, + WeekDay: { + isA: ['Date', 'Noun'] + }, + // 'PST' + Timezone: { + isA: ['Date', 'Noun'], + notA: ['Adjective', 'ProperNoun'] + }, + // '9:20pm' + Time: { + isA: ['Date'], + notA: ['AtMention'] + }, + //glue + Determiner: { + notA: anything + }, + Conjunction: { + notA: anything + }, + Preposition: { + notA: anything + }, + // what, who, why + QuestionWord: { + notA: ['Determiner'] + }, + // peso, euro + Currency: { + isA: ['Noun'] + }, + // ughh + Expression: { + notA: ['Noun', 'Adjective', 'Verb', 'Adverb'] + }, + // dr. + Abbreviation: {}, + // internet tags + Url: { + notA: ['HashTag', 'PhoneNumber', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'] + }, + PhoneNumber: { + notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'] + }, + HashTag: {}, + AtMention: { + isA: ['Noun'], + notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'Email'] + }, + Emoji: { + notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'] + }, + Emoticon: { + notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'] + }, + Email: { + notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'] + }, + //non-exclusive + Acronym: { + notA: ['Plural', 'RomanNumeral'] + }, + Negative: { + notA: ['Noun', 'Adjective', 'Value'] + }, + // if, unless, were + Condition: { + notA: ['Verb', 'Adjective', 'Noun', 'Value'] } + }; + const colorMap = { + Noun: 'blue', + Verb: 'green', + Negative: 'green', + Date: 'red', + Value: 'red', + Adjective: 'magenta', + Preposition: 'cyan', + Conjunction: 'cyan', + Determiner: 'cyan', + Adverb: 'cyan' + }; + /** add a debug color to some tags */ - return str + 'est'; - } - } - - return str + 'est'; -}; - -var toSuperlative = to_superlative; //turn 'quick' into 'quickly' - -var do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/]; -var dont_rules = [/ary$/, /ous$/]; -var irregulars$4 = { - grey: 'greyer', - gray: 'grayer', - green: 'greener', - yellow: 'yellower', - red: 'redder', - good: 'better', - well: 'better', - bad: 'worse', - sad: 'sadder', - big: 'bigger' -}; -var transforms$1 = [{ - reg: /y$/i, - repl: 'ier' -}, { - reg: /([aeiou])t$/i, - repl: '$1tter' -}, { - reg: /([aeou])de$/i, - repl: '$1der' -}, { - reg: /nge$/i, - repl: 'nger' -}]; - -var to_comparative = function to_comparative(str) { - //known-irregulars - if (irregulars$4.hasOwnProperty(str)) { - return irregulars$4[str]; - } //known-transforms - - - for (var i = 0; i < transforms$1.length; i++) { - if (transforms$1[i].reg.test(str) === true) { - return str.replace(transforms$1[i].reg, transforms$1[i].repl); - } - } //dont-patterns - - - for (var _i = 0; _i < dont_rules.length; _i++) { - if (dont_rules[_i].test(str) === true) { - return null; - } - } //do-patterns - - - for (var _i2 = 0; _i2 < do_rules.length; _i2++) { - if (do_rules[_i2].test(str) === true) { - return str + 'er'; - } - } //easy-one + const addColors = function (tags) { + Object.keys(tags).forEach(k => { + // assigned from plugin, for example + if (tags[k].color) { + tags[k].color = tags[k].color; + return; + } // defined above - if (/e$/.test(str) === true) { - return str + 'r'; - } + if (colorMap[k]) { + tags[k].color = colorMap[k]; + return; + } - return str + 'er'; -}; + tags[k].isA.some(t => { + if (colorMap[t]) { + tags[k].color = colorMap[t]; + return true; + } -var toComparative = to_comparative; -var fns = { - toSuperlative: toSuperlative, - toComparative: toComparative -}; -/** conjugate an adjective into other forms */ + return false; + }); + }); + return tags; + }; -var conjugate$1 = function conjugate(w) { - var res = {}; // 'greatest' + var _color = addColors; - var sup = fns.toSuperlative(w); + const unique$4 = function (arr) { + return arr.filter((v, i, a) => a.indexOf(v) === i); + }; //add 'downward' tags (that immediately depend on this one) - if (sup) { - res.Superlative = sup; - } // 'greater' + const inferIsA$1 = function (tags) { + Object.keys(tags).forEach(k => { + let tag = tags[k]; + let len = tag.isA.length; - var comp = fns.toComparative(w); + for (let i = 0; i < len; i++) { + let down = tag.isA[i]; - if (comp) { - res.Comparative = comp; - } + if (tags[down]) { + tag.isA = tag.isA.concat(tags[down].isA); + } + } // clean it up - return res; -}; -var adjectives$2 = conjugate$1; -/** patterns for turning 'bus' to 'buses'*/ - -var suffixes = { - a: [[/(antenn|formul|nebul|vertebr|vit)a$/i, '$1ae'], [/([ti])a$/i, '$1a']], - e: [[/(kn|l|w)ife$/i, '$1ives'], [/(hive)$/i, '$1s'], [/([m|l])ouse$/i, '$1ice'], [/([m|l])ice$/i, '$1ice']], - f: [[/^(dwar|handkerchie|hoo|scar|whar)f$/i, '$1ves'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i, '$1ves']], - i: [[/(octop|vir)i$/i, '$1i']], - m: [[/([ti])um$/i, '$1a']], - n: [[/^(oxen)$/i, '$1']], - o: [[/(al|ad|at|er|et|ed|ad)o$/i, '$1oes']], - s: [[/(ax|test)is$/i, '$1es'], [/(alias|status)$/i, '$1es'], [/sis$/i, 'ses'], [/(bu)s$/i, '$1ses'], [/(sis)$/i, 'ses'], [/^(?!talis|.*hu)(.*)man$/i, '$1men'], [/(octop|vir|radi|nucle|fung|cact|stimul)us$/i, '$1i']], - x: [[/(matr|vert|ind|cort)(ix|ex)$/i, '$1ices'], [/^(ox)$/i, '$1en']], - y: [[/([^aeiouy]|qu)y$/i, '$1ies']], - z: [[/(quiz)$/i, '$1zes']] -}; -var _rules$2 = suffixes; -var addE = /(x|ch|sh|s|z)$/; + tag.isA = unique$4(tag.isA); + }); + return tags; + }; -var trySuffix = function trySuffix(str) { - var c = str[str.length - 1]; + var _isA = inferIsA$1; - if (_rules$2.hasOwnProperty(c) === true) { - for (var i = 0; i < _rules$2[c].length; i += 1) { - var reg = _rules$2[c][i][0]; + const unique$3 = function (arr) { + return arr.filter((v, i, a) => a.indexOf(v) === i); + }; // crawl the tag-graph and infer any conflicts + // faster than doing this at tag-time - if (reg.test(str) === true) { - return str.replace(reg, _rules$2[c][i][1]); - } - } - } - return null; -}; -/** Turn a singular noun into a plural - * assume the given string is singular - */ + const inferNotA$1 = function (tags) { + let keys = Object.keys(tags); + keys.forEach(k => { + let tag = tags[k]; + tag.notA = tag.notA || []; + tag.isA.forEach(down => { + if (tags[down] && tags[down].notA) { + // borrow its conflicts + let notA = typeof tags[down].notA === 'string' ? [tags[down].isA] : tags[down].notA || []; + tag.notA = tag.notA.concat(notA); + } + }); // any tag that lists us as a conflict, we conflict it back. + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; -var pluralize = function pluralize() { - var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var world = arguments.length > 1 ? arguments[1] : undefined; - var irregulars = world.irregulars.nouns; // check irregulars list + if (tags[key].notA.indexOf(k) !== -1) { + tag.notA.push(key); + } + } // clean it up - if (irregulars.hasOwnProperty(str)) { - return irregulars[str]; - } //we have some rules to try-out + tag.notA = unique$3(tag.notA); + }); + return tags; + }; - var plural = trySuffix(str); + var _notA = inferNotA$1; - if (plural !== null) { - return plural; - } //like 'church' + const inferLineage = function (tags) { + let keys = Object.keys(tags); + keys.forEach(k => { + let tag = tags[k]; + tag.lineage = []; // find all tags with it in their 'isA' set + for (let i = 0; i < keys.length; i++) { + if (tags[keys[i]].isA.indexOf(k) !== -1) { + tag.lineage.push(keys[i]); + } + } + }); + return tags; + }; - if (addE.test(str)) { - return str + 'es'; - } // ¯\_(ツ)_/¯ + var _lineage = inferLineage; + const inferColor = _color; + const inferIsA = _isA; + const inferNotA = _notA; + const lineage = _lineage; + const validate = function (tags) { + // cleanup format + Object.keys(tags).forEach(k => { + let tag = tags[k]; // ensure isA is an array - return str + 's'; -}; + tag.isA = tag.isA || []; -var toPlural = pluralize; //patterns for turning 'dwarves' to 'dwarf' + if (typeof tag.isA === 'string') { + tag.isA = [tag.isA]; + } // ensure notA is an array -var _rules$1 = [[/([^v])ies$/i, '$1y'], [/ises$/i, 'isis'], [/(kn|[^o]l|w)ives$/i, '$1ife'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i, '$1f'], [/^(dwar|handkerchie|hoo|scar|whar)ves$/i, '$1f'], [/(antenn|formul|nebul|vertebr|vit)ae$/i, '$1a'], [/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i, '$1us'], [/(buffal|tomat|tornad)(oes)$/i, '$1o'], // [/(analy|diagno|parenthe|progno|synop|the)ses$/i, '$1sis'], -[/(eas)es$/i, '$1e'], //diseases -[/(..[aeiou]s)es$/i, '$1'], //geniouses -[/(vert|ind|cort)(ices)$/i, '$1ex'], [/(matr|append)(ices)$/i, '$1ix'], [/(x|ch|ss|sh|z|o)es$/i, '$1'], [/men$/i, 'man'], [/(n)ews$/i, '$1ews'], [/([ti])a$/i, '$1um'], [/([^aeiouy]|qu)ies$/i, '$1y'], [/(s)eries$/i, '$1eries'], [/(m)ovies$/i, '$1ovie'], [/([m|l])ice$/i, '$1ouse'], [/(cris|ax|test)es$/i, '$1is'], [/(alias|status)es$/i, '$1'], [/(ss)$/i, '$1'], [/(ics)$/i, '$1'], [/s$/i, '']]; -var invertObj = function invertObj(obj) { - return Object.keys(obj).reduce(function (h, k) { - h[obj[k]] = k; - return h; - }, {}); -}; + tag.notA = tag.notA || []; -var toSingular = function toSingular(str, world) { - var irregulars = world.irregulars.nouns; - var invert = invertObj(irregulars); //(not very efficient) - // check irregulars list + if (typeof tag.notA === 'string') { + tag.notA = [tag.notA]; + } + }); + return tags; + }; // build-out the tag-graph structure - if (invert.hasOwnProperty(str)) { - return invert[str]; - } // go through our regexes + const inferTags$1 = function (tags) { + // validate data + tags = validate(tags); // build its 'down tags' - for (var i = 0; i < _rules$1.length; i++) { - if (_rules$1[i][0].test(str) === true) { - str = str.replace(_rules$1[i][0], _rules$1[i][1]); - return str; - } - } + tags = inferIsA(tags); // infer the conflicts - return str; -}; + tags = inferNotA(tags); // debug tag color -var toSingular_1 = toSingular; //rules for turning a verb into infinitive form - -var rules = { - Participle: [{ - reg: /own$/i, - to: 'ow' - }, { - reg: /(.)un([g|k])$/i, - to: '$1in$2' - }], - Actor: [{ - reg: /(er)er$/i, - to: '$1' - }], - PresentTense: [{ - reg: /(..)(ies)$/i, - to: '$1y' - }, { - reg: /(tch|sh)es$/i, - to: '$1' - }, { - reg: /(ss|zz)es$/i, - to: '$1' - }, { - reg: /([tzlshicgrvdnkmu])es$/i, - to: '$1e' - }, { - reg: /(n[dtk]|c[kt]|[eo]n|i[nl]|er|a[ytrl])s$/i, - to: '$1' - }, { - reg: /(ow)s$/i, - to: '$1' - }, { - reg: /(op)s$/i, - to: '$1' - }, { - reg: /([eirs])ts$/i, - to: '$1t' - }, { - reg: /(ll)s$/i, - to: '$1' - }, { - reg: /(el)s$/i, - to: '$1' - }, { - reg: /(ip)es$/i, - to: '$1e' - }, { - reg: /ss$/i, - to: 'ss' - }, { - reg: /s$/i, - to: '' - }], - Gerund: [{ - //popping -> pop - reg: /(..)(p|d|t|g){2}ing$/i, - to: '$1$2' - }, { - //fuzzing -> fuzz - reg: /(ll|ss|zz)ing$/i, - to: '$1' - }, { - reg: /([^aeiou])ying$/i, - to: '$1y' - }, { - reg: /([^ae]i.)ing$/i, - to: '$1e' - }, { - //eating, reading - reg: /(ea[dklnrtv])ing$/i, - to: '$1' - }, { - //washing -> wash - reg: /(ch|sh)ing$/i, - to: '$1' - }, //soft-e forms: - { - //z : hazing (not buzzing) - reg: /(z)ing$/i, - to: '$1e' - }, { - //a : baking, undulating - reg: /(a[gdkvtc])ing$/i, - to: '$1e' - }, { - //u : conjuring, tubing - reg: /(u[rtcbn])ing$/i, - to: '$1e' - }, { - //o : forboding, poking, hoping, boring (not hooping) - reg: /([^o]o[bdknprv])ing$/i, - to: '$1e' - }, { - //ling : tingling, wrinkling, circling, scrambling, bustling - reg: /([tbckg]l)ing$/i, - //dp - to: '$1e' - }, { - //cing : bouncing, denouncing - reg: /(c|s)ing$/i, - //dp - to: '$1e' - }, // { - // //soft-e : - // reg: /([ua]s|[dr]g|z|o[rlsp]|cre)ing$/i, - // to: '$1e', - // }, - { - //fallback - reg: /(..)ing$/i, - to: '$1' - }], - PastTense: [{ - reg: /(ued)$/i, - to: 'ue' - }, { - reg: /a([^aeiouy])ed$/i, - to: 'a$1e' - }, { - reg: /([aeiou]zz)ed$/i, - to: '$1' - }, { - reg: /(e|i)lled$/i, - to: '$1ll' - }, { - reg: /(.)(sh|ch)ed$/i, - to: '$1$2' - }, { - reg: /(tl|gl)ed$/i, - to: '$1e' - }, { - reg: /(um?pt?)ed$/i, - to: '$1' - }, { - reg: /(ss)ed$/i, - to: '$1' - }, { - reg: /pped$/i, - to: 'p' - }, { - reg: /tted$/i, - to: 't' - }, { - reg: /(..)gged$/i, - to: '$1g' - }, { - reg: /(..)lked$/i, - to: '$1lk' - }, { - reg: /([^aeiouy][aeiou])ked$/i, - to: '$1ke' - }, { - reg: /(.[aeiou])led$/i, - to: '$1l' - }, { - reg: /(..)(h|ion|n[dt]|ai.|[cs]t|pp|all|ss|tt|int|ail|ld|en|oo.|er|k|pp|w|ou.|rt|ght|rm)ed$/i, - to: '$1$2' - }, { - reg: /(.ut)ed$/i, - to: '$1e' - }, { - reg: /(.pt)ed$/i, - to: '$1' - }, { - reg: /(us)ed$/i, - to: '$1e' - }, { - reg: /(dd)ed$/i, - to: '$1' - }, { - reg: /(..[^aeiouy])ed$/i, - to: '$1e' - }, { - reg: /(..)ied$/i, - to: '$1y' - }, { - reg: /(.o)ed$/i, - to: '$1o' - }, { - reg: /(..i)ed$/i, - to: '$1' - }, { - reg: /(.a[^aeiou])ed$/i, - to: '$1' - }, { - //owed, aced - reg: /([aeiou][^aeiou])ed$/i, - to: '$1e' - }, { - reg: /([rl])ew$/i, - to: '$1ow' - }, { - reg: /([pl])t$/i, - to: '$1t' - }] -}; -var _transform = rules; -var guessVerb = { - Gerund: ['ing'], - Actor: ['erer'], - Infinitive: ['ate', 'ize', 'tion', 'rify', 'then', 'ress', 'ify', 'age', 'nce', 'ect', 'ise', 'ine', 'ish', 'ace', 'ash', 'ure', 'tch', 'end', 'ack', 'and', 'ute', 'ade', 'ock', 'ite', 'ase', 'ose', 'use', 'ive', 'int', 'nge', 'lay', 'est', 'ain', 'ant', 'ent', 'eed', 'er', 'le', 'own', 'unk', 'ung', 'en'], - PastTense: ['ed', 'lt', 'nt', 'pt', 'ew', 'ld'], - PresentTense: ['rks', 'cks', 'nks', 'ngs', 'mps', 'tes', 'zes', 'ers', 'les', 'acks', 'ends', 'ands', 'ocks', 'lays', 'eads', 'lls', 'els', 'ils', 'ows', 'nds', 'ays', 'ams', 'ars', 'ops', 'ffs', 'als', 'urs', 'lds', 'ews', 'ips', 'es', 'ts', 'ns'] -}; //flip it into a lookup object - -guessVerb = Object.keys(guessVerb).reduce(function (h, k) { - guessVerb[k].forEach(function (a) { - return h[a] = k; - }); - return h; -}, {}); -var _guess = guessVerb; -/** it helps to know what we're conjugating from */ + tags = inferColor(tags); // find incoming links -var guessTense = function guessTense(str) { - var three = str.substr(str.length - 3); + tags = lineage(tags); + return tags; + }; - if (_guess.hasOwnProperty(three) === true) { - return _guess[three]; - } + var inference = inferTags$1; + const nouns$1 = nouns$2; + const verbs$1 = verbs$2; + const values = values$1; + const misc$2 = misc$3; + const inferTags = inference; //extend tagset with new tags - var two = str.substr(str.length - 2); + const addIn = function (obj, tags) { + Object.keys(obj).forEach(k => { + tags[k] = obj[k]; + }); + }; - if (_guess.hasOwnProperty(two) === true) { - return _guess[two]; - } + const build = () => { + let tags = {}; + addIn(nouns$1, tags); + addIn(verbs$1, tags); + addIn(values, tags); + addIn(misc$2, tags); // do the graph-stuff - var one = str.substr(str.length - 1); + tags = inferTags(tags); + return tags; + }; - if (one === 's') { - return 'PresentTense'; - } + var tags = build(); + var _data = { + "Comparative": "true¦better", + "Superlative": "true¦earlier", + "PresentTense": "true¦is,sounds", + "Value": "true¦a few", + "Noun": "true¦a5b4c2f1here,ie,lit,m0no doubt,pd,tce;a,d;t,y;a,ca,o0;l,rp;a,l;d,l,rc", + "Copula": "true¦a1is,w0;as,ere;m,re", + "PastTense": "true¦be3came,d2had,lied,meant,sa2taken,w0;as,e0;nt,re;id;en,gan", + "Condition": "true¦if,lest,unless", + "Preposition": "true¦'o,-,aLbIcHdGexcept,fFiDmidQnotwithstandiRoBpSqua,sAt6u3vi2w0;/o,hereNith0;!in,oR;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oJ;ans,ince,o that;',f0n2ut;!f;f,n0;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut", + "Gerund": "true¦accord0be0develop0go0result0stain0;ing", + "Negative": "true¦n0;ever,o0;!n,t", + "QuestionWord": "true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s", + "Plural": "true¦records", + "Conjunction": "true¦&,aFbBcuz,how9in caEno8o7p5supposing,t2v1wh0yet;eth9ile;ers4s;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh", + "Abbreviation": "true¦a0Jb0Gc0Ad08e05f02g01h00iYjWkanVlTmNnKoJpFque,rDs8t6u5v2w0;is0r,y0B;!c;a,b,e1i0ol,s,t;tro,vo;r,t;niv,safa,t;ce,e0;l,mp,nn,x;ask,e2fc,gt,i1q,r,s,t,u0;pt,rg;r,tu;c,nJp0;!t;b,d,e0;pGs,v;a,d,ennNhd,l,p,r1s0vt;!eud;ef,o0;b,f,n;ct,kla,nt;e0ov;b0e;!r;a4d,essrs,i1lle,me,r7s0t;!tr;n1s0;c,ter;!n;!j,r,sc;at,it,lb,ng,t0;!d;!s;an,d,r,u0;l,n;a,da,e,n0;c,f;on,wy;a,en,ov;e1ig,l0m,r,t,y;!a;b,m;a,g,ng,s1tc,x0;!p;p,q,t;ak,e0ist,r;c,f,pt,t;a3ca,l,m2o0pl,res,yn;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d4l3p2r1ss0tty,ug,ve;n,t;c,iz;prox,r,t;!ta;!j,m,v", + "Pronoun": "true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s", + "Singular": "true¦0:16;1:13;2:19;a16b0Tc0Kd0De0Af05g00hWiVjel0kitty,lTmPnOoNpHquestionGrEs9t6u4w3;ay,om03;nc10s 3;doll0Lst0N; rex,a4h3ic,ragedy,v show;ere,i2;l0x return;i6ky,omeoNt3uper bowl,yst15;ep4ri2u3;de0Yff;faTmoT;st1ze;al0i2o3;om,se;! mark;a7i1la6r4u3;dQrpoI;e3ie0Hobl0V;roga00ss releaG;te,y1;rt,te0N;bjWceJthers,verview;othi2umb1;a5ee08o3;del,m3nopo0rni2th1;!my;n,yf0;i3unch;ne;ci2nsect;ead start,o3uman right;l0me4u3;se;! run;adf0entlem6irl02laci1od,rand4u3;l0y; slam,fa3mo3;th1;an;a6ella,ly,ol0r4un3;di2;ee market,iWo3;nti1sP;mi0th1;conomy,gg,ner7ven4x3;ampTecu9;i2t;ad8e5inn1o3ragonf0ude;cumentGg3i0l0or;gy;ath,t3;ec3;tive;!dy;a9eili2h7i5o3redit card;ttage,u3;ri1sin;ty,vil w3;ar;andeli1ocol3;ate;n3rF;ary;aCel0lesJo8r5u3;n3tterf0;ti2;eakfa4o3;!th1;st;dy,tt5y3;!fri3;end;le;nki2r3;ri1;er;d5l0noma0u3;nt;ly; homin5verti3;si2;ng;em", + "FemaleName": "true¦0:J3;1:J7;2:IG;3:IF;4:IX;5:IK;6:JO;7:H0;8:JG;9:JK;A:HN;B:HY;C:IT;D:IP;E:JD;F:HC;G:I0;aGRbFLcDPdCYeBOfB4gADh9Ti9Gj8Gk7Gl60m49n3No3Jp37qu36r2Ds16t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof2;e3Uf2la,ra;h3iKlIna,ynH;ab,ep;da,ma;da,h3iHra;nab;aKeJi0Fol5BuIvH;etAonDO;i0na;le0sen2;el,gm3Jn,rGJs8W;aoHme0nyi;m62yAE;aMendDYhiDFiH;dele8lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;cIktoriBMlAole7viH;anC3enJ0;kF9tor2;da,lA9nus,rHs0;a,nHoniH4;a,iFQ;leHnesH4;nIHrH;i1y;g8rHxH5;su5te;aYeUhRiNoLrIuHy3;i,la;acIZiHu0L;c2na,sH;hBPta;nHr0H;iBNya;aJffaEOnHs6;a,gtiH;ng;!nFQra;aIeHomasi0;a,l9Po8Ares1;l2ndolwethu;g9Go88rIssH;!a,ie;eHi,ri9;sa,za;bPlNmLnJrIs6tHwa0;ia0um;a63yn;iHya;a,ka,s6;arB6e3iHmEDra;!ka;a,iH;a,t6;at6it6;a0Fcarlet3We0BhXiTkye,neza0oRtNuIyH;bIBlvi1;e,ha,mayIEni7sIzH;an3MetAie,y;anHi9;!a,e,nH;aDe;aJeH;fHl5GphH;an4;cHZr5;b2fiA8m0OnHphi1;d3ia,ja,ya;er3lJmon1nIobh8PtH;a,i;dy;lEPv2;aMeIirHo0risF7y5;a,lDK;ba,e0i5lJrH;iHrDOyl;!d8Hfa;ia,lDX;hd,iMki3nJrIu0w0yH;la,ma,na;i,le8on,ron;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye81vH;da,inj;e0ife;en1i0ma;anA5bNd3Nh1RiBkMlLmJndIrHs6vannaD;aDi0;ra,y;aHi3;nt6ra;lDKma,ome;ee0in8Ru3;in1ri0;a05e00hYiVoIuH;by,thDH;bScRghQl2KnPsJwIxH;anAXie,y;an,e0;aIeHie,lE; merBLann9ll1marDBt7;!lHnn1;iHyn;e,nH;a,d9K;da,i,na;ayy8D;hel62io;bDKer7yn;a,cIkHmas,n9Fta,ya;ki,o;helGki;ea,iannGDoH;da,n1K;an0bJem9Agi0iInHta,y0;a88ee;han83na;a,eH;cEAkaD;bi0chIe,i0mo0nHquEKvCy0;di,ia;aEIelHiB;!e,le;een4ia0;aNeMhKipaluk,oJrHute66;iHudenCQ;scil3LyamvaB;lly,rt2;ilome0oebe,ylH;is,lis;arl,ggy,nelope,r5t3;ige,m0TnKo5rvaDGtIulH;a,etAin1;ricHsy,tBY;a,e,ia;do3i06;ctav2dIfCZis6lHphCZumC3yunbileg;a,ga,iv2;eHvAC;l2tA;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aDeCma;ll1mi;aNcLhariBOkKlaJna,sHta,vi;anHha;ur;!y;a,iDTki;hoGk9VolH;a,eDJ;!mh;hir,lHna,risFsreC;!a,lBT;asuLdKh2i6CnJomi9rgEPtHzanin zah3;aHhal4;li1s6;cy,etA;a,e8iEV;nngu30;a09ckenz4e01iMoJrignayani,uriDDyH;a,rH;a,lNna,tG;bi0i3llBInH;a,iH;ca,ka,qD3;a,cTkaSlNmi,nLrItzi,yH;ar;aIiam,lH;anEO;!l,nB;dy,eHh,n4;nhGrva;aKdJiCPlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5EgNi,lKrH;edi79iIjem,on,yH;em,l;em,sF;an4iHliF;nHsCE;a,da;!an,han;b0DcASd0Be,g09ha,i08ja,l06n04rLsoum60tKuIv82x9IyHz4;a,bell,ra,soB9;de,rH;a,eC;h8Fild1t4;a,cYgUiKjor4l7Sn4s6tJwa,yH;!aHbe6Wja8lAE;m,nBH;a,ha,in1;!aJbCBeIja,lEna,sHt64;!a,ol,sa;!l1H;! Jh,mInH;!a,e,n1;!awit,i;aliAHcJeduarBfernIjHlui5Y;o6Ful2;anB;ecil2la3;arJeIie,oHr44ueriA;!t;!ry;et42i37;el4Ui76y;dHon,ue5;akran7y;ak,en,iHk,lo3O;a,ka,nB;a,re,s4te;daHg4;!l3A;alEd4elHge,isDBon0;ei8in1yn;el,le;a0Ne0CiYoQuLyH;d2la,nH;!a,dIeBGnHsCL;!a,eBF;a,sCJ;aCWcJel0PiFlIna,pHz;e,i7;a,u,wa;iHy;a0Se,ja,l2JnB;is,l1SrJttIuHvel4;el5is1;e,ie;aKeIi9na,rH;a86i9;lHn1t7;ei;!in1;aSbb9CdRepa,lMnJsIv2zH;!a,be5LetAz4;a,etA;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lHy;iHy;aA0e;!aH;!n5F;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx4y5;iHt4;c2t2;e2LlCG;la,nHra;a,ie,o3;a,or1;a,gh,laH;!ni;!h,nH;a,d3e,n5P;cOdon97iNkes6mi9Ana,rMtJurIvHxmi,y5;ern1in2;a,e54ie,yn;as6iIoH;nya,ya;fa,s6;a,isF;a,la;ey,ie,y;a04eZhXiOlAKoNrJyH;lHra;a,ee,ie;istHy6D;a,en,iIyH;!na;!e,n59;nul,ri,urtnB0;aOerNlAZmJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stC;!na,ra;aHei3ongordzol;dij1w5;el7QiKjsi,lJnIrH;a,i,ri;d3na,za;ey,i,lBDs4y;ra,s6;bi7cAJdiat7IeB2iRlQmPnyakuma19rNss6KtKvi7yH;!e,lH;a,eH;e,i8L;a6DeIhHi4NlEri0y;ar6Ber6Bie,leCrB2y;!lyn8Gri0;a,en,iHl5Soli0yn;!ma,n3VsF;a5il1;ei8Ei,l4;a,tl6L;a07eYiVoNuH;anLdKliHst63;a8HeHsF;!n8tH;!a,te;e5Ji3Jy;a,i7;!anNcelEd6RelGhan7RlLni,sIva0yH;a,ce;eHie;fHlEph5U;a,in1;eHie;en,n1;!a,e,n41;lHng;!i1ClH;!i1B;anMle0nJrIsH;i8Csi8C;i,ri;!a,elGif2CnH;a,etAiHy;!e,f2A;a,e8EiInH;a,e8DiH;e,n1;cMd1mi,nIque4Xsmin3Ovie3y8zH;min9;a9eIiH;ce,e,n1s;!lHsFt0F;e,le;inIk4lEquelH;in1yn;da,ta;lRmPnOo0rNsIvaHzaro;!a0lu,na;aJiIlaHob84;!n9N;do3;!belHdo3;!a,e,l39;a77en1i0ma;a,di3es,gr6Yji;a8elBogH;en1;a,e8iHo0se;a0na;aSeOiJoHusFyacin2B;da,ll4rten23snH;a,i9Q;lImaH;ri;aIdHlaI;a,egard;ry;ath1CiJlInriet7rmi8sH;sa,t1B;en2Sga,mi;di;bi2Dil8IlNnMrJsItHwa,yl8Iz7H;i5St4;n5Yti;iHmo51ri52;etH;!te;aDnaD;a,ey,l4;a03eXiSlQoOrKunJwH;enHyne1Q;!dolE;ay,el;acIetHiselB;a,chC;e,ieH;!la;ld1AogooH;sh;adys,enHor2yn2H;a,da,na;aKgi,lIna,ov89selHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald3Pi,m3Ctru8B;etAi4W;a,eHna;s26vieve;ma;bIil,le,mHrnet,yG;al5Ni5;i5FrielH;a,l1;aVeSiRloOoz2rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0O;n1s61;!ca;!rH;a,encH;e,ia;en,o0;lIn0rnH;!anB;ec2ic2;jr,n7rKtHy9;emIiHma,ouma7;ha,ma,n;eh;ah,iBrah,za0;cr4Nd0Ne0Mi0Lk7l04mWn4YrTsNtMuLvH;aJelIiH;!e,ta;in0Gyn;!ngel2S;geni1la,ni45;h5Sta;mLperanKtH;eIhHrel5;er;l30r9;za;a,eralB;iHma,nest2Jyn;cHka,n;a,ka;a,eMiJmH;aHie,y;!li8;lHn1;ee,iHy;a,e,ja;lHrald;da,y;aWeUiNlMma,no3oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c2da,f,nMsJzaH;!betHve7;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a;!in1na;leCs6;vi;eIiHna,wi0;e,th;l,n;aYeMh2iLjeneKoHul30;lor5Tminiq4In3FrHtt4;a,eCis,la,othHthy;ea,y;ba;an0AnaDon8x4ya;anQbPde,eOiMja,lJmetr2nHsir5K;a,iH;ce,se;a,iIla,orHphi8;es,is;a,l6D;dHrdH;re;!d5Cna;!b2HoraDra;a,d3nH;!a,e;hl2i0l0HmNnLphn1rIvi1XyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,etAiH;!ca,el1Cka,z;arHia;is;a0Se0Oh05i03lVoKrIynH;di,th2;istHy05;al,i0;lPnMrIurH;tn1E;aJd2NiHn2Nri8;!nH;a,e,n1;!l1X;cepci59n4sH;tanHuelo;ce,za;eHleC;en,tA;aJeoIotH;il51;!pat3;ir9rJudH;etAiH;a,ne;a,e,iH;ce,sZ;a3er3ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Ren,iHy;!an1e,n1;deJlseIrH;!i9yl;a,y;li8;nMrH;isKlImH;ai8;a,eHotA;n1tA;!sa;d3elGtH;al,elG;cIlH;esAi44;el2ilH;e,ia,y;itlZlYmilXndWrOsMtHy5;aKeJhHri0;erHleCrEy;in1;ri0;li0ri0;a33sH;a32ie;a,iNlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eHie,o7y;ne,y;na,sF;a0Hi0H;a,e,l1;is7l4;in,yn;a0Ie02iZlXoUrH;andSeQiJoIyH;an0nn;nwEok9;an3DdgLg0XtH;n2XtH;!aInH;ey,i,y;ny;etH;!t9;an0e,nH;da,na;i9y;bbi9glarIlo05nH;i7n4;ka;ancHossom,ythe;a,he;an17lja0nHsm3I;i7tH;ou;aUcky,linTni7rPssOtJulaDvH;!erlH;ey,y;hJsy,tH;e,iHy9;e,na;!anH;ie,y;!ie;nHt6yl;adIiH;ce;etAi8;ay,da;!triH;ce,z;rbJyaH;rmH;aa;a3ie,o3ra;a2Sb2Md23g1Zi1Qj5l16m0Xn09oi,r04sUtTuPvOwa,yIzH;ra,u0;aKes6gJlIseH;!l;in;un;!nH;a,na;a,i2Ir2J;drJgus1RrIsteH;ja;el2;a,ey,i,y;aahua,he0;hIi2Gja,mi7s2DtrH;id;aMlIraqHt21;at;eIi9yH;!n;e,iHy;gh;!nH;ti;iJleIo6pi7;ta;en,n1tA;aHelG;!n1J;a00dje5eYgUiSjQnJohito,toHya;inetAnH;el5ia;!aKeIiHmJ;e,ka;!mHtA;ar4;!belIliFmU;sa;!le;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tA;te;! JbImHstasiNya;ar2;el;cla3jul2pau5;aLberKeliJiHy;e,l2naH;!ta;a,ja;!ly;hGiIl2nB;da;a,ra;le;aWba,ePiMlKma,thJyH;a,c2sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c2is6jaKksaKna,sJxH;aHia;!nd3;ia,saH;nd3;ra;ia;i0nIyH;ah,na;a,is,naDoud;la;c6da,leCmNnLsH;haDlH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lEsH;on;yn;!lH;i8yn;ne;aKbIiHrL;!gaK;ey,i9y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya", + "Actor": "true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJecretary,oldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt", + "Honorific": "true¦a01bYcQdPeOfiJgIhon,jr,king,lHmCoffic00p7queen,r3s0taoiseach,vice6;e1fc,gt,ir,r,u0;ltRpt,rg;cond liInBrgeaJ;abbi,e0;ar1p9s,v0;!erend; admirX;astOhd,r0vt;esideDi1of0;!essM;me mini4nce0;!ss;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al", + "SportsTeam": "true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls", + "Uncountable": "true¦0:1J;a1Qb1Ic19d16e0Zf0Tg0Mh0Hi0Dj0Cknowled1Pl07mXnWoVpRrMsBt6vi5w1;a3ea0Ai2oo1;d,l;ldlife,ne;rmth,t0;neg16ol0Btae;e4h3oothpaste,r1una;affSou1;ble,sers,t;ermod1Lund0;a,nnis;a9cene09eri0Wh8il7kittl0Wnow,o6p4t2u1;g0Znshi0P;ati1Ke1;am,el;ace1De1;ci0Red;ap,cc0;k,v0;eep,ingl0O;d0Cfe17l1nd,tish;m10t;a4e2ic1;e,ke0L;c1laxa0Hsearch;ogni0Grea0G;bi0Hin;aOe3hys17last8o1ress03;l1rk,w0;it15y9;a11trY;bstetr13il,xygen;ational securi0Vews;a8e6ilk,o3u1;mps,s1;ic;n1o0G;ey,o1;gamy;a1chan0V;sl03t;chine1il,themat0T; learn09ry;aught0e3i2ogi0Qu1;ck,g0G;ce,ghtn06ngui0OteratL;a1isK;th0;ewel8usti0J;ce,mp1nformaStself;a1ortan0H;ti1;en0F;a4isto3o1;ck1mework,n1spitali09;ey;ry;ir,libut,ppiB;ene4o2r1um,ymna0B;aAound;l1ssip;d,f; 1t08;editOpo1;ol;i5lour,o2urnit1;ure;od,rgive1uri0wl;ne1;ss;c7sh;conomZduca6lectr5n3quip4thZvery1;body,o1thF;ne;joy1tertain1;ment;iciNonU;tiG;ar2iabet1raugh2;es;ts;a8elcius,h4ivPl3o1urrency;al,ld w1nfusiBttB;ar;assMoth3;aos,e1;e2w1;ing;se;r5sh;a5eef,i2lood,owls,read,utt0;er;lliar2s1;on;ds;g1ss;ga1;ge;c6dvi5ero3ir2mnes1rt,thlet8;ty;craft;b5d1naut5;ynam4;ce;id,ou1;st1;ics", + "Infinitive": "true¦0:6S;1:76;2:5C;3:74;4:73;5:67;6:6F;7:6Y;8:6Q;9:72;A:70;B:5X;C:6X;D:6L;E:77;F:5B;a6Kb66c57d4De3Xf3Jg3Dh37i2Uj2Sk2Ql2Hm26n23o1Yp1Jr0Rs06tYuTvOwHyG;awn,e31ield;aJe1Zhist6iIoGre6D;nd0rG;k,ry;pe,sh,th0;lk,nHrGsh,tDve;n,raE;d0t;aJiHoG;te,w;eGsC;!w;l6Jry;nHpGr4se;gra4Pli41;dGi9lo5Zpub3Q;erGo;mi5Cw1I;aMeLhKig5SoJrHuGwi7;ne,rn;aGe0Mi5Uu7y;de,in,nsf0p,v5J;r2ZuD;ank,reatB;nd,st;ke pa53lk,rg1Qs9;aZcWeVhTi4Dkip,lSmRnee3Lo52pQtJuGwitD;bmCck,ff0gge7ppHrGspe5;ge,pri1rou4Zvi3;ly,o36;aLeKoJrHuG;dy,mb6;aFeGi3;ngthBss,tD;p,re;m,p;in,ke,r0Qy;la58oil,rink6;e1Zi6o3J;am,ip;a2iv0oG;ck,rtBut;arDem,le5n1r3tt6;aHo2rG;atDew;le,re;il,ve;a05eIisk,oHuG;in,le,sh;am,ll;a01cZdu8fYgXje5lUmTnt,pQquPsKtJvGwa5V;eGiew,o36;al,l,rG;se,t;aFi2u44;eJi7oItG;!o2rG;i5uc20;l3rt;mb6nt,r3;e7i2;air,eHlGo43r0K;a8y;at;aFemb0i3Zo3;aHeGi3y;a1nt;te,x;a5Dr0J;act1Yer,le5u1;a13ei3k5PoGyc6;gni2Cnci6rd;ch,li2Bs5N;i1nG;ge,k;aTerSiRlOoMrIuG;b21ll,mp,rGsh;cha1s4Q;ai1eIiEoG;cGdu8greAhibCmi1te7vi2W;eAlaim;di5pa2ss,veE;iEp,rtr46sGur;e,t;aHead,uG;g,n4;n,y;ck,le;fo34mCsi7;ck,iErt4Mss,u1;bJccur,ff0pera9utweIverGwe;co47lap,ta22u1wG;helm;igh;ser3taF;eHotG;e,i8;ed,gle5;aMeLiIoHuG;ltip3Grd0;nit13ve;nHrr12sreprG;eseE;d,g6us;asu2lt,n0Nr4;intaFna4rHtG;ch,t0;ch,kGry;et;aMeLiJoGu1C;aHck,oGve;k,sB;d,n;ft,g35ke,mCnk,st2YveG;!n;a2Fc0Et;b0Nck,uG;gh,nD;iGno34;ck,ll,ss;am,oFuG;d4mp;gno2mQnGss3H;cOdica9flu0MhNsKtIvG;eGol3;nt,st;erGrodu8;a5fe2;i7tG;aGru5;ll;abCibC;lu1Fr1D;agi24pG;lemeEo22ro3;aKeIi2oHuG;nt,rry;n02pe,st;aGlp;d,t;nd6ppBrm,te;aKloAove1PrIuG;arGeAi15;ant39d;aGip,ow,umb6;b,sp;in,th0ze;aReaQiOlMoJrHuncG;ti3J;acGeshB;tu2;cus,lHrG;ce,eca7m,s30;d,l24;a1ZoG;at,od,w;gu2lGni1Xt,x;e,l;r,tu2;il,stBvG;or;a15cho,le5mSnPstNvalua9xG;a0AcLerKi7pGte19;a18eHi2laFoGreA;rt,se;ct,riG;en8;ci1t;el,han4;abGima9;li1J;ab6couXdHfor8ga4han8j03riDsu2t0vG;isi2Vy;!u2;body,er4pG;hasiGow0;ze;a07eUiLoKrHuG;mp;aHeAiG;ft;g,in;d4ubt;ff0p,re5sHvG;iZor8;aKcHliGmiApl1Btingui14;ke;oGuA;uGv0;ra4;gr1YppG;ear,ro3;cOeNfLliv0ma0Fny,pKsHterG;mi0G;cribe,er3iHtrG;oy;gn,re;a0Be0Ai5osC;eGi0By;at,ct;m,pB;iIlHrG;ea1;a2i06;de;ma4n8rGte;e,kB;a0Ae09h06i9l04oJrG;aHeGoAu0Hy;a9dC;ck,ve;llZmSnHok,py,uGv0;gh,nt;cePdu5fMsKtIvG;eGin8;rt,y;aFin0VrG;a7ibu9ol;iGtitu9;d0st;iHoGroE;rm;gu2rm;rn;biLfoKmaJpG;a2laF;in;re;nd;rt;ne;ap1e5;aGip,o1;im,w;aHeG;at,ck,w;llen4n4r4se;a1nt0;ll,ncIrGt0u1;eGry;!en;el;aSePloOoMrIuG;lGry;ly;igHuG;sh;htB;en;a7mb,o7rrGth0un8;ow;ck;ar,lHnefCtrG;ay;ie3ong;ng,se;band0Jc0Bd06ffo05gr04id,l01mu1nYppTrQsKttGvoid,waC;acIeHra5;ct;m0Fnd;h,k;k,sG;eIiHocia9uG;me;gn,st;mb6rt;le;chHgGri3;ue;!i3;eaJlIroG;aDve;ch;aud,y;l,r;noun8sw0tG;icipa9;ce;lHt0;er;e4ow;ee;rd;aRdIju7mCoR;it;st;!reA;ss;cJhie3knowled4tiva9;te;ge;ve;eIouEu1;se;nt;pt;on", + "Unit": "true¦0:19;a14b12c0Od0Ne0Lf0Gg0Ch09in0Hjoule0k02l00mNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Nb,d0Dears old,o1;tt0H;att0b;able4b3d,e2on1sp;!ne0;a2r0D;!l,sp;spo04; ft,uare 1;c0Id0Hf3i0Fkilo0Jm1ya0E;e0Mil1;e0li0H;eet0o0D;t,uart0;ascals,e2i1ou0Pt;c0Mnt0;rcent,t02;hms,uYz;an0JewtT;/s,b,e9g,i3l,m2p1²,³;h,s;!²;!/h,cro5l1;e1li08;! pFs1²;! 1;anEpD;g06s0B;gQter1;! 2s1;! 1;per second;b,i00m,u1x;men0x0;b,elvin0g,ilo2m1nR;!/h,ph,²;byZgXmeter1;! p2s1;! p1;er1; hour;e1g,r0z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s", + "Organization": "true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c", + "Demonym": "true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an", + "Possessive": "true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne", + "Currency": "true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s", + "City": "true¦0:73;1:61;2:6G;3:5U;4:5R;a68b54c4Id4Ae46f3Yg3Jh38i2Zj2Uk2Dl22m1Kn19o16p0Uq0Sr0Ls01tPuOvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3J;greb,nzib5G;ang2e5okoha3Uunfu;katerin3Jrev0;a5n0O;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1K;hi5Zkl3C;l63xford;aw;a6ern2i5ladivost5Molgogr6K;en3lni6R;lenc6Dncouv2Yr3ughn;lan bat1Drumqi,trecht;aDbilisi,eCheBi9o8r7u5;l21n63r5;in,ku;ipoli,ondh62;kyo,m34ron1QulouS;an5jua3l2Zmisoa6Era3;j4Xshui; hag65ssaloni2L;gucigal28hr0l av1W;briz,i6llinn,mpe5Ang5rtu,shk2X;i2Msh0;an,chu1n0p2Iyu0;aEeDh8kopje,owe1It7u5ydney;ra5zh51;ba0Jt;aten is59ockholm,rasbou6Auttga31;an8e6i5;jiazhua1llo1m60y0;f54n5;ya1zh4L;gh3Ot4U;att4Ao1Yv49;cramen18int DlBn5o paulo,ppo3Wrajevo; 7aa,t5;a 5ia3Io domin3I;a3fe,m1O;antonCdie3Gfrancisco,j5ped3Ssalv8;o5u0;se;em,v5z2B;ad0I;lou59peters29;aAe9i7o5;me,sar5t5A;io;ga,o5yadh;! de janei3I;cife,ykjavik;b4Uip4lei2Mnc2Swalpindi;ingdao,u5;ez2i0Q;aEeDhCiBo8r7u6yong5;ya1;eb5Aya1;ag54etor53;rt5zn0; 5la4Fo;au prin0Nelizabe29sa05;ls3Srae5Ctts2B;iladelph4Ynom pe1Doenix;r26tah tik3I;ler00naji,r4Pt5;na,r36;ak47des0Lm1Rr6s5ttawa;a3Ylo;an,d07;a8ew6i5ovosibir1Oyc;ng2Hs; 5cast39;del27orlea46taip16york;g8iro4Xn5pl2Zshv36v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0Y;aFeCi9o6u5;mb2Cni28sc40;gadishu,nt6s5;c17ul;evideo,re31;ami,l6n18s5;kolc,sissauga;an,waukee;cca,d5lbour2Pmph41;an,ell5i3;in,ín;cau,drAkass2Tl9n8r5shh4A;aca6ib5rakesh,se2N;or;i1Ty;a4EchEdal12i47;mo;id;aCeiAi8o6u5vRy2;anLckn0Rdhia3;n5s angel28;d2g bea1O;brev2De3Kma5nz,sb2verpo2A;!ss29;c5pzig;est0C; p6g5ho2Yn0Gusan27;os;az,la35;aHharFiClaipeBo9rak0Hu7y5;iv,o5;to;ala lump4n5;mi1sh0;be,hi0Llka2Zpavog4si5wlo2;ce;da;ev,n5rkuk;gSsha5;sa;k5toum;iv;bIdu3llakuric0Tmpa3Gn6ohsiu1ra5un1Lwaguc0T;c0Sj;d5o,p4;ah1Vy;a7e6i5ohannesZ;l1Xn0;dd37rusalem;ip4k5;ar2J;bad0mph1QnBrkutYs8ta01z5̇zm7;m6tapala5;pa;ir;fah0l6tanb5;ul;am2Zi2I;che2d5;ianap2Lo21;aBe8o5yder2W; chi mi6ms,nolulu,u5;st2;nh;f6lsin5rakli2;ki;ei;ifa,lifax,m7n5rb1Dva3;gAnov5oi;er;bu2Wilt2;aFdanEenDhCiPlasgBo9raz,u5;a5jr21;dal6ng5yaquil;zh1H;aja2Lupe;ld coa18then5;bu2P;ow;ent;e0Toa;sk;lw7n5za;dhi5gt1C;nag0S;ay;aisal26es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Nl paso;in5mont2;bur5;gh;aAe8ha0Visp4o7resd0Ju5;b5esseldorf,rb0shanbe;ai,l0G;ha,nggu0rtmu11;hradRl5troit;hi;donghHe5k08li0masc1Xr es sala1HugavpiY;gu,je2;aKebu,hAo5raio03uriti1P;lo7n6penhag0Ar5;do1Nk;akLst0V;gVm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;n5ttogr12;digarh,g5;ch8sha,zh06;i9lga8mayenJn6pe town,r5;acCdiff;ber18c5;un;ry;ro;aUeMhJirmingh0ToIr9u5;chareRdapeRenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil0Mtisla7zzav5;il5;le;va;goZst2;op6ubaneshw5;ar;al;iBl9ng8r5;g6l5n;in;en;aluru,hazi;fa5grade,o horizonte;st;ji1rut;ghd0BkGnAot9r7s6yan n4;ur;el,r07;celo3ranquil09;na;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a04b01cc00ddis abaZgartaYhmedWizawl,lQmNnHqaZrEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a6chora5kaNtwerp;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 8buquerq7e5giers,maty;ppo,xandr5;ia;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg", + "Country": "true¦0:39;1:2M;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om3DpZqat1KrXsKtCu6v4wal3yemTz2;a25imbabwe;es,lis and futu2Y;a2enezue32ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2Y;k.,s.2; 28a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Ys and caic1U; and 2-2;toba1K;go,kel0Znga;iw2Wji2nz2S;ki2U;aCcotl1eBi8lov7o5pa2Cri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Rriname;lomon1Wmal0uth 2;afr2JkLsud2P;ak0en0;erra leoEn2;gapo1Xt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele25luc0mart20;epublic of ir0Dom2Duss0w2;an26;a3eHhilippinTitcairn1Lo2uerto riM;l1rtugE;ki2Cl3nama,pua new0Ura2;gu6;au,esti2;ne;aAe8i6or2;folk1Hth3w2;ay; k2ern mariana1C;or0N;caragua,ger2ue;!ia;p2ther19w zeal1;al;mib0u2;ru;a6exi5icro0Ao2yanm05;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagasc00l6r4urit3yot2;te;an0i15;shall0Wtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed01;a5e4i2uxembourg;b2echtenste11thu1F;er0ya;ban0Hsotho;os,tv0;azakh1Ee3iriba03o2uwait,yrgyz1E;rWsovo;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an", + "Region": "true¦0:2M;1:2S;2:2J;a2Pb2Cc1Yd1Tes1Sf1Qg1Kh1Gi1Bj17k12l0Zm0On07o05pZqWrTsKtFuCv9w5y3zacatec2T;akut0o0Du3;cat2k07;a4est 3isconsin,yomi1L;bengal,vi6;rwick2Ashington3;! dc;er4i3;rgin0;acruz,mont;dmurt0t3;ah,tar3; 2Ka0W;a5e4laxca1Qripu1Wu3;scaDva;langa1nnessee,x2E;bas0Um3smNtar24;aulip2Cil nadu;a8i6o4taf10u3ylh1E;ffYrr03s19;me1Bno1Puth 3;cVdU;ber0c3kkim,naloa;hu2ily;n4skatchew2xo3;ny; luis potosi,ta catari1;a3hode9;j3ngp06;asth2shahi;ingh24u3;e3intana roo;bec,en5reta0Q;ara7e5rince edward3unjab; i3;sl0A;i,nnsylv3rnambu0A;an0;!na;axa0Xdisha,h3klaho1Zntar3reg6ss0Ax0F;io;aIeDo5u3;evo le3nav0V;on;r3tt16va scot0;f8mandy,th3; 3ampton15;c5d4yo3;rk13;ako1M;aroli1;olk;bras1Lva0Bw3; 4foundland3;! and labrador;brunswick,hamp0Wjers3mexiRyork state;ey;galOyarit;a9eghala0Mi5o3;nta1r3;dov0elos;ch5dlanCn4ss3zor11;issippi,ouri;as geraOneso18;ig2oac2;dhy12harasht0Gine,ni4r3ssachusetts;anhao,i el,ylF;p3toba;ur;anca0Ie3incoln0IouisH;e3iR;ds;a5e4h3omi;aka06ul1;ntucky,ra01;bardino,lmyk0ns0Qr3;achay,el0nata0X;alis5har3iangxi;kh3;and;co;daho,llino6n3owa;d4gush3;et0;ia1;is;a5ert4i3un2;dalFm0D;fordZ;mpYrya1waii;ansu,eorg0lou7oa,u3;an4erre3izhou,jarat;ro;ajuato,gdo3;ng;cesterS;lori3uji2;da;sex;ageTe6o4uran3;go;rs3;et;lawaLrbyK;aEeaDh8o3rimea ,umbr0;ahui6l5nnectic4rsi3ventry;ca;ut;i02orado;la;e4hattisgarh,i3uvash0;apQhuahua;chn4rke3;ss0;ya;ra;lFm3;bridge6peche;a8ihar,r7u3;ck3ryat0;ingham3;shi3;re;emen,itish columb0;h0ja cal7lk6s3v6;hkorto3que;st2;an;ar0;iforn0;ia;dygea,guascalientes,lAndhr8r4ss3;am;izo1kans4un3;achal 6;as;na;a 3;pradesh;a5ber4t3;ai;ta;ba4s3;ka;ma", + "Place": "true¦a0Eb0Bc04d03e02f00gVhUiRjfk,kOlMmJneGoFpBque,rd,s9t6u5v4w1y0;akutOyz;ake isFis1y0;!o;!c;a,ostok,t;laanbaatar,p02safa,t;ahiti,e1he 0;bronx,hamptons;nn,x;a0fo,oho,t,under7yd;khalNsk;a2e1h0itcairn;l,x;k,nnN;!cif04;kla,nt,rd;b1w eng0;land;!r;a1co,i0t,uc;dNnn;gadZlibu,nhattZ;a0gw,hr;s,x;an1osrae,rasnoyar0ul;sk;!s;a1cn,da,nd0st;ianRochina;!x;arlem,kg,nd,oHwy;a3re0;at 0enwich;brita0lakH;in;!y village;co,l0ra;!a;urope,vergladC;ak,en,fw,ist,own4xb;al5dg,gk,h2l1o0rA;lo,nn;!t;a1ina0uuk;town;morro,tham;!if;cn,e1kk,l0rooklyn;vd;l air,verly hills;frica,lta,m7n3r2sia,tl1ve,zor0;es;!ant2;ct1iz;adyr,tarct0;ic0; oce0;an;ericas,s", + "MaleName": "true¦0:E4;1:D5;2:DN;3:AX;4:D1;5:CF;6:B5;7:CV;8:C7;9:DJ;A:DK;B:A5;C:C1;aCNbBKcAId9Ge8Mf84g7Hh6Ti6Dj5Dk51l4Cm34n2So2Mp2Equ2Cr1Ls11t0Eu0Dv07wTxSyIzD;aDor0;cDh9Skaria,n5V;hEkD;!aCL;ar5VeCK;aLoFuD;sDu2JvBX;if,uf;nFsEusD;ouf,sD;ef;aDg;s,tD;an,h0;hli,nBLssX;avi3ho4;aMeKiFoDyaC1;jcie8Blfgang,odrow,utD;!er;lDnst1;bFey,frD0lD;aBCiD;am,e,s;e9Eur;i,nde6sD;!l8t1;de,lErrAyD;l1ne;lDt3;aA9y;aGiDladimir,ojte7Y;cEha0kt68nceDrgAIva0;!nt;e3Ut66;lentDnA4;in4X;ghBUlyss5Bnax,sm0;aXeShOiMoHrFuEyD;!l3ro7s1;n9r5B;avAVeDist0oy,um0;ntANv5Yy;bGdFmDny;!as,mDoharu;aCSie,y;!d;iBy;mDt5;!my,othy;adFeoEia8FomD;!as;!do8O;!de5;dGrD;en9KrD;an9JeDy;ll,n9I;!dy;dgh,ha,iDnn3req,tsu4S;cB4ka;aTcotRePhLiJoHpenc3tDur1Uylve9Jzym1;anFeDua8C;f0phBSvDwa8B;e61ie;!islaw,l8;lom1nBEuD;leyma7ta;dDlBm1yabonga;!dhart7An8;aFeD;lDrm0;d1t1;h7Tne,qu0Zun,wn,y7;aDbasti0k29l4Qrg4Nth,ymoAT;m5n;!tD;!ie,y;lEmDnti2Dq5Aul;!ke5LmCu4;ik,vato7W;aXeTheA9iPoHuEyD;an,ou;b7MdEf5pe7RssD;!elBY;ol3Ey;an,bJc66dIel,geHh0landBPmGnFry,sEyD;!ce;coe,s;!aAGnC;an,eo;l46r;e5Ng3n8olfo,ri79;bCeB7;cDl8;ar6Pc6OhEkDo;!ey,ie,y;a99ie;gEid,ubAx,yDza;an1InY;gA8iD;naA4s;ch70fa4lHmGndFpha4sEul,wi2HyD;an,mo82;h7Vm5;alBDol2Uy;iATon;f,ph;ent2inD;cy,t1;aIeGhilFier72ol,rD;aka16eD;m,st1;!ip,lip;dALrcy,tD;ar,e3Gr1X;b4Kdra7Ft4ZulD;!o17;ctav3Fi3liv3mAFndrej,rHsEtDum9wA;is,to;aEc9k9m0vD;al5Z;ma;i,l53vL;aLeJiFoDu3A;aDel,j5l0ma0r3K;h,m;cEg4i49kD;!au,h7Uola;holBkDolB;!olB;al,d,il,ls1vD;il8Y;hom,thD;anDy;!a4i4;aZeWiMoHuEyD;l2Jr1;hamEr6XstaD;fa,p5C;ed,mH;di0We,hamFis2FntEsDussa;es,he;e,y;ad,ed,mD;ad,ed;cIgu4hai,kGlFnEtchD;!e6;a8Aik;house,o0Bt1;ae5YeA4olD;aj;ah,hDk8;aEeD;al,l;el,l;hElv2rD;le,ri6v2;di,met;ay0ck,hTjd,ks2DlRmadWnQrKs1tFuricExD;!imilian9Nwe6;e,io;eGhEiBtDus,yB;!eo,hew,ia;eDis;us,w;j,o;cHio,kGlFqu7Dsha6tDv2;iDy;!m,n;in,on;!el,oPus;!el9IoOus;iGu4;achDcolm,ik;ai,y;amEdi,eDmoud;sh;adDm5T;ou;aXeQiOlo3EoKuEyD;le,nd1;cGiFkDth3uk;aDe;!s;gi,s,z;as,iaD;no;g0nn7SrenFuDv8Jwe6;!iD;e,s;!zo;am,oD;n4r;a8Cevi,la5JnIoGst3thaFvD;eDi;nte;bo;!nD;!a6Sel;!ny;mFnErDur5Hwr5H;ry,s;ce,d1;ar,o5A;aLeGhaled,iDrist5Iu4Vy6X;er0p,rD;by,k,ollD;os;en0iGnDrmit,v44;!dEnDt5Z;e1Ay;a6ri59;r,th;cp3j5m66na73rEsp9them,uD;ri;im,l;a02eUiSoGuD;an,lDst2;en,iD;an,en,o,us;aNeLhnKkubBnIrGsD;eEhDi8Bue;!ua;!ph;dDge;an,i,on;!aDny;h,s,th5I;!ath5Hie,nC;!l,sDy;ph;o,qu2;an,mD;!mC;d,ffIrFsD;sDus;!e;a6BemEmai7oDry;me,ni0Y;i7Ty;!e60rD;ey,y;cKdAkImHrFsEvi3yD;!dAs1;on,p3;ed,od,rDv56;e5Nod;al,es4Xis1;a,e,oDub;b,v;k,ob,quD;es;aWbQchiPgNkeMlija,nuLonut,rJsFtDv0;ai,suD;ki;aEha0i7DmaDsac;el,il;ac,iaD;h,s;a,vinDw2;!g;k,nngu5S;!r;nacDor;io;ka;ai,rahD;im;aPeJoIuDyd9;be2KgGmber4WsD;eyEsD;a2e2;in,n;h,o;m3ra3Gsse2wa4B;aHctGitGnrErD;be2Dm0;iDy;!q11;or;th;bMlLmza,nKo,rFsEyD;a4JdA;an,s0;lGo50rFuDv8;hi4Gki,tD;a,o;is1y;an,ey;k,s;!im;ib;aVeRiPlenOoLrHuD;ilEsD;!tavo;herme,lerD;mo;aFegDov3;!g,orD;io,y;dy,h5Wnt;nzaErD;an,d1;lo;!n;lbe5Ano,oD;rg3Hvan5A;ne,oFrD;aDry;ld,rd5H;ffr8rge;brElArDv2;la28r3Sth,y;e3EielD;!i5;aTePiNlLorr0NrD;anFedDitz;!dCeDri2B;ri2A;cFkD;!ie,lD;in,yn;esLisD;!co,z36;etch3oD;yd;d4lDnn,onn;ip;deriFliEng,rnD;an06;pe,x;co;bi0di,hd;ar04dZfrYit0lSmKnHo2rFsteb0th0uge7vDymAzra;an,eD;ns,re36;gi,i0DnDrol,v2w2;est4Pie;oEriqDzo;ue;ch;aJerIiEmD;aIe2Z;lErD;!h0;!iD;o,s;s1y;nu4;be0Cd1iGliFmEt1viDwood;n,s;er,o;ot1Ys;!as,j4NsD;ha;a2en;!dCg9mGoEuEwD;a2Din;arD;do;o0Wu0W;l,nD;est;a01eRiOoHrGuFwEylD;an,l0;ay7ight;a7dl8nc0st2;ag0ew;minGnEri0ugDvydBy2D;!lB;!a2MnDov0;e6ie,y;go,iDykB;cDk;!k;armuEeDll1on,rk;go;id;anKj0lbeJmetri5nHon,rGsFvEwDxt3;ay7ey;en,in;hawn,mo0B;ek,ri0I;is,nDv3;is,y;rt;!dD;re;an,lNmLnKrGvD;e,iD;! lucDd;as,ca;en,iFne6rDyl;eDin,yl;l3Bn;n,o,us;!e,i4ny;iDon;an,en,on;e,lB;as;a09e07hYiar0lNoIrGuEyrD;il,us;rtD;!is;aDistob0U;ig;dy,lGnErD;ey,neli5y;or,rD;ad;by,e,in,l2t1;aIeFiDyK;fDnt;fo0Ft1;meEt5velaD;nd;nt;rFuEyD;!t1;de;enD;ce;aIeGrisEuD;ck;!tD;i0oph3;st3;er;d,rDs;b4leD;s,y;cDdric,s9;il;lGmer1rD;ey,lEro6y;ll;!os,t1;eb,v2;a07eZiVlaUoRrEuDyr1;ddy,rtK;aLeGiFuEyD;an,ce,on;ce,no;an,ce;nEtD;!t;dEtD;!on;an,on;dEndD;en,on;!foDl8y;rd;bErDyd;is;!by;i7ke;bFlEshD;al;al,lC;ek;nHrDshoi;at,nEtD;!r1C;aDie;rd14;!edict,iEjam2nC;ie,y;to;kaMlazs,nHrD;n8rDt;eDy;tt;ey;dDeE;ar,iD;le;ar17b0Vd0Rf0Pgust2hm0Mi0Jja0Il04m00nSputsiRrIsaHuFveEyDziz;a0kh0;ry;gust5st2;us;hi;aKchJiIjun,maHnFon,tDy0;hDu09;ur;av,oD;ld;an,nd0H;!el,ki;ie;ta;aq;as,dIgel0CtD;hoGoD;i7nD;!i09y;ne;ny;er,reDy;!as,i,s,w;iFmaDos;nu4r;el;ne,r,t;an,bePdAeJfHi,lGonFphXt1vD;aNin;on;so,zo;an,en;onTrD;edU;c,jaGksandFssaGxD;!andD;er,ru;ar,er;ndD;ro;rtN;ni;dAm9;ar;en;ad,eD;d,t;in;onD;so;aEi,olfDri0vik;!o;mDn;!a;dHeGraEuD;!bakr,lfazl;hDm;am;!l;allIelFoulaye,ulD;!lDrF;ah,o;! rD;ahm0;an;ah;av,on", + "LastName": "true¦0:9F;1:9V;2:9H;3:9X;4:9N;5:8J;6:9K;7:A0;8:9E;9:88;A:6E;B:77;C:6J;a9Ub8Lc7Kd6Xe6Rf6Dg5Vh58i54j4Pk45l3Nm2Rn2Eo26p1Nquispe,r17s0Ft05vVwOxNyGzD;aytsADhD;aDou,u;ng,o;aGeun7ZiDoshiA9un;!lD;diDmaz;rim,z;maDng;da,guc97mo6UsDzaB;aBhiA7;iao,u;aHeGiEoDright,u;jc8Sng;lDmm0nkl0sniewsB;liA1s3;b0iss,lt0;a5Rgn0lDng,tanabe;k0sh;aHeGiEoDukA;lk5roby5;dAllalDnogr2Zr0Zss0val37;ba,obos;lasEsel7N;lGn dFrg8EsEzD;qu7;ily9Oqu7silj9O;en b35ijk,yk;enzue95verde;aLeix1JhHi4j6ka3IoGrFsui,uD;om4ZrD;c4n0un1;an,embl8TynisB;dor95lst31m2rr9th;at5Mi7LoD;mErD;are6Ylaci64;ps3s0Y;hirAkah8Dnaka;a00chWeThPiNmKoItFuEvDzabo;en8Aobod34;ar7bot2lliv4zuB;aEein0oD;i67j3Lyan8V;l6rm0;kol5lovy5re6Psa,to,uD;ng,sa;iDy5Z;rn5tD;!h;l5YmDngh,rbu;mo6Do6J;aFeDimizu;hu,vchD;en7Cuk;la,r17;gu8mDoh,pulve8Trra4R;jDyD;on5;evi6Filtz,miDneid0roed0ulz,warz;dEtD;!z;!t;ar42h6ito,lFnDr2saBto,v2;ch7d0AtDz;a4Pe,os;as,ihAm3Zo0Q;aOeNiKoGuEyD;a66oo,u;bio,iz,sD;so,u;bEc7Bdrigue57g03j73mDosevelt,ssi,ta7Nux,w3Z;a4Be0O;ertsDins3;!on;bei0LcEes,vDzzo;as,e8;ci,hards3;ag4es,it0ut0y9;dFmEnDsmu7Zv5F;tan1;ir7os;ic,u;aSeLhJiGoErDut6;asad,if5Zochazk1W;lishc24pDrti62u55we66;e2Tov48;cEe09nD;as,to;as60hl0;aDillips;k,m,n5K;de3AetIna,rGtD;ersErovDtersC;!a,ic;en,on;eDic,ry,ss3;i8ra,tz,z;ers;h71k,rk0tEvD;ic,l3T;el,t2O;bJconnor,g2ClGnei5PrEzD;demir,turk;ella3MtDwe5N;ega,iz;iDof6GsC;vDyn1F;ei8;aPri1;aLeJguy1iFoDune44ym4;rodahl,vDwak;ak3Uik5otn56;eEkolDlsCx3;ic,ov6X;ls1miD;!n1;ils3mD;co42ec;gy,kaEray4varD;ro;jiDmu8shiD;ma;aXcVeQiPoIuD;lGnFrDssoli5T;atDpUr68;i,ov2;oz,te4B;d0l0;h4lIo0HrEsDza0Z;er,s;aFeEiDoz5r3Ete4B;!n6F;au,i8no,t4M;!l9;i2Rl0;crac5Ohhail5kke3Qll0;hmeGij0j2ElFndErci0ssiDyer19;!er;e3Bo2Z;n0Io;dAti;cartDlaughl6;hy;dMe6Dgnu5Ei0jer34kLmJnci59rFtEyD;er,r;ei,ic,su1N;iEkAqu9roqu6tinD;ez,s;a54c,nD;!o;a52mD;ad5;e5Oin1;rig4Ns1;aSeMiIoGuEyD;!nch;k2nDo;d,gu;mbarDpe2Rvr2;di;!nDu,yana1R;coln,dD;bDholm;erg;bed5TfeGhtFitn0kaEn6rDw2G;oy;!j;in1on1;bvDvD;re;iDmmy,rsCu,voie;ne,t11;aTennedy,h4iSlQnez46oJrGuEvar4woD;k,n;cerDmar58znets5;a,o2G;aDem0i2Zyeziu;sni3PvD;ch3U;bay4Frh0Jsk0TvaFwalDzl5;czDsB;yk;cFlD;!cDen3Q;huk;!ev2ic,s;e6uiveD;rt;eff0l2mu8nnun1;hn,lloe,minsBrEstra31to,ur,yDzl5;a,s0;j0GlsC;aMenLha2Pim0QoEuD;ng,r2;e2JhFnErge2Ju2NvD;anA;es,ss3;anEnsD;en,on,t3;nesDsC;en,s1;ki26s1;cGkob3RnsDrv06;en,sD;enDon;!s;ks3obs1;brahimAglesi3Ake4Ll0CnoZoneFshikEto,vanoD;u,v4A;awa;scu;aPeIitchcock,jaltal6oFrist46uD;!aDb0gh9ynh;m4ng;a23dz2fEjga2Sk,rDx3B;ak0Yvat;er,fm3B;iGmingw3NnErD;nand7re8;dDriks1;ers3;kkiEnD;on1;la,n1;dz2g1lvoLmJnsCqIrr0SsFuEyD;as36es;g1ng;anEhiD;mo0Q;i,ov08;ue;alaD;in1;rs1;aMeorgLheorghe,iJjonIoGrEuDw3;o,staf2Utierr7zm4;ayDg2iffitUub0;li1G;lub3Rme0JnD;calv9zale0I;aj,i;l,mDordaL;en7;iev3B;gnJlGmaFnd2No,rDs2Nuthi0;cDza;ia;ge;eaElD;agh0i,o;no;e,on;ab0erMiIjeldsted,lor9oGrFuD;cDent9ji3F;hs;an1Wiedm4;ntaDrt6st0urni0;na;lipEsD;ch0;ovD;!ic;hatAnandeVrD;arDei8;a,i;ov2;dHinste6riksCsDva0D;cob2ZpDtra2X;inoDosiM;za;en,s3;er,is3wards;aUeMiKjurhuJoHrisco0YuEvorakD;!oQ;arte,boEmitru,rDt2U;and,ic;is;g4he0Hmingu7n2Ord19tD;to;us;aDmitr29ssanayake;s,z; GbnaFlEmirDrvis1Lvi,w4;!ov2;gado,ic;th;bo0groot,jo03lEsilDvri9;va;a cruz,e3uD;ca;hl,mcevsBnErw6t2EviD;d5es,s;ieDku1S;ls1;ki;a05e00hNiobMlarkLoFrD;ivDuz;elli;h1lGntFop0rDs26x;byn,reD;a,ia;i,rer0O;em4liD;ns;!e;anu;aLeIiu,oGriDuJwe;stD;eDiaD;ns1;i,ng,uFwDy;!dhury;!n,onEuD;ng;!g;kEnDtterjee,v7;!d,g;ma,raboD;rty;bGl09ng2rD;eghetEnD;a,y;ti;an,ota0M;cer9lder3mpbeIrFstDvadi08;iDro;llo;doEt0uDvalho;so;so,zo;ll;es;a09eXhUiSlNoGrFyD;rne,tyD;qi;ank5iem,ooks,yant;gdan5nFruya,su,uchEyHziD;c,n5;ard;darDik;enD;ko;ov;aEondD;al;nEzD;ev2;co;ancRshwD;as;a01oDuiy4;umDwmD;ik;ckNethov1gu,ktLnJrD;gGisFnD;ascoDds1;ni;ha;er,mD;ann;gtDit7nett;ss3;asD;hi;er,ham;b2ch,ez,hMiley,kk0nHrDu0;bEnDua;es,i0;ieDosa;ri;dDik;a8yopadhyD;ay;ra;er;k,ng;ic;cosZdYguilXkhtXlSnJrGsl4yD;aEd6;in;la;aEsl4;an;ujo,ya;dFgelD;ovD;!a;ersGov,reD;aDjL;ss1;en;en,on,s3;on;eksejGiyGmeiFvD;ar7es;ez;da;ev;ar;ams;ta", + "WeekDay": "true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s", + "Month": "true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il", + "Date": "true¦ago,t2week0yesterd4; e0e0;nd;mr2o0;d0morrow;ay;!w", + "FirstName": "true¦aLblair,cHdevGgabrieFhinaEjCk9l8m4nelly,quinn,re3s0;h0umit;ay,e0iloh;a,lby;g6ne;a1el0ina,org5;!okuh9;naia,r0;ion,lo;ashawn,uca;asCe1ir0rE;an;lsAnyat2rry;am0ess6ie,ude;ie,m5;ta;le;an,on;as2h0;arl0eyenne;ie;ey,sidy;lex2ndr1ubr0;ey;a,ea;is", + "Person": "true¦ashton kutchTbScNdLeJgastOhHinez,jFkEleDmCnettKoBp9r4s3t2v0;a0irgin maH;lentino rossi,n go3;aylor,heresa may,iger woods,yra banks;addam hussain,carlett johanssKlobodan milosevic,uC;ay romano,e3o1ush limbau0;gh;d stewart,nald0;inho,o;ese witherspoFilly;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0;on;dinal wols1son0;! palm2;ey;arack obama,rock;er", + "Verb": "true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en", + "PhrasalVerb": "true¦0:7L;1:79;2:7X;3:7N;4:72;5:80;6:7P;7:6V;8:78;9:7J;A:6W;B:5Z;C:7S;D:7K;a81b6Lc5Rd5Me5Lf4Kg41h3Kiron0j3Gk3Bl2Vm2Jn2Ho2Fp1Wquiet7Ar1Js0CtSuQvacuum 1wHyammer9zE;eroBip FonE;e0k0;by,up;aLeHhGiForErit5G;d 1k33;mp0n2Vpe0r7s7;eel Dip 85;aFiEn2J;gh 09rd0;n Dr E;d2in,o5J;it 61k7lk6rm 6Csh 7Nt6Qv51;rge9sE;e AherB;aTeRhPiLoJrGuEype 69;ckBrn E;d2in,o3Sup;aFiEot0y 2I;ckle6Rp 7T;ck6Qde Y;ne6Pp Es4O;d2o73up;ck GdFe Egh6Bme0p o0Gre0;aw3ba4d2in,up;e 61y 1;by,o7D;ink Erow 6D;ba4ov8up;aEe 5Zll53;m 1r X;ck9ke Flk E;ov8u54;aEba4d2in,o3Cup;ba4ft8p59w3;a0Jc0Ie0Ch08i05l01m00nZoYpTquare StKuIwE;earGiE;ngFtch E;aw3ba4o77; by;ck Eit 1m 1ss0;in,up;aJe0WiIoGrEuc3G;aigh1WiE;ke 6Gn3A;p Erm1Z;by,in,o6T;n3Br 1tc3T;c3Amp0nd Er6Zve6y 1;ba4d2up;d2o6Pup;ar37eHiGlFrEur9;ing9uc7;a3Fit 5B;l13n 1;e5Sll0;be2Wrt0;ap 4Sow D;ash 5Foke0;eep FiEow A;c3Wp 1;in,oE;ff,v8;gn 4XngFt Ez7;d2o5up; al54le0;aGoEu4T;ot Eut0w 6D;aw3ba4f3Go67;c2PdeBk58ve6;e Ill1And HtE; Etl4H;d2in,o5upE;!on;aw3ba4d2in,o27up;o5Mto;al51out0rap51;il6v7;aPeMiLoHuE;b 4Ule0n Estl7;aEba4d2in5Jo3Ut39u3S;c26w3;ll Got FuE;g2Tnd6;a27f30o5;arCin,o5;ng 53p6;aEel6inBnt0;c5Dd E;o31u0I;c24t0;aSeRiPlNoLrIsyc2HuE;ll Gt E;aEba4d2in,o1Ot3Gup;p3Lw3;ap3Kd2in,o5t3Eup;attle9ess FiHoE;p 1;ah1Oon;iEp 5Hr3Yur4Jwer 5H;nt0;ay4DuE;gBmp A;ck Eg0le9n Ap4A;o2Yup;el 4KncilB;c42ir 3Un0ss GtFy E;ba4o54; d2c24;aw3ba4o18;pEw3X;e3Wt D;arrow46erd0oE;d6te45;aMeJiIoGuE;ddl7lE;l 3I;c1Dp 1uth6ve E;al3Nd2in,o5up;ss0x 1;asur7lFss E;a1Gup;t A;ke Fn ArEs1Px0;k Ary6;do,o48up;aRePiKoEuck0;aIc3Hg HoEse0;k Ese3F;aft8ba4d2forw2Jin46ov8uE;nd8p;in,o0M;d A;e HghtGnFsEv1V;ten 4M;e 1k 1; 1e37;arCd2;av1Jt 37velE; o3U;c7p 1sh Etch9ugh6y20;in3Uo5;eFick6nock E;d2o3Q;eEyB;l 2Pp E;aw3ba4d2fTin,o07to,up;aGoFuE;ic7mpB;ke31t35;c3Azz 1;aQeLiIoFuE;nker32rry 1s0W;lEneBrse2X;d Ee 1;ba4d2fast,o01up;de Ft E;ba4on,up;aw3o5;aElp0;d Gl 2Ar Et 1;fEof;rom;in,oTu1H;c02m 1nFve Ez25;it,to;d Eg 2FkerG;d2in,o5;aTeMive Kloss 22oGrFunE; f0N;in3How 2B; Eof 21;aFb1Dit,oErCt0Pu18;ff,n,v8;bo5ft8hKw3;aw3ba4d2in,oEup,w3;ff,n,ut;aJek0t E;aFb17d2oErCup;ff,n,ut,v8;cFhEl1XrCt,w3;ead;ross;r 1;d aFnE;g 1;bo5;a08e01iSlOoKrGuE;cEel 1;k 1;eFighten Eown9y 1;aw3o2S;eEshe1N; 1z7;lGol E;aEwi1G;bo5rC;d Alow 1;aFeEip0;sh0;g Ake0mErE;e 2R;gLlJnHrFsEzzle0;h 2P;e Em 1;aw3ba4up;d0isE;h 1;e El 19;aw3fJ;ht ba4ure0;eJnFsE;s 1;cGd E;fEo25;or;e D;dVl 1;cIll Erm0t0W;ap04bGd2in,oFtE;hrough;ff,ut,v8;a4ehi20;e 0L;at0dge0nd 0Ky7;oHrE;aFess Aop E;aw3bUin,o1E;g9w9; 0Dubl7;aXhUlean AoHrEut 10;ack9eep Eoss D;by,d2oEup;n,ut;me HoFuntE; o1Q;k 1l E;d2o1I;aKbJforHin,oGtFuE;nd8;ogeth8;ut,v8;th,wE;ard;a4y;pErCw3;art;eEipB;ck Der E;on,up;lKncel0rHsGtch FveB; in;o19up;h Dt6;ry FvE;e Y;aw3o15;l Em05;aEba4d2o13up;rCw3;a0Ke0Bl04oVrJuE;bblGcklWil02lk AndlWrn 08st FtEy 13zz6;t D;in,o5up;e E;ov8;anOeaMiFush E;o0Oup;ghIng E;aFba4d2forEin,o5up;th;bo5lErCw3;ong;teE;n 1;k E;d2in,o5up;ch0;arLgKil An7oHssGttlFunce Ex D;aw3ba4;e A; arC;k Dt 1;e 1;d2up; d2;d 1;aJeed0oEurt0;cGw E;aw3ba4d2o5up;ck;k E;in,oL;ck0nk0st6; oKaHef 1nd E;d2ov8up;er;up;r0t E;d2in,oEup;ff,ut;ff,nE;to;ck Kil0nGrgFsE;h D;ain9e D;g Dk9; on;in,o5; o5;aw3d2o5up;ay;cNdJsk Guction6; oE;ff;arCo5;ouE;nd;d E;d2oEup;ff,n;own;t E;o5up;ut", + "Modal": "true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ay,ight,ust;an,o0;uld", + "Adjective": "true¦0:7P;1:84;2:83;3:8A;4:7W;5:5S;6:4N;7:4O;8:58;9:6I;A:81;a6Wb6Gc63d5Je54f4Hg49h3Wi39j37k36l2Vm2Ln2Bo1Wp1Dquack,r12s0Ft07uMvJwByear5;arp0eFholeEiDoB;man5oBu6P;d6Rzy;despr7Ls5S;!sa7;eClBste2A;co1Nl o4W;!k5;aCiBola4M;b89ce versa,ol5H;ca3gabo6Gnilla;ltUnHpCrb5Msu4tterB;!mo7G; Eb1SpDsBti1M;ca7etBide dKtairs;!ti2;er,i3U;f36to da1;aLbeco75convin29deIeHfair,ivers4knGprecedVrEsCwB;iel3Nritt6A;i1XuB;pervis0spec3Y;eBu5;cognHgul6Tl6T;own;ndi2v64xpect0;cid0rB;!grou5ZsB;iz0tood;b7pp0Dssu6UuthorB;iz0;i26ra;aGeEhDi6AoCrB;i1oubl0us3M;geth8p,rp6Vuc67;ough4Wril33;en60l32mpBrr2X;o6Ati2;boo,lBn;ent0;aWcVeThSiQmug,nobbi3LoOpNqueami3LtFuBymb6H;bDi gener5DpBrpri6D;erBre0N;! dup8b,i2C;du0seq52;anda77eGiFrBunni2y3F;aightCiB;ki2p0; fBfB;or5K;ll,r5S;aBreotyp0;dfa6Cmi2;a55ec2Gir1Hlend6Cot on; call0le,mb8phist1XrBu0Vvi48;d6Ary;gnifica3nB;ce51g7;am2Re8ocki2ut;cBda1em5lfi32ni1Wpa6Jre6;o1Er42;at5Gient28reec5G;cr0me;aJeEiCoB;bu60tt51uQy4;ghtBv4;!-2Bf9;ar,bel,condi1du6Dfres5AlEpublic42sCtard0vB;ea26;is4CoB;lu1na3;aQe1Cuc4A;b5TciBllyi2;al,st;aOeLicayu6lac5Ropuli5QrCuB;bl5Jmp0n51;eGiDoB;!b07fu5RmiBp8;ne3si2;mCor,sBva1;ti6;a53e;ci5MmB;a0EiB;er,um;ac20rBti1;feAma2XpleBv38;xi2;rBst;allelDtB;-tiBi4;me;!ed;bLffJkIld fashion0nHpGrg1Eth8utFvB;al,erB;!all,niCt,wB;eiBrouB;ght;do0Ter,g2Qsi4B;en,posi1; boa5Og2Oli6;!ay; gua5MbBli6;eat;eDsB;cBer0Eole1;e6u3O;d2Xse;aJeIiHoBua4X;nFrCtB;ab7;thB;!eB;rn;chala3descri58stop;ght5;arby,cessa44ighbor5xt;k0usia1A;aIeGiDoBultip7;bi7derBl0Vnth5ot,st;a1n;nBx0;dblo0RiaBor;tu37;ande3Qdi4NnaBre;ci2;cBgenta,in,j01keshift,le,mmoth,ny,sculi6;ab33ho;aKeFiCoBu15;uti14vi2;mCteraB;l,te;it0;ftEgBth4;al,eCitiB;ma1;nda3K;!-0C;ngu3Zst,tt8;ap1Xind5no0A;agg0uB;niMstifi0veni7;de4gno4Klleg4mQnEpso 20rB;a1rB;eleBita0J;va3; KaJbr0corIdGfluenQiQnFsEtCviB;go0Fti2;aAen3SoxB;ic3B;a6i2Vul0D;a1er,oce3;iCoB;or;reA;deq3Qppr33;fBsitu,vitro;ro3;mFpB;arDerfeAoBrop8;li1rtB;a3ed;ti4;eBi0S;d2Vn3C;aIeFiDoBumdr3I;ne36ok0rrBs08ur5;if2Z;ghfalut1QspB;an2X;aClB;liYpf9;li2;lEnDrB;d04roB;wi2;dy;f,low0;ainf9ener2Oiga24lHoGraDuB;ilBng ho;ty;cCtB;ef9is;ef9;ne,od;ea2Iob4;aTeNinMlKoFrB;a1VeDoz1MustB;raB;ti2;e2Gq10tf9;oDrB; keeps,eBm8tuna1;g03ign;liB;sh;aBue3;g31tte1P;al,i1;dFmCrB;ti7;a7ini6;ne;le; up;bl0i3l27r Cux,voB;ri1uri1;oBreac1E;ff;aLfficie3lKmHnFreAthere4veExB;aAcess,pe1QtraCuB;be2Nl0E;!va1E;n,ryday; BcouraEti0O;rou1sui1;erCiB;ne3;gi2;abo23dMe17i1;g8sB;t,ygB;oi2;er;aReJiDoBrea14ue;mina3ne,ubB;le,tf9;dact1Bfficu1OsCvB;er1K;creDeas0gruntl0hone1FordCtB;a3ressM;er5;et; HadpGfFgene1PliDrang0spe1PtCvoB;ut;ail0ermin0;be1Mca1ghB;tf9;ia3;an;facto;i5magBngeroUs0G;ed,i2;ly;ertaMhief,ivil,oDrB;aBowd0u0G;mp0vZz0;loImGnCrrBve0P;eAu1I;cre1fu0LgrDsCtB;empo0Dra0E;ta3;ue3;mer08pleB;te,x;ni4ss4;in;aNeIizarHlFoCrB;and new,isk,okN;gCna fiUttom,urgeoB;is;us;ank,indB;!i2;re;autif9hiDloCnBst,yoD;eUt;v0w;nd;ul;ckCnkru0WrrB;en;!wards; priori,b0Mc0Jd09fra08g04h03lYmWntiquVppSrMsIttracti06utheHvEwB;aCkB;wa0T;ke,re;ant garCerB;age;de;ntU;leep,piDsuDtonB;isB;hi2;ri2;ab,bitEroDtiB;fiB;ci4;ga3;raB;ry;are3etiNrB;oprB;ia1;at0;aJuB;si2;arEcohCeBiIl,oof;rt;olB;ic;mi2;ead;ainDgressiConiB;zi2;ve;st;id; IeGuFvB;aCerB;se;nc0;ed;lt;pt,qB;ua1;hoc,infinitB;um;cuCtu4u1;al;ra1;erLlKoIruHsCuB;nda3;e3oCtraA;ct;lu1rbi2;ng;te;pt;aBve;rd;aze,e;ra3;nt", + "Comparable": "true¦0:41;1:4I;2:45;3:2Y;4:4B;5:3X;a4Ob44c3Od3De35f2Rg2Fh24i1Vj1Uk1Rl1Jm1Dn17o15p0Vqu0Tr0KsTtMuIvFw7y6za13;ell27ou4;aBe9hi1Yi7r6;o4y;ck0Ode,l6n1ry,se;d,y;a6i4Mt;k,ry;n1Tr6sK;m,y;a7e6ulgar;nge5rda2xi4;g9in,st;g0n6pco3Mse5;like0t6;i1r6;ue;aAen9hi8i7ough,r6;anqu2Oen1ue;dy,g3Sme0ny,r09;ck,n,rs2P;d40se;ll,me,rt,s6wd45;te5;aVcarUeThRiQkin0FlMmKoHpGqua1FtAu7w6;eet,ift;b7dd13per0Gr6;e,re2H;sta2Ft3;aAe9iff,r7u6;pXr1;a6ict,o4;ig3Fn0U;a1ep,rn;le,rk;e22i3Fright0;ci28ft,l7o6re,ur;n,thi4;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g35m6;!y;ek,nd3D;ck,l0mp3;a6iTort,rill,y;dy,ll0Xrp;cu0Rve0Rxy;ce,ed,y;d,fe,int0l1Vv14;aBe9i8o6ude;mantic,o1Isy,u6;gh,nd;ch,pe,tzy;a6d,mo0H;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1QlCoBr8u6;ny,r6;e,p3;egna2ic7o6;fouYud;ey,k0;li04or,te1B;ain,easa2;ny;in5le;dd,f6i0ld,ranQ;fi10;aAe8i7o6;b3isy,rm15sy;ce,mb3;a6w;r,t;ive,rr01;aAe8ild,o7u6;nda19te;ist,o1;a6ek,llX;n,s0ty;d,tuQ;aBeAi9o6ucky;f0Un7o1Du6ve0w17y0T;d,sy;e0g;g1Tke0tt3ve0;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti4;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b3id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te5;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t3uiY;u1y;aIeeb3iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get5mG;my;erce8n6rm;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi4;gey,lm8r6;e5i4;ful;!i4;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i4;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd", + "TextOrdinal": "true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th", + "Cardinal": "true¦bHeEf8hundred,mHnineAone,qu6s4t0zero;en,h2rGw0;e0o;lve,n8;irt9ousandEree;e0ix5;pt1ven4xt1;adr0int0;illion;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion0;!s", + "Expression": "true¦a02b01dXeVfuck,gShLlImHnGoDpBshAtsk,u7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la", + "Adverb": "true¦a08by 06d02eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,well,ye0;p,s; to,wards5;h1iny bit,o0wiO;o,t6ward;en,us;eldom,o0uch;!me1rt0; of;hYtimes,w09;a1e0;alT;ndomSthN;ar excellDer0oint blank; Nhaps;f3n0;ce0ly;! 0;ag02moW; courIten;ewKo0; longEt 0;onIwithstanding;aybe,eanwhiAore0;!ovB;! aboU;deed,steV;en0;ce;or2u0;lArther0;!moJ; 0ev3;examp0good,suH;le;n1v0;er; mas0ough;se;e0irect1; 1finite0;ly;ju8trop;far,n0;ow; DbroCd nauseam,gBl6ny3part,s2t 0w4;be6l0mo6wor6;arge,ea5; soon,ide;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori", + "Determiner": "true¦aBboth,d9e6few,l4mu8neiDown,plenty,s3th2various,wh0;at0ich0;evC;at,e4is,ose;everal,ome;a,e0;!ast,s;a1i6l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er" + }; - return null; -}; + const seq = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", + cache = seq.split("").reduce(function (n, o, e) { + return n[o] = e, n; + }, {}), + toAlphaCode = function (n) { + if (void 0 !== seq[n]) return seq[n]; + let o = 1, + e = 36, + t = ""; -var toInfinitive$1 = function toInfinitive(str, world, tense) { - if (!str) { - return ''; - } //1. look at known irregulars + for (; n >= e; n -= e, o++, e *= 36); + for (; o--;) { + const o = n % 36; + t = String.fromCharCode((o < 10 ? 48 : 55) + o) + t, n = (n - o) / 36; + } - if (world.words.hasOwnProperty(str) === true) { - var irregs = world.irregulars.verbs; - var keys = Object.keys(irregs); + return t; + }, + fromAlphaCode = function (n) { + if (void 0 !== cache[n]) return cache[n]; + let o = 0, + e = 1, + t = 36, + r = 1; - for (var i = 0; i < keys.length; i++) { - var forms = Object.keys(irregs[keys[i]]); + for (; e < n.length; o += t, e++, t *= 36); - for (var o = 0; o < forms.length; o++) { - if (str === irregs[keys[i]][forms[o]]) { - return keys[i]; - } + for (let e = n.length - 1; e >= 0; e--, r *= 36) { + let t = n.charCodeAt(e) - 48; + t > 10 && (t -= 7), o += t * r; } - } - } // give'r! + return o; + }; + + var encoding = { + toAlphaCode: toAlphaCode, + fromAlphaCode: fromAlphaCode + }, + symbols = function (n) { + const o = new RegExp("([0-9A-Z]+):([0-9A-Z]+)"); - tense = tense || guessTense(str); + for (let e = 0; e < n.nodes.length; e++) { + const t = o.exec(n.nodes[e]); - if (tense && _transform[tense]) { - for (var _i = 0; _i < _transform[tense].length; _i++) { - var rule = _transform[tense][_i]; + if (!t) { + n.symCount = e; + break; + } - if (rule.reg.test(str) === true) { - // console.log(rule.reg) - return str.replace(rule.reg, rule.to); + n.syms[encoding.fromAlphaCode(t[1])] = encoding.fromAlphaCode(t[2]); } - } - } - return str; -}; + n.nodes = n.nodes.slice(n.symCount, n.nodes.length); + }; -var toInfinitive_1$1 = toInfinitive$1; -var irregulars$3 = { - nouns: plurals, - verbs: conjugations_1 -}; //these behaviours are configurable & shared across some plugins - -var transforms = { - conjugate: conjugate_1$1, - adjectives: adjectives$2, - toPlural: toPlural, - toSingular: toSingular_1, - toInfinitive: toInfinitive_1$1 -}; -var _isVerbose = false; -/** all configurable linguistic data */ + const indexFromRef = function (n, o, e) { + const t = encoding.fromAlphaCode(o); + return t < n.symCount ? n.syms[t] : e + t + 1 - n.symCount; + }, + toArray = function (n) { + const o = [], + e = (t, r) => { + let s = n.nodes[t]; + "!" === s[0] && (o.push(r), s = s.slice(1)); + const c = s.split(/([A-Z0-9,]+)/g); + + for (let s = 0; s < c.length; s += 2) { + const u = c[s], + i = c[s + 1]; + if (!u) continue; + const l = r + u; + + if ("," === i || void 0 === i) { + o.push(l); + continue; + } -var World = /*#__PURE__*/function () { - function World() { - _classCallCheck(this, World); // quiet these properties from a console.log + const f = indexFromRef(n, i, t); + e(f, l); + } + }; + return e(0, ""), o; + }, + unpack$2 = function (n) { + const o = { + nodes: n.split(";"), + syms: [], + symCount: 0 + }; + return n.match(":") && symbols(o), toArray(o); + }; - Object.defineProperty(this, 'words', { - enumerable: false, - value: {}, - writable: true - }); - Object.defineProperty(this, 'hasCompound', { - enumerable: false, - value: {}, - writable: true - }); - Object.defineProperty(this, 'irregulars', { - enumerable: false, - value: irregulars$3, - writable: true - }); - Object.defineProperty(this, 'tags', { - enumerable: false, - value: Object.assign({}, tags), - writable: true - }); - Object.defineProperty(this, 'transforms', { - enumerable: false, - value: transforms, - writable: true - }); - Object.defineProperty(this, 'taggers', { - enumerable: false, - value: [], - writable: true - }); // cache our abbreviations for our sentence-parser + var unpack_1$1 = unpack$2, + unpack_1$1$1 = function (n) { + const o = n.split("|").reduce((n, o) => { + const e = o.split("¦"); + return n[e[0]] = e[1], n; + }, {}), + e = {}; + return Object.keys(o).forEach(function (n) { + const t = unpack_1$1(o[n]); + "true" === n && (n = !0); + + for (let o = 0; o < t.length; o++) { + const r = t[o]; + !0 === e.hasOwnProperty(r) ? !1 === Array.isArray(e[r]) ? e[r] = [e[r], n] : e[r].push(n) : e[r] = n; + } + }), e; + }; - Object.defineProperty(this, 'cache', { - enumerable: false, - value: { - abbreviations: {} + var efrtUnpack_min = unpack_1$1$1; + var misc$1 = { + // numbers + '20th century fox': 'Organization', + // '3m': 'Organization', + '7 eleven': 'Organization', + 'motel 6': 'Organization', + g8: 'Organization', + vh1: 'Organization', + q1: 'Date', + q2: 'Date', + q3: 'Date', + q4: 'Date', + her: ['Possessive', 'Pronoun'], + his: ['Possessive', 'Pronoun'], + their: ['Possessive', 'Pronoun'], + themselves: ['Possessive', 'Pronoun'], + your: ['Possessive', 'Pronoun'], + our: ['Possessive', 'Pronoun'], + my: ['Possessive', 'Pronoun'], + its: ['Possessive', 'Pronoun'] + }; + const lexData = _data; + const unpack$1 = efrtUnpack_min; + let misc = misc$1; + const fancy = { + Unit: (lex, w) => { + lex[w] = ['Abbreviation', 'Unit']; + }, + Cardinal: (lex, w) => { + lex[w] = ['TextValue', 'Cardinal']; + }, + TextOrdinal: (lex, w) => { + lex[w] = ['Ordinal', 'TextValue']; + lex[w + 's'] = ['TextValue', 'Fraction']; // add 'millionths' + }, + // add plural/singular forms + Singular: (lex, w, world) => { + lex[w] = 'Singular'; + let plural = world.transforms.toPlural(w, world); + lex[plural] = lex[plural] || 'Plural'; + }, + // conjugate these verbs + Infinitive: (lex, w, world) => { + lex[w] = 'Infinitive'; + let conj = world.transforms.conjugate(w, world); + let tags = Object.keys(conj); + + for (let i = 0; i < tags.length; i++) { + let str = conj[tags[i]]; + lex[str] = lex[str] || tags[i]; // only if it's safe + } + }, + // conjugate other Adjectival forms + Comparable: (lex, w, world) => { + lex[w] = 'Comparable'; + let conj = world.transforms.adjectives(w); + let tags = Object.keys(conj); + + for (let i = 0; i < tags.length; i++) { + let word = conj[tags[i]]; + lex[word] = lex[word] || tags[i]; // only if it's safe + } + }, + //conjugate phrasal-verbs + PhrasalVerb: (lex, w, world) => { + // whole thing + lex[w] = ['PhrasalVerb', 'Infinitive']; //add original form + + let words = w.split(' '); // lex[words[0]] = lex[words[0]] || 'Infinitive' + // //conjugate first word + + let conj = world.transforms.conjugate(words[0], world); + let tags = Object.keys(conj); + + for (let i = 0; i < tags.length; i++) { + let str = conj[tags[i]] + ' ' + words[1]; + lex[str] = lex[str] || ['PhrasalVerb', tags[i]]; + world.hasCompound[conj[tags[i]]] = true; + } + }, + // inflect our demonyms - 'germans' + Demonym: (lex, w, world) => { + lex[w] = 'Demonym'; + let plural = world.transforms.toPlural(w, world); + lex[plural] = lex[plural] || ['Demonym', 'Plural']; // only if it's safe } - }); // add our compressed data to lexicon + }; // let a user explode their lexicon, too - this.words = unpack_1.buildOut(this); // add our irregulars to lexicon + const addWords = function (wordsObj, lex, world) { + Object.keys(wordsObj).forEach(word => { + let tag = wordsObj[word]; // abbreviation-words are used in our tokenizer - addIrregulars_1(this); - } - /** more logs for debugging */ + if (tag === 'Abbreviation' || tag === 'Unit') { + world.cache.abbreviations[word] = true; + } // cache multi-words - _createClass(World, [{ - key: "verbose", - value: function verbose(bool) { - _isVerbose = bool; - return this; - } - }, { - key: "isVerbose", - value: function isVerbose() { - return _isVerbose; - } - /** put new words into our lexicon, properly */ - - }, { - key: "addWords", - value: function addWords(wordObj) { - // clean them up a bit - var cleaned = {}; - Object.keys(wordObj).forEach(function (w) { - var tag = wordObj[w]; - w = w.toLowerCase().trim(); - cleaned[w] = tag; - }); - unpack_1.addWords(cleaned, this.words, this); - } - /** add new custom conjugations */ + let multi = word.split(' '); - }, { - key: "addConjugations", - value: function addConjugations(obj) { - Object.assign(this.irregulars.verbs, obj); - return this; - } - /** add new custom plural/singular pairs */ + if (multi.length > 1) { + world.hasCompound[multi[0]] = true; + } // do some ad-hoc work before adding it - }, { - key: "addPlurals", - value: function addPlurals(obj) { - Object.assign(this.irregulars.nouns, obj); - return this; - } - /** extend the compromise tagset */ - }, { - key: "addTags", - value: function addTags(tags) { - tags = Object.assign({}, tags); - this.tags = Object.assign(this.tags, tags); // calculate graph implications for the new tags + if (fancy[tag] !== undefined) { + fancy[tag](lex, word, world); + return; + } //set it in our lexicon, basic - this.tags = inference(this.tags); - return this; - } - /** call methods after tagger runs */ - }, { - key: "postProcess", - value: function postProcess(fn) { - this.taggers.push(fn); - return this; - } - /** helper method for logging + debugging */ + if (lex[word] === undefined) { + lex[word] = tag; + return; + } // if we already have that word - }, { - key: "stats", - value: function stats() { - return { - words: Object.keys(this.words).length, - plurals: Object.keys(this.irregulars.nouns).length, - conjugations: Object.keys(this.irregulars.verbs).length, - compounds: Object.keys(this.hasCompound).length, - postProcessors: this.taggers.length - }; - } - }]); - return World; -}(); // ¯\_(:/)_/¯ + if (typeof lex[word] === 'string') { + lex[word] = [lex[word]]; + } + if (typeof tag === 'string') { + lex[word].push(tag); + } else { + lex[word] = lex[word].concat(tag); + } + }); + }; // we do some ad-hoc stuff here, building-up our word-list -var clone = function clone(obj) { - return JSON.parse(JSON.stringify(obj)); -}; -/** produce a deep-copy of all lingustic data */ + const buildOut = function (world) { + //our bag of words + let lexicon = Object.assign({}, misc); // start adding words to the lex -World.prototype.clone = function () { - var w2 = new World(); // these are simple to copy: + Object.keys(lexData).forEach(tag => { + let wordsObj = unpack$1(lexData[tag]); // this part sucks - w2.words = Object.assign({}, this.words); - w2.hasCompound = Object.assign({}, this.hasCompound); //these ones are nested: + Object.keys(wordsObj).forEach(w => { + wordsObj[w] = tag; + }); + addWords(wordsObj, lexicon, world); + }); // console.log(Object.keys(lexicon).length) - w2.irregulars = clone(this.irregulars); - w2.tags = clone(this.tags); // these are functions + return lexicon; + }; - w2.transforms = this.transforms; - w2.taggers = this.taggers; - return w2; -}; + var unpack_1 = { + buildOut: buildOut, + addWords: addWords + }; -var World_1 = World; -/** return the root, first document */ + const addIrregulars$1 = function (world) { + //add irregular plural nouns + let nouns = world.irregulars.nouns; + let words = Object.keys(nouns); -var _01Utils = createCommonjsModule(function (module, exports) { - exports.all = function () { - return this.parents()[0] || this; - }; - /** return the previous result */ + for (let i = 0; i < words.length; i++) { + const w = words[i]; + world.words[w] = 'Singular'; + world.words[nouns[w]] = 'Plural'; + } // add irregular verb conjugations - exports.parent = function () { - if (this.from) { - return this.from; - } + let verbs = world.irregulars.verbs; + let keys = Object.keys(verbs); - return this; - }; - /** return a list of all previous results */ + for (let i = 0; i < keys.length; i++) { + const inf = keys[i]; //add only if it it's safe... + world.words[inf] = world.words[inf] || 'Infinitive'; + let forms = world.transforms.conjugate(inf, world); + forms = Object.assign(forms, verbs[inf]); //add the others - exports.parents = function (n) { - var arr = []; + Object.keys(forms).forEach(tag => { + world.words[forms[tag]] = world.words[forms[tag]] || tag; // lexicon should prefer other tags, over participle - var addParent = function addParent(doc) { - if (doc.from) { - arr.push(doc.from); - addParent(doc.from); + if (world.words[forms[tag]] === 'Participle') { + world.words[forms[tag]] = tag; + } + }); } }; - addParent(this); - arr = arr.reverse(); + var addIrregulars_1 = addIrregulars$1; //used in noun.inflect, and also in the lexicon. + + var plurals = { + addendum: 'addenda', + alga: 'algae', + alumna: 'alumnae', + alumnus: 'alumni', + analysis: 'analyses', + antenna: 'antennae', + appendix: 'appendices', + avocado: 'avocados', + axis: 'axes', + bacillus: 'bacilli', + barracks: 'barracks', + beau: 'beaux', + bus: 'buses', + cactus: 'cacti', + chateau: 'chateaux', + child: 'children', + circus: 'circuses', + clothes: 'clothes', + corpus: 'corpora', + criterion: 'criteria', + curriculum: 'curricula', + database: 'databases', + deer: 'deer', + diagnosis: 'diagnoses', + echo: 'echoes', + embargo: 'embargoes', + epoch: 'epochs', + foot: 'feet', + formula: 'formulae', + fungus: 'fungi', + genus: 'genera', + goose: 'geese', + halo: 'halos', + hippopotamus: 'hippopotami', + index: 'indices', + larva: 'larvae', + leaf: 'leaves', + libretto: 'libretti', + loaf: 'loaves', + man: 'men', + matrix: 'matrices', + memorandum: 'memoranda', + modulus: 'moduli', + mosquito: 'mosquitoes', + mouse: 'mice', + // move: 'moves', + nebula: 'nebulae', + nucleus: 'nuclei', + octopus: 'octopi', + opus: 'opera', + ovum: 'ova', + ox: 'oxen', + parenthesis: 'parentheses', + person: 'people', + phenomenon: 'phenomena', + prognosis: 'prognoses', + quiz: 'quizzes', + radius: 'radii', + referendum: 'referenda', + rodeo: 'rodeos', + sex: 'sexes', + shoe: 'shoes', + sombrero: 'sombreros', + stimulus: 'stimuli', + stomach: 'stomachs', + syllabus: 'syllabi', + synopsis: 'synopses', + tableau: 'tableaux', + thesis: 'theses', + thief: 'thieves', + tooth: 'teeth', + tornado: 'tornados', + tuxedo: 'tuxedos', + vertebra: 'vertebrae' // virus: 'viri', + // zero: 'zeros', + + }; // used in verbs().conjugate() + // but also added to our lexicon + //use shorter key-names + + const mapping$1 = { + g: 'Gerund', + prt: 'Participle', + perf: 'PerfectTense', + pst: 'PastTense', + fut: 'FuturePerfect', + pres: 'PresentTense', + pluperf: 'Pluperfect', + a: 'Actor' + }; // '_' in conjugations is the infinitive form + // (order matters, to the lexicon) + + let conjugations = { + act: { + a: '_or' + }, + ache: { + pst: 'ached', + g: 'aching' + }, + age: { + g: 'ageing', + pst: 'aged', + pres: 'ages' + }, + aim: { + a: '_er', + g: '_ing', + pst: '_ed' + }, + arise: { + prt: '_n', + pst: 'arose' + }, + babysit: { + a: '_ter', + pst: 'babysat' + }, + ban: { + a: '', + g: '_ning', + pst: '_ned' + }, + be: { + a: '', + g: 'am', + prt: 'been', + pst: 'was', + pres: 'is' + }, + beat: { + a: '_er', + g: '_ing', + prt: '_en' + }, + become: { + prt: '_' + }, + begin: { + g: '_ning', + prt: 'begun', + pst: 'began' + }, + being: { + g: 'are', + pst: 'were', + pres: 'are' + }, + bend: { + prt: 'bent' + }, + bet: { + a: '_ter', + prt: '_' + }, + bind: { + pst: 'bound' + }, + bite: { + g: 'biting', + prt: 'bitten', + pst: 'bit' + }, + bleed: { + pst: 'bled', + prt: 'bled' + }, + blow: { + prt: '_n', + pst: 'blew' + }, + boil: { + a: '_er' + }, + brake: { + prt: 'broken' + }, + break: { + pst: 'broke' + }, + breed: { + pst: 'bred' + }, + bring: { + pst: 'brought', + prt: 'brought' + }, + broadcast: { + pst: '_' + }, + budget: { + pst: '_ed' + }, + build: { + pst: 'built', + prt: 'built' + }, + burn: { + prt: '_ed' + }, + burst: { + prt: '_' + }, + buy: { + pst: 'bought', + prt: 'bought' + }, + can: { + a: '', + fut: '_', + g: '', + pst: 'could', + perf: 'could', + pluperf: 'could', + pres: '_' + }, + catch: { + pst: 'caught' + }, + choose: { + g: 'choosing', + prt: 'chosen', + pst: 'chose' + }, + cling: { + prt: 'clung' + }, + come: { + prt: '_', + pst: 'came', + g: 'coming' + }, + compete: { + a: 'competitor', + g: 'competing', + pst: '_d' + }, + cost: { + pst: '_' + }, + creep: { + prt: 'crept' + }, + cut: { + prt: '_' + }, + deal: { + pst: '_t', + prt: '_t' + }, + develop: { + a: '_er', + g: '_ing', + pst: '_ed' + }, + die: { + g: 'dying', + pst: '_d' + }, + dig: { + g: '_ging', + pst: 'dug', + prt: 'dug' + }, + dive: { + prt: '_d' + }, + do: { + pst: 'did', + pres: '_es' + }, + draw: { + prt: '_n', + pst: 'drew' + }, + dream: { + prt: '_t' + }, + drink: { + prt: 'drunk', + pst: 'drank' + }, + drive: { + g: 'driving', + prt: '_n', + pst: 'drove' + }, + drop: { + g: '_ping', + pst: '_ped' + }, + eat: { + a: '_er', + g: '_ing', + prt: '_en', + pst: 'ate' + }, + edit: { + pst: '_ed', + g: '_ing' + }, + egg: { + pst: '_ed' + }, + fall: { + prt: '_en', + pst: 'fell' + }, + feed: { + prt: 'fed', + pst: 'fed' + }, + feel: { + a: '_er', + pst: 'felt' + }, + fight: { + pst: 'fought', + prt: 'fought' + }, + find: { + pst: 'found' + }, + flee: { + g: '_ing', + prt: 'fled' + }, + fling: { + prt: 'flung' + }, + fly: { + prt: 'flown', + pst: 'flew' + }, + forbid: { + pst: 'forbade' + }, + forget: { + g: '_ing', + prt: 'forgotten', + pst: 'forgot' + }, + forgive: { + g: 'forgiving', + prt: '_n', + pst: 'forgave' + }, + free: { + a: '', + g: '_ing' + }, + freeze: { + g: 'freezing', + prt: 'frozen', + pst: 'froze' + }, + get: { + pst: 'got', + prt: 'gotten' + }, + give: { + g: 'giving', + prt: '_n', + pst: 'gave' + }, + go: { + prt: '_ne', + pst: 'went', + pres: 'goes' + }, + grow: { + prt: '_n' + }, + guide: { + pst: '_d' + }, + hang: { + pst: 'hung', + prt: 'hung' + }, + have: { + g: 'having', + pst: 'had', + prt: 'had', + pres: 'has' + }, + hear: { + pst: '_d', + prt: '_d' + }, + hide: { + prt: 'hidden', + pst: 'hid' + }, + hit: { + prt: '_' + }, + hold: { + pst: 'held', + prt: 'held' + }, + hurt: { + pst: '_', + prt: '_' + }, + ice: { + g: 'icing', + pst: '_d' + }, + imply: { + pst: 'implied', + pres: 'implies' + }, + is: { + a: '', + g: 'being', + pst: 'was', + pres: '_' + }, + keep: { + prt: 'kept' + }, + kneel: { + prt: 'knelt' + }, + know: { + prt: '_n' + }, + lay: { + pst: 'laid', + prt: 'laid' + }, + lead: { + pst: 'led', + prt: 'led' + }, + leap: { + prt: '_t' + }, + leave: { + pst: 'left', + prt: 'left' + }, + lend: { + prt: 'lent' + }, + lie: { + g: 'lying', + pst: 'lay' + }, + light: { + pst: 'lit', + prt: 'lit' + }, + log: { + g: '_ging', + pst: '_ged' + }, + loose: { + prt: 'lost' + }, + lose: { + g: 'losing', + pst: 'lost' + }, + make: { + pst: 'made', + prt: 'made' + }, + mean: { + pst: '_t', + prt: '_t' + }, + meet: { + a: '_er', + g: '_ing', + pst: 'met', + prt: 'met' + }, + miss: { + pres: '_' + }, + name: { + g: 'naming' + }, + patrol: { + g: '_ling', + pst: '_led' + }, + pay: { + pst: 'paid', + prt: 'paid' + }, + prove: { + prt: '_n' + }, + puke: { + g: 'puking' + }, + put: { + prt: '_' + }, + quit: { + prt: '_' + }, + read: { + pst: '_', + prt: '_' + }, + ride: { + prt: 'ridden' + }, + reside: { + pst: '_d' + }, + ring: { + pst: 'rang', + prt: 'rung' + }, + rise: { + fut: 'will have _n', + g: 'rising', + prt: '_n', + pst: 'rose', + pluperf: 'had _n' + }, + rub: { + g: '_bing', + pst: '_bed' + }, + run: { + g: '_ning', + prt: '_', + pst: 'ran' + }, + say: { + pst: 'said', + prt: 'said', + pres: '_s' + }, + seat: { + pst: 'sat', + prt: 'sat' + }, + see: { + g: '_ing', + prt: '_n', + pst: 'saw' + }, + seek: { + prt: 'sought' + }, + sell: { + pst: 'sold', + prt: 'sold' + }, + send: { + prt: 'sent' + }, + set: { + prt: '_' + }, + sew: { + prt: '_n' + }, + shake: { + prt: '_n' + }, + shave: { + prt: '_d' + }, + shed: { + g: '_ding', + pst: '_', + pres: '_s' + }, + shine: { + pst: 'shone', + prt: 'shone' + }, + shoot: { + pst: 'shot', + prt: 'shot' + }, + show: { + pst: '_ed' + }, + shut: { + prt: '_' + }, + sing: { + prt: 'sung', + pst: 'sang' + }, + sink: { + pst: 'sank', + pluperf: 'had sunk' + }, + sit: { + pst: 'sat' + }, + ski: { + pst: '_ied' + }, + slay: { + prt: 'slain' + }, + sleep: { + prt: 'slept' + }, + slide: { + pst: 'slid', + prt: 'slid' + }, + smash: { + pres: '_es' + }, + sneak: { + prt: 'snuck' + }, + speak: { + fut: 'will have spoken', + prt: 'spoken', + pst: 'spoke', + perf: 'have spoken', + pluperf: 'had spoken' + }, + speed: { + prt: 'sped' + }, + spend: { + prt: 'spent' + }, + spill: { + prt: '_ed', + pst: 'spilt' + }, + spin: { + g: '_ning', + pst: 'spun', + prt: 'spun' + }, + spit: { + prt: 'spat' + }, + split: { + prt: '_' + }, + spread: { + pst: '_' + }, + spring: { + prt: 'sprung' + }, + stand: { + pst: 'stood' + }, + steal: { + a: '_er', + pst: 'stole' + }, + stick: { + pst: 'stuck' + }, + sting: { + pst: 'stung' + }, + stink: { + pst: 'stunk', + prt: 'stunk' + }, + stream: { + a: '_er' + }, + strew: { + prt: '_n' + }, + strike: { + g: 'striking', + pst: 'struck' + }, + suit: { + a: '_er', + g: '_ing', + pst: '_ed' + }, + sware: { + prt: 'sworn' + }, + swear: { + pst: 'swore' + }, + sweep: { + prt: 'swept' + }, + swim: { + g: '_ming', + pst: 'swam' + }, + swing: { + pst: 'swung' + }, + take: { + fut: 'will have _n', + pst: 'took', + perf: 'have _n', + pluperf: 'had _n' + }, + teach: { + pst: 'taught', + pres: '_es' + }, + tear: { + pst: 'tore' + }, + tell: { + pst: 'told' + }, + think: { + pst: 'thought' + }, + thrive: { + prt: '_d' + }, + tie: { + g: 'tying', + pst: '_d' + }, + undergo: { + prt: '_ne' + }, + understand: { + pst: 'understood' + }, + upset: { + prt: '_' + }, + wait: { + a: '_er', + g: '_ing', + pst: '_ed' + }, + wake: { + pst: 'woke' + }, + wear: { + pst: 'wore' + }, + weave: { + prt: 'woven' + }, + wed: { + pst: 'wed' + }, + weep: { + prt: 'wept' + }, + win: { + g: '_ning', + pst: 'won' + }, + wind: { + prt: 'wound' + }, + withdraw: { + pst: 'withdrew' + }, + wring: { + prt: 'wrung' + }, + write: { + g: 'writing', + prt: 'written', + pst: 'wrote' + } + }; //uncompress our ad-hoc compression scheme + + let keys = Object.keys(conjugations); + + for (let i = 0; i < keys.length; i++) { + const inf = keys[i]; + let final = {}; + Object.keys(conjugations[inf]).forEach(key => { + let str = conjugations[inf][key]; //swap-in infinitives for '_' + + str = str.replace('_', inf); + let full = mapping$1[key]; + final[full] = str; + }); //over-write original + + conjugations[inf] = final; + } + + var conjugations_1 = conjugations; + const endsWith$2 = { + b: [{ + reg: /([^aeiou][aeiou])b$/i, + repl: { + pr: '$1bs', + pa: '$1bbed', + gr: '$1bbing' + } + }], + d: [{ + reg: /(end)$/i, + repl: { + pr: '$1s', + pa: 'ent', + gr: '$1ing', + ar: '$1er' + } + }, { + reg: /(eed)$/i, + repl: { + pr: '$1s', + pa: '$1ed', + gr: '$1ing', + ar: '$1er' + } + }, { + reg: /(ed)$/i, + repl: { + pr: '$1s', + pa: '$1ded', + ar: '$1der', + gr: '$1ding' + } + }, { + reg: /([^aeiou][ou])d$/i, + repl: { + pr: '$1ds', + pa: '$1dded', + gr: '$1dding' + } + }], + e: [{ + reg: /(eave)$/i, + repl: { + pr: '$1s', + pa: '$1d', + gr: 'eaving', + ar: '$1r' + } + }, { + reg: /(ide)$/i, + repl: { + pr: '$1s', + pa: 'ode', + gr: 'iding', + ar: 'ider' + } + }, { + //shake + reg: /(t|sh?)(ake)$/i, + repl: { + pr: '$1$2s', + pa: '$1ook', + gr: '$1aking', + ar: '$1$2r' + } + }, { + //awake + reg: /w(ake)$/i, + repl: { + pr: 'w$1s', + pa: 'woke', + gr: 'waking', + ar: 'w$1r' + } + }, { + //make + reg: /m(ake)$/i, + repl: { + pr: 'm$1s', + pa: 'made', + gr: 'making', + ar: 'm$1r' + } + }, { + reg: /(a[tg]|i[zn]|ur|nc|gl|is)e$/i, + repl: { + pr: '$1es', + pa: '$1ed', + gr: '$1ing' // prt: '$1en', - if (typeof n === 'number') { - return arr[n]; - } + } + }, { + reg: /([bd]l)e$/i, + repl: { + pr: '$1es', + pa: '$1ed', + gr: '$1ing' + } + }, { + reg: /(om)e$/i, + repl: { + pr: '$1es', + pa: 'ame', + gr: '$1ing' + } + }], + g: [{ + reg: /([^aeiou][aou])g$/i, + repl: { + pr: '$1gs', + pa: '$1gged', + gr: '$1gging' + } + }], + h: [{ + reg: /(..)([cs]h)$/i, + repl: { + pr: '$1$2es', + pa: '$1$2ed', + gr: '$1$2ing' + } + }], + k: [{ + reg: /(ink)$/i, + repl: { + pr: '$1s', + pa: 'unk', + gr: '$1ing', + ar: '$1er' + } + }], + m: [{ + reg: /([^aeiou][aeiou])m$/i, + repl: { + pr: '$1ms', + pa: '$1mmed', + gr: '$1mming' + } + }], + n: [{ + reg: /(en)$/i, + repl: { + pr: '$1s', + pa: '$1ed', + gr: '$1ing' + } + }], + p: [{ + reg: /(e)(ep)$/i, + repl: { + pr: '$1$2s', + pa: '$1pt', + gr: '$1$2ing', + ar: '$1$2er' + } + }, { + reg: /([^aeiou][aeiou])p$/i, + repl: { + pr: '$1ps', + pa: '$1pped', + gr: '$1pping' + } + }, { + reg: /([aeiu])p$/i, + repl: { + pr: '$1ps', + pa: '$1p', + gr: '$1pping' + } + }], + r: [{ + reg: /([td]er)$/i, + repl: { + pr: '$1s', + pa: '$1ed', + gr: '$1ing' + } + }, { + reg: /(er)$/i, + repl: { + pr: '$1s', + pa: '$1ed', + gr: '$1ing' + } + }], + s: [{ + reg: /(ish|tch|ess)$/i, + repl: { + pr: '$1es', + pa: '$1ed', + gr: '$1ing' + } + }], + t: [{ + reg: /(ion|end|e[nc]t)$/i, + repl: { + pr: '$1s', + pa: '$1ed', + gr: '$1ing' + } + }, { + reg: /(.eat)$/i, + repl: { + pr: '$1s', + pa: '$1ed', + gr: '$1ing' + } + }, { + reg: /([aeiu])t$/i, + repl: { + pr: '$1ts', + pa: '$1t', + gr: '$1tting' + } + }, { + reg: /([^aeiou][aeiou])t$/i, + repl: { + pr: '$1ts', + pa: '$1tted', + gr: '$1tting' + } + }], + w: [{ + reg: /(.llow)$/i, + //follow, allow + repl: { + pr: '$1s', + pa: '$1ed' + } + }, { + reg: /(..)(ow)$/i, + //grow + repl: { + pr: '$1$2s', + pa: '$1ew', + gr: '$1$2ing', + prt: '$1$2n' + } + }], + y: [{ + reg: /(i|f|rr)y$/i, + repl: { + pr: '$1ies', + pa: '$1ied', + gr: '$1ying' + } + }], + z: [{ + reg: /([aeiou]zz)$/i, + repl: { + pr: '$1es', + pa: '$1ed', + gr: '$1ing' + } + }] + }; + var suffixes$2 = endsWith$2; + const suffixes$1 = suffixes$2; + const posMap = { + pr: 'PresentTense', + pa: 'PastTense', + gr: 'Gerund', + prt: 'Participle', + ar: 'Actor' + }; - return arr; - }; - /** deep-copy the document, so that no references remain */ + const doTransform = function (str, obj) { + let found = {}; + let keys = Object.keys(obj.repl); + for (let i = 0; i < keys.length; i += 1) { + let pos = keys[i]; + found[posMap[pos]] = str.replace(obj.reg, obj.repl[pos]); + } - exports.clone = function (doShallow) { - var list = this.list.map(function (ts) { - return ts.clone(doShallow); - }); - var tmp = this.buildFrom(list); - return tmp; - }; - /** how many seperate terms does the document have? */ + return found; + }; //look at the end of the word for clues - exports.wordCount = function () { - return this.list.reduce(function (count, p) { - count += p.wordCount(); - return count; - }, 0); - }; + const checkSuffix$1 = function () { + let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let c = str[str.length - 1]; - exports.wordcount = exports.wordCount; - /** turn on logging for decision-debugging */ - // exports.verbose = function(bool) { - // if (bool === undefined) { - // bool = true - // } - // this.world.verbose = bool - // } -}); -/** use only the first result(s) */ + if (suffixes$1.hasOwnProperty(c) === true) { + for (let r = 0; r < suffixes$1[c].length; r += 1) { + const reg = suffixes$1[c][r].reg; + if (reg.test(str) === true) { + return doTransform(str, suffixes$1[c][r]); + } + } + } -var _02Accessors = createCommonjsModule(function (module, exports) { - exports.first = function (n) { - if (n === undefined) { - return this.get(0); - } + return {}; + }; - return this.slice(0, n); - }; - /** use only the last result(s) */ + var _01Suffixes = checkSuffix$1; + const hasY = /[bcdfghjklmnpqrstvwxz]y$/; + const generic = { + Gerund: inf => { + if (inf.charAt(inf.length - 1) === 'e') { + return inf.replace(/e$/, 'ing'); + } + return inf + 'ing'; + }, + PresentTense: inf => { + if (inf.charAt(inf.length - 1) === 's') { + return inf + 'es'; + } - exports.last = function (n) { - if (n === undefined) { - return this.get(this.list.length - 1); - } + if (hasY.test(inf) === true) { + return inf.slice(0, -1) + 'ies'; + } - var end = this.list.length; - return this.slice(end - n, end); - }; - /** grab a given subset of the results*/ + return inf + 's'; + }, + PastTense: inf => { + if (inf.charAt(inf.length - 1) === 'e') { + return inf + 'd'; + } + if (inf.substr(-2) === 'ed') { + return inf; + } - exports.slice = function (start, end) { - var list = this.list.slice(start, end); - return this.buildFrom(list); - }; - /* grab nth result */ + if (hasY.test(inf) === true) { + return inf.slice(0, -1) + 'ied'; + } + return inf + 'ed'; + } + }; + var _02Generic = generic; + const checkSuffix = _01Suffixes; + const genericFill = _02Generic; //we run this on every verb in the lexicon, so please keep it fast + //we assume the input word is a proper infinitive + + const conjugate$4 = function () { + let inf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let world = arguments.length > 1 ? arguments[1] : undefined; + let found = {}; // 1. look at irregulars + //the lexicon doesn't pass this in + + if (world && world.irregulars) { + if (world.irregulars.verbs.hasOwnProperty(inf) === true) { + found = Object.assign({}, world.irregulars.verbs[inf]); + } + } //2. rule-based regex - exports.eq = function (n) { - var p = this.list[n]; - if (p === undefined) { - return this.buildFrom([]); - } + found = Object.assign({}, checkSuffix(inf), found); //3. generic transformations + //'buzzing' - return this.buildFrom([p]); - }; + if (found.Gerund === undefined) { + found.Gerund = genericFill.Gerund(inf); + } //'buzzed' - exports.get = exports.eq; - /** grab term[0] for every match */ - exports.firstTerms = function () { - return this.match('^.'); - }; + if (found.PastTense === undefined) { + found.PastTense = genericFill.PastTense(inf); + } //'buzzes' - exports.firstTerm = exports.firstTerms; - /** grab the last term for every match */ - exports.lastTerms = function () { - return this.match('.$'); - }; + if (found.PresentTense === undefined) { + found.PresentTense = genericFill.PresentTense(inf); + } - exports.lastTerm = exports.lastTerms; - /** return a flat array of term objects */ + return found; + }; - exports.termList = function (num) { - var arr = []; //'reduce' but faster + var conjugate_1$1 = conjugate$4; // console.log(conjugate('bake')) + + const do_rules$1 = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/]; + const dont_rules$1 = [/ary$/]; + const irregulars$5 = { + nice: 'nicest', + late: 'latest', + hard: 'hardest', + inner: 'innermost', + outer: 'outermost', + far: 'furthest', + worse: 'worst', + bad: 'worst', + good: 'best', + big: 'biggest', + large: 'largest' + }; + const transforms$2 = [{ + reg: /y$/i, + repl: 'iest' + }, { + reg: /([aeiou])t$/i, + repl: '$1ttest' + }, { + reg: /([aeou])de$/i, + repl: '$1dest' + }, { + reg: /nge$/i, + repl: 'ngest' + }, { + reg: /([aeiou])te$/i, + repl: '$1test' + }]; - for (var i = 0; i < this.list.length; i++) { - var terms = this.list[i].terms(); + const to_superlative = function (str) { + //irregulars + if (irregulars$5.hasOwnProperty(str)) { + return irregulars$5[str]; + } //known transforms - for (var o = 0; o < terms.length; o++) { - arr.push(terms[o]); //support .termList(4) - if (num !== undefined && arr[num] !== undefined) { - return arr[num]; + for (let i = 0; i < transforms$2.length; i++) { + if (transforms$2[i].reg.test(str)) { + return str.replace(transforms$2[i].reg, transforms$2[i].repl); } - } - } - - return arr; - }; - /* grab named capture group terms as object */ + } //dont-rules - var getGroups = function getGroups(doc) { - var res = {}; - var allGroups = {}; + for (let i = 0; i < dont_rules$1.length; i++) { + if (dont_rules$1[i].test(str) === true) { + return null; + } + } //do-rules - var _loop = function _loop(i) { - var phrase = doc.list[i]; - var groups = Object.keys(phrase.groups).map(function (k) { - return phrase.groups[k]; - }); - for (var j = 0; j < groups.length; j++) { - var _groups$j = groups[j], - group = _groups$j.group, - start = _groups$j.start, - length = _groups$j.length; + for (let i = 0; i < do_rules$1.length; i++) { + if (do_rules$1[i].test(str) === true) { + if (str.charAt(str.length - 1) === 'e') { + return str + 'st'; + } - if (!allGroups[group]) { - allGroups[group] = []; + return str + 'est'; } - - allGroups[group].push(phrase.buildFrom(start, length)); } + + return str + 'est'; }; - for (var i = 0; i < doc.list.length; i++) { - _loop(i); - } + var toSuperlative = to_superlative; + const do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/]; + const dont_rules = [/ary$/, /ous$/]; + const irregulars$4 = { + grey: 'greyer', + gray: 'grayer', + green: 'greener', + yellow: 'yellower', + red: 'redder', + good: 'better', + well: 'better', + bad: 'worse', + sad: 'sadder', + big: 'bigger' + }; + const transforms$1 = [{ + reg: /y$/i, + repl: 'ier' + }, { + reg: /([aeiou])t$/i, + repl: '$1tter' + }, { + reg: /([aeou])de$/i, + repl: '$1der' + }, { + reg: /nge$/i, + repl: 'nger' + }]; - var keys = Object.keys(allGroups); + const to_comparative = function (str) { + //known-irregulars + if (irregulars$4.hasOwnProperty(str)) { + return irregulars$4[str]; + } //known-transforms - for (var _i = 0; _i < keys.length; _i++) { - var key = keys[_i]; - res[key] = doc.buildFrom(allGroups[key]); - } - return res; - }; - /** lookup a named-group, by its name */ + for (let i = 0; i < transforms$1.length; i++) { + if (transforms$1[i].reg.test(str) === true) { + return str.replace(transforms$1[i].reg, transforms$1[i].repl); + } + } //dont-patterns - var getOneName = function getOneName(doc, name) { - var arr = []; + for (let i = 0; i < dont_rules.length; i++) { + if (dont_rules[i].test(str) === true) { + return null; + } + } //do-patterns - var _loop2 = function _loop2(i) { - var phrase = doc.list[i]; - var keys = Object.keys(phrase.groups); - keys = keys.filter(function (id) { - return phrase.groups[id].group === name; - }); - keys.forEach(function (id) { - arr.push(phrase.buildFrom(phrase.groups[id].start, phrase.groups[id].length)); - }); - }; - for (var i = 0; i < doc.list.length; i++) { - _loop2(i); - } + for (let i = 0; i < do_rules.length; i++) { + if (do_rules[i].test(str) === true) { + return str + 'er'; + } + } //easy-one - return doc.buildFrom(arr); - }; - /** grab named capture group results */ + if (/e$/.test(str) === true) { + return str + 'r'; + } - exports.groups = function (target) { - if (target === undefined) { - return getGroups(this); - } + return str + 'er'; + }; - if (typeof target === 'number') { - target = String(target); - } + var toComparative = to_comparative; + const fns = { + toSuperlative: toSuperlative, + toComparative: toComparative + }; + /** conjugate an adjective into other forms */ - return getOneName(this, target) || this.buildFrom([]); - }; + const conjugate$3 = function (w) { + let res = {}; // 'greatest' - exports.group = exports.groups; - /** get the full-sentence each phrase belongs to */ + let sup = fns.toSuperlative(w); - exports.sentences = function (n) { - var arr = []; - this.list.forEach(function (p) { - arr.push(p.fullSentence()); - }); + if (sup) { + res.Superlative = sup; + } // 'greater' - if (typeof n === 'number') { - return this.buildFrom([arr[n]]); - } - return this.buildFrom(arr); - }; + let comp = fns.toComparative(w); - exports.sentence = exports.sentences; -}); // cache the easier conditions up-front + if (comp) { + res.Comparative = comp; + } + return res; + }; -var cacheRequired$1 = function cacheRequired(reg) { - var needTags = []; - var needWords = []; - reg.forEach(function (obj) { - if (obj.optional === true || obj.negative === true) { - return; - } + var adjectives$2 = conjugate$3; + /** patterns for turning 'bus' to 'buses'*/ + + const suffixes = { + a: [[/(antenn|formul|nebul|vertebr|vit)a$/i, '$1ae'], [/([ti])a$/i, '$1a']], + e: [[/(kn|l|w)ife$/i, '$1ives'], [/(hive)$/i, '$1s'], [/([m|l])ouse$/i, '$1ice'], [/([m|l])ice$/i, '$1ice']], + f: [[/^(dwar|handkerchie|hoo|scar|whar)f$/i, '$1ves'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i, '$1ves']], + i: [[/(octop|vir)i$/i, '$1i']], + m: [[/([ti])um$/i, '$1a']], + n: [[/^(oxen)$/i, '$1']], + o: [[/(al|ad|at|er|et|ed|ad)o$/i, '$1oes']], + s: [[/(ax|test)is$/i, '$1es'], [/(alias|status)$/i, '$1es'], [/sis$/i, 'ses'], [/(bu)s$/i, '$1ses'], [/(sis)$/i, 'ses'], [/^(?!talis|.*hu)(.*)man$/i, '$1men'], [/(octop|vir|radi|nucle|fung|cact|stimul)us$/i, '$1i']], + x: [[/(matr|vert|ind|cort)(ix|ex)$/i, '$1ices'], [/^(ox)$/i, '$1en']], + y: [[/([^aeiouy]|qu)y$/i, '$1ies']], + z: [[/(quiz)$/i, '$1zes']] + }; + var _rules$2 = suffixes; + const rules$5 = _rules$2; + const addE = /(x|ch|sh|s|z)$/; - if (obj.tag !== undefined) { - needTags.push(obj.tag); - } + const trySuffix = function (str) { + let c = str[str.length - 1]; - if (obj.word !== undefined) { - needWords.push(obj.word); - } - }); - return { - tags: needTags, - words: needWords - }; -}; // try to pre-fail as many matches as possible, without doing them + if (rules$5.hasOwnProperty(c) === true) { + for (let i = 0; i < rules$5[c].length; i += 1) { + let reg = rules$5[c][i][0]; + + if (reg.test(str) === true) { + return str.replace(reg, rules$5[c][i][1]); + } + } + } + + return null; + }; + /** Turn a singular noun into a plural + * assume the given string is singular + */ -var failFast = function failFast(doc, regs) { - if (doc._cache && doc._cache.set === true) { - var _cacheRequired = cacheRequired$1(regs), - words = _cacheRequired.words, - tags = _cacheRequired.tags; //check required words + const pluralize = function () { + let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let world = arguments.length > 1 ? arguments[1] : undefined; + let irregulars = world.irregulars.nouns; // check irregulars list + if (irregulars.hasOwnProperty(str)) { + return irregulars[str]; + } //we have some rules to try-out - for (var i = 0; i < words.length; i++) { - if (doc._cache.words[words[i]] === undefined) { - return false; - } - } //check required tags + let plural = trySuffix(str); - for (var _i = 0; _i < tags.length; _i++) { - if (doc._cache.tags[tags[_i]] === undefined) { - return false; - } - } - } + if (plural !== null) { + return plural; + } //like 'church' - return true; -}; -var _failFast = failFast; + if (addE.test(str)) { + return str + 'es'; + } // ¯\_(ツ)_/¯ -var _03Match = createCommonjsModule(function (module, exports) { - /** return a new Doc, with this one as a parent */ - exports.match = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // support '0' shorthand for named-groups - if (typeof opts === 'string' || typeof opts === 'number' || opts === null) { - opts = { - group: opts - }; - } //parse-up the input expression + return str + 's'; + }; + var toPlural = pluralize; + var _rules$1 = [[/([^v])ies$/i, '$1y'], [/ises$/i, 'isis'], [/(kn|[^o]l|w)ives$/i, '$1ife'], [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i, '$1f'], [/^(dwar|handkerchie|hoo|scar|whar)ves$/i, '$1f'], [/(antenn|formul|nebul|vertebr|vit)ae$/i, '$1a'], [/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i, '$1us'], [/(buffal|tomat|tornad)(oes)$/i, '$1o'], // [/(analy|diagno|parenthe|progno|synop|the)ses$/i, '$1sis'], + [/(eas)es$/i, '$1e'], //diseases + [/(..[aeiou]s)es$/i, '$1'], //geniouses + [/(vert|ind|cort)(ices)$/i, '$1ex'], [/(matr|append)(ices)$/i, '$1ix'], [/(x|ch|ss|sh|z|o)es$/i, '$1'], [/men$/i, 'man'], [/(n)ews$/i, '$1ews'], [/([ti])a$/i, '$1um'], [/([^aeiouy]|qu)ies$/i, '$1y'], [/(s)eries$/i, '$1eries'], [/(m)ovies$/i, '$1ovie'], [/([m|l])ice$/i, '$1ouse'], [/(cris|ax|test)es$/i, '$1is'], [/(alias|status)es$/i, '$1'], [/(ss)$/i, '$1'], [/(ics)$/i, '$1'], [/s$/i, '']]; + const rules$4 = _rules$1; - var regs = matchSyntax(reg, opts); + const invertObj = function (obj) { + return Object.keys(obj).reduce((h, k) => { + h[obj[k]] = k; + return h; + }, {}); + }; - if (regs.length === 0) { - return this.buildFrom([]); - } //check our cache, if it exists + const toSingular = function (str, world) { + let irregulars = world.irregulars.nouns; + let invert = invertObj(irregulars); //(not very efficient) + // check irregulars list + if (invert.hasOwnProperty(str)) { + return invert[str]; + } // go through our regexes - if (_failFast(this, regs) === false) { - return this.buildFrom([]); - } //try expression on each phrase + for (let i = 0; i < rules$4.length; i++) { + if (rules$4[i][0].test(str) === true) { + str = str.replace(rules$4[i][0], rules$4[i][1]); + return str; + } + } - var matches = this.list.reduce(function (arr, p) { - return arr.concat(p.match(regs)); - }, []); // support returning named groups + return str; + }; - if (opts.group !== undefined && opts.group !== null && opts.group !== '') { - return this.buildFrom(matches).groups(opts.group); - } + var toSingular_1 = toSingular; + let rules$3 = { + Participle: [{ + reg: /own$/i, + to: 'ow' + }, { + reg: /(.)un([g|k])$/i, + to: '$1in$2' + }], + Actor: [{ + reg: /(er)er$/i, + to: '$1' + }], + PresentTense: [{ + reg: /(..)(ies)$/i, + to: '$1y' + }, { + reg: /(tch|sh)es$/i, + to: '$1' + }, { + reg: /(ss|zz)es$/i, + to: '$1' + }, { + reg: /([tzlshicgrvdnkmu])es$/i, + to: '$1e' + }, { + reg: /(n[dtk]|c[kt]|[eo]n|i[nl]|er|a[ytrl])s$/i, + to: '$1' + }, { + reg: /(ow)s$/i, + to: '$1' + }, { + reg: /(op)s$/i, + to: '$1' + }, { + reg: /([eirs])ts$/i, + to: '$1t' + }, { + reg: /(ll)s$/i, + to: '$1' + }, { + reg: /(el)s$/i, + to: '$1' + }, { + reg: /(ip)es$/i, + to: '$1e' + }, { + reg: /ss$/i, + to: 'ss' + }, { + reg: /s$/i, + to: '' + }], + Gerund: [{ + //popping -> pop + reg: /(..)(p|d|t|g){2}ing$/i, + to: '$1$2' + }, { + //fuzzing -> fuzz + reg: /(ll|ss|zz)ing$/i, + to: '$1' + }, { + reg: /([^aeiou])ying$/i, + to: '$1y' + }, { + reg: /([^ae]i.)ing$/i, + to: '$1e' + }, { + //eating, reading + reg: /(ea[dklnrtv])ing$/i, + to: '$1' + }, { + //washing -> wash + reg: /(ch|sh)ing$/i, + to: '$1' + }, //soft-e forms: + { + //z : hazing (not buzzing) + reg: /(z)ing$/i, + to: '$1e' + }, { + //a : baking, undulating + reg: /(a[gdkvtc])ing$/i, + to: '$1e' + }, { + //u : conjuring, tubing + reg: /(u[rtcbn])ing$/i, + to: '$1e' + }, { + //o : forboding, poking, hoping, boring (not hooping) + reg: /([^o]o[bdknprv])ing$/i, + to: '$1e' + }, { + //ling : tingling, wrinkling, circling, scrambling, bustling + reg: /([tbckg]l)ing$/i, + //dp + to: '$1e' + }, { + //cing : bouncing, denouncing + reg: /(c|s)ing$/i, + //dp + to: '$1e' + }, // { + // //soft-e : + // reg: /([ua]s|[dr]g|z|o[rlsp]|cre)ing$/i, + // to: '$1e', + // }, + { + //fallback + reg: /(..)ing$/i, + to: '$1' + }], + PastTense: [{ + reg: /(ued)$/i, + to: 'ue' + }, { + reg: /ea(rn|l|m)ed$/i, + //ea - earned, healed, sreamed + to: 'ea$1' + }, { + reg: /a([^aeiouy])ed$/i, + to: 'a$1e' + }, { + reg: /([aeiou]zz)ed$/i, + to: '$1' + }, { + reg: /(e|i)lled$/i, + to: '$1ll' + }, { + reg: /(.)(sh|ch)ed$/i, + to: '$1$2' + }, { + reg: /(tl|gl)ed$/i, + to: '$1e' + }, { + reg: /(um?pt?)ed$/i, + to: '$1' + }, { + reg: /(ss)ed$/i, + to: '$1' + }, { + reg: /pped$/i, + to: 'p' + }, { + reg: /tted$/i, + to: 't' + }, { + reg: /(..)gged$/i, + to: '$1g' + }, { + reg: /(..)lked$/i, + to: '$1lk' + }, { + reg: /([^aeiouy][aeiou])ked$/i, + to: '$1ke' + }, { + reg: /(.[aeiou])led$/i, + to: '$1l' + }, { + reg: /(..)(h|ion|n[dt]|ai.|[cs]t|pp|all|ss|tt|int|ail|ld|en|oo.|er|k|pp|w|ou.|rt|ght|rm)ed$/i, + to: '$1$2' + }, { + reg: /(.ut)ed$/i, + to: '$1e' + }, { + reg: /(.pt)ed$/i, + to: '$1' + }, { + reg: /(us)ed$/i, + to: '$1e' + }, { + reg: /(dd)ed$/i, + to: '$1' + }, { + reg: /(..[^aeiouy])ed$/i, + to: '$1e' + }, { + reg: /(..)ied$/i, + to: '$1y' + }, { + reg: /(.o)ed$/i, + to: '$1o' + }, { + reg: /(..i)ed$/i, + to: '$1' + }, { + reg: /(.a[^aeiou])ed$/i, + to: '$1' + }, { + //owed, aced + reg: /([aeiou][^aeiou])ed$/i, + to: '$1e' + }, { + reg: /([rl])ew$/i, + to: '$1ow' + }, { + reg: /([pl])t$/i, + to: '$1t' + }] + }; + var _transform = rules$3; + let guessVerb = { + Gerund: ['ing'], + Actor: ['erer'], + Infinitive: ['ate', 'ize', 'tion', 'rify', 'then', 'ress', 'ify', 'age', 'nce', 'ect', 'ise', 'ine', 'ish', 'ace', 'ash', 'ure', 'tch', 'end', 'ack', 'and', 'ute', 'ade', 'ock', 'ite', 'ase', 'ose', 'use', 'ive', 'int', 'nge', 'lay', 'est', 'ain', 'ant', 'ent', 'eed', 'er', 'le', 'own', 'unk', 'ung', 'en'], + PastTense: ['ed', 'lt', 'nt', 'pt', 'ew', 'ld'], + PresentTense: ['rks', 'cks', 'nks', 'ngs', 'mps', 'tes', 'zes', 'ers', 'les', 'acks', 'ends', 'ands', 'ocks', 'lays', 'eads', 'lls', 'els', 'ils', 'ows', 'nds', 'ays', 'ams', 'ars', 'ops', 'ffs', 'als', 'urs', 'lds', 'ews', 'ips', 'es', 'ts', 'ns'] + }; //flip it into a lookup object - return this.buildFrom(matches); - }; - /** return all results except for this */ + guessVerb = Object.keys(guessVerb).reduce((h, k) => { + guessVerb[k].forEach(a => h[a] = k); + return h; + }, {}); + var _guess = guessVerb; + const rules$2 = _transform; + const guess = _guess; + /** it helps to know what we're conjugating from */ + const guessTense = function (str) { + let three = str.substr(str.length - 3); - exports.not = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; //parse-up the input expression + if (guess.hasOwnProperty(three) === true) { + return guess[three]; + } - var regs = matchSyntax(reg, opts); //if it's empty, return them all! + let two = str.substr(str.length - 2); - if (regs.length === 0 || _failFast(this, regs) === false) { - return this; - } //try expression on each phrase + if (guess.hasOwnProperty(two) === true) { + return guess[two]; + } + let one = str.substr(str.length - 1); - var matches = this.list.reduce(function (arr, p) { - return arr.concat(p.not(regs)); - }, []); - return this.buildFrom(matches); - }; - /** return only the first match */ + if (one === 's') { + return 'PresentTense'; + } + return null; + }; - exports.matchOne = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var regs = matchSyntax(reg, opts); //check our cache, if it exists + const toInfinitive$3 = function (str, world, tense) { + if (!str) { + return ''; + } //1. look at known irregulars - if (_failFast(this, regs) === false) { - return this.buildFrom([]); - } - for (var i = 0; i < this.list.length; i++) { - var match = this.list[i].match(regs, true); - return this.buildFrom(match); - } + if (world.words.hasOwnProperty(str) === true) { + let irregs = world.irregulars.verbs; + let keys = Object.keys(irregs); - return this.buildFrom([]); - }; - /** return each current phrase, only if it contains this match */ + for (let i = 0; i < keys.length; i++) { + let forms = Object.keys(irregs[keys[i]]); + for (let o = 0; o < forms.length; o++) { + if (str === irregs[keys[i]][forms[o]]) { + return keys[i]; + } + } + } + } // give'r! - exports["if"] = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var regs = matchSyntax(reg, opts); //consult our cache, if it exists - if (_failFast(this, regs) === false) { - return this.buildFrom([]); - } + tense = tense || guessTense(str); - var found = this.list.filter(function (p) { - return p.has(regs) === true; - }); - return this.buildFrom(found); - }; - /** Filter-out any current phrases that have this match*/ + if (tense && rules$2[tense]) { + for (let i = 0; i < rules$2[tense].length; i++) { + const rule = rules$2[tense][i]; + if (rule.reg.test(str) === true) { + // console.log(rule.reg) + return str.replace(rule.reg, rule.to); + } + } + } - exports.ifNo = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var regs = matchSyntax(reg, opts); - var found = this.list.filter(function (p) { - return p.has(regs) === false; - }); - return this.buildFrom(found); - }; - /**Return a boolean if this match exists */ + return str; + }; + var toInfinitive_1$1 = toInfinitive$3; + const defaultTags = tags; + const unpack = unpack_1; + const addIrregulars = addIrregulars_1; + const inferTagSet = inference; //these let users change inflection / verb conjugation + + const irregulars$3 = { + nouns: plurals, + verbs: conjugations_1 + }; //these behaviours are configurable & shared across some plugins + + const transforms = { + conjugate: conjugate_1$1, + adjectives: adjectives$2, + toPlural: toPlural, + toSingular: toSingular_1, + toInfinitive: toInfinitive_1$1 + }; + let isVerbose = false; + /** all configurable linguistic data */ + + class World$1 { + constructor() { + // quiet these properties from a console.log + Object.defineProperty(this, 'words', { + enumerable: false, + value: {}, + writable: true + }); + Object.defineProperty(this, 'hasCompound', { + enumerable: false, + value: {}, + writable: true + }); + Object.defineProperty(this, 'irregulars', { + enumerable: false, + value: irregulars$3, + writable: true + }); + Object.defineProperty(this, 'tags', { + enumerable: false, + value: Object.assign({}, defaultTags), + writable: true + }); + Object.defineProperty(this, 'transforms', { + enumerable: false, + value: transforms, + writable: true + }); + Object.defineProperty(this, 'taggers', { + enumerable: false, + value: [], + writable: true + }); // cache our abbreviations for our sentence-parser + + Object.defineProperty(this, 'cache', { + enumerable: false, + value: { + abbreviations: {} + } + }); // add our compressed data to lexicon - exports.has = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var regs = matchSyntax(reg, opts); //consult our cache, if it exists + this.words = unpack.buildOut(this); // add our irregulars to lexicon - if (_failFast(this, regs) === false) { - return false; - } + addIrregulars(this); + } + /** more logs for debugging */ - return this.list.some(function (p) { - return p.has(regs) === true; - }); - }; - /** match any terms after our matches, within the sentence */ + verbose(bool) { + isVerbose = bool; + return this; + } - exports.lookAhead = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // find everything afterwards, by default + isVerbose() { + return isVerbose; + } + /** put new words into our lexicon, properly */ - if (!reg) { - reg = '.*'; - } - var regs = matchSyntax(reg, opts); - var matches = []; - this.list.forEach(function (p) { - matches = matches.concat(p.lookAhead(regs)); - }); - matches = matches.filter(function (p) { - return p; - }); - return this.buildFrom(matches); - }; + addWords(wordObj) { + // clean them up a bit + let cleaned = {}; + Object.keys(wordObj).forEach(w => { + let tag = wordObj[w]; + w = w.toLowerCase().trim(); + cleaned[w] = tag; + }); + unpack.addWords(cleaned, this.words, this); + } + /** add new custom conjugations */ - exports.lookAfter = exports.lookAhead; - /** match any terms before our matches, within the sentence */ - exports.lookBehind = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // find everything afterwards, by default + addConjugations(obj) { + Object.assign(this.irregulars.verbs, obj); + return this; + } + /** add new custom plural/singular pairs */ - if (!reg) { - reg = '.*'; - } - var regs = matchSyntax(reg, opts); - var matches = []; - this.list.forEach(function (p) { - matches = matches.concat(p.lookBehind(regs)); - }); - matches = matches.filter(function (p) { - return p; - }); - return this.buildFrom(matches); - }; + addPlurals(obj) { + Object.assign(this.irregulars.nouns, obj); + return this; + } + /** extend the compromise tagset */ - exports.lookBefore = exports.lookBehind; - /** return all terms before a match, in each phrase */ - exports.before = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var regs = matchSyntax(reg, opts); //only the phrases we care about + addTags(tags) { + tags = Object.assign({}, tags); + this.tags = Object.assign(this.tags, tags); // calculate graph implications for the new tags - var phrases = this["if"](regs).list; - var befores = phrases.map(function (p) { - var ids = p.terms().map(function (t) { - return t.id; - }); //run the search again + this.tags = inferTagSet(this.tags); + return this; + } + /** call methods after tagger runs */ - var m = p.match(regs)[0]; - var index = ids.indexOf(m.start); //nothing is before a first-term match - if (index === 0 || index === -1) { - return null; + postProcess(fn) { + this.taggers.push(fn); + return this; } + /** helper method for logging + debugging */ - return p.buildFrom(p.start, index); - }); - befores = befores.filter(function (p) { - return p !== null; - }); - return this.buildFrom(befores); - }; - /** return all terms after a match, in each phrase */ + stats() { + return { + words: Object.keys(this.words).length, + plurals: Object.keys(this.irregulars.nouns).length, + conjugations: Object.keys(this.irregulars.verbs).length, + compounds: Object.keys(this.hasCompound).length, + postProcessors: this.taggers.length + }; + } - exports.after = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var regs = matchSyntax(reg, opts); //only the phrases we care about + } // ¯\_(:/)_/¯ - var phrases = this["if"](regs).list; - var befores = phrases.map(function (p) { - var terms = p.terms(); - var ids = terms.map(function (t) { - return t.id; - }); //run the search again - var m = p.match(regs)[0]; - var index = ids.indexOf(m.start); //skip if nothing is after it + const clone = function (obj) { + return JSON.parse(JSON.stringify(obj)); + }; + /** produce a deep-copy of all lingustic data */ - if (index === -1 || !terms[index + m.length]) { - return null; - } //create the new phrase, after our match. + World$1.prototype.clone = function () { + let w2 = new World$1(); // these are simple to copy: - var id = terms[index + m.length].id; - var len = p.length - index - m.length; - return p.buildFrom(id, len); - }); - befores = befores.filter(function (p) { - return p !== null; - }); - return this.buildFrom(befores); - }; - /** return only results with this match afterwards */ + w2.words = Object.assign({}, this.words); + w2.hasCompound = Object.assign({}, this.hasCompound); //these ones are nested: + w2.irregulars = clone(this.irregulars); + w2.tags = clone(this.tags); // these are functions - exports.hasAfter = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return this.filter(function (doc) { - return doc.lookAfter(reg, opts).found; - }); - }; - /** return only results with this match before it */ + w2.transforms = this.transforms; + w2.taggers = this.taggers; + return w2; + }; + var World_1 = World$1; + var _01Utils = {}; + /** return the root, first document */ - exports.hasBefore = function (reg) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return this.filter(function (doc) { - return doc.lookBefore(reg, opts).found; - }); - }; -}); -/** apply a tag, or tags to all terms */ + (function (exports) { + exports.all = function () { + return this.parents()[0] || this; + }; + /** return the previous result */ -var tagTerms = function tagTerms(tag, doc, safe, reason) { - var tagList = []; + exports.parent = function () { + if (this.from) { + return this.from; + } + + return this; + }; + /** return a list of all previous results */ - if (typeof tag === 'string') { - tagList = tag.split(' '); - } // doc.parents()[0].reasons.push(reason) - //do indepenent tags for each term: + exports.parents = function (n) { + let arr = []; - doc.list.forEach(function (p) { - var terms = p.terms(); // tagSafe - apply only to fitting terms + const addParent = function (doc) { + if (doc.from) { + arr.push(doc.from); + addParent(doc.from); + } + }; - if (safe === true) { - terms = terms.filter(function (t) { - return t.canBe(tag, doc.world); - }); - } + addParent(this); + arr = arr.reverse(); - terms.forEach(function (t, i) { - //fancy version: - if (tagList.length > 1) { - if (tagList[i] && tagList[i] !== '.') { - t.tag(tagList[i], reason, doc.world); + if (typeof n === 'number') { + return arr[n]; } - } else { - //non-fancy version (same tag for all terms) - t.tag(tag, reason, doc.world); - } - }); - }); - return; -}; -var _setTag = tagTerms; -/** Give all terms the given tag */ + return arr; + }; + /** deep-copy the document, so that no references remain */ -var tag = function tag(tags, why) { - if (!tags) { - return this; - } - _setTag(tags, this, false, why); + exports.clone = function (doShallow) { + let list = this.list.map(ts => ts.clone(doShallow)); + let tmp = this.buildFrom(list); + return tmp; + }; + /** how many seperate terms does the document have? */ - return this; -}; -/** Only apply tag to terms if it is consistent with current tags */ + exports.wordCount = function () { + return this.list.reduce((count, p) => { + count += p.wordCount(); + return count; + }, 0); + }; -var tagSafe = function tagSafe(tags, why) { - if (!tags) { - return this; - } + exports.wordcount = exports.wordCount; + /** turn on logging for decision-debugging */ + // exports.verbose = function(bool) { + // if (bool === undefined) { + // bool = true + // } + // this.world.verbose = bool + // } + })(_01Utils); + + var _02Accessors = {}; + /** use only the first result(s) */ + + (function (exports) { + exports.first = function (n) { + if (n === undefined) { + return this.get(0); + } - _setTag(tags, this, true, why); + return this.slice(0, n); + }; + /** use only the last result(s) */ - return this; -}; -/** Remove this term from the given terms */ + exports.last = function (n) { + if (n === undefined) { + return this.get(this.list.length - 1); + } -var unTag = function unTag(tags, why) { - var _this = this; + let end = this.list.length; + return this.slice(end - n, end); + }; + /** grab a given subset of the results*/ - this.list.forEach(function (p) { - p.terms().forEach(function (t) { - return t.unTag(tags, why, _this.world); - }); - }); - return this; -}; -/** return only the terms that can be this tag*/ + exports.slice = function (start, end) { + let list = this.list.slice(start, end); + return this.buildFrom(list); + }; + /* grab nth result */ -var canBe = function canBe(tag) { - if (!tag) { - return this; - } - var world = this.world; - var matches = this.list.reduce(function (arr, p) { - return arr.concat(p.canBe(tag, world)); - }, []); - return this.buildFrom(matches); -}; + exports.eq = function (n) { + let p = this.list[n]; -var _04Tag = { - tag: tag, - tagSafe: tagSafe, - unTag: unTag, - canBe: canBe -}; -/* run each phrase through a function, and create a new document */ + if (p === undefined) { + return this.buildFrom([]); + } -var map = function map(fn) { - var _this = this; + return this.buildFrom([p]); + }; - if (!fn) { - return this; - } + exports.get = exports.eq; + /** grab term[0] for every match */ - var list = this.list.map(function (p, i) { - var doc = _this.buildFrom([p]); + exports.firstTerms = function () { + return this.match('^.'); + }; - doc.from = null; //it's not a child/parent + exports.firstTerm = exports.firstTerms; + /** grab the last term for every match */ - var res = fn(doc, i); // if its a doc, return one result + exports.lastTerms = function () { + return this.match('.$'); + }; - if (res && res.list && res.list[0]) { - return res.list[0]; - } + exports.lastTerm = exports.lastTerms; + /** return a flat array of term objects */ - return res; - }); //remove nulls + exports.termList = function (num) { + let arr = []; //'reduce' but faster - list = list.filter(function (x) { - return x; - }); // return an empty response + for (let i = 0; i < this.list.length; i++) { + let terms = this.list[i].terms(); - if (list.length === 0) { - return this.buildFrom(list); - } // if it is not a list of Phrase objects, then don't try to make a Doc object + for (let o = 0; o < terms.length; o++) { + arr.push(terms[o]); //support .termList(4) + if (num !== undefined && arr[num] !== undefined) { + return arr[num]; + } + } + } - if (_typeof(list[0]) !== 'object' || list[0].isA !== 'Phrase') { - return list; - } + return arr; + }; + /* grab named capture group terms as object */ - return this.buildFrom(list); -}; -/** run a function on each phrase */ + const getGroups = function (doc) { + let res = {}; + const allGroups = {}; -var forEach = function forEach(fn, detachParent) { - var _this2 = this; + for (let i = 0; i < doc.list.length; i++) { + const phrase = doc.list[i]; + const groups = Object.keys(phrase.groups).map(k => phrase.groups[k]); - if (!fn) { - return this; - } + for (let j = 0; j < groups.length; j++) { + const { + group, + start, + length + } = groups[j]; - this.list.forEach(function (p, i) { - var sub = _this2.buildFrom([p]); // if we're doing fancy insertions, we may want to skip updating the parent each time. + if (!allGroups[group]) { + allGroups[group] = []; + } + allGroups[group].push(phrase.buildFrom(start, length)); + } + } - if (detachParent === true) { - sub.from = null; // - } + const keys = Object.keys(allGroups); - fn(sub, i); - }); - return this; -}; -/** return only the phrases that return true */ + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + res[key] = doc.buildFrom(allGroups[key]); + } + return res; + }; + /** lookup a named-group, by its name */ -var filter = function filter(fn) { - var _this3 = this; - if (!fn) { - return this; - } + const getOneName = function (doc, name) { + const arr = []; + + for (let i = 0; i < doc.list.length; i++) { + const phrase = doc.list[i]; + let keys = Object.keys(phrase.groups); + keys = keys.filter(id => phrase.groups[id].group === name); + keys.forEach(id => { + arr.push(phrase.buildFrom(phrase.groups[id].start, phrase.groups[id].length)); + }); + } - var list = this.list.filter(function (p, i) { - var doc = _this3.buildFrom([p]); + return doc.buildFrom(arr); + }; + /** grab named capture group results */ - doc.from = null; //it's not a child/parent - return fn(doc, i); - }); - return this.buildFrom(list); -}; -/** return a document with only the first phrase that matches */ + exports.groups = function (target) { + if (target === undefined) { + return getGroups(this); + } + if (typeof target === 'number') { + target = String(target); + } -var find = function find(fn) { - var _this4 = this; + return getOneName(this, target) || this.buildFrom([]); + }; - if (!fn) { - return this; - } + exports.group = exports.groups; + /** get the full-sentence each phrase belongs to */ - var phrase = this.list.find(function (p, i) { - var doc = _this4.buildFrom([p]); + exports.sentences = function (n) { + let arr = []; + this.list.forEach(p => { + arr.push(p.fullSentence()); + }); - doc.from = null; //it's not a child/parent + if (typeof n === 'number') { + return this.buildFrom([arr[n]]); + } - return fn(doc, i); - }); + return this.buildFrom(arr); + }; - if (phrase) { - return this.buildFrom([phrase]); - } + exports.sentence = exports.sentences; + })(_02Accessors); - return undefined; -}; -/** return true or false if there is one matching phrase */ + var _03Match = {}; + const cacheRequired$1 = function (reg) { + let needTags = []; + let needWords = []; + reg.forEach(obj => { + if (obj.optional === true || obj.negative === true) { + return; + } -var some = function some(fn) { - var _this5 = this; + if (obj.tag !== undefined) { + needTags.push(obj.tag); + } - if (!fn) { - return this; - } + if (obj.word !== undefined) { + needWords.push(obj.word); + } + }); + return { + tags: needTags, + words: needWords + }; + }; // try to pre-fail as many matches as possible, without doing them - return this.list.some(function (p, i) { - var doc = _this5.buildFrom([p]); - doc.from = null; //it's not a child/parent + const failFast = function (doc, regs) { + if (doc._cache && doc._cache.set === true) { + let { + words, + tags + } = cacheRequired$1(regs); //check required words - return fn(doc, i); - }); -}; -/** sample a subset of the results */ + for (let i = 0; i < words.length; i++) { + if (doc._cache.words[words[i]] === undefined) { + return false; + } + } //check required tags -var random = function random(n) { - if (!this.found) { - return this; - } + for (let i = 0; i < tags.length; i++) { + if (doc._cache.tags[tags[i]] === undefined) { + return false; + } + } + } - var r = Math.floor(Math.random() * this.list.length); + return true; + }; - if (n === undefined) { - var list = [this.list[r]]; - return this.buildFrom(list); - } //prevent it from going over the end + var _failFast = failFast; + (function (exports) { + const parseSyntax = matchSyntax; + const checkCache = _failFast; + /** return a new Doc, with this one as a parent */ - if (r + n > this.length) { - r = this.length - n; - r = r < 0 ? 0 : r; - } + exports.match = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return this.slice(r, r + n); -}; -/** combine each phrase into a new data-structure */ -// exports.reduce = function(fn, h) { -// let list = this.list.reduce((_h, ts) => { -// let doc = this.buildFrom([ts]) -// doc.from = null //it's not a child/parent -// return fn(_h, doc) -// }, h) -// return this.buildFrom(list) -// } - - -var _05Loops = { - map: map, - forEach: forEach, - filter: filter, - find: find, - some: some, - random: random -}; // const tokenize = require('../../01-tokenizer/02-words') - -var tokenize = function tokenize(str) { - return str.split(/[ -]/g); -}; // take a list of strings -// look them up in the document - - -var buildTree = function buildTree(termList) { - var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - var root = {}; // parse our input - - termList.forEach(function (str, i) { - var val = true; - - if (values[i] !== undefined) { - val = values[i]; - } // some rough normalization - - - str = (str || '').toLowerCase(); - str = str.replace(/[,;.!?]+$/, ''); - var arr = tokenize(str).map(function (s) { - return s.trim(); - }); - root[arr[0]] = root[arr[0]] || {}; + // support '0' shorthand for named-groups + if (typeof opts === 'string' || typeof opts === 'number' || opts === null) { + opts = { + group: opts + }; + } //parse-up the input expression - if (arr.length === 1) { - root[arr[0]].value = val; - } else { - root[arr[0]].more = root[arr[0]].more || []; - root[arr[0]].more.push({ - rest: arr.slice(1), - value: val - }); - } - }); // sort by longest-first? - // console.log(JSON.stringify(root, null, 2)) - return root; -}; + let regs = parseSyntax(reg, opts); -var fastLookup = function fastLookup(termList, values, doc) { - var root = buildTree(termList, values); - var found = []; // each phrase - - var _loop = function _loop(i) { - var p = doc.list[i]; - var terms = p.terms(); - var words = terms.map(function (t) { - return t.reduced; - }); // each word - - var _loop2 = function _loop2(w) { - if (root[words[w]] !== undefined) { - // is it a multi-word match? - if (root[words[w]].more !== undefined) { - root[words[w]].more.forEach(function (more) { - // is it too-long? - if (words[w + more.rest.length] === undefined) { - return; - } // compare each subsequent term + if (regs.length === 0) { + return this.buildFrom([]); + } //check our cache, if it exists - var everyTerm = more.rest.every(function (word, r) { - return word === words[w + r + 1]; - }); + if (checkCache(this, regs) === false) { + return this.buildFrom([]); + } //try expression on each phrase - if (everyTerm === true) { - found.push({ - id: p.terms()[w].id, - value: more.value, - length: more.rest.length + 1 - }); - } - }); - } // is it a single-word match? + let matches = this.list.reduce((arr, p) => { + return arr.concat(p.match(regs)); + }, []); // support returning named groups - if (root[words[w]].value !== undefined) { - found.push({ - id: p.terms()[w].id, - value: root[words[w]].value, - length: 1 - }); + if (opts.group !== undefined && opts.group !== null && opts.group !== '') { + return this.buildFrom(matches).groups(opts.group); } - } - }; - for (var w = 0; w < words.length; w++) { - _loop2(w); - } - }; + return this.buildFrom(matches); + }; + /** return all results except for this */ - for (var i = 0; i < doc.list.length; i++) { - _loop(i); - } - return found; -}; + exports.not = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + //parse-up the input expression + let regs = parseSyntax(reg, opts); //if it's empty, return them all! -var _lookup = fastLookup; + if (regs.length === 0 || checkCache(this, regs) === false) { + return this; + } //try expression on each phrase -var _06Lookup = createCommonjsModule(function (module, exports) { - // compare one term and one match - // const doesMatch = function(term, str) { - // if (str === '') { - // return false - // } - // return term.reduced === str || term.implicit === str || term.root === str || term.text.toLowerCase() === str - // } - var isObject = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; - }; - /** lookup an array of words or phrases */ + let matches = this.list.reduce((arr, p) => { + return arr.concat(p.not(regs)); + }, []); + return this.buildFrom(matches); + }; + /** return only the first match */ - exports.lookup = function (arr) { - var _this = this; - var values = []; //is it a {key:val} object? + exports.matchOne = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let regs = parseSyntax(reg, opts); //check our cache, if it exists - var isObj = isObject(arr); + if (checkCache(this, regs) === false) { + return this.buildFrom([]); + } - if (isObj === true) { - arr = Object.keys(arr).map(function (k) { - values.push(arr[k]); - return k; - }); - } // support .lookup('foo') + for (let i = 0; i < this.list.length; i++) { + let match = this.list[i].match(regs, true); + return this.buildFrom(match); + } + return this.buildFrom([]); + }; + /** return each current phrase, only if it contains this match */ - if (typeof arr === 'string') { - arr = [arr]; - } //make sure we go fast. + exports.if = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let regs = parseSyntax(reg, opts); //consult our cache, if it exists - if (this._cache.set !== true) { - this.cache(); - } + if (checkCache(this, regs) === false) { + return this.buildFrom([]); + } - var found = _lookup(arr, values, this); + let found = this.list.filter(p => p.has(regs) === true); + return this.buildFrom(found); + }; + /** Filter-out any current phrases that have this match*/ - var p = this.list[0]; // make object response - if (isObj === true) { - var byVal = {}; - found.forEach(function (o) { - byVal[o.value] = byVal[o.value] || []; - byVal[o.value].push(p.buildFrom(o.id, o.length)); - }); - Object.keys(byVal).forEach(function (k) { - byVal[k] = _this.buildFrom(byVal[k]); - }); - return byVal; - } // otherwise, make array response: + exports.ifNo = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let regs = parseSyntax(reg, opts); + let found = this.list.filter(p => p.has(regs) === false); + return this.buildFrom(found); + }; + /**Return a boolean if this match exists */ - found = found.map(function (o) { - return p.buildFrom(o.id, o.length); - }); - return this.buildFrom(found); - }; + exports.has = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let regs = parseSyntax(reg, opts); //consult our cache, if it exists - exports.lookUp = exports.lookup; -}); -/** freeze the current state of the document, for speed-purposes*/ + if (checkCache(this, regs) === false) { + return false; + } + return this.list.some(p => p.has(regs) === true); + }; + /** match any terms after our matches, within the sentence */ -var cache = function cache(options) { - var _this = this; - options = options || {}; - var words = {}; - var tags = {}; - this._cache.words = words; - this._cache.tags = tags; - this._cache.set = true; - this.list.forEach(function (p, i) { - p.cache = p.cache || {}; //p.terms get cached automatically + exports.lookAhead = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var terms = p.terms(); // cache all the terms + // find everything afterwards, by default + if (!reg) { + reg = '.*'; + } - terms.forEach(function (t) { - if (words[t.reduced] && !words.hasOwnProperty(t.reduced)) { - return; //skip prototype words - } + let regs = parseSyntax(reg, opts); + let matches = []; + this.list.forEach(p => { + matches = matches.concat(p.lookAhead(regs)); + }); + matches = matches.filter(p => p); + return this.buildFrom(matches); + }; - words[t.reduced] = words[t.reduced] || []; - words[t.reduced].push(i); - Object.keys(t.tags).forEach(function (tag) { - tags[tag] = tags[tag] || []; - tags[tag].push(i); - }); // cache root-form on Term, too + exports.lookAfter = exports.lookAhead; + /** match any terms before our matches, within the sentence */ - if (options.root) { - t.setRoot(_this.world); - words[t.root] = [i]; - } - }); - }); - return this; -}; -/** un-freezes the current state of the document, so it may be transformed */ + exports.lookBehind = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + // find everything afterwards, by default + if (!reg) { + reg = '.*'; + } -var uncache = function uncache() { - this._cache = {}; - this.list.forEach(function (p) { - p.cache = {}; - }); // do parents too? + let regs = parseSyntax(reg, opts); + let matches = []; + this.list.forEach(p => { + matches = matches.concat(p.lookBehind(regs)); + }); + matches = matches.filter(p => p); + return this.buildFrom(matches); + }; - this.parents().forEach(function (doc) { - doc._cache = {}; - doc.list.forEach(function (p) { - p.cache = {}; - }); - }); - return this; -}; + exports.lookBefore = exports.lookBehind; + /** return all terms before a match, in each phrase */ -var _07Cache = { - cache: cache, - uncache: uncache -}; + exports.before = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let regs = parseSyntax(reg, opts); //only the phrases we care about -var titleCase$1 = function titleCase(str) { - return str.charAt(0).toUpperCase() + str.substr(1); -}; -/** substitute-in new content */ + let phrases = this.if(regs).list; + let befores = phrases.map(p => { + let ids = p.terms().map(t => t.id); //run the search again + let m = p.match(regs)[0]; + let index = ids.indexOf(m.start); //nothing is before a first-term match -var replaceWith = function replaceWith(replace) { - var _this = this; + if (index === 0 || index === -1) { + return null; + } - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return p.buildFrom(p.start, index); + }); + befores = befores.filter(p => p !== null); + return this.buildFrom(befores); + }; + /** return all terms after a match, in each phrase */ - if (!replace) { - return this["delete"](); - } //support old-style params + exports.after = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let regs = parseSyntax(reg, opts); //only the phrases we care about - if (options === true) { - options = { - keepTags: true - }; - } + let phrases = this.if(regs).list; + let befores = phrases.map(p => { + let terms = p.terms(); + let ids = terms.map(t => t.id); //run the search again - if (options === false) { - options = { - keepTags: false - }; - } + let m = p.match(regs)[0]; + let index = ids.indexOf(m.start); //skip if nothing is after it + + if (index === -1 || !terms[index + m.length]) { + return null; + } //create the new phrase, after our match. - options = options || {}; // clear the cache - this.uncache(); // return this + let id = terms[index + m.length].id; + let len = p.length - index - m.length; + return p.buildFrom(id, len); + }); + befores = befores.filter(p => p !== null); + return this.buildFrom(befores); + }; + /** return only results with this match afterwards */ - this.list.forEach(function (p) { - var input = replace; // accept a function for replace - if (typeof replace === 'function') { - input = replace(p); - } + exports.hasAfter = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return this.filter(doc => { + return doc.lookAfter(reg, opts).found; + }); + }; + /** return only results with this match before it */ - var newPhrases; // accept a Doc object to replace - if (input && _typeof(input) === 'object' && input.isA === 'Doc') { - newPhrases = input.list; + exports.hasBefore = function (reg) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return this.filter(doc => { + return doc.lookBefore(reg, opts).found; + }); + }; + })(_03Match); - _this.pool().merge(input.pool()); - } else if (typeof input === 'string') { - //input is a string - if (options.keepCase !== false && p.terms(0).isTitleCase()) { - input = titleCase$1(input); - } + var _04Tag = {}; + /** apply a tag, or tags to all terms */ - newPhrases = _01Tokenizer(input, _this.world, _this.pool()); //tag the new phrases + const tagTerms = function (tag, doc, safe, reason) { + let tagList = []; - var tmpDoc = _this.buildFrom(newPhrases); + if (typeof tag === 'string') { + tagList = tag.split(' '); + } // doc.parents()[0].reasons.push(reason) + //do indepenent tags for each term: - tmpDoc.tagger(); - newPhrases = tmpDoc.list; - } else { - return; //don't even bother - } // try to keep its old tags, if appropriate + doc.list.forEach(p => { + let terms = p.terms(); // tagSafe - apply only to fitting terms - if (options.keepTags === true) { - var oldTags = p.json({ - terms: { - tags: true - } - }).terms; - newPhrases[0].terms().forEach(function (t, i) { - if (oldTags[i]) { - t.tagSafe(oldTags[i].tags, 'keptTag', _this.world); + if (safe === true) { + terms = terms.filter(t => t.canBe(tag, doc.world)); } + + terms.forEach((t, i) => { + //fancy version: + if (tagList.length > 1) { + if (tagList[i] && tagList[i] !== '.') { + t.tag(tagList[i], reason, doc.world); + } + } else { + //non-fancy version (same tag for all terms) + t.tag(tag, reason, doc.world); + } + }); }); - } + return; + }; - p.replace(newPhrases[0], _this); //Oneday: support multi-sentence replacements - }); - return this; -}; -/** search and replace match with new content */ + var _setTag = tagTerms; + const setTag = _setTag; + /** Give all terms the given tag */ + _04Tag.tag = function (tags, why) { + if (!tags) { + return this; + } -var replace = function replace(match, _replace, options) { - // if there's no 2nd param, use replaceWith - if (_replace === undefined) { - return this.replaceWith(match, options); - } + setTag(tags, this, false, why); + return this; + }; + /** Only apply tag to terms if it is consistent with current tags */ - this.match(match).replaceWith(_replace, options); - return this; -}; -var _01Replace = { - replaceWith: replaceWith, - replace: replace -}; + _04Tag.tagSafe = function (tags, why) { + if (!tags) { + return this; + } -var _02Insert = createCommonjsModule(function (module, exports) { - var isObject = function isObject(obj) { - return obj && Object.prototype.toString.call(obj) === '[object Object]'; - }; // if it's empty, just create the phrase + setTag(tags, this, true, why); + return this; + }; + /** Remove this term from the given terms */ - var makeNew = function makeNew(str, doc) { - var phrase = _01Tokenizer(str, doc.world)[0]; //assume it's one sentence, for now + _04Tag.unTag = function (tags, why) { + this.list.forEach(p => { + p.terms().forEach(t => t.unTag(tags, why, this.world)); + }); + return this; + }; + /** return only the terms that can be this tag*/ - var tmpDoc = doc.buildFrom([phrase]); - tmpDoc.tagger(); - doc.list = tmpDoc.list; - return doc; - }; - /** add these new terms to the end*/ + _04Tag.canBe = function (tag) { + if (!tag) { + return this; + } + let world = this.world; + let matches = this.list.reduce((arr, p) => { + return arr.concat(p.canBe(tag, world)); + }, []); + return this.buildFrom(matches); + }; - exports.append = function () { - var _this = this; + var _05Loops = {}; + /* run each phrase through a function, and create a new document */ - var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + _05Loops.map = function (fn) { + if (!fn) { + return this; + } - if (!str) { - return this; - } // if it's empty, just create the phrase + let list = this.list.map((p, i) => { + let doc = this.buildFrom([p]); + doc.from = null; //it's not a child/parent + let res = fn(doc, i); // if its a doc, return one result - if (!this.found) { - return makeNew(str, this); - } // clear the cache + if (res && res.list && res.list[0]) { + return res.list[0]; + } + return res; + }); //remove nulls - this.uncache(); //add it to end of every phrase + list = list.filter(x => x); // return an empty response - this.list.forEach(function (p) { - //build it - var phrase; + if (list.length === 0) { + return this.buildFrom(list); + } // if it is not a list of Phrase objects, then don't try to make a Doc object - if (isObject(str) && str.isA === 'Doc') { - phrase = str.list[0].clone(); //use the first phrase - } else if (typeof str === 'string') { - phrase = _01Tokenizer(str, _this.world, _this.pool())[0]; //assume it's one sentence, for now - } //tag it + if (typeof list[0] !== 'object' || list[0].isA !== 'Phrase') { + return list; + } - var tmpDoc = _this.buildFrom([phrase]); + return this.buildFrom(list); + }; + /** run a function on each phrase */ - tmpDoc.tagger(); // push it onto the end - p.append(phrase, _this); - }); - return this; - }; + _05Loops.forEach = function (fn, detachParent) { + if (!fn) { + return this; + } - exports.insertAfter = exports.append; - exports.insertAt = exports.append; - /** add these new terms to the front*/ + this.list.forEach((p, i) => { + let sub = this.buildFrom([p]); // if we're doing fancy insertions, we may want to skip updating the parent each time. - exports.prepend = function (str) { - var _this2 = this; + if (detachParent === true) { + sub.from = null; // + } - if (!str) { + fn(sub, i); + }); return this; - } // if it's empty, just create the phrase + }; + /** return only the phrases that return true */ - if (!this.found) { - return makeNew(str, this); - } // clear the cache + _05Loops.filter = function (fn) { + if (!fn) { + return this; + } + let list = this.list.filter((p, i) => { + let doc = this.buildFrom([p]); + doc.from = null; //it's not a child/parent - this.uncache(); //add it to start of every phrase + return fn(doc, i); + }); + return this.buildFrom(list); + }; + /** return a document with only the first phrase that matches */ - this.list.forEach(function (p) { - //build it - var phrase; - if (isObject(str) && str.isA === 'Doc') { - phrase = str.list[0].clone(); //use the first phrase - } else if (typeof str === 'string') { - phrase = _01Tokenizer(str, _this2.world, _this2.pool())[0]; //assume it's one sentence, for now - } //tag it + _05Loops.find = function (fn) { + if (!fn) { + return this; + } + let phrase = this.list.find((p, i) => { + let doc = this.buildFrom([p]); + doc.from = null; //it's not a child/parent - var tmpDoc = _this2.buildFrom([phrase]); + return fn(doc, i); + }); - tmpDoc.tagger(); // add it to the start + if (phrase) { + return this.buildFrom([phrase]); + } - p.prepend(phrase, _this2); - }); - return this; - }; + return undefined; + }; + /** return true or false if there is one matching phrase */ - exports.insertBefore = exports.prepend; - /** add these new things to the end*/ - exports.concat = function () { - // clear the cache - this.uncache(); - var list = this.list.slice(0); //repeat for any number of params + _05Loops.some = function (fn) { + if (!fn) { + return this; + } - for (var i = 0; i < arguments.length; i++) { - var arg = arguments[i]; //support a fresh string + return this.list.some((p, i) => { + let doc = this.buildFrom([p]); + doc.from = null; //it's not a child/parent - if (typeof arg === 'string') { - var arr = _01Tokenizer(arg, this.world); //TODO: phrase.tagger()? + return fn(doc, i); + }); + }; + /** sample a subset of the results */ - list = list.concat(arr); - } else if (arg.isA === 'Doc') { - list = list.concat(arg.list); - } else if (arg.isA === 'Phrase') { - list.push(arg); + _05Loops.random = function (n) { + if (!this.found) { + return this; } - } - return this.buildFrom(list); - }; - /** fully remove these terms from the document */ + let r = Math.floor(Math.random() * this.list.length); + if (n === undefined) { + let list = [this.list[r]]; + return this.buildFrom(list); + } //prevent it from going over the end - exports["delete"] = function (match) { - var _this3 = this; // clear the cache + if (r + n > this.length) { + r = this.length - n; + r = r < 0 ? 0 : r; + } - this.uncache(); - var toRemove = this; + return this.slice(r, r + n); + }; - if (match) { - toRemove = this.match(match); - } + var _06Lookup = {}; - toRemove.list.forEach(function (phrase) { - return phrase["delete"](_this3); - }); - return this; - }; // aliases + const tokenize$4 = function (str) { + return str.split(/[ -]/g); + }; // take a list of strings + // look them up in the document - exports.remove = exports["delete"]; -}); + const buildTree = function (termList) { + let values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + let root = {}; // parse our input -var shouldTrim = { - clean: true, - reduced: true, - root: true -}; -/** return the document as text */ + termList.forEach((str, i) => { + let val = true; -var text = function text(options) { - var _this = this; + if (values[i] !== undefined) { + val = values[i]; + } // some rough normalization - options = options || {}; //are we showing every phrase? - var showFull = false; + str = (str || '').toLowerCase(); + str = str.replace(/[,;.!?]+$/, ''); + let arr = tokenize$4(str).map(s => s.trim()); + root[arr[0]] = root[arr[0]] || {}; - if (this.parents().length === 0) { - showFull = true; - } // cache roots, if necessary + if (arr.length === 1) { + root[arr[0]].value = val; + } else { + root[arr[0]].more = root[arr[0]].more || []; + root[arr[0]].more.push({ + rest: arr.slice(1), + value: val + }); + } + }); // sort by longest-first? + // console.log(JSON.stringify(root, null, 2)) + return root; + }; - if (options === 'root' || _typeof(options) === 'object' && options.root) { - this.list.forEach(function (p) { - p.terms().forEach(function (t) { - if (t.root === null) { - t.setRoot(_this.world); - } - }); - }); - } + const fastLookup = function (termList, values, doc) { + let root = buildTree(termList, values); + let found = []; // each phrase + + for (let i = 0; i < doc.list.length; i++) { + const p = doc.list[i]; + let terms = p.terms(); + let words = terms.map(t => t.reduced); // each word + + for (let w = 0; w < words.length; w++) { + if (root[words[w]] !== undefined) { + // is it a multi-word match? + if (root[words[w]].more !== undefined) { + root[words[w]].more.forEach(more => { + // is it too-long? + if (words[w + more.rest.length] === undefined) { + return; + } // compare each subsequent term + + + let everyTerm = more.rest.every((word, r) => { + return word === words[w + r + 1]; + }); + + if (everyTerm === true) { + found.push({ + id: p.terms()[w].id, + value: more.value, + length: more.rest.length + 1 + }); + } + }); + } // is it a single-word match? - var txt = this.list.reduce(function (str, p, i) { - var trimPre = !showFull && i === 0; - var trimPost = !showFull && i === _this.list.length - 1; - return str + p.text(options, trimPre, trimPost); - }, ''); // clumsy final trim of leading/trailing whitespace - if (shouldTrim[options] === true || options.reduced === true || options.clean === true || options.root === true) { - txt = txt.trim(); - } + if (root[words[w]].value !== undefined) { + found.push({ + id: p.terms()[w].id, + value: root[words[w]].value, + length: 1 + }); + } + } + } + } - return txt; -}; + return found; + }; -var _01Text = { - text: text -}; // get all character startings in doc - -var termOffsets = function termOffsets(doc) { - var elapsed = 0; - var index = 0; - var offsets = {}; - doc.termList().forEach(function (term) { - offsets[term.id] = { - index: index, - start: elapsed + term.pre.length, - length: term.text.length - }; - elapsed += term.pre.length + term.text.length + term.post.length; - index += 1; - }); - return offsets; -}; + var _lookup = fastLookup; -var calcOffset = function calcOffset(doc, result, options) { - // calculate offsets for each term - var offsets = termOffsets(doc.all()); // add index values + (function (exports) { + const lookup = _lookup; // compare one term and one match + // const doesMatch = function(term, str) { + // if (str === '') { + // return false + // } + // return term.reduced === str || term.implicit === str || term.root === str || term.text.toLowerCase() === str + // } - if (options.terms.index || options.index) { - result.forEach(function (o) { - o.terms.forEach(function (t) { - t.index = offsets[t.id].index; - }); - o.index = o.terms[0].index; - }); - } // add offset values - - - if (options.terms.offset || options.offset) { - result.forEach(function (o) { - o.terms.forEach(function (t) { - t.offset = offsets[t.id] || {}; - }); // let len = o.terms.reduce((n, t, i) => { - // n += t.offset.length || 0 - // //add whitespace, too - // console.log(t.post) - // return n - // }, 0) - // The offset information for the entire doc starts at (or just before) - // the first term, and is as long as the whole text. The code originally - // copied the entire offset value from terms[0], but since we're now - // overriding 2 of the three fields, it's cleaner to just create an all- - // new object and not pretend it's "just" the same as terms[0]. - - o.offset = { - index: o.terms[0].offset.index, - start: o.terms[0].offset.start - o.text.indexOf(o.terms[0].text), - length: o.text.length + const isObject = function (obj) { + return obj && Object.prototype.toString.call(obj) === '[object Object]'; }; - }); - } -}; - -var _offset = calcOffset; + /** lookup an array of words or phrases */ -var _02Json = createCommonjsModule(function (module, exports) { - var jsonDefaults = { - text: true, - terms: true, - trim: true - }; //some options have dependents - var setOptions = function setOptions(options) { - options = Object.assign({}, jsonDefaults, options); + exports.lookup = function (arr) { + let values = []; //is it a {key:val} object? - if (options.unique) { - options.reduced = true; - } //offset calculation requires these options to be on + let isObj = isObject(arr); + if (isObj === true) { + arr = Object.keys(arr).map(k => { + values.push(arr[k]); + return k; + }); + } // support .lookup('foo') - if (options.offset) { - options.text = true; - if (!options.terms || options.terms === true) { - options.terms = {}; - } + if (typeof arr === 'string') { + arr = [arr]; + } //make sure we go fast. - options.terms.offset = true; - } - if (options.index || options.terms.index) { - options.terms = options.terms === true ? {} : options.terms; - options.terms.id = true; - } + if (this._cache.set !== true) { + this.cache(); + } - return options; - }; - /** pull out desired metadata from the document */ + let found = lookup(arr, values, this); + let p = this.list[0]; // make object response + if (isObj === true) { + let byVal = {}; + found.forEach(o => { + byVal[o.value] = byVal[o.value] || []; + byVal[o.value].push(p.buildFrom(o.id, o.length)); + }); + Object.keys(byVal).forEach(k => { + byVal[k] = this.buildFrom(byVal[k]); + }); + return byVal; + } // otherwise, make array response: - exports.json = function () { - var _this = this; - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; //support json(3) format + found = found.map(o => p.buildFrom(o.id, o.length)); + return this.buildFrom(found); + }; - if (typeof options === 'number' && this.list[options]) { - return this.list[options].json(jsonDefaults); - } + exports.lookUp = exports.lookup; + })(_06Lookup); - options = setOptions(options); // cache root strings beforehand, if necessary + var _07Cache = {}; + /** freeze the current state of the document, for speed-purposes*/ - if (options.root === true) { - this.list.forEach(function (p) { - p.terms().forEach(function (t) { - if (t.root === null) { - t.setRoot(_this.world); - } - }); - }); - } + _07Cache.cache = function (options) { + options = options || {}; + let words = {}; + let tags = {}; + this._cache.words = words; + this._cache.tags = tags; + this._cache.set = true; + this.list.forEach((p, i) => { + p.cache = p.cache || {}; //p.terms get cached automatically - var result = this.list.map(function (p) { - return p.json(options, _this.world); - }); // add offset and index data for each term + let terms = p.terms(); // cache all the terms - if (options.terms.offset || options.offset || options.terms.index || options.index) { - _offset(this, result, options); - } // add frequency #s + terms.forEach(t => { + if (words[t.reduced] && !words.hasOwnProperty(t.reduced)) { + return; //skip prototype words + } + words[t.reduced] = words[t.reduced] || []; + words[t.reduced].push(i); + Object.keys(t.tags).forEach(tag => { + tags[tag] = tags[tag] || []; + tags[tag].push(i); + }); // cache root-form on Term, too - if (options.frequency || options.freq || options.count) { - var obj = {}; - this.list.forEach(function (p) { - var str = p.text('reduced'); - obj[str] = obj[str] || 0; - obj[str] += 1; - }); - this.list.forEach(function (p, i) { - result[i].count = obj[p.text('reduced')]; + if (options.root) { + t.setRoot(this.world); + words[t.root] = [i]; + } + }); }); - } // remove duplicates + return this; + }; + /** un-freezes the current state of the document, so it may be transformed */ - if (options.unique) { - var already = {}; - result = result.filter(function (o) { - if (already[o.reduced] === true) { - return false; - } + _07Cache.uncache = function () { + this._cache = {}; + this.list.forEach(p => { + p.cache = {}; + }); // do parents too? - already[o.reduced] = true; - return true; + this.parents().forEach(doc => { + doc._cache = {}; + doc.list.forEach(p => { + p.cache = {}; + }); }); - } - - return result; - }; //aliases - + return this; + }; - exports.data = exports.json; -}); + var _01Replace = {}; + const tokenize$3 = _01Tokenizer; -var _debug = createCommonjsModule(function (module) { - // https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color - var reset = '\x1b[0m'; + const titleCase$1 = str => { + return str.charAt(0).toUpperCase() + str.substr(1); + }; + /** substitute-in new content */ - var padEnd = function padEnd(str, width) { - str = str.toString(); - while (str.length < width) { - str += ' '; - } + _01Replace.replaceWith = function (replace) { + let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return str; - }; + if (!replace) { + return this.delete(); + } //support old-style params - function isClientSide() { - return typeof window !== 'undefined' && window.document; - } // some nice colors for client-side debug + if (options === true) { + options = { + keepTags: true + }; + } - var css = { - green: '#7f9c6c', - red: '#914045', - blue: '#6699cc', - magenta: '#6D5685', - cyan: '#2D85A8', - yellow: '#e6d7b3', - black: '#303b50' - }; + if (options === false) { + options = { + keepTags: false + }; + } - var logClientSide = function logClientSide(doc) { - var tagset = doc.world.tags; - doc.list.forEach(function (p) { - console.log('\n%c"' + p.text() + '"', 'color: #e6d7b3;'); - var terms = p.terms(); - terms.forEach(function (t) { - var tags = Object.keys(t.tags); - var text = t.text || '-'; + options = options || {}; // clear the cache - if (t.implicit) { - text = '[' + t.implicit + ']'; - } + this.uncache(); // return this - var word = "'" + text + "'"; - word = padEnd(word, 8); - var found = tags.find(function (tag) { - return tagset[tag] && tagset[tag].color; - }); - var color = 'steelblue'; + this.list.forEach(p => { + let input = replace; // accept a function for replace - if (tagset[found]) { - color = tagset[found].color; - color = css[color]; + if (typeof replace === 'function') { + input = replace(p); } - console.log(" ".concat(word, " - %c").concat(tags.join(', ')), "color: ".concat(color || 'steelblue', ";")); - }); - }); - }; //cheaper than requiring chalk - - - var cli = { - green: function green(str) { - return '\x1b[32m' + str + reset; - }, - red: function red(str) { - return '\x1b[31m' + str + reset; - }, - blue: function blue(str) { - return '\x1b[34m' + str + reset; - }, - magenta: function magenta(str) { - return '\x1b[35m' + str + reset; - }, - cyan: function cyan(str) { - return '\x1b[36m' + str + reset; - }, - yellow: function yellow(str) { - return '\x1b[33m' + str + reset; - }, - black: function black(str) { - return '\x1b[30m' + str + reset; - } - }; - - var tagString = function tagString(tags, world) { - tags = tags.map(function (tag) { - if (!world.tags.hasOwnProperty(tag)) { - return tag; - } + let newPhrases; // accept a Doc object to replace - var c = world.tags[tag].color || 'blue'; - return cli[c](tag); - }); - return tags.join(', '); - }; //output some helpful stuff to the console + if (input && typeof input === 'object' && input.isA === 'Doc') { + newPhrases = input.list; + this.pool().merge(input.pool()); + } else if (typeof input === 'string') { + //input is a string + if (options.keepCase !== false && p.terms(0).isTitleCase()) { + input = titleCase$1(input); + } + newPhrases = tokenize$3(input, this.world, this.pool()); //tag the new phrases - var debug = function debug(doc) { - if (isClientSide()) { - logClientSide(doc); - return doc; - } + let tmpDoc = this.buildFrom(newPhrases); + tmpDoc.tagger(); + newPhrases = tmpDoc.list; + } else { + return; //don't even bother + } // try to keep its old tags, if appropriate - console.log(cli.blue('=====')); - doc.list.forEach(function (p) { - console.log(cli.blue(' -----')); - var terms = p.terms(); - terms.forEach(function (t) { - var tags = Object.keys(t.tags); - var text = t.text || '-'; - if (t.implicit) { - text = '[' + t.implicit + ']'; + if (options.keepTags === true) { + let oldTags = p.json({ + terms: { + tags: true + } + }).terms; + newPhrases[0].terms().forEach((t, i) => { + if (oldTags[i]) { + t.tagSafe(oldTags[i].tags, 'keptTag', this.world); + } + }); } - { - text = cli.yellow(text); - } - var word = "'" + text + "'"; - word = padEnd(word, 18); - var str = cli.blue(' | ') + word + ' - ' + tagString(tags, doc.world); - console.log(str); + p.replace(newPhrases[0], this); //Oneday: support multi-sentence replacements }); - }); - console.log(''); - return doc; - }; + return this; + }; + /** search and replace match with new content */ - module.exports = debug; -}); - -var topk = function topk(doc) { - var list = doc.json({ - text: false, - terms: false, - reduced: true - }); // combine them - - var obj = {}; - list.forEach(function (o) { - if (!obj[o.reduced]) { - o.count = 0; - obj[o.reduced] = o; - } - obj[o.reduced].count += 1; - }); - var arr = Object.keys(obj).map(function (k) { - return obj[k]; - }); // sort them + _01Replace.replace = function (match, replace, options) { + // if there's no 2nd param, use replaceWith + if (replace === undefined) { + return this.replaceWith(match, options); + } - arr.sort(function (a, b) { - if (a.count > b.count) { - return -1; - } else if (a.count < b.count) { - return 1; - } + this.match(match).replaceWith(replace, options); + return this; + }; - return 0; - }); - return arr; -}; + var _02Insert = {}; -var _topk = topk; -/** pretty-print the current document and its tags */ + (function (exports) { + const tokenize = _01Tokenizer; -var debug_1 = function debug_1() { - _debug(this); + const isObject = function (obj) { + return obj && Object.prototype.toString.call(obj) === '[object Object]'; + }; // if it's empty, just create the phrase - return this; -}; -/** some named output formats */ + const makeNew = function (str, doc) { + let phrase = tokenize(str, doc.world)[0]; //assume it's one sentence, for now -var out = function out(method) { - if (method === 'text') { - return this.text(); - } + let tmpDoc = doc.buildFrom([phrase]); + tmpDoc.tagger(); + doc.list = tmpDoc.list; + return doc; + }; + /** add these new terms to the end*/ - if (method === 'normal') { - return this.text('normal'); - } - if (method === 'json') { - return this.json(); - } + exports.append = function () { + let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - if (method === 'offset' || method === 'offsets') { - return this.json({ - offset: true - }); - } + if (!str) { + return this; + } // if it's empty, just create the phrase - if (method === 'array') { - return this.json({ - terms: false - }).map(function (obj) { - return obj.text; - }).filter(function (str) { - return str; - }); - } - if (method === 'freq' || method === 'frequency') { - return _topk(this); - } + if (!this.found) { + return makeNew(str, this); + } // clear the cache - if (method === 'terms') { - var list = []; - this.json({ - text: false, - terms: { - text: true - } - }).forEach(function (obj) { - var terms = obj.terms.map(function (t) { - return t.text; - }); - terms = terms.filter(function (t) { - return t; - }); - list = list.concat(terms); - }); - return list; - } - if (method === 'tags') { - return this.list.map(function (p) { - return p.terms().reduce(function (h, t) { - h[t.clean || t.implicit] = Object.keys(t.tags); - return h; - }, {}); - }); - } + this.uncache(); //add it to end of every phrase - if (method === 'debug') { - _debug(this); + this.list.forEach(p => { + //build it + let phrase; - return this; - } + if (isObject(str) && str.isA === 'Doc') { + phrase = str.list[0].clone(); //use the first phrase + } else if (typeof str === 'string') { + phrase = tokenize(str, this.world, this.pool())[0]; //assume it's one sentence, for now + } //tag it - return this.text(); -}; -var _03Out = { - debug: debug_1, - out: out -}; -var methods$6 = { - /** alphabetical order */ - alpha: function alpha(a, b) { - var left = a.text('clean'); - var right = b.text('clean'); + let tmpDoc = this.buildFrom([phrase]); + tmpDoc.tagger(); // push it onto the end - if (left < right) { - return -1; - } + p.append(phrase, this); + }); + return this; + }; - if (left > right) { - return 1; - } + exports.insertAfter = exports.append; + exports.insertAt = exports.append; + /** add these new terms to the front*/ - return 0; - }, + exports.prepend = function (str) { + if (!str) { + return this; + } // if it's empty, just create the phrase - /** count the # of characters of each match */ - length: function length(a, b) { - var left = a.text().trim().length; - var right = b.text().trim().length; - if (left < right) { - return 1; - } + if (!this.found) { + return makeNew(str, this); + } // clear the cache - if (left > right) { - return -1; - } - return 0; - }, + this.uncache(); //add it to start of every phrase - /** count the # of terms in each match */ - wordCount: function wordCount(a, b) { - var left = a.wordCount(); - var right = b.wordCount(); + this.list.forEach(p => { + //build it + let phrase; - if (left < right) { - return 1; - } + if (isObject(str) && str.isA === 'Doc') { + phrase = str.list[0].clone(); //use the first phrase + } else if (typeof str === 'string') { + phrase = tokenize(str, this.world, this.pool())[0]; //assume it's one sentence, for now + } //tag it - if (left > right) { - return -1; - } - return 0; - } -}; -/** sort by # of duplicates in the document*/ - -var byFreq = function byFreq(doc) { - var counts = {}; - var options = { - "case": true, - punctuation: false, - whitespace: true, - unicode: true - }; - doc.list.forEach(function (p) { - var str = p.text(options); - counts[str] = counts[str] || 0; - counts[str] += 1; - }); // sort by freq + let tmpDoc = this.buildFrom([phrase]); + tmpDoc.tagger(); // add it to the start - doc.list.sort(function (a, b) { - var left = counts[a.text(options)]; - var right = counts[b.text(options)]; + p.prepend(phrase, this); + }); + return this; + }; - if (left < right) { - return 1; - } + exports.insertBefore = exports.prepend; + /** add these new things to the end*/ - if (left > right) { - return -1; - } + exports.concat = function () { + // clear the cache + this.uncache(); + let list = this.list.slice(0); //repeat for any number of params - return 0; - }); - return doc; -}; // order results 'chronologically', or document-order + for (let i = 0; i < arguments.length; i++) { + let arg = arguments[i]; //support a fresh string + if (typeof arg === 'string') { + let arr = tokenize(arg, this.world); //TODO: phrase.tagger()? -var sortSequential = function sortSequential(doc) { - var order = {}; - doc.json({ - terms: { - offset: true - } - }).forEach(function (o) { - order[o.terms[0].id] = o.terms[0].offset.start; - }); - doc.list = doc.list.sort(function (a, b) { - if (order[a.start] > order[b.start]) { - return 1; - } else if (order[a.start] < order[b.start]) { - return -1; - } + list = list.concat(arr); + } else if (arg.isA === 'Doc') { + list = list.concat(arg.list); + } else if (arg.isA === 'Phrase') { + list.push(arg); + } + } - return 0; - }); - return doc; -}; //aliases + return this.buildFrom(list); + }; + /** fully remove these terms from the document */ -methods$6.alphabetical = methods$6.alpha; -methods$6.wordcount = methods$6.wordCount; // aliases for sequential ordering + exports.delete = function (match) { + // clear the cache + this.uncache(); + let toRemove = this; -var seqNames = { - index: true, - sequence: true, - seq: true, - sequential: true, - chron: true, - chronological: true -}; -/** re-arrange the order of the matches (in place) */ + if (match) { + toRemove = this.match(match); + } -var sort = function sort(input) { - input = input || 'alpha'; //do this one up-front + toRemove.list.forEach(phrase => phrase.delete(this)); + return this; + }; // aliases - if (input === 'freq' || input === 'frequency' || input === 'topk') { - return byFreq(this); - } - if (seqNames.hasOwnProperty(input)) { - return sortSequential(this); - } + exports.remove = exports.delete; + })(_02Insert); - input = methods$6[input] || input; // apply sort method on each phrase + var _01Text = {}; + const shouldTrim = { + clean: true, + reduced: true, + root: true + }; + /** return the document as text */ - if (typeof input === 'function') { - this.list = this.list.sort(input); - return this; - } + _01Text.text = function (options) { + options = options || {}; //are we showing every phrase? - return this; -}; -/** reverse the order of the matches, but not the words */ + let showFull = false; + if (this.parents().length === 0) { + showFull = true; + } // cache roots, if necessary -var reverse = function reverse() { - var list = [].concat(this.list); - list = list.reverse(); - return this.buildFrom(list); -}; -/** remove any duplicate matches */ + if (options === 'root' || typeof options === 'object' && options.root) { + this.list.forEach(p => { + p.terms().forEach(t => { + if (t.root === null) { + t.setRoot(this.world); + } + }); + }); + } -var unique$1 = function unique() { - var list = [].concat(this.list); - var obj = {}; - list = list.filter(function (p) { - var str = p.text('reduced').trim() || p.text('implicit').trim(); + let txt = this.list.reduce((str, p, i) => { + const trimPre = !showFull && i === 0; + const trimPost = !showFull && i === this.list.length - 1; + return str + p.text(options, trimPre, trimPost); + }, ''); // clumsy final trim of leading/trailing whitespace - if (obj.hasOwnProperty(str) === true) { - return false; - } + if (shouldTrim[options] === true || options.reduced === true || options.clean === true || options.root === true) { + txt = txt.trim(); + } - obj[str] = true; - return true; - }); - return this.buildFrom(list); -}; + return txt; + }; -var _01Sort = { - sort: sort, - reverse: reverse, - unique: unique$1 -}; -var isPunct = /[\[\]{}⟨⟩:,،、‒–—―…‹›«»‐\-;\/⁄·*\•^†‡°¡¿※№÷׺ª%‰=‱¶§~|‖¦©℗®℠™¤₳฿]/g; -var quotes = /['‘’“”"′″‴]+/g; -var methods$5 = { - // cleanup newlines and extra spaces - whitespace: function whitespace(doc) { - var termArr = doc.list.map(function (ts) { - return ts.terms(); - }); - termArr.forEach(function (terms, o) { - terms.forEach(function (t, i) { - // keep dashes between words - if (t.hasDash() === true) { - t.post = ' - '; - return; - } // remove existing spaces + var _02Json = {}; + + const termOffsets = function (doc) { + let elapsed = 0; + let index = 0; + let offsets = {}; + doc.termList().forEach(term => { + offsets[term.id] = { + index: index, + start: elapsed + term.pre.length, + length: term.text.length + }; + elapsed += term.pre.length + term.text.length + term.post.length; + index += 1; + }); + return offsets; + }; + + const calcOffset = function (doc, result, options) { + // calculate offsets for each term + let offsets = termOffsets(doc.all()); // add index values + + if (options.terms.index || options.index) { + result.forEach(o => { + o.terms.forEach(t => { + t.index = offsets[t.id].index; + }); + o.index = o.terms[0].index; + }); + } // add offset values + + + if (options.terms.offset || options.offset) { + result.forEach(o => { + o.terms.forEach(t => { + t.offset = offsets[t.id] || {}; + }); // let len = o.terms.reduce((n, t, i) => { + // n += t.offset.length || 0 + // //add whitespace, too + // console.log(t.post) + // return n + // }, 0) + // The offset information for the entire doc starts at (or just before) + // the first term, and is as long as the whole text. The code originally + // copied the entire offset value from terms[0], but since we're now + // overriding 2 of the three fields, it's cleaner to just create an all- + // new object and not pretend it's "just" the same as terms[0]. + + o.offset = { + index: o.terms[0].offset.index, + start: o.terms[0].offset.start - o.text.indexOf(o.terms[0].text), + length: o.text.length + }; + }); + } + }; + var _offset = calcOffset; - t.pre = t.pre.replace(/\s/g, ''); - t.post = t.post.replace(/\s/g, ''); //last word? ensure there's a next sentence. + (function (exports) { + const offsets = _offset; + const jsonDefaults = { + text: true, + terms: true, + trim: true + }; //some options have dependents - if (terms.length - 1 === i && !termArr[o + 1]) { - return; - } // no extra spaces for contractions + const setOptions = function (options) { + options = Object.assign({}, jsonDefaults, options); + if (options.unique) { + options.reduced = true; + } //offset calculation requires these options to be on - if (t.implicit && Boolean(t.text) === true) { - return; - } // no extra spaces for hyphenated words + if (options.offset) { + options.text = true; - if (t.hasHyphen() === true) { - return; + if (!options.terms || options.terms === true) { + options.terms = {}; + } + + options.terms.offset = true; } - t.post += ' '; - }); - }); - }, - punctuation: function punctuation(termList) { - termList.forEach(function (t) { - // space between hyphenated words - if (t.hasHyphen() === true) { - t.post = ' '; - } + if (options.index || options.terms.index) { + options.terms = options.terms === true ? {} : options.terms; + options.terms.id = true; + } - t.pre = t.pre.replace(isPunct, ''); - t.post = t.post.replace(isPunct, ''); // elipses + return options; + }; + /** pull out desired metadata from the document */ - t.post = t.post.replace(/\.\.\./, ''); // only allow one exclamation - if (/!/.test(t.post) === true) { - t.post = t.post.replace(/!/g, ''); - t.post = '!' + t.post; - } // only allow one question mark + exports.json = function () { + let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + //support json(3) format + if (typeof options === 'number' && this.list[options]) { + return this.list[options].json(jsonDefaults); + } - if (/\?/.test(t.post) === true) { - t.post = t.post.replace(/[\?!]*/, ''); - t.post = '?' + t.post; - } - }); - }, - unicode: function unicode(termList) { - termList.forEach(function (t) { - if (t.isImplicit() === true) { - return; - } + options = setOptions(options); // cache root strings beforehand, if necessary - t.text = unicode_1(t.text); - }); - }, - quotations: function quotations(termList) { - termList.forEach(function (t) { - t.post = t.post.replace(quotes, ''); - t.pre = t.pre.replace(quotes, ''); - }); - }, - adverbs: function adverbs(doc) { - doc.match('#Adverb').not('(not|nary|seldom|never|barely|almost|basically|so)').remove(); - }, - // remove the '.' from 'Mrs.' (safely) - abbreviations: function abbreviations(doc) { - doc.list.forEach(function (ts) { - var terms = ts.terms(); - terms.forEach(function (t, i) { - if (t.tags.Abbreviation === true && terms[i + 1]) { - t.post = t.post.replace(/^\./, ''); + if (options.root === true) { + this.list.forEach(p => { + p.terms().forEach(t => { + if (t.root === null) { + t.setRoot(this.world); + } + }); + }); } - }); - }); - } -}; -var _methods = methods$5; -var defaults$1 = { - // light - whitespace: true, - unicode: true, - punctuation: true, - emoji: true, - acronyms: true, - abbreviations: true, - // medium - "case": false, - contractions: false, - parentheses: false, - quotations: false, - adverbs: false, - // heavy (loose legibility) - possessives: false, - verbs: false, - nouns: false, - honorifics: false // pronouns: true, -}; -var mapping = { - light: {}, - medium: { - "case": true, - contractions: true, - parentheses: true, - quotations: true, - adverbs: true - } -}; -mapping.heavy = Object.assign({}, mapping.medium, { - possessives: true, - verbs: true, - nouns: true, - honorifics: true -}); -/** common ways to clean-up the document, and reduce noise */ + let result = this.list.map(p => { + return p.json(options, this.world); + }); // add offset and index data for each term -var normalize = function normalize(options) { - options = options || {}; // support named forms + if (options.terms.offset || options.offset || options.terms.index || options.index) { + offsets(this, result, options); + } // add frequency #s - if (typeof options === 'string') { - options = mapping[options] || {}; - } // set defaults + if (options.frequency || options.freq || options.count) { + let obj = {}; + this.list.forEach(p => { + let str = p.text('reduced'); + obj[str] = obj[str] || 0; + obj[str] += 1; + }); + this.list.forEach((p, i) => { + result[i].count = obj[p.text('reduced')]; + }); + } // remove duplicates - options = Object.assign({}, defaults$1, options); // clear the cache - this.uncache(); - var termList = this.termList(); // lowercase things + if (options.unique) { + let already = {}; + result = result.filter(o => { + if (already[o.reduced] === true) { + return false; + } + + already[o.reduced] = true; + return true; + }); + } - if (options["case"]) { - this.toLowerCase(); - } //whitespace + return result; + }; //aliases - if (options.whitespace) { - _methods.whitespace(this); - } // unicode: é -> e + exports.data = exports.json; + })(_02Json); + var _03Out = {}; + var _debug = { + exports: {} + }; - if (options.unicode) { - _methods.unicode(termList); - } //punctuation - keep sentence punctation, quotes, parenths + (function (module) { + // https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color + const reset = '\x1b[0m'; + const padEnd = function (str, width) { + str = str.toString(); - if (options.punctuation) { - _methods.punctuation(termList); - } // remove ':)' + while (str.length < width) { + str += ' '; + } + return str; + }; - if (options.emoji) { - this.remove('(#Emoji|#Emoticon)'); - } // 'f.b.i.' -> 'FBI' + function isClientSide() { + return typeof window !== 'undefined' && window.document; + } // some nice colors for client-side debug - if (options.acronyms) { - this.acronyms().strip(); // .toUpperCase() - } // remove period from abbreviations + const css = { + green: '#7f9c6c', + red: '#914045', + blue: '#6699cc', + magenta: '#6D5685', + cyan: '#2D85A8', + yellow: '#e6d7b3', + black: '#303b50' + }; + const logClientSide = function (doc) { + let tagset = doc.world.tags; + doc.list.forEach(p => { + console.log('\n%c"' + p.text() + '"', 'color: #e6d7b3;'); + let terms = p.terms(); + terms.forEach(t => { + let tags = Object.keys(t.tags); + let text = t.text || '-'; + + if (t.implicit) { + text = '[' + t.implicit + ']'; + } - if (options.abbreviations) { - _methods.abbreviations(this); - } // --Medium methods-- - // `isn't` -> 'is not' + let word = "'" + text + "'"; + word = padEnd(word, 8); + let found = tags.find(tag => tagset[tag] && tagset[tag].color); + let color = 'steelblue'; + if (tagset[found]) { + color = tagset[found].color; + color = css[color]; + } - if (options.contraction || options.contractions) { - this.contractions().expand(); - } // '(word)' -> 'word' + console.log(" ".concat(word, " - %c").concat(tags.join(', ')), "color: ".concat(color || 'steelblue', ";")); + }); + }); + }; //cheaper than requiring chalk + + + const cli = { + green: function (str) { + return '\x1b[32m' + str + reset; + }, + red: function (str) { + return '\x1b[31m' + str + reset; + }, + blue: function (str) { + return '\x1b[34m' + str + reset; + }, + magenta: function (str) { + return '\x1b[35m' + str + reset; + }, + cyan: function (str) { + return '\x1b[36m' + str + reset; + }, + yellow: function (str) { + return '\x1b[33m' + str + reset; + }, + black: function (str) { + return '\x1b[30m' + str + reset; + } + }; + const tagString = function (tags, world) { + tags = tags.map(tag => { + if (!world.tags.hasOwnProperty(tag)) { + return tag; + } - if (options.parentheses) { - this.parentheses().unwrap(); - } // remove "" punctuation + const c = world.tags[tag].color || 'blue'; + return cli[c](tag); + }); + return tags.join(', '); + }; //output some helpful stuff to the console - if (options.quotations || options.quotes) { - _methods.quotations(termList); - } // remove any un-necessary adverbs + const debug = function (doc) { + if (isClientSide()) { + logClientSide(doc); + return doc; + } + console.log(cli.blue('=====')); + doc.list.forEach(p => { + console.log(cli.blue(' -----')); + let terms = p.terms(); + terms.forEach(t => { + let tags = Object.keys(t.tags); + let text = t.text || '-'; - if (options.adverbs) { - _methods.adverbs(this); - } // --Heavy methods-- - // `cory hart's -> cory hart' + if (t.implicit) { + text = '[' + t.implicit + ']'; + } + { + text = cli.yellow(text); + } + let word = "'" + text + "'"; + word = padEnd(word, 18); + let str = cli.blue(' | ') + word + ' - ' + tagString(tags, doc.world); + console.log(str); + }); + }); + console.log(''); + return doc; + }; - if (options.possessive || options.possessives) { - this.possessives().strip(); - } // 'he walked' -> 'he walk' + module.exports = debug; + })(_debug); + const topk$1 = function (doc) { + let list = doc.json({ + text: false, + terms: false, + reduced: true + }); // combine them - if (options.verbs) { - this.verbs().toInfinitive(); - } // 'three dogs' -> 'three dog' + let obj = {}; + list.forEach(o => { + if (!obj[o.reduced]) { + o.count = 0; + obj[o.reduced] = o; + } + obj[o.reduced].count += 1; + }); + let arr = Object.keys(obj).map(k => obj[k]); // sort them - if (options.nouns || options.plurals) { - this.nouns().toSingular(); - } // remove 'Mr.' from 'Mr John Smith' + arr.sort((a, b) => { + if (a.count > b.count) { + return -1; + } else if (a.count < b.count) { + return 1; + } + return 0; + }); + return arr; + }; - if (options.honorifics) { - this.remove('#Honorific'); - } + var _topk = topk$1; + const debug = _debug.exports; + const topk = _topk; + /** pretty-print the current document and its tags */ - return this; -}; + _03Out.debug = function () { + debug(this); + return this; + }; + /** some named output formats */ -var _02Normalize = { - normalize: normalize -}; -var _03Split = createCommonjsModule(function (module, exports) { - /** return a Document with three parts for every match - * seperate everything before the word, as a new phrase - */ - exports.splitOn = function (reg) { - // if there's no match, split parent, instead - if (!reg) { - var parent = this.parent(); - return parent.splitOn(this); - } //start looking for a match.. - - - var regs = matchSyntax(reg); - var matches = []; - this.list.forEach(function (p) { - var foundEm = p.match(regs); //no match here, add full sentence - - if (foundEm.length === 0) { - matches.push(p); - return; - } // we found something here. + _03Out.out = function (method) { + if (method === 'text') { + return this.text(); + } + if (method === 'normal') { + return this.text('normal'); + } - var carry = p; - foundEm.forEach(function (found) { - var parts = carry.splitOn(found); // add em in + if (method === 'json') { + return this.json(); + } - if (parts.before) { - matches.push(parts.before); - } + if (method === 'offset' || method === 'offsets') { + return this.json({ + offset: true + }); + } - if (parts.match) { - matches.push(parts.match); - } // start matching now on the end + if (method === 'array') { + return this.json({ + terms: false + }).map(obj => obj.text).filter(str => str); + } + if (method === 'freq' || method === 'frequency') { + return topk(this); + } - carry = parts.after; - }); // add that last part + if (method === 'terms') { + let list = []; + this.json({ + text: false, + terms: { + text: true + } + }).forEach(obj => { + let terms = obj.terms.map(t => t.text); + terms = terms.filter(t => t); + list = list.concat(terms); + }); + return list; + } - if (carry) { - matches.push(carry); + if (method === 'tags') { + return this.list.map(p => { + return p.terms().reduce((h, t) => { + h[t.clean || t.implicit] = Object.keys(t.tags); + return h; + }, {}); + }); + } + + if (method === 'debug') { + debug(this); + return this; } - }); - return this.buildFrom(matches); - }; - /** return a Document with two parts for every match - * seperate everything after the word, as a new phrase - */ + return this.text(); + }; - exports.splitAfter = function (reg) { - // if there's no match, split parent, instead - if (!reg) { - var parent = this.parent(); - return parent.splitAfter(this); - } // start looking for our matches + var _01Sort = {}; + const methods$9 = { + /** alphabetical order */ + alpha: (a, b) => { + let left = a.text('clean'); + let right = b.text('clean'); + if (left < right) { + return -1; + } - var regs = matchSyntax(reg); - var matches = []; - this.list.forEach(function (p) { - var foundEm = p.match(regs); //no match here, add full sentence + if (left > right) { + return 1; + } - if (foundEm.length === 0) { - matches.push(p); - return; - } // we found something here. + return 0; + }, + /** count the # of characters of each match */ + length: (a, b) => { + let left = a.text().trim().length; + let right = b.text().trim().length; - var carry = p; - foundEm.forEach(function (found) { - var parts = carry.splitOn(found); // add em in + if (left < right) { + return 1; + } - if (parts.before && parts.match) { - // merge these two together - parts.before.length += parts.match.length; - matches.push(parts.before); - } else if (parts.match) { - matches.push(parts.match); - } // start matching now on the end + if (left > right) { + return -1; + } + return 0; + }, - carry = parts.after; - }); // add that last part + /** count the # of terms in each match */ + wordCount: (a, b) => { + let left = a.wordCount(); + let right = b.wordCount(); - if (carry) { - matches.push(carry); - } - }); - return this.buildFrom(matches); - }; + if (left < right) { + return 1; + } - exports.split = exports.splitAfter; //i guess? + if (left > right) { + return -1; + } - /** return a Document with two parts for every match */ + return 0; + } + }; + /** sort by # of duplicates in the document*/ - exports.splitBefore = function (reg) { - // if there's no match, split parent, instead - if (!reg) { - var parent = this.parent(); - return parent.splitBefore(this); - } //start looking for a match.. + const byFreq = function (doc) { + let counts = {}; + const options = { + case: true, + punctuation: false, + whitespace: true, + unicode: true + }; + doc.list.forEach(p => { + let str = p.text(options); + counts[str] = counts[str] || 0; + counts[str] += 1; + }); // sort by freq + + doc.list.sort((a, b) => { + let left = counts[a.text(options)]; + let right = counts[b.text(options)]; + + if (left < right) { + return 1; + } + if (left > right) { + return -1; + } - var regs = matchSyntax(reg); - var matches = []; - this.list.forEach(function (p) { - var foundEm = p.match(regs); //no match here, add full sentence + return 0; + }); + return doc; + }; // order results 'chronologically', or document-order - if (foundEm.length === 0) { - matches.push(p); - return; - } // we found something here. + const sortSequential = function (doc) { + let order = {}; + doc.json({ + terms: { + offset: true + } + }).forEach(o => { + order[o.terms[0].id] = o.terms[0].offset.start; + }); + doc.list = doc.list.sort((a, b) => { + if (order[a.start] > order[b.start]) { + return 1; + } else if (order[a.start] < order[b.start]) { + return -1; + } - var carry = p; - foundEm.forEach(function (found) { - var parts = carry.splitOn(found); // add before part in + return 0; + }); + return doc; + }; //aliases - if (parts.before) { - matches.push(parts.before); - } // merge match+after + methods$9.alphabetical = methods$9.alpha; + methods$9.wordcount = methods$9.wordCount; // aliases for sequential ordering - if (parts.match && parts.after) { - parts.match.length += parts.after.length; - } // start matching now on the end + const seqNames = { + index: true, + sequence: true, + seq: true, + sequential: true, + chron: true, + chronological: true + }; + /** re-arrange the order of the matches (in place) */ + _01Sort.sort = function (input) { + input = input || 'alpha'; //do this one up-front - carry = parts.match; - }); // add that last part + if (input === 'freq' || input === 'frequency' || input === 'topk') { + return byFreq(this); + } - if (carry) { - matches.push(carry); + if (seqNames.hasOwnProperty(input)) { + return sortSequential(this); } - }); - return this.buildFrom(matches); - }; - /** split a document into labeled sections */ + input = methods$9[input] || input; // apply sort method on each phrase + + if (typeof input === 'function') { + this.list = this.list.sort(input); + return this; + } - exports.segment = function (regs, options) { - regs = regs || {}; - options = options || { - text: true + return this; }; - var doc = this; - var keys = Object.keys(regs); // split em + /** reverse the order of the matches, but not the words */ - keys.forEach(function (k) { - doc = doc.splitOn(k); - }); //add labels for each section - doc.list.forEach(function (p) { - for (var i = 0; i < keys.length; i += 1) { - if (p.has(keys[i])) { - p.segment = regs[keys[i]]; - return; - } - } - }); - return doc.list.map(function (p) { - var res = p.json(options); - res.segment = p.segment || null; - return res; - }); - }; -}); + _01Sort.reverse = function () { + let list = [].concat(this.list); + list = list.reverse(); + return this.buildFrom(list); + }; + /** remove any duplicate matches */ -var eachTerm = function eachTerm(doc, fn) { - var world = doc.world; - doc.list.forEach(function (p) { - p.terms().forEach(function (t) { - return t[fn](world); - }); - }); - return doc; -}; -/** turn every letter of every term to lower-cse */ + _01Sort.unique = function () { + let list = [].concat(this.list); + let obj = {}; + list = list.filter(p => { + let str = p.text('reduced').trim() || p.text('implicit').trim(); -var toLowerCase = function toLowerCase() { - return eachTerm(this, 'toLowerCase'); -}; -/** turn every letter of every term to upper case */ + if (obj.hasOwnProperty(str) === true) { + return false; + } + obj[str] = true; + return true; + }); + return this.buildFrom(list); + }; -var toUpperCase = function toUpperCase() { - return eachTerm(this, 'toUpperCase'); -}; -/** upper-case the first letter of each term */ + var _02Normalize = {}; + const killUnicode = unicode_1; + const isPunct = /[\[\]{}⟨⟩:,،、‒–—―…‹›«»‐\-;\/⁄·*\•^†‡°¡¿※№÷׺ª%‰=‱¶§~|‖¦©℗®℠™¤₳฿]/g; + const quotes = /['‘’“”"′″‴]+/g; + const methods$8 = { + // cleanup newlines and extra spaces + whitespace: function (doc) { + let termArr = doc.list.map(ts => ts.terms()); + termArr.forEach((terms, o) => { + terms.forEach((t, i) => { + // keep dashes between words + if (t.hasDash() === true) { + t.post = ' - '; + return; + } // remove existing spaces -var toTitleCase = function toTitleCase() { - return eachTerm(this, 'toTitleCase'); -}; -/** remove whitespace and title-case each term */ + t.pre = t.pre.replace(/\s/g, ''); + t.post = t.post.replace(/\s/g, ''); //last word? ensure there's a next sentence. + if (terms.length - 1 === i && !termArr[o + 1]) { + return; + } // no extra spaces for contractions -var toCamelCase = function toCamelCase() { - this.list.forEach(function (p) { - //remove whitespace - var terms = p.terms(); - terms.forEach(function (t, i) { - if (i !== 0) { - t.toTitleCase(); - } - if (i !== terms.length - 1) { - t.post = ''; - } - }); - }); // this.tag('#CamelCase', 'toCamelCase') + if (t.implicit && Boolean(t.text) === true) { + return; + } // no extra spaces for hyphenated words - return this; -}; -var _04Case = { - toLowerCase: toLowerCase, - toUpperCase: toUpperCase, - toTitleCase: toTitleCase, - toCamelCase: toCamelCase -}; -/** add this punctuation or whitespace before each match: */ + if (t.hasHyphen() === true) { + return; + } -var _05Whitespace = createCommonjsModule(function (module, exports) { - exports.pre = function (str, concat) { - if (str === undefined) { - return this.list[0].terms(0).pre; - } + t.post += ' '; + }); + }); + }, + punctuation: function (termList) { + termList.forEach(t => { + // space between hyphenated words + if (t.hasHyphen() === true) { + t.post = ' '; + } - this.list.forEach(function (p) { - var term = p.terms(0); + t.pre = t.pre.replace(isPunct, ''); + t.post = t.post.replace(isPunct, ''); // elipses - if (concat === true) { - term.pre += str; - } else { - term.pre = str; - } - }); - return this; - }; - /** add this punctuation or whitespace after each match: */ + t.post = t.post.replace(/\.\.\./, ''); // only allow one exclamation + if (/!/.test(t.post) === true) { + t.post = t.post.replace(/!/g, ''); + t.post = '!' + t.post; + } // only allow one question mark - exports.post = function (str, concat) { - // return array of post strings - if (str === undefined) { - return this.list.map(function (p) { - var terms = p.terms(); - var term = terms[terms.length - 1]; - return term.post; - }); - } // set post string on all ends + if (/\?/.test(t.post) === true) { + t.post = t.post.replace(/[\?!]*/, ''); + t.post = '?' + t.post; + } + }); + }, + unicode: function (termList) { + termList.forEach(t => { + if (t.isImplicit() === true) { + return; + } - this.list.forEach(function (p) { - var terms = p.terms(); - var term = terms[terms.length - 1]; + t.text = killUnicode(t.text); + }); + }, + quotations: function (termList) { + termList.forEach(t => { + t.post = t.post.replace(quotes, ''); + t.pre = t.pre.replace(quotes, ''); + }); + }, + adverbs: function (doc) { + doc.match('#Adverb').not('(not|nary|seldom|never|barely|almost|basically|so)').remove(); + }, + // remove the '.' from 'Mrs.' (safely) + abbreviations: function (doc) { + doc.list.forEach(ts => { + let terms = ts.terms(); + terms.forEach((t, i) => { + if (t.tags.Abbreviation === true && terms[i + 1]) { + t.post = t.post.replace(/^\./, ''); + } + }); + }); + } + }; + var _methods = methods$8; + const methods$7 = _methods; + const defaults = { + // light + whitespace: true, + unicode: true, + punctuation: true, + emoji: true, + acronyms: true, + abbreviations: true, + // medium + case: false, + contractions: false, + parentheses: false, + quotations: false, + adverbs: false, + // heavy (loose legibility) + possessives: false, + verbs: false, + nouns: false, + honorifics: false // pronouns: true, - if (concat === true) { - term.post += str; - } else { - term.post = str; + }; + const mapping = { + light: {}, + medium: { + case: true, + contractions: true, + parentheses: true, + quotations: true, + adverbs: true } + }; + mapping.heavy = Object.assign({}, mapping.medium, { + possessives: true, + verbs: true, + nouns: true, + honorifics: true }); - return this; - }; - /** remove start and end whitespace */ + /** common ways to clean-up the document, and reduce noise */ + _02Normalize.normalize = function (options) { + options = options || {}; // support named forms - exports.trim = function () { - this.list = this.list.map(function (p) { - return p.trim(); - }); - return this; - }; - /** connect words with hyphen, and remove whitespace */ + if (typeof options === 'string') { + options = mapping[options] || {}; + } // set defaults - exports.hyphenate = function () { - this.list.forEach(function (p) { - var terms = p.terms(); //remove whitespace + options = Object.assign({}, defaults, options); // clear the cache - terms.forEach(function (t, i) { - if (i !== 0) { - t.pre = ''; - } + this.uncache(); + let termList = this.termList(); // lowercase things - if (terms[i + 1]) { - t.post = '-'; - } - }); - }); - return this; - }; - /** remove hyphens between words, and set whitespace */ + if (options.case) { + this.toLowerCase(); + } //whitespace - exports.dehyphenate = function () { - var hasHyphen = /(-|–|—)/; - this.list.forEach(function (p) { - var terms = p.terms(); //remove whitespace + if (options.whitespace) { + methods$7.whitespace(this); + } // unicode: é -> e - terms.forEach(function (t) { - if (hasHyphen.test(t.post)) { - t.post = ' '; - } - }); - }); - return this; - }; - exports.deHyphenate = exports.dehyphenate; - /** add quotations around these matches */ - - exports.toQuotations = function (start, end) { - start = start || "\""; - end = end || "\""; - this.list.forEach(function (p) { - var terms = p.terms(); - terms[0].pre = start + terms[0].pre; - var last = terms[terms.length - 1]; - last.post = end + last.post; - }); - return this; - }; + if (options.unicode) { + methods$7.unicode(termList); + } //punctuation - keep sentence punctation, quotes, parenths - exports.toQuotation = exports.toQuotations; - /** add brackets around these matches */ - - exports.toParentheses = function (start, end) { - start = start || "("; - end = end || ")"; - this.list.forEach(function (p) { - var terms = p.terms(); - terms[0].pre = start + terms[0].pre; - var last = terms[terms.length - 1]; - last.post = end + last.post; - }); - return this; - }; -}); -/** make all phrases into one phrase */ + if (options.punctuation) { + methods$7.punctuation(termList); + } // remove ':)' -var join = function join(str) { - // clear the cache - this.uncache(); // make one large phrase - 'main' - var main = this.list[0]; - var before = main.length; - var removed = {}; + if (options.emoji) { + this.remove('(#Emoji|#Emoticon)'); + } // 'f.b.i.' -> 'FBI' - for (var i = 1; i < this.list.length; i++) { - var p = this.list[i]; - removed[p.start] = true; - var term = main.lastTerm(); // add whitespace between them - if (str) { - term.post += str; - } // main -> p + if (options.acronyms) { + this.acronyms().strip(); // .toUpperCase() + } // remove period from abbreviations - term.next = p.start; // main <- p + if (options.abbreviations) { + methods$7.abbreviations(this); + } // --Medium methods-- + // `isn't` -> 'is not' - p.terms(0).prev = term.id; - main.length += p.length; - main.cache = {}; - } // parents are bigger than than their children. - // when we increase a child, we increase their parent too. + if (options.contraction || options.contractions) { + this.contractions().expand(); + } // '(word)' -> 'word' - var increase = main.length - before; - this.parents().forEach(function (doc) { - // increase length on each effected phrase - doc.list.forEach(function (p) { - var terms = p.terms(); - for (var _i = 0; _i < terms.length; _i++) { - if (terms[_i].id === main.start) { - p.length += increase; - break; - } - } + if (options.parentheses) { + this.parentheses().unwrap(); + } // remove "" punctuation - p.cache = {}; - }); // remove redundant phrases now - doc.list = doc.list.filter(function (p) { - return removed[p.start] !== true; - }); - }); // return one major phrase + if (options.quotations || options.quotes) { + methods$7.quotations(termList); + } // remove any un-necessary adverbs - return this.buildFrom([main]); -}; -var _06Join = { - join: join -}; -var postPunct = /[,\)"';:\-–—\.…]/; // const irregulars = { -// 'will not': `won't`, -// 'i am': `i'm`, -// } + if (options.adverbs) { + methods$7.adverbs(this); + } // --Heavy methods-- + // `cory hart's -> cory hart' -var setContraction = function setContraction(m, suffix) { - if (!m.found) { - return; - } - var terms = m.termList(); //avoid any problematic punctuation + if (options.possessive || options.possessives) { + this.possessives().strip(); + } // 'he walked' -> 'he walk' - for (var i = 0; i < terms.length - 1; i++) { - var t = terms[i]; - if (postPunct.test(t.post)) { - return; - } - } // set them as implict + if (options.verbs) { + this.verbs().toInfinitive(); + } // 'three dogs' -> 'three dog' - terms.forEach(function (t) { - t.implicit = t.clean; - }); // perform the contraction + if (options.nouns || options.plurals) { + this.nouns().toSingular(); + } // remove 'Mr.' from 'Mr John Smith' - terms[0].text += suffix; // clean-up the others - terms.slice(1).forEach(function (t) { - t.text = ''; - }); + if (options.honorifics) { + this.remove('#Honorific'); + } - for (var _i = 0; _i < terms.length - 1; _i++) { - var _t = terms[_i]; - _t.post = _t.post.replace(/ /, ''); - } -}; -/** turn 'i am' into i'm */ + return this; + }; + var _03Split = {}; -var contract = function contract() { - var doc = this.not('@hasContraction'); // we are -> we're + (function (exports) { + const parseSyntax = matchSyntax; + /** return a Document with three parts for every match + * seperate everything before the word, as a new phrase + */ - var m = doc.match('(we|they|you) are'); - setContraction(m, "'re"); // they will -> they'll + exports.splitOn = function (reg) { + // if there's no match, split parent, instead + if (!reg) { + let parent = this.parent(); + return parent.splitOn(this); + } //start looking for a match.. - m = doc.match('(he|she|they|it|we|you) will'); - setContraction(m, "'ll"); // she is -> she's - m = doc.match('(he|she|they|it|we) is'); - setContraction(m, "'s"); // spencer is -> spencer's + let regs = parseSyntax(reg); + let matches = []; + this.list.forEach(p => { + let foundEm = p.match(regs); //no match here, add full sentence - m = doc.match('#Person is'); - setContraction(m, "'s"); // spencer would -> spencer'd + if (foundEm.length === 0) { + matches.push(p); + return; + } // we found something here. - m = doc.match('#Person would'); - setContraction(m, "'d"); // would not -> wouldn't - m = doc.match('(is|was|had|would|should|could|do|does|have|has|can) not'); - setContraction(m, "n't"); // i have -> i've + let carry = p; + foundEm.forEach(found => { + let parts = carry.splitOn(found); // add em in - m = doc.match('(i|we|they) have'); - setContraction(m, "'ve"); // would have -> would've + if (parts.before) { + matches.push(parts.before); + } - m = doc.match('(would|should|could) have'); - setContraction(m, "'ve"); // i am -> i'm + if (parts.match) { + matches.push(parts.match); + } // start matching now on the end - m = doc.match('i am'); - setContraction(m, "'m"); // going to -> gonna - m = doc.match('going to'); - return this; -}; + carry = parts.after; + }); // add that last part -var _07Contract = { - contract: contract -}; -var methods$4 = Object.assign({}, _01Utils, _02Accessors, _03Match, _04Tag, _05Loops, _06Lookup, _07Cache, _01Replace, _02Insert, _01Text, _02Json, _03Out, _01Sort, _02Normalize, _03Split, _04Case, _05Whitespace, _06Join, _07Contract); -var methods$3 = {}; // allow helper methods like .adjectives() and .adverbs() + if (carry) { + matches.push(carry); + } + }); + return this.buildFrom(matches); + }; + /** return a Document with two parts for every match + * seperate everything after the word, as a new phrase + */ -var arr = [['terms', '.'], ['hyphenated', '@hasHyphen .'], ['adjectives', '#Adjective'], ['hashTags', '#HashTag'], ['emails', '#Email'], ['emoji', '#Emoji'], ['emoticons', '#Emoticon'], ['atMentions', '#AtMention'], ['urls', '#Url'], ['adverbs', '#Adverb'], ['pronouns', '#Pronoun'], ['conjunctions', '#Conjunction'], ['prepositions', '#Preposition']]; -arr.forEach(function (a) { - methods$3[a[0]] = function (n) { - var m = this.match(a[1]); - if (typeof n === 'number') { - m = m.get(n); - } + exports.splitAfter = function (reg) { + // if there's no match, split parent, instead + if (!reg) { + let parent = this.parent(); + return parent.splitAfter(this); + } // start looking for our matches - return m; - }; -}); // aliases -methods$3.emojis = methods$3.emoji; -methods$3.atmentions = methods$3.atMentions; -methods$3.words = methods$3.terms; -/** return anything tagged as a phone number */ + let regs = parseSyntax(reg); + let matches = []; + this.list.forEach(p => { + let foundEm = p.match(regs); //no match here, add full sentence -methods$3.phoneNumbers = function (n) { - var m = this.splitAfter('@hasComma'); - m = m.match('#PhoneNumber+'); + if (foundEm.length === 0) { + matches.push(p); + return; + } // we found something here. - if (typeof n === 'number') { - m = m.get(n); - } - return m; -}; -/** Deprecated: please use compromise-numbers plugin */ + let carry = p; + foundEm.forEach(found => { + let parts = carry.splitOn(found); // add em in + if (parts.before && parts.match) { + // merge these two together + parts.before.length += parts.match.length; + matches.push(parts.before); + } else if (parts.match) { + matches.push(parts.match); + } // start matching now on the end -methods$3.money = function (n) { - var m = this.match('#Money #Currency?'); - if (typeof n === 'number') { - m = m.get(n); - } + carry = parts.after; + }); // add that last part - return m; -}; -/** return all cities, countries, addresses, and regions */ + if (carry) { + matches.push(carry); + } + }); + return this.buildFrom(matches); + }; + exports.split = exports.splitAfter; //i guess? -methods$3.places = function (n) { - // don't split 'paris, france' - var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas + /** return a Document with two parts for every match */ - var m = this.not(keep).splitAfter('@hasComma'); // combine them back together + exports.splitBefore = function (reg) { + // if there's no match, split parent, instead + if (!reg) { + let parent = this.parent(); + return parent.splitBefore(this); + } //start looking for a match.. - m = m.concat(keep); - m.sort('index'); - m = m.match('#Place+'); - if (typeof n === 'number') { - m = m.get(n); - } + let regs = parseSyntax(reg); + let matches = []; + this.list.forEach(p => { + let foundEm = p.match(regs); //no match here, add full sentence - return m; -}; -/** return all schools, businesses and institutions */ + if (foundEm.length === 0) { + matches.push(p); + return; + } // we found something here. -methods$3.organizations = function (n) { - var m = this.clauses(); - m = m.match('#Organization+'); + let carry = p; + foundEm.forEach(found => { + let parts = carry.splitOn(found); // add before part in + + if (parts.before) { + matches.push(parts.before); + } // merge match+after - if (typeof n === 'number') { - m = m.get(n); - } - return m; -}; //combine them with .topics() method + if (parts.match && parts.after) { + parts.match.length += parts.after.length; + } // start matching now on the end -methods$3.entities = function (n) { - var r = this.clauses(); // Find people, places, and organizations + carry = parts.match; + }); // add that last part - var yup = r.people(); - yup = yup.concat(r.places()); - yup = yup.concat(r.organizations()); - var ignore = ['someone', 'man', 'woman', 'mother', 'brother', 'sister', 'father']; - yup = yup.not(ignore); //return them to normal ordering + if (carry) { + matches.push(carry); + } + }); + return this.buildFrom(matches); + }; + /** split a document into labeled sections */ - yup.sort('sequence'); // yup.unique() //? not sure - if (typeof n === 'number') { - yup = yup.get(n); - } + exports.segment = function (regs, options) { + regs = regs || {}; + options = options || { + text: true + }; + let doc = this; + let keys = Object.keys(regs); // split em - return yup; -}; //aliases + keys.forEach(k => { + doc = doc.splitOn(k); + }); //add labels for each section + doc.list.forEach(p => { + for (let i = 0; i < keys.length; i += 1) { + if (p.has(keys[i])) { + p.segment = regs[keys[i]]; + return; + } + } + }); + return doc.list.map(p => { + let res = p.json(options); + res.segment = p.segment || null; + return res; + }); + }; + })(_03Split); -methods$3.things = methods$3.entities; -methods$3.topics = methods$3.entities; -var _simple = methods$3; -var underOver = /^(under|over)-?/; -/** match a word-sequence, like 'super bowl' in the lexicon */ + var _04Case = {}; -var tryMultiple = function tryMultiple(terms, t, world) { - var lex = world.words; //try a two-word version + const eachTerm = function (doc, fn) { + let world = doc.world; + doc.list.forEach(p => { + p.terms().forEach(t => t[fn](world)); + }); + return doc; + }; + /** turn every letter of every term to lower-cse */ - var txt = terms[t].reduced + ' ' + terms[t + 1].reduced; - if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) { - terms[t].tag(lex[txt], 'lexicon-two', world); - terms[t + 1].tag(lex[txt], 'lexicon-two', world); - return 1; - } //try a three-word version? + _04Case.toLowerCase = function () { + return eachTerm(this, 'toLowerCase'); + }; + /** turn every letter of every term to upper case */ - if (t + 2 < terms.length) { - txt += ' ' + terms[t + 2].reduced; + _04Case.toUpperCase = function () { + return eachTerm(this, 'toUpperCase'); + }; + /** upper-case the first letter of each term */ - if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) { - terms[t].tag(lex[txt], 'lexicon-three', world); - terms[t + 1].tag(lex[txt], 'lexicon-three', world); - terms[t + 2].tag(lex[txt], 'lexicon-three', world); - return 2; - } - } //try a four-word version? + _04Case.toTitleCase = function () { + return eachTerm(this, 'toTitleCase'); + }; + /** remove whitespace and title-case each term */ - if (t + 3 < terms.length) { - txt += ' ' + terms[t + 3].reduced; - if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) { - terms[t].tag(lex[txt], 'lexicon-four', world); - terms[t + 1].tag(lex[txt], 'lexicon-four', world); - terms[t + 2].tag(lex[txt], 'lexicon-four', world); - terms[t + 3].tag(lex[txt], 'lexicon-four', world); - return 3; - } - } + _04Case.toCamelCase = function () { + this.list.forEach(p => { + //remove whitespace + let terms = p.terms(); + terms.forEach((t, i) => { + if (i !== 0) { + t.toTitleCase(); + } - return 0; -}; -/** look at each word in our list of known-words */ + if (i !== terms.length - 1) { + t.post = ''; + } + }); + }); // this.tag('#CamelCase', 'toCamelCase') + return this; + }; -var checkLexicon = function checkLexicon(terms, world) { - var lex = world.words; - var hasCompound = world.hasCompound; // use reduced? - //go through each term, and check the lexicon + var _05Whitespace = {}; + /** add this punctuation or whitespace before each match: */ - for (var t = 0; t < terms.length; t += 1) { - var str = terms[t].clean; //is it the start of a compound word, like 'super bowl'? + (function (exports) { + exports.pre = function (str, concat) { + if (str === undefined) { + return this.list[0].terms(0).pre; + } - if (hasCompound[str] === true && t + 1 < terms.length) { - var foundWords = tryMultiple(terms, t, world); + this.list.forEach(p => { + let term = p.terms(0); - if (foundWords > 0) { - t += foundWords; //skip any already-found words + if (concat === true) { + term.pre += str; + } else { + term.pre = str; + } + }); + return this; + }; + /** add this punctuation or whitespace after each match: */ - continue; - } - } //try one-word lexicon + exports.post = function (str, concat) { + // return array of post strings + if (str === undefined) { + return this.list.map(p => { + let terms = p.terms(); + let term = terms[terms.length - 1]; + return term.post; + }); + } // set post string on all ends - if (lex[str] !== undefined && lex.hasOwnProperty(str) === true) { - terms[t].tag(lex[str], 'lexicon', world); - continue; - } // look at reduced version of term, too + this.list.forEach(p => { + let terms = p.terms(); + let term = terms[terms.length - 1]; - if (str !== terms[t].reduced && lex.hasOwnProperty(terms[t].reduced) === true) { - terms[t].tag(lex[terms[t].reduced], 'lexicon', world); - continue; - } // prefix strip: try to match 'take' for 'undertake' + if (concat === true) { + term.post += str; + } else { + term.post = str; + } + }); + return this; + }; + /** remove start and end whitespace */ - if (underOver.test(str) === true) { - var noPrefix = str.replace(underOver, ''); + exports.trim = function () { + this.list = this.list.map(p => p.trim()); + return this; + }; + /** connect words with hyphen, and remove whitespace */ - if (lex.hasOwnProperty(noPrefix) === true) { - terms[t].tag(lex[noPrefix], 'noprefix-lexicon', world); - } - } - } - return terms; -}; + exports.hyphenate = function () { + this.list.forEach(p => { + let terms = p.terms(); //remove whitespace -var _01Lexicon = checkLexicon; -var apostrophes = /[\'‘’‛‵′`´]$/; -var perSec = /^(m|k|cm|km|m)\/(s|h|hr)$/; // '5 k/m' -// + terms.forEach((t, i) => { + if (i !== 0) { + t.pre = ''; + } -var checkPunctuation = function checkPunctuation(terms, i, world) { - var term = terms[i]; //check hyphenation - // if (term.post.indexOf('-') !== -1 && terms[i + 1] && terms[i + 1].pre === '') { - // term.tag('Hyphenated', 'has-hyphen', world) - // } - // support 'head-over' - // if (term.hasHyphen() === true) { - // console.log(term.tags) - // } - // console.log(term.hasHyphen(), term.text) - //an end-tick (trailing apostrophe) - flanders', or Carlos' + if (terms[i + 1]) { + t.post = '-'; + } + }); + }); + return this; + }; + /** remove hyphens between words, and set whitespace */ - if (apostrophes.test(term.text)) { - if (!apostrophes.test(term.pre) && !apostrophes.test(term.post) && term.clean.length > 2) { - var endChar = term.clean[term.clean.length - 2]; //flanders' - if (endChar === 's') { - term.tag(['Possessive', 'Noun'], 'end-tick', world); - return; - } //chillin' + exports.dehyphenate = function () { + const hasHyphen = /(-|–|—)/; + this.list.forEach(p => { + let terms = p.terms(); //remove whitespace + terms.forEach(t => { + if (hasHyphen.test(t.post)) { + t.post = ' '; + } + }); + }); + return this; + }; - if (endChar === 'n') { - term.tag(['Gerund'], 'chillin', world); - } - } - } // '5 km/s' - - - if (perSec.test(term.text)) { - term.tag('Unit', 'per-sec', world); - } // 'NASA' is, but not 'i REALLY love it.' - // if (term.tags.Noun === true && isAcronym(term, world)) { - // term.tag('Acronym', 'acronym-step', world) - // term.tag('Noun', 'acronym-infer', world) - // } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) { - // term.tag('Acronym', 'one-letter-acronym', world) - // term.tag('Noun', 'one-letter-infer', world) - // } + exports.deHyphenate = exports.dehyphenate; + /** add quotations around these matches */ + + exports.toQuotations = function (start, end) { + start = start || "\""; + end = end || "\""; + this.list.forEach(p => { + let terms = p.terms(); + terms[0].pre = start + terms[0].pre; + let last = terms[terms.length - 1]; + last.post = end + last.post; + }); + return this; + }; -}; + exports.toQuotation = exports.toQuotations; + /** add brackets around these matches */ + + exports.toParentheses = function (start, end) { + start = start || "("; + end = end || ")"; + this.list.forEach(p => { + let terms = p.terms(); + terms[0].pre = start + terms[0].pre; + let last = terms[terms.length - 1]; + last.post = end + last.post; + }); + return this; + }; + })(_05Whitespace); -var _02Punctuation = checkPunctuation; //these are regexes applied to t.text, instead of t.clean -// order matters. - -var startsWith = [//web tags -[/^[\w\.]+@[\w\.]+\.[a-z]{2,3}$/, 'Email'], //not fancy -[/^#[a-z0-9_\u00C0-\u00FF]{2,}$/, 'HashTag'], [/^@1?[0-9](am|pm)$/i, 'Time'], // @6pm -[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i, 'Time'], // @6:30 -[/^@\w{2,}$/, 'AtMention'], //@spencermountain -[/^(https?:\/\/|www\.)\w+\.[a-z]{2,3}/, 'Url'], //with http/www -[/^[\w./]+\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/, 'Url'], //http://mostpopularwebsites.net/top-level-domain -//dates/times -[/^'[0-9]{2}$/, 'Year'], //like '97 -[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/, 'Time'], //4:32:32 -[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i, 'Time'], //4pm -[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i, 'Time'], //4:00pm -[/^[PMCE]ST$/, 'Time'], //PST, time zone abbrevs -[/^utc ?[+-]?[0-9]+?$/, 'Time'], //UTC 8+ -[/^[a-z0-9]*? o\'?clock$/, 'Time'], //3 oclock -[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i, 'Date'], // 2020-03-02T00:00:00.000Z -[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/, 'Date'], // 03-02-89 -[/^[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,4}$/, 'Date'], // 03/02/89 -[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i, 'Date'], // 03-March-89 -[/^gmt[+-][0-9][0-9]?$/i, 'Timezone'], // gmt-3 -[/^utc[+-][0-9][0-9]?$/i, 'Timezone'], // utc-3 -//names -[/^ma?c\'.*/, 'LastName'], //mc'adams -[/^o\'[drlkn].*/, 'LastName'], //o'douggan -[/^ma?cd[aeiou]/, 'LastName'], //macdonell - Last patterns https://en.wikipedia.org/wiki/List_of_family_name_affixes -//slang things -[/^(lol)+[sz]$/, 'Expression'], //lol -[/^woo+a*?h?$/, 'Expression'], //whoaa, wooo -[/^(un|de|re)\\-[a-z\u00C0-\u00FF]{2}/, 'Verb'], // [/^(over|under)[a-z]{2,}/, 'Adjective'], -[/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/, 'Date'], // 03-02-89 -//phone numbers -[/^[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //589-3809 -[/^(\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //632-589-3809 -//money -// currency regex -// /[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6] -//like $5.30 -[/^[-+]?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(k|m|b|bn)?\+?$/, ['Money', 'Value']], //like 5.30$ -[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]\+?$/, ['Money', 'Value']], //like $400usd -[/^[-+]?[\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value']], //numbers -// 50 | -50 | 3.23 | 5,999.0 | 10+ -[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/, ['Cardinal', 'NumericValue']], [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|r?th)$/, ['Ordinal', 'NumericValue']], // .73th -[/^\.[0-9]+\+?$/, ['Cardinal', 'NumericValue']], //percent -[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?%\+?$/, ['Percent', 'Cardinal', 'NumericValue']], //7% .. -[/^\.[0-9]+%$/, ['Percent', 'Cardinal', 'NumericValue']], //.7% .. -//fraction -[/^[0-9]{1,4}\/[0-9]{1,4}(st|nd|rd|th)?s?$/, ['Fraction', 'NumericValue']], //3/2ths -//range -[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/, ['Value', 'NumberRange']], //7th-8th -//time-range -[/^[0-9][0-9]?(:[0-9][0-9])?(am|pm)?[-–—][0-9][0-9]?(:[0-9][0-9])?(am|pm)?$/, ['Time', 'NumberRange']], //7pm-8:30 -//with unit -[/^[0-9.]+([a-z]{1,4})$/, 'Value'] //like 5tbsp -//ordinal -// [/^[0-9][0-9,.]*(st|nd|rd|r?th)$/, ['NumericValue', 'Ordinal']], //like 5th -// [/^[0-9]+(st|nd|rd|th)$/, 'Ordinal'], //like 5th -]; -var romanNumeral = /^[IVXLCDM]{2,}$/; -var romanNumValid = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/; // https://stackoverflow.com/a/267405/168877 -//try each of the ^regexes in our list - -var checkRegex$1 = function checkRegex(term, world) { - var str = term.text; // do them all! - - for (var r = 0; r < startsWith.length; r += 1) { - if (startsWith[r][0].test(str) === true) { - term.tagSafe(startsWith[r][1], 'prefix #' + r, world); - break; - } - } // do some more! - //roman numberals - XVII + var _06Join = {}; + /** make all phrases into one phrase */ + _06Join.join = function (str) { + // clear the cache + this.uncache(); // make one large phrase - 'main' - if (term.text.length >= 2 && romanNumeral.test(str) && romanNumValid.test(str)) { - term.tag('RomanNumeral', 'xvii', world); - } -}; + let main = this.list[0]; + let before = main.length; + let removed = {}; -var _03Prefixes = checkRegex$1; //regex suffix patterns and their most common parts of speech, -//built using wordnet, by spencer kelly. -//this mapping shrinks-down the uglified build - -var Adj$1 = 'Adjective'; -var Inf$1 = 'Infinitive'; -var Pres$1 = 'PresentTense'; -var Sing$1 = 'Singular'; -var Past$1 = 'PastTense'; -var Adverb = 'Adverb'; -var Exp = 'Expression'; -var Actor$1 = 'Actor'; -var Verb = 'Verb'; -var Noun$1 = 'Noun'; -var Last$1 = 'LastName'; //the order here matters. -//regexes indexed by mandated last-character - -var endsWith = { - a: [[/.[aeiou]na$/, Noun$1], [/.[oau][wvl]ska$/, Last$1], //polish (female) - [/.[^aeiou]ica$/, Sing$1], [/^([hyj]a)+$/, Exp] //hahah - ], - c: [[/.[^aeiou]ic$/, Adj$1]], - d: [//==-ed== - //double-consonant - [/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/, Past$1], //popped, planned - //double-vowel - [/.[aeo]{2}[bdgmnprvz]ed$/, Past$1], //beeped, mooned, veered - //-hed - [/.[aeiou][sg]hed$/, Past$1], //stashed, sighed - //-rd - [/.[aeiou]red$/, Past$1], //stored - [/.[aeiou]r?ried$/, Past$1], //buried - //-led - [/.[bcdgtr]led$/, Past$1], //startled, rumbled - [/.[aoui]f?led$/, Past$1], //impaled, stifled - //-sed - [/.[iao]sed$/, Past$1], //franchised - [/[aeiou]n?[cs]ed$/, Past$1], //laced, lanced - //-med - [/[aeiou][rl]?[mnf]ed$/, Past$1], //warmed, attained, engulfed - //-ked - [/[aeiou][ns]?c?ked$/, Past$1], //hooked, masked - //-ged - [/[aeiou][nl]?ged$/, Past$1], //engaged - //-ted - [/.[tdbwxz]ed$/, Past$1], //bribed, boxed - [/[^aeiou][aeiou][tvx]ed$/, Past$1], //boxed - //-ied - [/.[cdlmnprstv]ied$/, Past$1], //rallied - [/[^aeiou]ard$/, Sing$1], //card - [/[aeiou][^aeiou]id$/, Adj$1], [/.[vrl]id$/, Adj$1]], - e: [[/.[lnr]ize$/, Inf$1], [/.[^aeiou]ise$/, Inf$1], [/.[aeiou]te$/, Inf$1], [/.[^aeiou][ai]ble$/, Adj$1], [/.[^aeiou]eable$/, Adj$1], [/.[ts]ive$/, Adj$1]], - h: [[/.[^aeiouf]ish$/, Adj$1], [/.v[iy]ch$/, Last$1], //east-europe - [/^ug?h+$/, Exp], //uhh - [/^uh[ -]?oh$/, Exp] //uhoh - ], - i: [[/.[oau][wvl]ski$/, Last$1] //polish (male) - ], - k: [[/^(k){2}$/, Exp] //kkkk - ], - l: [[/.[gl]ial$/, Adj$1], [/.[^aeiou]ful$/, Adj$1], [/.[nrtumcd]al$/, Adj$1], [/.[^aeiou][ei]al$/, Adj$1]], - m: [[/.[^aeiou]ium$/, Sing$1], [/[^aeiou]ism$/, Sing$1], [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm - [/^\d+ ?[ap]m$/, 'Date']], - n: [[/.[lsrnpb]ian$/, Adj$1], [/[^aeiou]ician$/, Actor$1], [/[aeiou][ktrp]in$/, 'Gerund'] // 'cookin', 'hootin' - ], - o: [[/^no+$/, Exp], //noooo - [/^(yo)+$/, Exp], //yoyo - [/^woo+[pt]?$/, Exp] //woo - ], - r: [[/.[bdfklmst]ler$/, 'Noun'], [/[aeiou][pns]er$/, Sing$1], [/[^i]fer$/, Inf$1], [/.[^aeiou][ao]pher$/, Actor$1], [/.[lk]er$/, 'Noun'], [/.ier$/, 'Comparative']], - t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj$1], [/[aeiou].*ist$/, Adj$1], [/^[a-z]et$/, Verb]], - s: [[/.[^aeiou]ises$/, Pres$1], [/.[rln]ates$/, Pres$1], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing$1], [/.[aeiou]sks$/, Pres$1], //masks - [/.[aeiou]kes$/, Pres$1], //bakes - [/[aeiou][^aeiou]is$/, Sing$1], [/[a-z]\'s$/, Noun$1], [/^yes+$/, Exp] //yessss - ], - v: [[/.[^aeiou][ai][kln]ov$/, Last$1] //east-europe - ], - y: [[/.[cts]hy$/, Adj$1], [/.[st]ty$/, Adj$1], [/.[gk]y$/, Adj$1], [/.[tnl]ary$/, Adj$1], [/.[oe]ry$/, Sing$1], [/[rdntkbhs]ly$/, Adverb], [/...lly$/, Adverb], [/[bszmp]{2}y$/, Adj$1], [/.(gg|bb|zz)ly$/, Adj$1], [/.[ai]my$/, Adj$1], [/[ea]{2}zy$/, Adj$1], [/.[^aeiou]ity$/, Sing$1]] -}; //just a foolish lookup of known suffixes - -var Adj = 'Adjective'; -var Inf = 'Infinitive'; -var Pres = 'PresentTense'; -var Sing = 'Singular'; -var Past = 'PastTense'; -var Avb = 'Adverb'; -var Plrl = 'Plural'; -var Actor = 'Actor'; -var Vb = 'Verb'; -var Noun = 'Noun'; -var Last = 'LastName'; -var Modal = 'Modal'; -var Place = 'Place'; // find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup - -var suffixMap = [null, //0 -null, //1 -{ - //2-letter - ea: Sing, - ia: Noun, - ic: Adj, - ly: Avb, - "'n": Vb, - "'t": Vb -}, { - //3-letter - oed: Past, - ued: Past, - xed: Past, - ' so': Avb, - "'ll": Modal, - "'re": 'Copula', - azy: Adj, - eer: Noun, - end: Vb, - ped: Past, - ffy: Adj, - ify: Inf, - ing: 'Gerund', - //likely to be converted to Adj after lexicon pass - ize: Inf, - lar: Adj, - mum: Adj, - nes: Pres, - nny: Adj, - oid: Adj, - ous: Adj, - que: Adj, - rol: Sing, - sis: Sing, - zes: Pres -}, { - //4-letter - amed: Past, - aped: Past, - ched: Past, - lked: Past, - nded: Past, - cted: Past, - dged: Past, - akis: Last, - //greek - cede: Inf, - chuk: Last, - //east-europe - czyk: Last, - //polish (male) - ects: Pres, - ends: Vb, - enko: Last, - //east-europe - ette: Sing, - fies: Pres, - fore: Avb, - gate: Inf, - gone: Adj, - ices: Plrl, - ints: Plrl, - ines: Plrl, - ions: Plrl, - less: Avb, - llen: Adj, - made: Adj, - nsen: Last, - //norway - oses: Pres, - ould: Modal, - some: Adj, - sson: Last, - //swedish male - tage: Inf, - teen: 'Value', - tion: Sing, - tive: Adj, - tors: Noun, - vice: Sing -}, { - //5-letter - tized: Past, - urned: Past, - eased: Past, - ances: Plrl, - bound: Adj, - ettes: Plrl, - fully: Avb, - ishes: Pres, - ities: Plrl, - marek: Last, - //polish (male) - nssen: Last, - //norway - ology: Noun, - ports: Plrl, - rough: Adj, - tches: Pres, - tieth: 'Ordinal', - tures: Plrl, - wards: Avb, - where: Avb -}, { - //6-letter - auskas: Last, - //lithuania - keeper: Actor, - logist: Actor, - teenth: 'Value' -}, { - //7-letter - opoulos: Last, - //greek - borough: Place, - //Hillsborough - sdottir: Last //swedish female - -}]; - -var endRegexs = function endRegexs(term, world) { - var str = term.clean; - var _char = str[str.length - 1]; - - if (endsWith.hasOwnProperty(_char) === true) { - var regs = endsWith[_char]; - - for (var r = 0; r < regs.length; r += 1) { - if (regs[r][0].test(str) === true) { - term.tagSafe(regs[r][1], "endReg ".concat(_char, " #").concat(r), world); - break; - } - } - } -}; //sweep-through all suffixes + for (let i = 1; i < this.list.length; i++) { + const p = this.list[i]; + removed[p.start] = true; + let term = main.lastTerm(); // add whitespace between them + if (str) { + term.post += str; + } // main -> p -var knownSuffixes = function knownSuffixes(term, world) { - var len = term.clean.length; - var max = 7; - if (len <= max) { - max = len - 1; - } + term.next = p.start; // main <- p - for (var i = max; i > 1; i -= 1) { - var str = term.clean.substr(len - i, len); + p.terms(0).prev = term.id; + main.length += p.length; + main.cache = {}; + } // parents are bigger than than their children. + // when we increase a child, we increase their parent too. - if (suffixMap[str.length].hasOwnProperty(str) === true) { - var tag = suffixMap[str.length][str]; - term.tagSafe(tag, 'suffix -' + str, world); - break; - } - } -}; //all-the-way-down! + let increase = main.length - before; + this.parents().forEach(doc => { + // increase length on each effected phrase + doc.list.forEach(p => { + let terms = p.terms(); -var checkRegex = function checkRegex(term, world) { - knownSuffixes(term, world); - endRegexs(term, world); -}; + for (let i = 0; i < terms.length; i++) { + if (terms[i].id === main.start) { + p.length += increase; + break; + } + } -var _04Suffixes = checkRegex; //just some of the most common emoticons -//faster than -//http://stackoverflow.com/questions/28077049/regex-matching-emoticons - -var emoticons = { - ':(': true, - ':)': true, - ':P': true, - ':p': true, - ':O': true, - ':3': true, - ':|': true, - ':/': true, - ':\\': true, - ':$': true, - ':*': true, - ':@': true, - ':-(': true, - ':-)': true, - ':-P': true, - ':-p': true, - ':-O': true, - ':-3': true, - ':-|': true, - ':-/': true, - ':-\\': true, - ':-$': true, - ':-*': true, - ':-@': true, - ':^(': true, - ':^)': true, - ':^P': true, - ':^p': true, - ':^O': true, - ':^3': true, - ':^|': true, - ':^/': true, - ':^\\': true, - ':^$': true, - ':^*': true, - ':^@': true, - '):': true, - '(:': true, - '$:': true, - '*:': true, - ')-:': true, - '(-:': true, - '$-:': true, - '*-:': true, - ')^:': true, - '(^:': true, - '$^:': true, - '*^:': true, - '<3': true, - ' removed[p.start] !== true); + }); // return one major phrase - if (raw.match(' ')) { - return false; - } //reasonably sized + return this.buildFrom([main]); + }; + var _07Contract = {}; + const postPunct = /[,\)"';:\-–—\.…]/; // const irregulars = { + // 'will not': `won't`, + // 'i am': `i'm`, + // } - if (raw.length > 35) { - return false; - } + const setContraction = function (m, suffix) { + if (!m.found) { + return; + } - return true; - } + let terms = m.termList(); //avoid any problematic punctuation - return false; -}; //check against emoticon whitelist + for (let i = 0; i < terms.length - 1; i++) { + const t = terms[i]; + if (postPunct.test(t.post)) { + return; + } + } // set them as implict -var isEmoticon = function isEmoticon(str) { - str = str.replace(/^[:;]/, ':'); //normalize the 'eyes' - return emoticons.hasOwnProperty(str); -}; + terms.forEach(t => { + t.implicit = t.clean; + }); // perform the contraction -var tagEmoji = function tagEmoji(term, world) { - var raw = term.pre + term.text + term.post; - raw = raw.trim(); //dont double-up on ending periods + terms[0].text += suffix; // clean-up the others - raw = raw.replace(/[.!?,]$/, ''); //test for :keyword: emojis + terms.slice(1).forEach(t => { + t.text = ''; + }); - if (isCommaEmoji(raw) === true) { - term.tag('Emoji', 'comma-emoji', world); - term.text = raw; - term.pre = term.pre.replace(':', ''); - term.post = term.post.replace(':', ''); - } //test for unicode emojis + for (let i = 0; i < terms.length - 1; i++) { + const t = terms[i]; + t.post = t.post.replace(/ /, ''); + } + }; + /** turn 'i am' into i'm */ - if (term.text.match(emojiReg)) { - term.tag('Emoji', 'unicode-emoji', world); - term.text = raw; - } //test for emoticon ':)' emojis + _07Contract.contract = function () { + let doc = this.not('@hasContraction'); // we are -> we're + let m = doc.match('(we|they|you) are'); + setContraction(m, "'re"); // they will -> they'll - if (isEmoticon(raw) === true) { - term.tag('Emoticon', 'emoticon-emoji', world); - term.text = raw; - } -}; + m = doc.match('(he|she|they|it|we|you) will'); + setContraction(m, "'ll"); // she is -> she's -var _05Emoji = tagEmoji; -var steps = { - lexicon: _01Lexicon, - punctuation: _02Punctuation, - regex: _03Prefixes, - suffix: _04Suffixes, - emoji: _05Emoji -}; //'lookups' look at a term by itself + m = doc.match('(he|she|they|it|we) is'); + setContraction(m, "'s"); // spencer is -> spencer's -var lookups = function lookups(doc, terms) { - var world = doc.world; //our list of known-words + m = doc.match('#Person is'); + setContraction(m, "'s"); // spencer would -> spencer'd - steps.lexicon(terms, world); //try these other methods + m = doc.match('#Person would'); + setContraction(m, "'d"); // would not -> wouldn't - for (var i = 0; i < terms.length; i += 1) { - var term = terms[i]; //or maybe some helpful punctuation + m = doc.match('(is|was|had|would|should|could|do|does|have|has|can) not'); + setContraction(m, "n't"); // i have -> i've - steps.punctuation(terms, i, world); //mostly prefix checks + m = doc.match('(i|we|they) have'); + setContraction(m, "'ve"); // would have -> would've - steps.regex(term, world); //maybe we can guess + m = doc.match('(would|should|could) have'); + setContraction(m, "'ve"); // i am -> i'm - steps.suffix(term, world); //emoji and emoticons + m = doc.match('i am'); + setContraction(m, "'m"); // going to -> gonna - steps.emoji(term, world); - } + m = doc.match('going to'); + return this; + }; - return doc; -}; + var methods$6 = Object.assign({}, _01Utils, _02Accessors, _03Match, _04Tag, _05Loops, _06Lookup, _07Cache, _01Replace, _02Insert, _01Text, _02Json, _03Out, _01Sort, _02Normalize, _03Split, _04Case, _05Whitespace, _06Join, _07Contract); + let methods$5 = {}; // allow helper methods like .adjectives() and .adverbs() -var _01Init = lookups; //markov-like stats about co-occurance, for hints about unknown terms -//basically, a little-bit better than the noun-fallback -//just top n-grams from nlp tags, generated from nlp-corpus -//after this word, here's what happens usually - -var afterThisWord = { - i: 'Verb', - //44% //i walk.. - first: 'Noun', - //50% //first principles.. - it: 'Verb', - //33% - there: 'Verb', - //35% - not: 'Verb', - //33% - because: 'Noun', - //31% - "if": 'Noun', - //32% - but: 'Noun', - //26% - who: 'Verb', - //40% - "this": 'Noun', - //37% - his: 'Noun', - //48% - when: 'Noun', - //33% - you: 'Verb', - //35% - very: 'Adjective', - // 39% - old: 'Noun', - //51% - never: 'Verb', - //42% - before: 'Noun' //28% - -}; //in advance of this word, this is what happens usually - -var beforeThisWord = { - there: 'Verb', - //23% // be there - me: 'Verb', - //31% //see me - man: 'Adjective', - // 80% //quiet man - only: 'Verb', - //27% //sees only - him: 'Verb', - //32% //show him - were: 'Noun', - //48% //we were - took: 'Noun', - //38% //he took - himself: 'Verb', - //31% //see himself - went: 'Noun', - //43% //he went - who: 'Noun', - //47% //person who - jr: 'Person' -}; //following this POS, this is likely - -var afterThisPOS = { - Adjective: 'Noun', - //36% //blue dress - Possessive: 'Noun', - //41% //his song - Determiner: 'Noun', - //47% - Adverb: 'Verb', - //20% - Pronoun: 'Verb', - //40% - Value: 'Noun', - //47% - Ordinal: 'Noun', - //53% - Modal: 'Verb', - //35% - Superlative: 'Noun', - //43% - Demonym: 'Noun', - //38% - Honorific: 'Person' // - -}; //in advance of this POS, this is likely - -var beforeThisPOS = { - Copula: 'Noun', - //44% //spencer is - PastTense: 'Noun', - //33% //spencer walked - Conjunction: 'Noun', - //36% - Modal: 'Noun', - //38% - Pluperfect: 'Noun', - //40% - PerfectTense: 'Verb' //32% + const arr = [['terms', '.'], ['hyphenated', '@hasHyphen .'], ['adjectives', '#Adjective'], ['hashTags', '#HashTag'], ['emails', '#Email'], ['emoji', '#Emoji'], ['emoticons', '#Emoticon'], ['atMentions', '#AtMention'], ['urls', '#Url'], ['adverbs', '#Adverb'], ['pronouns', '#Pronoun'], ['conjunctions', '#Conjunction'], ['prepositions', '#Preposition']]; + arr.forEach(a => { + methods$5[a[0]] = function (n) { + let m = this.match(a[1]); -}; -var markov = { - beforeThisWord: beforeThisWord, - afterThisWord: afterThisWord, - beforeThisPos: beforeThisPOS, - afterThisPos: afterThisPOS -}; -var afterKeys = Object.keys(markov.afterThisPos); -var beforeKeys = Object.keys(markov.beforeThisPos); + if (typeof n === 'number') { + m = m.get(n); + } -var checkNeighbours = function checkNeighbours(terms, world) { - var _loop = function _loop(i) { - var term = terms[i]; //do we still need a tag? + return m; + }; + }); // aliases - if (term.isKnown() === true) { - return "continue"; - } //ok, this term needs a tag. - //look at previous word for clues.. + methods$5.emojis = methods$5.emoji; + methods$5.atmentions = methods$5.atMentions; + methods$5.words = methods$5.terms; + /** return anything tagged as a phone number */ + methods$5.phoneNumbers = function (n) { + let m = this.splitAfter('@hasComma'); + m = m.match('#PhoneNumber+'); - var lastTerm = terms[i - 1]; + if (typeof n === 'number') { + m = m.get(n); + } - if (lastTerm) { - // 'foobar term' - if (markov.afterThisWord.hasOwnProperty(lastTerm.clean) === true) { - var tag = markov.afterThisWord[lastTerm.clean]; - term.tag(tag, 'after-' + lastTerm.clean, world); - return "continue"; - } // 'Tag term' - // (look at previous POS tags for clues..) + return m; + }; + /** Deprecated: please use compromise-numbers plugin */ - var foundTag = afterKeys.find(function (tag) { - return lastTerm.tags[tag]; - }); + methods$5.money = function (n) { + let m = this.match('#Money #Currency?'); - if (foundTag !== undefined) { - var _tag = markov.afterThisPos[foundTag]; - term.tag(_tag, 'after-' + foundTag, world); - return "continue"; + if (typeof n === 'number') { + m = m.get(n); } - } //look at next word for clues.. + return m; + }; + /** return all cities, countries, addresses, and regions */ - var nextTerm = terms[i + 1]; - if (nextTerm) { - // 'term foobar' - if (markov.beforeThisWord.hasOwnProperty(nextTerm.clean) === true) { - var _tag2 = markov.beforeThisWord[nextTerm.clean]; - term.tag(_tag2, 'before-' + nextTerm.clean, world); - return "continue"; - } // 'term Tag' - // (look at next POS tags for clues..) + methods$5.places = function (n) { + // don't split 'paris, france' + let keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas + let m = this.not(keep).splitAfter('@hasComma'); // combine them back together - var _foundTag = beforeKeys.find(function (tag) { - return nextTerm.tags[tag]; - }); + m = m.concat(keep); + m.sort('index'); + m = m.match('#Place+'); - if (_foundTag !== undefined) { - var _tag3 = markov.beforeThisPos[_foundTag]; - term.tag(_tag3, 'before-' + _foundTag, world); - return "continue"; + if (typeof n === 'number') { + m = m.get(n); } - } - }; - - for (var i = 0; i < terms.length; i += 1) { - var _ret = _loop(i); - - if (_ret === "continue") continue; - } -}; -var _01Neighbours = checkNeighbours; -var titleCase = /^[A-Z][a-z'\u00C0-\u00FF]/; -var hasNumber = /[0-9]/; -/** look for any grammar signals based on capital/lowercase */ + return m; + }; + /** return all schools, businesses and institutions */ -var checkCase = function checkCase(doc) { - var world = doc.world; - doc.list.forEach(function (p) { - var terms = p.terms(); - for (var i = 1; i < terms.length; i++) { - var term = terms[i]; + methods$5.organizations = function (n) { + let m = this.clauses(); + m = m.match('#Organization+'); - if (titleCase.test(term.text) === true && hasNumber.test(term.text) === false && term.tags.Date === undefined) { - term.tag('ProperNoun', 'titlecase-noun', world); + if (typeof n === 'number') { + m = m.get(n); } - } - }); -}; -var _02Case = checkCase; -var hasPrefix = /^(re|un)-?[a-z\u00C0-\u00FF]/; -var prefix = /^(re|un)-?/; -/** check 'rewatch' in lexicon as 'watch' */ + return m; + }; //combine them with .topics() method -var checkPrefix = function checkPrefix(terms, world) { - var lex = world.words; - terms.forEach(function (term) { - // skip if we have a good tag already - if (term.isKnown() === true) { - return; - } //does it start with 'un|re' + methods$5.entities = function (n) { + let r = this.clauses(); // Find people, places, and organizations - if (hasPrefix.test(term.clean) === true) { - // look for the root word in the lexicon: - var stem = term.clean.replace(prefix, ''); + let yup = r.people(); + yup = yup.concat(r.places()); + yup = yup.concat(r.organizations()); + let ignore = ['someone', 'man', 'woman', 'mother', 'brother', 'sister', 'father']; + yup = yup.not(ignore); //return them to normal ordering - if (stem && stem.length > 3 && lex[stem] !== undefined && lex.hasOwnProperty(stem) === true) { - term.tag(lex[stem], 'stem-' + stem, world); - } - } - }); -}; + yup.sort('sequence'); // yup.unique() //? not sure -var _03Stem = checkPrefix; //similar to plural/singularize rules, but not the same + if (typeof n === 'number') { + yup = yup.get(n); + } -var isPlural$3 = [/(^v)ies$/i, /ises$/i, /ives$/i, /(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /(buffal|tomat|tornad)oes$/i, /(analy|ba|diagno|parenthe|progno|synop|the)ses$/i, /(vert|ind|cort)ices$/i, /(matr|append)ices$/i, /(x|ch|ss|sh|s|z|o)es$/i, /is$/i, /men$/i, /news$/i, /.tia$/i, /(^f)ves$/i, /(lr)ves$/i, /(^aeiouy|qu)ies$/i, /(m|l)ice$/i, /(cris|ax|test)es$/i, /(alias|status)es$/i, /ics$/i]; //similar to plural/singularize rules, but not the same + return yup; + }; //aliases -var isSingular$1 = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /s[aeiou]+ns$/i, // sans, siens -/(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i]; -var isPlural_1$2 = { - isSingular: isSingular$1, - isPlural: isPlural$3 -}; -var noPlurals = ['Uncountable', 'Pronoun', 'Place', 'Value', 'Person', 'Month', 'WeekDay', 'Holiday']; -var notPlural = [/ss$/, /sis$/, /[^aeiou][uo]s$/, /'s$/]; -var notSingular = [/i$/, /ae$/]; -/** turn nouns into singular/plural */ -var checkPlural = function checkPlural(t, world) { - if (t.tags.Noun && !t.tags.Acronym) { - var str = t.clean; //skip existing tags, fast + methods$5.things = methods$5.entities; + methods$5.topics = methods$5.entities; + var _simple = methods$5; + const underOver = /^(under|over)-?.{3}/; + /** match a word-sequence, like 'super bowl' in the lexicon */ - if (t.tags.Singular || t.tags.Plural) { - return; - } //too short + const tryMultiple = function (terms, t, world) { + let lex = world.words; //try a two-word version + let txt = terms[t].reduced + ' ' + terms[t + 1].reduced; - if (str.length <= 3) { - t.tag('Singular', 'short-singular', world); - return; - } //is it impossible to be plural? + if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) { + terms[t].tag(lex[txt], 'lexicon-two', world); + terms[t + 1].tag(lex[txt], 'lexicon-two', world); + return 1; + } //try a three-word version? - if (noPlurals.find(function (tag) { - return t.tags[tag]; - })) { - return; - } // isPlural suffix rules + if (t + 2 < terms.length) { + txt += ' ' + terms[t + 2].reduced; + if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) { + terms[t].tag(lex[txt], 'lexicon-three', world); + terms[t + 1].tag(lex[txt], 'lexicon-three', world); + terms[t + 2].tag(lex[txt], 'lexicon-three', world); + return 2; + } + } //try a four-word version? - if (isPlural_1$2.isPlural.find(function (reg) { - return reg.test(str); - })) { - t.tag('Plural', 'plural-rules', world); - return; - } // isSingular suffix rules + if (t + 3 < terms.length) { + txt += ' ' + terms[t + 3].reduced; - if (isPlural_1$2.isSingular.find(function (reg) { - return reg.test(str); - })) { - t.tag('Singular', 'singular-rules', world); - return; - } // finally, fallback 'looks plural' rules.. + if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) { + terms[t].tag(lex[txt], 'lexicon-four', world); + terms[t + 1].tag(lex[txt], 'lexicon-four', world); + terms[t + 2].tag(lex[txt], 'lexicon-four', world); + terms[t + 3].tag(lex[txt], 'lexicon-four', world); + return 3; + } + } + return 0; + }; + /** look at each word in our list of known-words */ - if (/s$/.test(str) === true) { - //avoid anything too sketchy to be plural - if (notPlural.find(function (reg) { - return reg.test(str); - })) { - return; - } - t.tag('Plural', 'plural-fallback', world); - return; - } //avoid anything too sketchy to be singular + const checkLexicon$1 = function (terms, world) { + let lex = world.words; + let hasCompound = world.hasCompound; // use reduced? + //go through each term, and check the lexicon + for (let t = 0; t < terms.length; t += 1) { + let str = terms[t].clean; //is it the start of a compound word, like 'super bowl'? - if (notSingular.find(function (reg) { - return reg.test(str); - })) { - return; - } + if (hasCompound[str] === true && t + 1 < terms.length) { + let foundWords = tryMultiple(terms, t, world); - t.tag('Singular', 'singular-fallback', world); - } -}; + if (foundWords > 0) { + t += foundWords; //skip any already-found words -var _04Plurals = checkPlural; //nouns that also signal the title of an unknown organization -//todo remove/normalize plural forms + continue; + } + } //try one-word lexicon -var orgWords = ['academy', 'administration', 'agence', 'agences', 'agencies', 'agency', 'airlines', 'airways', 'army', 'assoc', 'associates', 'association', 'assurance', 'authority', 'autorite', 'aviation', 'bank', 'banque', 'board', 'boys', 'brands', 'brewery', 'brotherhood', 'brothers', 'building society', 'bureau', 'cafe', 'caisse', 'capital', 'care', 'cathedral', 'center', 'central bank', 'centre', 'chemicals', 'choir', 'chronicle', 'church', 'circus', 'clinic', 'clinique', 'club', 'co', 'coalition', 'coffee', 'collective', 'college', 'commission', 'committee', 'communications', 'community', 'company', 'comprehensive', 'computers', 'confederation', 'conference', 'conseil', 'consulting', 'containers', 'corporation', 'corps', 'corp', 'council', 'crew', 'daily news', 'data', 'departement', 'department', 'department store', 'departments', 'design', 'development', 'directorate', 'division', 'drilling', 'education', 'eglise', 'electric', 'electricity', 'energy', 'ensemble', 'enterprise', 'enterprises', 'entertainment', 'estate', 'etat', 'evening news', 'faculty', 'federation', 'financial', 'fm', 'foundation', 'fund', 'gas', 'gazette', 'girls', 'government', 'group', 'guild', 'health authority', 'herald', 'holdings', 'hospital', 'hotel', 'hotels', 'inc', 'industries', 'institut', 'institute', 'institute of technology', 'institutes', 'insurance', 'international', 'interstate', 'investment', 'investments', 'investors', 'journal', 'laboratory', 'labs', // 'law', -'liberation army', 'limited', 'local authority', 'local health authority', 'machines', 'magazine', 'management', 'marine', 'marketing', 'markets', 'media', 'memorial', 'mercantile exchange', 'ministere', 'ministry', 'military', 'mobile', 'motor', 'motors', 'musee', 'museum', // 'network', -'news', 'news service', 'observatory', 'office', 'oil', 'optical', 'orchestra', 'organization', 'partners', 'partnership', // 'party', -"people's party", 'petrol', 'petroleum', 'pharmacare', 'pharmaceutical', 'pharmaceuticals', 'pizza', 'plc', 'police', 'polytechnic', 'post', 'power', 'press', 'productions', 'quartet', 'radio', 'regional authority', 'regional health authority', 'reserve', 'resources', 'restaurant', 'restaurants', 'savings', 'school', 'securities', 'service', 'services', 'social club', 'societe', 'society', 'sons', 'standard', 'state police', 'state university', 'stock exchange', 'subcommittee', 'syndicat', 'systems', 'telecommunications', 'telegraph', 'television', 'times', 'tribunal', 'tv', 'union', 'university', 'utilities', 'workers']; -var organizations = orgWords.reduce(function (h, str) { - h[str] = 'Noun'; - return h; -}, {}); -var maybeOrg = function maybeOrg(t) { - //must be a noun - if (!t.tags.Noun) { - return false; - } //can't be these things + if (lex[str] !== undefined && lex.hasOwnProperty(str) === true) { + terms[t].tag(lex[str], 'lexicon', world); + continue; + } // look at reduced version of term, too - if (t.tags.Pronoun || t.tags.Comma || t.tags.Possessive) { - return false; - } //must be one of these + if (str !== terms[t].reduced && lex.hasOwnProperty(terms[t].reduced) === true) { + terms[t].tag(lex[terms[t].reduced], 'lexicon', world); + continue; + } // prefix strip: try to match 'take' for 'undertake' - if (t.tags.Organization || t.tags.Acronym || t.tags.Place || t.titleCase()) { - return true; - } + if (underOver.test(str) === true) { + let noPrefix = str.replace(/^(under|over)-?/, ''); - return false; -}; + if (lex.hasOwnProperty(noPrefix) === true) { + terms[t].tag(lex[noPrefix], 'noprefix-lexicon', world); + } + } + } -var tagOrgs = function tagOrgs(terms, world) { - for (var i = 0; i < terms.length; i += 1) { - var t = terms[i]; + return terms; + }; - if (organizations[t.clean] !== undefined && organizations.hasOwnProperty(t.clean) === true) { - // look-backward - eg. 'Toronto University' - var lastTerm = terms[i - 1]; + var _01Lexicon = checkLexicon$1; + const apostrophes = /[\'‘’‛‵′`´]$/; + const perSec = /^(m|k|cm|km|m)\/(s|h|hr)$/; // '5 k/m' + // + + const checkPunctuation = function (terms, i, world) { + let term = terms[i]; //check hyphenation + // if (term.post.indexOf('-') !== -1 && terms[i + 1] && terms[i + 1].pre === '') { + // term.tag('Hyphenated', 'has-hyphen', world) + // } + // support 'head-over' + // if (term.hasHyphen() === true) { + // console.log(term.tags) + // } + // console.log(term.hasHyphen(), term.text) + //an end-tick (trailing apostrophe) - flanders', or Carlos' + + if (apostrophes.test(term.text)) { + if (!apostrophes.test(term.pre) && !apostrophes.test(term.post) && term.clean.length > 2) { + let endChar = term.clean[term.clean.length - 2]; //flanders' + + if (endChar === 's') { + term.tag(['Possessive', 'Noun'], 'end-tick', world); + return; + } //chillin' + + + if (endChar === 'n') { + term.tag(['Gerund'], 'chillin', world); + } + } + } // '5 km/s' - if (lastTerm !== undefined && maybeOrg(lastTerm) === true) { - lastTerm.tagSafe('Organization', 'org-word-1', world); - t.tagSafe('Organization', 'org-word-2', world); - continue; - } //look-forward - eg. University of Toronto + if (perSec.test(term.text)) { + term.tag('Unit', 'per-sec', world); + } // 'NASA' is, but not 'i REALLY love it.' + // if (term.tags.Noun === true && isAcronym(term, world)) { + // term.tag('Acronym', 'acronym-step', world) + // term.tag('Noun', 'acronym-infer', world) + // } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) { + // term.tag('Acronym', 'one-letter-acronym', world) + // term.tag('Noun', 'one-letter-infer', world) + // } - var nextTerm = terms[i + 1]; + }; - if (nextTerm !== undefined && nextTerm.clean === 'of') { - if (terms[i + 2] && maybeOrg(terms[i + 2])) { - t.tagSafe('Organization', 'org-of-word-1', world); - nextTerm.tagSafe('Organization', 'org-of-word-2', world); - terms[i + 2].tagSafe('Organization', 'org-of-word-3', world); - continue; + var _02Punctuation = checkPunctuation; // order matters. + + var startsWith = [//web tags + [/^[\w\.]+@[\w\.]+\.[a-z]{2,3}$/, 'Email'], //not fancy + [/^#[a-z0-9_\u00C0-\u00FF]{2,}$/, 'HashTag'], [/^@1?[0-9](am|pm)$/i, 'Time'], // @6pm + [/^@1?[0-9]:[0-9]{2}(am|pm)?$/i, 'Time'], // @6:30 + [/^@\w{2,}$/, 'AtMention'], //@spencermountain + [/^(https?:\/\/|www\.)+\w+\.[a-z]{2,3}/, 'Url'], //with http/www + [/^[a-z0-9./].+\.(com|net|gov|org|ly|edu|info|biz|dev|ru|jp|de|in|uk|br|io|ai)/, 'Url'], //http://mostpopularwebsites.net/top-level-domain or Check for domains like .io/.ai/.dev + //dates/times + [/^'[0-9]{2}$/, 'Year'], //like '97 + [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/, 'Time'], //4:32:32 + [/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i, 'Time'], //4pm + [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i, 'Time'], //4:00pm + [/^[PMCE]ST$/, 'Time'], //PST, time zone abbrevs + [/^utc ?[+-]?[0-9]+?$/, 'Time'], //UTC 8+ + [/^[a-z0-9]*? o\'?clock$/, 'Time'], //3 oclock + [/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i, 'Date'], // 2020-03-02T00:00:00.000Z + [/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/, 'Date'], // 03-02-89 + [/^[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,4}$/, 'Date'], // 03/02/89 + [/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i, 'Date'], // 03-March-89 + [/^gmt[+-][0-9][0-9]?$/i, 'Timezone'], // gmt-3 + [/^utc[+-][0-9][0-9]?$/i, 'Timezone'], // utc-3 + //names + [/^ma?c\'.*/, 'LastName'], //mc'adams + [/^o\'[drlkn].*/, 'LastName'], //o'douggan + [/^ma?cd[aeiou]/, 'LastName'], //macdonell - Last patterns https://en.wikipedia.org/wiki/List_of_family_name_affixes + //slang things + [/^(lol)+[sz]$/, 'Expression'], //lol + [/^woo+a*?h?$/, 'Expression'], //whoaa, wooo + [/^(un|de|re)\\-[a-z\u00C0-\u00FF]{2}/, 'Verb'], // [/^(over|under)[a-z]{2,}/, 'Adjective'], + [/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/, 'Date'], // 03-02-89 + //phone numbers + [/^[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //589-3809 + [/^(\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //632-589-3809 + //money + // currency regex + // /[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6] + //like $5.30 + [/^[-+]?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6][-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(k|m|b|bn)?\+?$/, ['Money', 'Value']], //like 5.30$ + [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]\+?$/, ['Money', 'Value']], //like $400usd + [/^[-+]?[\$£]?[0-9]([0-9,.])+?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value']], //numbers + // 50 | -50 | 3.23 | 5,999.0 | 10+ + [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/, ['Cardinal', 'NumericValue']], [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|r?th)$/, ['Ordinal', 'NumericValue']], // .73th + [/^\.[0-9]+\+?$/, ['Cardinal', 'NumericValue']], //percent + [/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?%\+?$/, ['Percent', 'Cardinal', 'NumericValue']], //7% .. + [/^\.[0-9]+%$/, ['Percent', 'Cardinal', 'NumericValue']], //.7% .. + //fraction + [/^[0-9]{1,4}\/[0-9]{1,4}(st|nd|rd|th)?s?$/, ['Fraction', 'NumericValue']], //3/2ths + //range + [/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/, ['Value', 'NumberRange']], //7th-8th + //time-range + [/^[0-9][0-9]?(:[0-9][0-9])?(am|pm)? ?[-–—] ?[0-9][0-9]?(:[0-9][0-9])?(am|pm)?$/, ['Time', 'NumberRange']], //7pm-8:30 + //with unit + [/^[0-9.]+([a-z]{1,4})$/, 'Value'] //like 5tbsp + //ordinal + // [/^[0-9][0-9,.]*(st|nd|rd|r?th)$/, ['NumericValue', 'Ordinal']], //like 5th + // [/^[0-9]+(st|nd|rd|th)$/, 'Ordinal'], //like 5th + ]; + const regex = startsWith; + const romanNumeral = /^[IVXLCDM]{2,}$/; + const romanNumValid = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/; // https://stackoverflow.com/a/267405/168877 + //try each of the ^regexes in our list + + const checkRegex$1 = function (term, world) { + let str = term.text; // do them all! + + for (let r = 0; r < regex.length; r += 1) { + if (regex[r][0].test(str) === true) { + term.tagSafe(regex[r][1], 'prefix #' + r, world); + break; } + } // do some more! + //roman numberals - XVII + + + if (term.text.length >= 2 && romanNumeral.test(str) && romanNumValid.test(str)) { + term.tag('RomanNumeral', 'xvii', world); } - } - } -}; + }; -var _05Organizations = tagOrgs; -var oneLetterAcronym = /^[A-Z]('s|,)?$/; -var periodSeperated = /([A-Z]\.){2}[A-Z]?/i; -var oneLetterWord = { - I: true, - A: true -}; + var _03Prefixes = checkRegex$1; //built using wordnet, by spencer kelly. + //this mapping shrinks-down the uglified build + + const Adj$1 = 'Adjective'; + const Inf$1 = 'Infinitive'; + const Pres$1 = 'PresentTense'; + const Sing$1 = 'Singular'; + const Past$1 = 'PastTense'; + const Adverb = 'Adverb'; + const Exp = 'Expression'; + const Actor$1 = 'Actor'; + const Verb = 'Verb'; + const Noun$1 = 'Noun'; + const Last$1 = 'LastName'; //the order here matters. + //regexes indexed by mandated last-character + + var endsWith$1 = { + a: [[/.[aeiou]na$/, Noun$1], [/.[oau][wvl]ska$/, Last$1], //polish (female) + [/.[^aeiou]ica$/, Sing$1], [/^([hyj]a)+$/, Exp] //hahah + ], + c: [[/.[^aeiou]ic$/, Adj$1]], + d: [//==-ed== + //double-consonant + [/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/, Past$1], //popped, planned + //double-vowel + [/.[aeo]{2}[bdgmnprvz]ed$/, Past$1], //beeped, mooned, veered + //-hed + [/.[aeiou][sg]hed$/, Past$1], //stashed, sighed + //-rd + [/.[aeiou]red$/, Past$1], //stored + [/.[aeiou]r?ried$/, Past$1], //buried + //-led + [/.[bcdgtr]led$/, Past$1], //startled, rumbled + [/.[aoui]f?led$/, Past$1], //impaled, stifled + //-sed + [/.[iao]sed$/, Past$1], //franchised + [/[aeiou]n?[cs]ed$/, Past$1], //laced, lanced + //-med + [/[aeiou][rl]?[mnf]ed$/, Past$1], //warmed, attained, engulfed + //-ked + [/[aeiou][ns]?c?ked$/, Past$1], //hooked, masked + //-ged + [/[aeiou][nl]?ged$/, Past$1], //engaged + //-ted + [/.[tdbwxz]ed$/, Past$1], //bribed, boxed + [/[^aeiou][aeiou][tvx]ed$/, Past$1], //boxed + //-ied + [/.[cdlmnprstv]ied$/, Past$1], //rallied + [/[^aeiou]ard$/, Sing$1], //card + [/[aeiou][^aeiou]id$/, Adj$1], [/.[vrl]id$/, Adj$1]], + e: [[/.[lnr]ize$/, Inf$1], [/.[^aeiou]ise$/, Inf$1], [/.[aeiou]te$/, Inf$1], [/.[^aeiou][ai]ble$/, Adj$1], [/.[^aeiou]eable$/, Adj$1], [/.[ts]ive$/, Adj$1], [/[a-z]-like$/, Adj$1]], + h: [[/.[^aeiouf]ish$/, Adj$1], [/.v[iy]ch$/, Last$1], //east-europe + [/^ug?h+$/, Exp], //uhh + [/^uh[ -]?oh$/, Exp], //uhoh + [/[a-z]-ish$/, Adj$1] //cartoon-ish + ], + i: [[/.[oau][wvl]ski$/, Last$1] //polish (male) + ], + k: [[/^(k){2}$/, Exp] //kkkk + ], + l: [[/.[gl]ial$/, Adj$1], [/.[^aeiou]ful$/, Adj$1], [/.[nrtumcd]al$/, Adj$1], [/.[^aeiou][ei]al$/, Adj$1]], + m: [[/.[^aeiou]ium$/, Sing$1], [/[^aeiou]ism$/, Sing$1], [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm + [/^\d+ ?[ap]m$/, 'Date']], + n: [[/.[lsrnpb]ian$/, Adj$1], [/[^aeiou]ician$/, Actor$1], [/[aeiou][ktrp]in$/, 'Gerund'] // 'cookin', 'hootin' + ], + o: [[/^no+$/, Exp], //noooo + [/^(yo)+$/, Exp], //yoyo + [/^woo+[pt]?$/, Exp] //woo + ], + r: [[/.[bdfklmst]ler$/, 'Noun'], [/[aeiou][pns]er$/, Sing$1], [/[^i]fer$/, Inf$1], [/.[^aeiou][ao]pher$/, Actor$1], [/.[lk]er$/, 'Noun'], [/.ier$/, 'Comparative']], + t: [[/.[di]est$/, 'Superlative'], [/.[icldtgrv]ent$/, Adj$1], [/[aeiou].*ist$/, Adj$1], [/^[a-z]et$/, Verb]], + s: [[/.[^aeiou]ises$/, Pres$1], [/.[rln]ates$/, Pres$1], [/.[^z]ens$/, Verb], [/.[lstrn]us$/, Sing$1], [/.[aeiou]sks$/, Pres$1], //masks + [/.[aeiou]kes$/, Pres$1], //bakes + [/[aeiou][^aeiou]is$/, Sing$1], [/[a-z]\'s$/, Noun$1], [/^yes+$/, Exp] //yessss + ], + v: [[/.[^aeiou][ai][kln]ov$/, Last$1] //east-europe + ], + y: [[/.[cts]hy$/, Adj$1], [/.[st]ty$/, Adj$1], [/.[gk]y$/, Adj$1], [/.[tnl]ary$/, Adj$1], [/.[oe]ry$/, Sing$1], [/[rdntkbhs]ly$/, Adverb], [/...lly$/, Adverb], [/[bszmp]{2}y$/, Adj$1], [/.(gg|bb|zz)ly$/, Adj$1], [/.[ai]my$/, Adj$1], [/[ea]{2}zy$/, Adj$1], [/.[^aeiou]ity$/, Sing$1]] + }; + const Adj = 'Adjective'; + const Inf = 'Infinitive'; + const Pres = 'PresentTense'; + const Sing = 'Singular'; + const Past = 'PastTense'; + const Avb = 'Adverb'; + const Plrl = 'Plural'; + const Actor = 'Actor'; + const Vb = 'Verb'; + const Noun = 'Noun'; + const Last = 'LastName'; + const Modal = 'Modal'; + const Place = 'Place'; // find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup + + var suffixMap$1 = [null, //0 + null, //1 + { + //2-letter + ea: Sing, + ia: Noun, + ic: Adj, + ly: Avb, + "'n": Vb, + "'t": Vb + }, { + //3-letter + oed: Past, + ued: Past, + xed: Past, + ' so': Avb, + "'ll": Modal, + "'re": 'Copula', + azy: Adj, + eer: Noun, + end: Vb, + ped: Past, + ffy: Adj, + ify: Inf, + ing: 'Gerund', + //likely to be converted to Adj after lexicon pass + ize: Inf, + lar: Adj, + mum: Adj, + nes: Pres, + nny: Adj, + oid: Adj, + ous: Adj, + que: Adj, + rol: Sing, + sis: Sing, + zes: Pres + }, { + //4-letter + amed: Past, + aped: Past, + ched: Past, + lked: Past, + nded: Past, + cted: Past, + dged: Past, + akis: Last, + //greek + cede: Inf, + chuk: Last, + //east-europe + czyk: Last, + //polish (male) + ects: Pres, + ends: Vb, + enko: Last, + //east-europe + ette: Sing, + fies: Pres, + fore: Avb, + gate: Inf, + gone: Adj, + ices: Plrl, + ints: Plrl, + ines: Plrl, + ions: Plrl, + less: Avb, + llen: Adj, + made: Adj, + nsen: Last, + //norway + oses: Pres, + ould: Modal, + some: Adj, + sson: Last, + //swedish male + tage: Inf, + teen: 'Value', + tion: Sing, + tive: Adj, + tors: Noun, + vice: Sing + }, { + //5-letter + tized: Past, + urned: Past, + eased: Past, + ances: Plrl, + bound: Adj, + ettes: Plrl, + fully: Avb, + ishes: Pres, + ities: Plrl, + marek: Last, + //polish (male) + nssen: Last, + //norway + ology: Noun, + ports: Plrl, + rough: Adj, + tches: Pres, + tieth: 'Ordinal', + tures: Plrl, + wards: Avb, + where: Avb + }, { + //6-letter + auskas: Last, + //lithuania + keeper: Actor, + logist: Actor, + teenth: 'Value' + }, { + //7-letter + opoulos: Last, + //greek + borough: Place, + //Hillsborough + sdottir: Last //swedish female -var isAcronym = function isAcronym(term, world) { - var str = term.reduced; // a known acronym like fbi + }]; + const endsWith = endsWith$1; + const suffixMap = suffixMap$1; - if (term.tags.Acronym) { - return true; - } // if (term.tags.Adverb || term.tags.Verb || term.tags.Value || term.tags.Plural) { - // return false - // } - // known-words, like 'PIZZA' is not an acronym. + const endRegexs = function (term, world) { + let str = term.clean; + let char = str[str.length - 1]; + if (endsWith.hasOwnProperty(char) === true) { + let regs = endsWith[char]; - if (world.words[str]) { - return false; - } // long capitalized words are not usually either + for (let r = 0; r < regs.length; r += 1) { + if (regs[r][0].test(str) === true) { + term.tagSafe(regs[r][1], "endReg ".concat(char, " #").concat(r), world); + break; + } + } + } + }; //sweep-through all suffixes - if (str.length > 5) { - return false; - } + const knownSuffixes = function (term, world) { + const len = term.clean.length; + let max = 7; - return term.isAcronym(); -}; // F.B.I., NBC, - but not 'NO COLLUSION' + if (len <= max) { + max = len - 1; + } + for (let i = max; i > 1; i -= 1) { + let str = term.clean.substr(len - i, len); -var checkAcronym = function checkAcronym(terms, world) { - terms.forEach(function (term) { - //these are not acronyms - if (term.tags.RomanNumeral === true) { - return; - } //period-ones F.D.B. + if (suffixMap[str.length].hasOwnProperty(str) === true) { + let tag = suffixMap[str.length][str]; + term.tagSafe(tag, 'suffix -' + str, world); + break; + } + } + }; //all-the-way-down! - if (periodSeperated.test(term.text) === true) { - term.tag('Acronym', 'period-acronym', world); - } //non-period ones are harder + const checkRegex = function (term, world) { + knownSuffixes(term, world); + endRegexs(term, world); + }; + var _04Suffixes = checkRegex; //faster than + //http://stackoverflow.com/questions/28077049/regex-matching-emoticons + + var emoticons = { + ':(': true, + ':)': true, + ':P': true, + ':p': true, + ':O': true, + ':3': true, + ':|': true, + ':/': true, + ':\\': true, + ':$': true, + ':*': true, + ':@': true, + ':-(': true, + ':-)': true, + ':-P': true, + ':-p': true, + ':-O': true, + ':-3': true, + ':-|': true, + ':-/': true, + ':-\\': true, + ':-$': true, + ':-*': true, + ':-@': true, + ':^(': true, + ':^)': true, + ':^P': true, + ':^p': true, + ':^O': true, + ':^3': true, + ':^|': true, + ':^/': true, + ':^\\': true, + ':^$': true, + ':^*': true, + ':^@': true, + '):': true, + '(:': true, + '$:': true, + '*:': true, + ')-:': true, + '(-:': true, + '$-:': true, + '*-:': true, + ')^:': true, + '(^:': true, + '$^:': true, + '*^:': true, + '<3': true, + ' { + if (raw.charAt(0) === ':') { + //end comma can be last or second-last ':haircut_tone3:‍♀️' + if (raw.match(/:.?$/) === null) { + return false; + } //ensure no spaces - if (term.isUpperCase() && isAcronym(term, world)) { - term.tag('Acronym', 'acronym-step', world); - term.tag('Noun', 'acronym-infer', world); - } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) { - term.tag('Acronym', 'one-letter-acronym', world); - term.tag('Noun', 'one-letter-infer', world); - } //if it's a organization, + if (raw.match(' ')) { + return false; + } //reasonably sized - if (term.tags.Organization && term.text.length <= 3) { - term.tag('Acronym', 'acronym-org', world); - } - if (term.tags.Organization && term.isUpperCase() && term.text.length <= 6) { - term.tag('Acronym', 'acronym-org-case', world); - } - }); -}; + if (raw.length > 35) { + return false; + } -var _06Acronyms = checkAcronym; -var step = { - neighbours: _01Neighbours, - "case": _02Case, - stem: _03Stem, - plural: _04Plurals, - organizations: _05Organizations, - acronyms: _06Acronyms -}; // + return true; + } -var fallbacks = function fallbacks(doc, terms) { - var world = doc.world; // if it's empty, consult it's neighbours, first + return false; + }; //check against emoticon whitelist - step.neighbours(terms, world); // is there a case-sensitive clue? - step["case"](doc); // check 'rewatch' as 'watch' + const isEmoticon = str => { + str = str.replace(/^[:;]/, ':'); //normalize the 'eyes' - step.stem(terms, world); // ... fallback to a noun! + return emoticon.hasOwnProperty(str); + }; - terms.forEach(function (t) { - if (t.isKnown() === false) { - t.tag('Noun', 'noun-fallback', doc.world); - } - }); // turn 'Foo University' into an Org + const tagEmoji = (term, world) => { + let raw = term.pre + term.text + term.post; + raw = raw.trim(); //dont double-up on ending periods - step.organizations(terms, world); //turn 'FBD' into an acronym + raw = raw.replace(/[.!?,]$/, ''); //test for :keyword: emojis - step.acronyms(terms, world); //are the nouns singular or plural? + if (isCommaEmoji(raw) === true) { + term.tag('Emoji', 'comma-emoji', world); + term.text = raw; + term.pre = term.pre.replace(':', ''); + term.post = term.post.replace(':', ''); + } //test for unicode emojis - terms.forEach(function (t) { - step.plural(t, doc.world); - }); - return doc; -}; -var _02Fallbacks = fallbacks; -var hasNegative = /n't$/; -var irregulars$2 = { - "won't": ['will', 'not'], - wont: ['will', 'not'], - "can't": ['can', 'not'], - cant: ['can', 'not'], - cannot: ['can', 'not'], - "shan't": ['should', 'not'], - dont: ['do', 'not'], - dun: ['do', 'not'] // "ain't" is ambiguous for is/was - -}; // either 'is not' or 'are not' - -var doAint = function doAint(term, phrase) { - var terms = phrase.terms(); - var index = terms.indexOf(term); - var before = terms.slice(0, index); //look for the preceding noun - - var noun = before.find(function (t) { - return t.tags.Noun; - }); + if (term.text.match(emojiReg)) { + term.tag('Emoji', 'unicode-emoji', world); + term.text = raw; + } //test for emoticon ':)' emojis - if (noun && noun.tags.Plural) { - return ['are', 'not']; - } - return ['is', 'not']; -}; + if (isEmoticon(raw) === true) { + term.tag('Emoticon', 'emoticon-emoji', world); + term.text = raw; + } + }; -var checkNegative = function checkNegative(term, phrase) { - //check named-ones - if (irregulars$2.hasOwnProperty(term.clean) === true) { - return irregulars$2[term.clean]; - } //this word needs it's own logic: + var _05Emoji = tagEmoji; + const steps = { + lexicon: _01Lexicon, + punctuation: _02Punctuation, + regex: _03Prefixes, + suffix: _04Suffixes, + emoji: _05Emoji + }; //'lookups' look at a term by itself + const lookups = function (doc, terms) { + let world = doc.world; //our list of known-words - if (term.clean === "ain't" || term.clean === 'aint') { - return doAint(term, phrase); - } //try it normally + steps.lexicon(terms, world); //try these other methods + for (let i = 0; i < terms.length; i += 1) { + let term = terms[i]; //or maybe some helpful punctuation - if (hasNegative.test(term.clean) === true) { - var main = term.clean.replace(hasNegative, ''); - return [main, 'not']; - } + steps.punctuation(terms, i, world); //mostly prefix checks - return null; -}; + steps.regex(term, world); //maybe we can guess -var _01Negative = checkNegative; -var contraction$1 = /([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z]{1,2})$/i; //these ones don't seem to be ambiguous + steps.suffix(term, world); //emoji and emoticons -var easy = { - ll: 'will', - ve: 'have', - re: 'are', - m: 'am', - "n't": 'not' -}; // + steps.emoji(term, world); + } -var checkApostrophe = function checkApostrophe(term) { - var parts = term.text.match(contraction$1); + return doc; + }; - if (parts === null) { - return null; - } + var _01Init = lookups; //basically, a little-bit better than the noun-fallback + //just top n-grams from nlp tags, generated from nlp-corpus + //after this word, here's what happens usually + + let afterThisWord = { + i: 'Verb', + //44% //i walk.. + first: 'Noun', + //50% //first principles.. + it: 'Verb', + //33% + there: 'Verb', + //35% + not: 'Verb', + //33% + because: 'Noun', + //31% + if: 'Noun', + //32% + but: 'Noun', + //26% + who: 'Verb', + //40% + this: 'Noun', + //37% + his: 'Noun', + //48% + when: 'Noun', + //33% + you: 'Verb', + //35% + very: 'Adjective', + // 39% + old: 'Noun', + //51% + never: 'Verb', + //42% + before: 'Noun' //28% + + }; //in advance of this word, this is what happens usually + + let beforeThisWord = { + there: 'Verb', + //23% // be there + me: 'Verb', + //31% //see me + man: 'Adjective', + // 80% //quiet man + only: 'Verb', + //27% //sees only + him: 'Verb', + //32% //show him + were: 'Noun', + //48% //we were + took: 'Noun', + //38% //he took + himself: 'Verb', + //31% //see himself + went: 'Noun', + //43% //he went + who: 'Noun', + //47% //person who + jr: 'Person' + }; //following this POS, this is likely + + let afterThisPOS = { + Adjective: 'Noun', + //36% //blue dress + Possessive: 'Noun', + //41% //his song + Determiner: 'Noun', + //47% + Adverb: 'Verb', + //20% + Pronoun: 'Verb', + //40% + Value: 'Noun', + //47% + Ordinal: 'Noun', + //53% + Modal: 'Verb', + //35% + Superlative: 'Noun', + //43% + Demonym: 'Noun', + //38% + Honorific: 'Person' // + + }; //in advance of this POS, this is likely + + let beforeThisPOS = { + Copula: 'Noun', + //44% //spencer is + PastTense: 'Noun', + //33% //spencer walked + Conjunction: 'Noun', + //36% + Modal: 'Noun', + //38% + Pluperfect: 'Noun', + //40% + PerfectTense: 'Verb' //32% - if (easy.hasOwnProperty(parts[2])) { - return [parts[1], easy[parts[2]]]; - } + }; + var markov$1 = { + beforeThisWord: beforeThisWord, + afterThisWord: afterThisWord, + beforeThisPos: beforeThisPOS, + afterThisPos: afterThisPOS + }; + const markov = markov$1; + const afterKeys = Object.keys(markov.afterThisPos); + const beforeKeys = Object.keys(markov.beforeThisPos); - return null; -}; + const checkNeighbours = function (terms, world) { + for (let i = 0; i < terms.length; i += 1) { + let term = terms[i]; //do we still need a tag? -var _02Simple = checkApostrophe; -var irregulars$1 = { - wanna: ['want', 'to'], - gonna: ['going', 'to'], - im: ['i', 'am'], - alot: ['a', 'lot'], - ive: ['i', 'have'], - imma: ['I', 'will'], - "where'd": ['where', 'did'], - whered: ['where', 'did'], - "when'd": ['when', 'did'], - whend: ['when', 'did'], - // "how'd": ['how', 'did'], //'how would?' - // "what'd": ['what', 'did'], //'what would?' - howd: ['how', 'did'], - whatd: ['what', 'did'], - // "let's": ['let', 'us'], //too weird - //multiple word contractions - dunno: ['do', 'not', 'know'], - brb: ['be', 'right', 'back'], - gtg: ['got', 'to', 'go'], - irl: ['in', 'real', 'life'], - tbh: ['to', 'be', 'honest'], - imo: ['in', 'my', 'opinion'], - til: ['today', 'i', 'learned'], - rn: ['right', 'now'], - twas: ['it', 'was'], - '@': ['at'] -}; // - -var checkIrregulars = function checkIrregulars(term) { - //check white-list - if (irregulars$1.hasOwnProperty(term.clean)) { - return irregulars$1[term.clean]; - } + if (term.isKnown() === true) { + continue; + } //ok, this term needs a tag. + //look at previous word for clues.. - return null; -}; -var _03Irregulars = checkIrregulars; -var hasApostropheS = /([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]s$/i; -var banList = { - that: true, - there: true -}; -var hereThere = { - here: true, - there: true, - everywhere: true -}; + let lastTerm = terms[i - 1]; -var isPossessive = function isPossessive(term, pool) { - // if we already know it - if (term.tags.Possessive) { - return true; - } //a pronoun can't be possessive - "he's house" + if (lastTerm) { + // 'foobar term' + if (markov.afterThisWord.hasOwnProperty(lastTerm.clean) === true) { + let tag = markov.afterThisWord[lastTerm.clean]; + term.tag(tag, 'after-' + lastTerm.clean, world); + continue; + } // 'Tag term' + // (look at previous POS tags for clues..) - if (term.tags.Pronoun || term.tags.QuestionWord) { - return false; - } + let foundTag = afterKeys.find(tag => lastTerm.tags[tag]); - if (banList.hasOwnProperty(term.reduced)) { - return false; - } //if end of sentence, it is possessive - "was spencer's" + if (foundTag !== undefined) { + let tag = markov.afterThisPos[foundTag]; + term.tag(tag, 'after-' + foundTag, world); + continue; + } + } //look at next word for clues.. - var nextTerm = pool.get(term.next); + let nextTerm = terms[i + 1]; - if (!nextTerm) { - return true; - } //a gerund suggests 'is walking' + if (nextTerm) { + // 'term foobar' + if (markov.beforeThisWord.hasOwnProperty(nextTerm.clean) === true) { + let tag = markov.beforeThisWord[nextTerm.clean]; + term.tag(tag, 'before-' + nextTerm.clean, world); + continue; + } // 'term Tag' + // (look at next POS tags for clues..) - if (nextTerm.tags.Verb) { - //fix 'jamie's bite' - if (nextTerm.tags.Infinitive) { - return true; - } //fix 'spencer's runs' + let foundTag = beforeKeys.find(tag => nextTerm.tags[tag]); + if (foundTag !== undefined) { + let tag = markov.beforeThisPos[foundTag]; + term.tag(tag, 'before-' + foundTag, world); + continue; + } + } + } + }; - if (nextTerm.tags.PresentTense) { - return true; - } + var _01Neighbours = checkNeighbours; + const titleCase = /^[A-Z][a-z'\u00C0-\u00FF]/; + const hasNumber = /[0-9]/; + /** look for any grammar signals based on capital/lowercase */ - return false; - } //spencer's house + const checkCase = function (doc) { + let world = doc.world; + doc.list.forEach(p => { + let terms = p.terms(); + for (let i = 1; i < terms.length; i++) { + const term = terms[i]; - if (nextTerm.tags.Noun) { - // 'spencer's here' - if (hereThere.hasOwnProperty(nextTerm.reduced) === true) { - return false; - } + if (titleCase.test(term.text) === true && hasNumber.test(term.text) === false && term.tags.Date === undefined) { + term.tag('ProperNoun', 'titlecase-noun', world); + } + } + }); + }; - return true; - } //rocket's red glare + var _02Case = checkCase; + const hasPrefix = /^(re|un)-?[a-z\u00C0-\u00FF]/; + const prefix = /^(re|un)-?/; + /** check 'rewatch' in lexicon as 'watch' */ + const checkPrefix = function (terms, world) { + let lex = world.words; + terms.forEach(term => { + // skip if we have a good tag already + if (term.isKnown() === true) { + return; + } //does it start with 'un|re' - var twoTerm = pool.get(nextTerm.next); - if (twoTerm && twoTerm.tags.Noun && !twoTerm.tags.Pronoun) { - return true; - } //othwerwise, an adjective suggests 'is good' + if (hasPrefix.test(term.clean) === true) { + // look for the root word in the lexicon: + let stem = term.clean.replace(prefix, ''); + if (stem && stem.length > 3 && lex[stem] !== undefined && lex.hasOwnProperty(stem) === true) { + term.tag(lex[stem], 'stem-' + stem, world); + } + } + }); + }; - if (nextTerm.tags.Adjective || nextTerm.tags.Adverb || nextTerm.tags.Verb) { - return false; - } + var _03Stem = checkPrefix; + const isPlural$8 = [/(^v)ies$/i, /ises$/i, /ives$/i, /(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /(buffal|tomat|tornad)oes$/i, /(analy|ba|diagno|parenthe|progno|synop|the)ses$/i, /(vert|ind|cort)ices$/i, /(matr|append)ices$/i, /(x|ch|ss|sh|s|z|o)es$/i, /is$/i, /men$/i, /news$/i, /.tia$/i, /(^f)ves$/i, /(lr)ves$/i, /(^aeiouy|qu)ies$/i, /(m|l)ice$/i, /(cris|ax|test)es$/i, /(alias|status)es$/i, /ics$/i]; //similar to plural/singularize rules, but not the same - return false; -}; + const isSingular$1 = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /s[aeiou]+ns$/i, // sans, siens + /(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i]; + var isPlural_1$2 = { + isSingular: isSingular$1, + isPlural: isPlural$8 + }; + const noPlurals = ['Uncountable', 'Pronoun', 'Place', 'Value', 'Person', 'Month', 'WeekDay', 'Holiday']; + const rules$1 = isPlural_1$2; + const notPlural = [/ss$/, /sis$/, /[^aeiou][uo]s$/, /'s$/]; + const notSingular = [/i$/, /ae$/]; + /** turn nouns into singular/plural */ -var isHas = function isHas(term, phrase) { - var terms = phrase.terms(); - var index = terms.indexOf(term); - var after = terms.slice(index + 1, index + 3); //look for a past-tense verb + const checkPlural = function (t, world) { + if (t.tags.Noun && !t.tags.Acronym) { + let str = t.clean; //skip existing tags, fast - return after.find(function (t) { - return t.tags.PastTense; - }); -}; + if (t.tags.Singular || t.tags.Plural) { + return; + } //too short -var checkPossessive = function checkPossessive(term, phrase, world) { - //the rest of 's - var found = term.text.match(hasApostropheS); - if (found !== null) { - //spencer's thing vs spencer-is - if (isPossessive(term, phrase.pool) === true) { - term.tag('#Possessive', 'isPossessive', world); - return null; - } //'spencer is' + if (str.length <= 3) { + t.tag('Singular', 'short-singular', world); + return; + } //is it impossible to be plural? - if (found !== null) { - if (isHas(term, phrase)) { - return [found[1], 'has']; - } + if (noPlurals.find(tag => t.tags[tag])) { + return; + } // isPlural suffix rules - return [found[1], 'is']; - } - } - return null; -}; + if (rules$1.isPlural.find(reg => reg.test(str))) { + t.tag('Plural', 'plural-rules', world); + return; + } // isSingular suffix rules -var _04Possessive = checkPossessive; -var hasPerfect = /[a-z\u00C0-\u00FF]'d$/; -var useDid = { - how: true, - what: true -}; -/** split `i'd` into 'i had', or 'i would' */ -var checkPerfect = function checkPerfect(term, phrase) { - if (hasPerfect.test(term.clean)) { - var root = term.clean.replace(/'d$/, ''); //look at the next few words + if (rules$1.isSingular.find(reg => reg.test(str))) { + t.tag('Singular', 'singular-rules', world); + return; + } // finally, fallback 'looks plural' rules.. - var terms = phrase.terms(); - var index = terms.indexOf(term); - var after = terms.slice(index + 1, index + 4); //is it before a past-tense verb? - 'i'd walked' - for (var i = 0; i < after.length; i++) { - var t = after[i]; + if (/s$/.test(str) === true) { + //avoid anything too sketchy to be plural + if (notPlural.find(reg => reg.test(str))) { + return; + } - if (t.tags.Verb) { - if (t.tags.PastTense) { - return [root, 'had']; - } //what'd you see + t.tag('Plural', 'plural-fallback', world); + return; + } //avoid anything too sketchy to be singular - if (useDid[root] === true) { - return [root, 'did']; + if (notSingular.find(reg => reg.test(str))) { + return; } - return [root, 'would']; + t.tag('Singular', 'singular-fallback', world); } - } //otherwise, 'i'd walk' - - - return [root, 'would']; - } - - return null; -}; - -var _05PerfectTense = checkPerfect; -var isRange = /^([0-9.]{1,3}[a-z]{0,2})[-–—]([0-9]{1,3}[a-z]{0,2})$/i; -var timeRange = /^([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)[-–—]([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)$/i; //split '2-4' into '2 to 4' - -var checkRange = function checkRange(term) { - if (term.tags.PhoneNumber === true) { - return null; - } + }; - var parts = term.text.match(isRange); + var _04Plurals = checkPlural; //todo remove/normalize plural forms + + const orgWords$1 = ['academy', 'administration', 'agence', 'agences', 'agencies', 'agency', 'airlines', 'airways', 'army', 'assoc', 'associates', 'association', 'assurance', 'authority', 'autorite', 'aviation', 'bank', 'banque', 'board', 'boys', 'brands', 'brewery', 'brotherhood', 'brothers', 'building society', 'bureau', 'cafe', 'caisse', 'capital', 'care', 'cathedral', 'center', 'central bank', 'centre', 'chemicals', 'choir', 'chronicle', 'church', 'circus', 'clinic', 'clinique', 'club', 'co', 'coalition', 'coffee', 'collective', 'college', 'commission', 'committee', 'communications', 'community', 'company', 'comprehensive', 'computers', 'confederation', 'conference', 'conseil', 'consulting', 'containers', 'corporation', 'corps', 'corp', 'council', 'crew', 'daily news', 'data', 'departement', 'department', 'department store', 'departments', 'design', 'development', 'directorate', 'division', 'drilling', 'education', 'eglise', 'electric', 'electricity', 'energy', 'ensemble', 'enterprise', 'enterprises', 'entertainment', 'estate', 'etat', 'evening news', 'faculty', 'federation', 'financial', 'fm', 'foundation', 'fund', 'gas', 'gazette', 'girls', 'government', 'group', 'guild', 'health authority', 'herald', 'holdings', 'hospital', 'hotel', 'hotels', 'inc', 'industries', 'institut', 'institute', 'institute of technology', 'institutes', 'insurance', 'international', 'interstate', 'investment', 'investments', 'investors', 'journal', 'laboratory', 'labs', // 'law', + 'liberation army', 'limited', 'local authority', 'local health authority', 'machines', 'magazine', 'management', 'marine', 'marketing', 'markets', 'media', 'memorial', 'mercantile exchange', 'ministere', 'ministry', 'military', 'mobile', 'motor', 'motors', 'musee', 'museum', // 'network', + 'news', 'news service', 'observatory', 'office', 'oil', 'optical', 'orchestra', 'organization', 'partners', 'partnership', // 'party', + "people's party", 'petrol', 'petroleum', 'pharmacare', 'pharmaceutical', 'pharmaceuticals', 'pizza', 'plc', 'police', 'polytechnic', 'post', 'power', 'press', 'productions', 'quartet', 'radio', 'regional authority', 'regional health authority', 'reserve', 'resources', 'restaurant', 'restaurants', 'savings', 'school', 'securities', 'service', 'services', 'social club', 'societe', 'society', 'sons', 'standard', 'state police', 'state university', 'stock exchange', 'subcommittee', 'syndicat', 'systems', 'telecommunications', 'telegraph', 'television', 'times', 'tribunal', 'tv', 'union', 'university', 'utilities', 'workers']; + var organizations = orgWords$1.reduce(function (h, str) { + h[str] = 'Noun'; + return h; + }, {}); + let orgWords = organizations; //could this word be an organization + + const maybeOrg = function (t) { + //must be a noun + if (!t.tags.Noun) { + return false; + } //can't be these things - if (parts !== null) { - return [parts[1], 'to', parts[2]]; - } else { - parts = term.text.match(timeRange); - if (parts !== null) { - return [parts[1], 'to', parts[4]]; - } - } + if (t.tags.Pronoun || t.tags.Comma || t.tags.Possessive) { + return false; + } //must be one of these - return null; -}; -var _06Ranges = checkRange; -var contraction = /^(l|c|d|j|m|n|qu|s|t)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z\u00C0-\u00FF]+)$/i; // basic support for ungendered french contractions -// not perfect, but better than nothing, to support matching on french text. - -var french = { - l: 'le', - // l'amour - c: 'ce', - // c'est - d: 'de', - // d'amerique - j: 'je', - // j'aime - m: 'me', - // m'appelle - n: 'ne', - // n'est - qu: 'que', - // qu'il - s: 'se', - // s'appelle - t: 'tu' // t'aime + if (t.tags.Organization || t.tags.Acronym || t.tags.Place || t.titleCase()) { + return true; + } -}; + return false; + }; -var checkFrench = function checkFrench(term) { - var parts = term.text.match(contraction); + const tagOrgs = function (terms, world) { + for (let i = 0; i < terms.length; i += 1) { + let t = terms[i]; - if (parts === null || french.hasOwnProperty(parts[1]) === false) { - return null; - } + if (orgWords[t.clean] !== undefined && orgWords.hasOwnProperty(t.clean) === true) { + // look-backward - eg. 'Toronto University' + let lastTerm = terms[i - 1]; - var arr = [french[parts[1]], parts[2]]; + if (lastTerm !== undefined && maybeOrg(lastTerm) === true) { + lastTerm.tagSafe('Organization', 'org-word-1', world); + t.tagSafe('Organization', 'org-word-2', world); + continue; + } //look-forward - eg. University of Toronto - if (arr[0] && arr[1]) { - return arr; - } - return null; -}; + let nextTerm = terms[i + 1]; -var _07French = checkFrench; -var isNumber = /^[0-9]+$/; -var isOrdinal = /^[0-9]+(st|nd|rd|th)$/; -var isTime = /^[0-9:]+(am|pm)$/; + if (nextTerm !== undefined && nextTerm.clean === 'of') { + if (terms[i + 2] && maybeOrg(terms[i + 2])) { + t.tagSafe('Organization', 'org-of-word-1', world); + nextTerm.tagSafe('Organization', 'org-of-word-2', world); + terms[i + 2].tagSafe('Organization', 'org-of-word-3', world); + continue; + } + } + } + } + }; -var createPhrase = function createPhrase(found, doc) { - //create phrase from ['would', 'not'] - var phrase = _01Tokenizer(found.join(' '), doc.world, doc.pool())[0]; //tag it + var _05Organizations = tagOrgs; + const oneLetterAcronym = /^[A-Z]('s|,)?$/; + const periodSeperated = /([A-Z]\.){2}[A-Z]?/i; + const oneLetterWord = { + I: true, + A: true + }; + const isAcronym = function (term, world) { + let str = term.reduced; // a known acronym like fbi - var terms = phrase.terms(); + if (term.tags.Acronym) { + return true; + } // if (term.tags.Adverb || term.tags.Verb || term.tags.Value || term.tags.Plural) { + // return false + // } + // known-words, like 'PIZZA' is not an acronym. - _01Lexicon(terms, doc.world); //make these terms implicit + if (world.words[str]) { + return false; + } // long capitalized words are not usually either - terms.forEach(function (t) { - t.implicit = t.text; - t.text = ''; - t.clean = ''; // remove whitespace for implicit terms - t.pre = ''; - t.post = ''; // tag number-ranges + if (str.length > 5) { + return false; + } - if (isNumber.test(t.implicit)) { - t.tag('Cardinal', 'num-range', doc.world); - } else if (isOrdinal.test(t.implicit)) { - t.tag('Ordinal', 'ord-range', doc.world); - } else if (isTime.test(t.implicit)) { - t.tag('Time', 'time-range', doc.world); - } else if (Object.keys(t.tags).length === 0) { - t.tags.Noun = true; // if no tag, give it a noun - } - }); - return phrase; -}; + return term.isAcronym(); + }; // F.B.I., NBC, - but not 'NO COLLUSION' -var contractions = function contractions(doc) { - var world = doc.world; - doc.list.forEach(function (p) { - var terms = p.terms(); - for (var i = 0; i < terms.length; i += 1) { - var term = terms[i]; + const checkAcronym = function (terms, world) { + terms.forEach(term => { + //these are not acronyms + if (term.tags.RomanNumeral === true) { + return; + } //period-ones F.D.B. - var found = _01Negative(term, p); - found = found || _02Simple(term); - found = found || _03Irregulars(term); - found = found || _04Possessive(term, p, world); - found = found || _05PerfectTense(term, p); - found = found || _06Ranges(term); - found = found || _07French(term); //add them in + if (periodSeperated.test(term.text) === true) { + term.tag('Acronym', 'period-acronym', world); + } //non-period ones are harder - if (found !== null) { - var newPhrase = createPhrase(found, doc); // keep tag NumberRange, if we had it - if (p.has('#NumberRange') === true) { - doc.buildFrom([newPhrase]).tag('NumberRange'); - } //set text as contraction + if (term.isUpperCase() && isAcronym(term, world)) { + term.tag('Acronym', 'acronym-step', world); + term.tag('Noun', 'acronym-infer', world); + } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) { + term.tag('Acronym', 'one-letter-acronym', world); + term.tag('Noun', 'one-letter-infer', world); + } //if it's a organization, - var firstTerm = newPhrase.terms(0); - firstTerm.text = term.text; //grab sub-phrase to remove + if (term.tags.Organization && term.text.length <= 3) { + term.tag('Acronym', 'acronym-org', world); + } - var match = p.buildFrom(term.id, 1, doc.pool()); - match.replace(newPhrase, doc, true); - } - } - }); - return doc; -}; + if (term.tags.Organization && term.isUpperCase() && term.text.length <= 6) { + term.tag('Acronym', 'acronym-org-case', world); + } + }); + }; -var _03Contractions = contractions; + var _06Acronyms = checkAcronym; + const step = { + neighbours: _01Neighbours, + case: _02Case, + stem: _03Stem, + plural: _04Plurals, + organizations: _05Organizations, + acronyms: _06Acronyms + }; // -var hasWord = function hasWord(doc, word) { - var arr = doc._cache.words[word] || []; - arr = arr.map(function (i) { - return doc.list[i]; - }); - return doc.buildFrom(arr); -}; + const fallbacks$1 = function (doc, terms) { + let world = doc.world; // if it's empty, consult it's neighbours, first -var hasTag = function hasTag(doc, tag) { - var arr = doc._cache.tags[tag] || []; - arr = arr.map(function (i) { - return doc.list[i]; - }); - return doc.buildFrom(arr); -}; //mostly pos-corections here + step.neighbours(terms, world); // is there a case-sensitive clue? + step.case(doc); // check 'rewatch' as 'watch' -var miscCorrection = function miscCorrection(doc) { - // imperative-form - var m = hasTag(doc, 'Infinitive'); + step.stem(terms, world); // ... fallback to a noun! - if (m.found) { - // you eat? - m = m.ifNo('@hasQuestionMark'); // i speak + terms.forEach(t => { + if (t.isKnown() === false) { + t.tag('Noun', 'noun-fallback', doc.world); + } + }); // turn 'Foo University' into an Org - m = m.ifNo('(i|we|they)'); // shut the door! + step.organizations(terms, world); //turn 'FBD' into an acronym - m.match('[#Infinitive] (#Determiner|#Possessive) #Noun', 0).tag('Imperative', 'shut-the'); // go-fast + step.acronyms(terms, world); //are the nouns singular or plural? - m.match('^[#Infinitive] #Adverb?$', 0).tag('Imperative', 'go-fast'); // do not go + terms.forEach(t => { + step.plural(t, doc.world); + }); + return doc; + }; - m.match('[(do && #Infinitive)] not? #Verb', 0).tag('Imperative', 'do-not'); // do it + var _02Fallbacks = fallbacks$1; + const hasNegative = /n't$/; + const irregulars$2 = { + "won't": ['will', 'not'], + wont: ['will', 'not'], + "can't": ['can', 'not'], + cant: ['can', 'not'], + cannot: ['can', 'not'], + "shan't": ['should', 'not'], + dont: ['do', 'not'], + dun: ['do', 'not'] // "ain't" is ambiguous for is/was + + }; // either 'is not' or 'are not' + + const doAint = function (term, phrase) { + let terms = phrase.terms(); + let index = terms.indexOf(term); + let before = terms.slice(0, index); //look for the preceding noun + + let noun = before.find(t => { + return t.tags.Noun; + }); - m.match('[#Infinitive] (it|some)', 0).tag('Imperative', 'do-it'); - } //exactly like + if (noun && noun.tags.Plural) { + return ['are', 'not']; + } + return ['is', 'not']; + }; - m = hasWord(doc, 'like'); - m.match('#Adverb like').notIf('(really|generally|typically|usually|sometimes|often|just) [like]').tag('Adverb', 'adverb-like'); //the orange. + const checkNegative$1 = function (term, phrase) { + //check named-ones + if (irregulars$2.hasOwnProperty(term.clean) === true) { + return irregulars$2[term.clean]; + } //this word needs it's own logic: - m = hasTag(doc, 'Adjective'); - m.match('#Determiner #Adjective$').notIf('(#Comparative|#Superlative)').terms(1).tag('Noun', 'the-adj-1'); // Firstname x (dangerous) - m = hasTag(doc, 'FirstName'); - m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('(#Pronoun|#Plural)').ifNo('@hasComma .').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train + if (term.clean === "ain't" || term.clean === 'aint') { + return doAint(term, phrase); + } //try it normally - m = hasTag(doc, 'Value'); - m = m.match('#Value #PresentTense').ifNo('#Copula'); - if (m.found) { - if (m.has('(one|1)') === true) { - m.terms(1).tag('Singular', 'one-presentTense'); - } else { - m.terms(1).tag('Plural', 'value-presentTense'); - } - } // well i've been... + if (hasNegative.test(term.clean) === true) { + let main = term.clean.replace(hasNegative, ''); + return [main, 'not']; + } + return null; + }; - doc.match('^(well|so|okay)').tag('Expression', 'well-'); // 10th of a second + var _01Negative = checkNegative$1; + const contraction$1 = /([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z]{1,2})$/i; //these ones don't seem to be ambiguous - doc.match('#Value [of a second]', 0).unTag('Value', 'of-a-second'); // 30 seconds + const easy = { + ll: 'will', + ve: 'have', + re: 'are', + m: 'am', + "n't": 'not' + }; // - doc.match('#Value [seconds]', 0).unTag('Value', '30-seconds').tag(['Unit', 'Plural']); //been walking + const checkApostrophe$1 = function (term) { + let parts = term.text.match(contraction$1); - m = hasTag(doc, 'Gerund'); - m.match("(be|been) (#Adverb|not)+? #Gerund").not('#Verb$').tag('Auxiliary', 'be-walking'); // directive verb - 'use reverse' + if (parts === null) { + return null; + } - doc.match('(try|use|attempt|build|make) #Verb').ifNo('(@hasComma|#Negative|#PhrasalVerb|#Copula|will|be)').lastTerm().tag('#Noun', 'do-verb'); //possessives - //'her match' vs 'let her match' + if (easy.hasOwnProperty(parts[2])) { + return [parts[1], easy[parts[2]]]; + } - m = hasTag(doc, 'Possessive'); - m = m.match('#Possessive [#Infinitive]', 0); + return null; + }; - if (!m.lookBehind('(let|made|make|force|ask)').found) { - m.tag('Noun', 'her-match'); - } + var _02Simple = checkApostrophe$1; + const irregulars$1 = { + wanna: ['want', 'to'], + gonna: ['going', 'to'], + im: ['i', 'am'], + alot: ['a', 'lot'], + ive: ['i', 'have'], + imma: ['I', 'will'], + "where'd": ['where', 'did'], + whered: ['where', 'did'], + "when'd": ['when', 'did'], + whend: ['when', 'did'], + // "how'd": ['how', 'did'], //'how would?' + // "what'd": ['what', 'did'], //'what would?' + howd: ['how', 'did'], + whatd: ['what', 'did'], + // "let's": ['let', 'us'], //too weird + //multiple word contractions + dunno: ['do', 'not', 'know'], + brb: ['be', 'right', 'back'], + gtg: ['got', 'to', 'go'], + irl: ['in', 'real', 'life'], + tbh: ['to', 'be', 'honest'], + imo: ['in', 'my', 'opinion'], + til: ['today', 'i', 'learned'], + rn: ['right', 'now'], + twas: ['it', 'was'], + '@': ['at'] + }; // + + const checkIrregulars$1 = function (term) { + //check white-list + if (irregulars$1.hasOwnProperty(term.clean)) { + return irregulars$1[term.clean]; + } - return doc; -}; + return null; + }; -var fixMisc = miscCorrection; + var _03Irregulars = checkIrregulars$1; + const hasApostropheS = /([a-z\u00C0-\u00FF]+)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]s$/i; + const banList = { + that: true, + there: true + }; + const hereThere = { + here: true, + there: true, + everywhere: true + }; -var unique = function unique(arr) { - var obj = {}; + const isPossessive = (term, pool) => { + // if we already know it + if (term.tags.Possessive) { + return true; + } //a pronoun can't be possessive - "he's house" - for (var i = 0; i < arr.length; i++) { - obj[arr[i]] = true; - } - return Object.keys(obj); -}; + if (term.tags.Pronoun || term.tags.QuestionWord) { + return false; + } -var _unique = unique; // order matters - -var list$5 = [// ==== Mutliple tags ==== -{ - match: 'too much', - tag: 'Adverb Adjective', - reason: 'bit-4' -}, // u r cool -{ - match: 'u r', - tag: 'Pronoun Copula', - reason: 'u r' -}, //sometimes adverbs - 'pretty good','well above' -{ - match: '#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)', - tag: '#Copula #Adverb #Adjective', - reason: 'sometimes-adverb' -}, //i better .. -{ - match: '(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense', - group: 0, - tag: 'Modal', - reason: 'i-better' -}, //walking is cool -{ - match: '[#Gerund] #Adverb? not? #Copula', - group: 0, - tag: 'Activity', - reason: 'gerund-copula' -}, //walking should be fun -{ - match: '[#Gerund] #Modal', - group: 0, - tag: 'Activity', - reason: 'gerund-modal' -}, //swear-words as non-expression POS -{ - match: 'holy (shit|fuck|hell)', - tag: 'Expression', - reason: 'swears-expression' -}, //Aircraft designer -{ - match: '#Noun #Actor', - tag: 'Actor', - reason: 'thing-doer' -}, { - match: '#Conjunction [u]', - group: 0, - tag: 'Pronoun', - reason: 'u-pronoun-2' -}, //'u' as pronoun -{ - match: '[u] #Verb', - group: 0, - tag: 'Pronoun', - reason: 'u-pronoun-1' -}, // ==== Determiners ==== -{ - match: '#Noun [(who|whom)]', - group: 0, - tag: 'Determiner', - reason: 'captain-who' -}, //that car goes -// { match: 'that #Noun [#PresentTense]', group: 0, tag: 'Determiner', reason: 'that-determiner' }, -{ - match: 'a bit much', - tag: 'Determiner Adverb Adjective', - reason: 'bit-3' -}, // ==== Propositions ==== -//all students -{ - match: '#Verb #Adverb? #Noun [(that|which)]', - group: 0, - tag: 'Preposition', - reason: 'that-prep' -}, //work, which has been done. -{ - match: '@hasComma [which] (#Pronoun|#Verb)', - group: 0, - tag: 'Preposition', - reason: 'which-copula' -}, { - match: '#Copula just [like]', - group: 0, - tag: 'Preposition', - reason: 'like-preposition' -}, //folks like her -{ - match: '#Noun [like] #Noun', - group: 0, - tag: 'Preposition', - reason: 'noun-like' -}, //fix for busted-up phrasalVerbs -// { match: '#Noun [#Particle]', group: 0, tag: 'Preposition', reason: 'repair-noPhrasal' }, -// ==== Conditions ==== -// had he survived, -{ - match: '[had] #Noun+ #PastTense', - group: 0, - tag: 'Condition', - reason: 'had-he' -}, // were he to survive -{ - match: '[were] #Noun+ to #Infinitive', - group: 0, - tag: 'Condition', - reason: 'were-he' -}, // ==== Questions ==== -//the word 'how' -{ - match: '^how', - tag: 'QuestionWord', - reason: 'how-question' -}, { - match: '[how] (#Determiner|#Copula|#Modal|#PastTense)', - group: 0, - tag: 'QuestionWord', - reason: 'how-is' -}, // //the word 'which' -{ - match: '^which', - tag: 'QuestionWord', - reason: 'which-question' -}, // { match: '[which] . (#Noun)+ #Pronoun', group: 0, tag: 'QuestionWord', reason: 'which-question2' }, -// { match: 'which', tag: 'QuestionWord', reason: 'which-question3' }, -// ==== Conjunctions ==== -{ - match: '[so] #Noun', - group: 0, - tag: 'Conjunction', - reason: 'so-conj' -}, //how he is driving -{ - match: '[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)', - group: 0, - tag: 'Conjunction', - reason: 'how-he-is-x' -} // { -// match: '[(who|what|where|why|how|when)] #Noun #Adverb? #Infinitive not? #Gerund', -// group: 0, -// tag: 'Conjunction', -// reason: 'when-i-go-fishing', -// }, -]; -var _01Misc = list$5; -var _ambig = { - // adverbs than can be adjectives - adverbAdjective: ['dark', 'bright', 'flat', 'light', 'soft', 'pale', 'dead', 'dim', 'faux', 'little', 'wee', 'sheer', 'most', 'near', 'good', 'extra', 'all'], - // names that are dates - personDate: ['april', 'june', 'may', 'jan', 'august', 'eve'], - // names that may be months - personMonth: ['january', 'april', 'may', 'june', 'jan', 'sep'], - // names that are adjectives - personAdjective: ['misty', 'rusty', 'dusty', 'rich', 'randy', 'young'], - // names that are verbs - personVerb: ['pat', 'wade', 'ollie', 'will', 'rob', 'buck', 'bob', 'mark', 'jack'], - // names that are verbs - personPlace: ['darwin', 'hamilton', 'paris', 'alexandria', 'houston', 'kobe', 'santiago', 'salvador', 'sydney', 'victoria'], - // names that are nouns - personNoun: ['art', 'baker', 'berg', 'bill', 'brown', 'charity', 'chin', 'christian', 'cliff', 'daisy', 'dawn', 'dick', 'dolly', 'faith', 'franco', 'gene', 'green', 'hall', 'hill', 'holly', 'hope', 'jean', 'jewel', 'joy', 'kelvin', 'king', 'kitty', 'lane', 'lily', 'melody', 'mercedes', 'miles', 'olive', 'penny', 'ray', 'reed', 'robin', 'rod', 'rose', 'sky', 'summer', 'trinity', 'van', 'viola', 'violet', 'wang', 'white'] -}; -var dates = "(".concat(_ambig.personDate.join('|'), ")"); -var list$4 = [// ==== Holiday ==== -{ - match: '#Holiday (day|eve)', - tag: 'Holiday', - reason: 'holiday-day' -}, // the captain who -// ==== WeekDay ==== -// sun the 5th -{ - match: '[sun] the #Ordinal', - tag: 'WeekDay', - reason: 'sun-the-5th' -}, //sun feb 2 -{ - match: '[sun] #Date', - group: 0, - tag: 'WeekDay', - reason: 'sun-feb' -}, //1pm next sun -{ - match: '#Date (on|this|next|last|during)? [sun]', - group: 0, - tag: 'WeekDay', - reason: '1pm-sun' -}, //this sat -{ - match: "(in|by|before|during|on|until|after|of|within|all) [sat]", - group: 0, - tag: 'WeekDay', - reason: 'sat' -}, { - match: "(in|by|before|during|on|until|after|of|within|all) [wed]", - group: 0, - tag: 'WeekDay', - reason: 'wed' -}, { - match: "(in|by|before|during|on|until|after|of|within|all) [march]", - group: 0, - tag: 'Month', - reason: 'march' -}, //sat november -{ - match: '[sat] #Date', - group: 0, - tag: 'WeekDay', - reason: 'sat-feb' -}, // ==== Month ==== -//all march -{ - match: "#Preposition [(march|may)]", - group: 0, - tag: 'Month', - reason: 'in-month' -}, //this march -{ - match: "this [(march|may)]", - group: 0, - tag: 'Month', - reason: 'this-month' -}, { - match: "next [(march|may)]", - group: 0, - tag: 'Month', - reason: 'this-month' -}, { - match: "last [(march|may)]", - group: 0, - tag: 'Month', - reason: 'this-month' -}, // march 5th -{ - match: "[(march|may)] the? #Value", - group: 0, - tag: 'Month', - reason: 'march-5th' -}, // 5th of march -{ - match: "#Value of? [(march|may)]", - group: 0, - tag: 'Month', - reason: '5th-of-march' -}, // march and feb -{ - match: "[(march|may)] .? #Date", - group: 0, - tag: 'Month', - reason: 'march-and-feb' -}, // feb to march -{ - match: "#Date .? [(march|may)]", - group: 0, - tag: 'Month', - reason: 'feb-and-march' -}, //quickly march -{ - match: "#Adverb [(march|may)]", - group: 0, - tag: 'Verb', - reason: 'quickly-march' -}, //march quickly -{ - match: "[(march|may)] #Adverb", - group: 0, - tag: 'Verb', - reason: 'march-quickly' -}, //5th of March -{ - match: '#Value of #Month', - tag: 'Date', - reason: 'value-of-month' -}, //5 March -{ - match: '#Cardinal #Month', - tag: 'Date', - reason: 'cardinal-month' -}, //march 5 to 7 -{ - match: '#Month #Value to #Value', - tag: 'Date', - reason: 'value-to-value' -}, //march the 12th -{ - match: '#Month the #Value', - tag: 'Date', - reason: 'month-the-value' -}, //june 7 -{ - match: '(#WeekDay|#Month) #Value', - tag: 'Date', - reason: 'date-value' -}, //7 june -{ - match: '#Value (#WeekDay|#Month)', - tag: 'Date', - reason: 'value-date' -}, //may twenty five -{ - match: '(#TextValue && #Date) #TextValue', - tag: 'Date', - reason: 'textvalue-date' -}, // in june -{ - match: "in [".concat(dates, "]"), - group: 0, - tag: 'Date', - reason: 'in-june' -}, { - match: "during [".concat(dates, "]"), - group: 0, - tag: 'Date', - reason: 'in-june' -}, { - match: "on [".concat(dates, "]"), - group: 0, - tag: 'Date', - reason: 'in-june' -}, { - match: "by [".concat(dates, "]"), - group: 0, - tag: 'Date', - reason: 'by-june' -}, { - match: "after [".concat(dates, "]"), - group: 0, - tag: 'Date', - reason: 'after-june' -}, { - match: "#Date [".concat(dates, "]"), - group: 0, - tag: 'Date', - reason: 'in-june' -}, // june 1992 -{ - match: "".concat(dates, " #Value"), - tag: 'Date', - reason: 'june-5th' -}, { - match: "".concat(dates, " #Date"), - tag: 'Date', - reason: 'june-5th' -}, // June Smith -{ - match: "".concat(dates, " #ProperNoun"), - tag: 'Person', - reason: 'june-smith', - safe: true -}, // june m. Cooper -{ - match: "".concat(dates, " #Acronym? (#ProperNoun && !#Month)"), - tag: 'Person', - reason: 'june-smith-jr' -}, // 'second' -{ - match: "#Cardinal [second]", - tag: 'Unit', - reason: 'one-second' -}, // second quarter -// { match: `#Ordinal quarter`, tag: 'Date', reason: 'second-quarter' }, -// 'aug 20-21' -{ - match: "#Month #NumberRange", - tag: 'Date', - reason: 'aug 20-21' -}, // timezones -// china standard time -{ - match: "(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time", - tag: 'Timezone', - reason: 'std-time' -}, // eastern time -{ - match: "(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time", - tag: 'Timezone', - reason: 'eastern-time' -}, // 5pm central -{ - match: "#Time [(eastern|mountain|pacific|central|est|pst|gmt)]", - group: 0, - tag: 'Timezone', - reason: '5pm-central' -}, // central european time -{ - match: "(central|western|eastern) european time", - tag: 'Timezone', - reason: 'cet' -}]; -var _02Dates = list$4; -var adjectives$1 = "(".concat(_ambig.personAdjective.join('|'), ")"); -var list$3 = [// all fell apart -{ - match: '[all] #Determiner? #Noun', - group: 0, - tag: 'Adjective', - reason: 'all-noun' -}, // very rusty -{ - match: "#Adverb [".concat(adjectives$1, "]"), - group: 0, - tag: 'Adjective', - reason: 'really-rich' -}, // rusty smith -{ - match: "".concat(adjectives$1, " #Person"), - tag: 'Person', - reason: 'randy-smith' -}, // rusty a. smith -{ - match: "".concat(adjectives$1, " #Acronym? #ProperNoun"), - tag: 'Person', - reason: 'rusty-smith' -}, //sometimes not-adverbs -{ - match: '#Copula [(just|alone)]$', - group: 0, - tag: 'Adjective', - reason: 'not-adverb' -}, //jack is guarded -{ - match: '#Singular is #Adverb? [#PastTense$]', - group: 0, - tag: 'Adjective', - reason: 'is-filled' -}, // smoked poutine is -{ - match: '[#PastTense] #Singular is', - group: 0, - tag: 'Adjective', - reason: 'smoked-poutine' -}, // baked onions are -{ - match: '[#PastTense] #Plural are', - group: 0, - tag: 'Adjective', - reason: 'baked-onions' -}, // well made -{ - match: 'well [#PastTense]', - group: 0, - tag: 'Adjective', - reason: 'well-made' -}, // is f*ed up -{ - match: '#Copula [fucked up?]', - tag: 'Adjective', - reason: 'swears-adjective' -}, //jack seems guarded -{ - match: '#Singular (seems|appears) #Adverb? [#PastTense$]', - group: 0, - tag: 'Adjective', - reason: 'seems-filled' -}, // Gerund-Adjectives - 'amusing, annoying' -//a staggering cost -{ - match: '(a|an) [#Gerund]', - group: 0, - tag: 'Adjective', - reason: 'a|an' -}, //as amusing as -{ - match: 'as [#Gerund] as', - group: 0, - tag: 'Adjective', - reason: 'as-gerund-as' -}, // more amusing than -{ - match: 'more [#Gerund] than', - group: 0, - tag: 'Adjective', - reason: 'more-gerund-than' -}, // very amusing -{ - match: '(so|very|extremely) [#Gerund]', - group: 0, - tag: 'Adjective', - reason: 'so-gerund' -}, // it was amusing -{ - match: '(it|he|she|everything|something) #Adverb? was #Adverb? [#Gerund]', - group: 0, - tag: 'Adjective', - reason: 'it-was-gerund' -}, // found it amusing -{ - match: '(found|found) it #Adverb? [#Gerund]', - group: 0, - tag: 'Adjective', - reason: 'found-it-gerund' -}, // a bit amusing -{ - match: 'a (little|bit|wee) bit? [#Gerund]', - group: 0, - tag: 'Adjective', - reason: 'a-bit-gerund' -}, // jury is out - preposition ➔ adjective -{ - match: '#Copula #Adjective? [(out|in|through)]$', - group: 0, - tag: 'Adjective', - reason: 'still-out' -}, // shut the door -{ - match: '^[#Adjective] (the|your) #Noun', - group: 0, - tag: 'Infinitive', - reason: 'shut-the' -}]; -var _03Adjective = list$3; -var _04Noun = [// ==== Plural ==== -//there are reasons -{ - match: 'there (are|were) #Adjective? [#PresentTense]', - group: 0, - tag: 'Plural', - reason: 'there-are' -}, // ==== Singular ==== -//the sun -{ - match: '#Determiner [sun]', - group: 0, - tag: 'Singular', - reason: 'the-sun' -}, //did a 900, paid a 20 -{ - match: '#Verb (a|an) [#Value]', - group: 0, - tag: 'Singular', - reason: 'did-a-value' -}, //'the can' -{ - match: 'the [(can|will|may)]', - group: 0, - tag: 'Singular', - reason: 'the can' -}, // ==== Possessive ==== -//spencer kelly's -{ - match: '#FirstName #Acronym? (#Possessive && #LastName)', - tag: 'Possessive', - reason: 'name-poss' -}, //Super Corp's fundraiser -{ - match: '#Organization+ #Possessive', - tag: 'Possessive', - reason: 'org-possessive' -}, //Los Angeles's fundraiser -{ - match: '#Place+ #Possessive', - tag: 'Possessive', - reason: 'place-possessive' -}, // assign all tasks -{ - match: '(#Verb && !#Modal) (all|every|each|most|some|no) [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'all-presentTense' -}, //the above is clear -{ - match: '#Determiner [#Adjective] #Copula', - group: 0, - tag: 'Noun', - reason: 'the-adj-is' -}, //real evil is -{ - match: '#Adjective [#Adjective] #Copula', - group: 0, - tag: 'Noun', - reason: 'adj-adj-is' -}, // PresentTense/Noun ambiguities -// big dreams, critical thinking -// have big dreams -{ - match: '(had|have|#PastTense) #Adjective [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'adj-presentTense' -}, // excellent answer spencer -{ - match: '^#Adjective [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'start adj-presentTense' -}, // one big reason -{ - match: '#Value #Adjective [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'one-big-reason' -}, // won widespread support -{ - match: '#PastTense #Adjective+ [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'won-wide-support' -}, // many poses -{ - match: '(many|few|several|couple) [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'many-poses' -}, // very big dreams -{ - match: '#Adverb #Adjective [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'very-big-dream' -}, // good wait staff -{ - match: '#Adjective [#Infinitive] #Noun', - group: 0, - tag: 'Noun', - reason: 'good-wait-staff' -}, // adorable little store -{ - match: '#Adjective #Adjective [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'adorable-little-store' -}, // of basic training -{ - match: '#Preposition #Adjective [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'of-basic-training' -}, // early warning -{ - match: '#Adjective [#Gerund]', - group: 0, - tag: 'Noun', - reason: 'early-warning' -}, // justifiying higher costs -{ - match: '#Gerund #Adverb? #Comparative [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'higher-costs' -}, // do the dance -{ - match: '#Infinitive (this|that|the) [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'do-this-dance' -}, //his fine -{ - match: '(his|her|its) [#Adjective]', - group: 0, - tag: 'Noun', - reason: 'his-fine' -}, //some pressing issues -{ - match: 'some [#Verb] #Plural', - group: 0, - tag: 'Noun', - reason: 'determiner6' -}, //'more' is not always an adverb -{ - match: 'more #Noun', - tag: 'Noun', - reason: 'more-noun' -}, { - match: '(#Noun && @hasComma) #Noun (and|or) [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'noun-list' -}, //3 feet -{ - match: '(right|rights) of .', - tag: 'Noun', - reason: 'right-of' -}, // a bit -{ - match: 'a [bit]', - group: 0, - tag: 'Noun', - reason: 'bit-2' -}, // my first thought -{ - match: '#Possessive #Ordinal [#PastTense]', - group: 0, - tag: 'Noun', - reason: 'first-thought' -}, //running-a-show -{ - match: '#Gerund #Determiner [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'running-a-show' -}, //the-only-reason -{ - match: '#Determiner #Adverb [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'the-reason' -}, //the nice swim -{ - match: '(the|this|those|these) #Adjective [#Verb]', - group: 0, - tag: 'Noun', - reason: 'the-adj-verb' -}, // the truly nice swim -{ - match: '(the|this|those|these) #Adverb #Adjective [#Verb]', - group: 0, - tag: 'Noun', - reason: 'determiner4' -}, //the orange is -{ - match: '#Determiner [#Adjective] (#Copula|#PastTense|#Auxiliary)', - group: 0, - tag: 'Noun', - reason: 'the-adj-2' -}, // a stream runs -{ - match: '(the|this|a|an) [#Infinitive] #Adverb? #Verb', - group: 0, - tag: 'Noun', - reason: 'determiner5' -}, //the test string -{ - match: '#Determiner [#Infinitive] #Noun', - group: 0, - tag: 'Noun', - reason: 'determiner7' -}, //a nice deal -{ - match: '#Determiner #Adjective #Adjective? [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'a-nice-inf' -}, //the wait to vote -{ - match: 'the [#Verb] #Preposition .', - group: 0, - tag: 'Noun', - reason: 'determiner1' -}, //a sense of -{ - match: '#Determiner [#Verb] of', - group: 0, - tag: 'Noun', - reason: 'the-verb-of' -}, //next career move -{ - match: '#Adjective #Noun+ [#Infinitive] #Copula', - group: 0, - tag: 'Noun', - reason: 'career-move' -}, //the threat of force -{ - match: '#Determiner #Noun of [#Verb]', - group: 0, - tag: 'Noun', - reason: 'noun-of-noun' -}, //the western line -{ - match: '#Determiner [(western|eastern|northern|southern|central)] #Noun', - group: 0, - tag: 'Noun', - reason: 'western-line' -}, //her polling -{ - match: '#Possessive [#Gerund]', - group: 0, - tag: 'Noun', - reason: 'her-polling' -}, //her fines -{ - match: '(his|her|its) [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'its-polling' -}, //linear algebra -{ - match: '(#Determiner|#Value) [(linear|binary|mobile|lexical|technical|computer|scientific|formal)] #Noun', - group: 0, - tag: 'Noun', - reason: 'technical-noun' -}, // a blown motor -{ - match: '(the|those|these|a|an) [#Participle] #Noun', - group: 0, - tag: 'Adjective', - reason: 'blown-motor' -}, // walk the walk -{ - match: '(the|those|these|a|an) #Adjective? [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'det-inf' -}, { - match: '(the|those|these|a|an) #Adjective? [#PresentTense]', - group: 0, - tag: 'Noun', - reason: 'det-pres' -}, { - match: '(the|those|these|a|an) #Adjective? [#PastTense]', - group: 0, - tag: 'Noun', - reason: 'det-past' -}, // this swimming -{ - match: '(this|that) [#Gerund]', - group: 0, - tag: 'Noun', - reason: 'this-gerund' -}, // at some point -{ - match: 'at some [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'at-some-inf' -}, //air-flow -{ - match: '(#Noun && @hasHyphen) #Verb', - tag: 'Noun', - reason: 'hyphen-verb' -}, //is no walk -{ - match: 'is no [#Verb]', - group: 0, - tag: 'Noun', - reason: 'is-no-verb' -}, //different views than -{ - match: '[#Verb] than', - group: 0, - tag: 'Noun', - reason: 'correction' -}, // goes to sleep -{ - match: '(go|goes|went) to [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'goes-to-verb' -}, //a close watch on -{ - match: '(a|an) #Noun [#Infinitive] (#Preposition|#Noun)', - group: 0, - tag: 'Noun', - reason: 'a-noun-inf' -}, //a tv show -{ - match: '(a|an) #Noun [#Infinitive]$', - group: 0, - tag: 'Noun', - reason: 'a-noun-inf2' -}, //do so -{ - match: 'do [so]', - group: 0, - tag: 'Noun', - reason: 'so-noun' -}, //is mark hughes -{ - match: '#Copula [#Infinitive] #Noun', - group: 0, - tag: 'Noun', - reason: 'is-pres-noun' -}, //a close -{ - match: '#Determiner #Adverb? [close]', - group: 0, - tag: 'Adjective', - reason: 'a-close' -}, // what the hell -{ - match: '#Determiner [(shit|damn|hell)]', - group: 0, - tag: 'Noun', - reason: 'swears-noun' -}, // the staff were -{ - match: '(the|these) [#Singular] (were|are)', - group: 0, - tag: 'Plural', - reason: 'singular-were' -}, // running for congress -{ - match: '#Gerund #Adjective? for [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'running-for' -}, // running to work -{ - match: '#Gerund #Adjective to [#Infinitive]', - group: 0, - tag: 'Noun', - reason: 'running-to' -}, // any questions for -{ - match: '(many|any|some|several) [#PresentTense] for', - group: 0, - tag: 'Noun', - reason: 'any-verbs-for' -}, // have fun -{ - match: "(have|had) [#Adjective] #Preposition .", - group: 0, - tag: 'Noun', - reason: 'have-fun' -}, // co-founder -{ - match: "co #Noun", - tag: 'Actor', - reason: 'co-noun' -}]; -var adjectives = "(".concat(_ambig.adverbAdjective.join('|'), ")"); -var _05Adverb = [//still good -{ - match: '[still] #Adjective', - group: 0, - tag: 'Adverb', - reason: 'still-advb' -}, //still make -{ - match: '[still] #Verb', - group: 0, - tag: 'Adverb', - reason: 'still-verb' -}, // so hot -{ - match: '[so] #Adjective', - group: 0, - tag: 'Adverb', - reason: 'so-adv' -}, // way hotter -{ - match: '[way] #Comparative', - group: 0, - tag: 'Adverb', - reason: 'way-adj' -}, // way too hot -{ - match: '[way] #Adverb #Adjective', - group: 0, - tag: 'Adverb', - reason: 'way-too-adj' -}, // all singing -{ - match: '[all] #Verb', - group: 0, - tag: 'Adverb', - reason: 'all-verb' -}, // sing like an angel -{ - match: '(#Verb && !#Modal) [like]', - group: 0, - tag: 'Adverb', - reason: 'verb-like' -}, //barely even walk -{ - match: '(barely|hardly) even', - tag: 'Adverb', - reason: 'barely-even' -}, //even held -{ - match: '[even] #Verb', - group: 0, - tag: 'Adverb', - reason: 'even-walk' -}, // even left -{ - match: 'even left', - tag: '#Adverb #Verb', - reason: 'even-left' -}, //cheering hard - dropped -ly's -{ - match: '(#PresentTense && !#Copula) [(hard|quick|long|bright|slow|fast|backwards|forwards)]', - group: 0, - tag: 'Adverb', - reason: 'lazy-ly' -}, // much appreciated -{ - match: '[much] #Adjective', - group: 0, - tag: 'Adverb', - reason: 'bit-1' -}, // is well -{ - match: '#Copula [#Adverb]$', - group: 0, - tag: 'Adjective', - reason: 'is-well' -}, // a bit cold -{ - match: 'a [(little|bit|wee) bit?] #Adjective', - group: 0, - tag: 'Adverb', - reason: 'a-bit-cold' -}, // dark green -{ - match: "[".concat(adjectives, "] #Adjective"), - group: 0, - tag: 'Adverb', - reason: 'dark-green' -}, // kinda sparkly -{ - match: "#Adverb [#Adverb]$", - group: 0, - tag: 'Adjective', - reason: 'kinda-sparkly' -}, { - match: "#Adverb [#Adverb] (and|or|then)", - group: 0, - tag: 'Adjective', - reason: 'kinda-sparkly-and' -}]; -var _06Value = [// ==== PhoneNumber ==== -//1 800 ... -{ - match: '1 #Value #PhoneNumber', - tag: 'PhoneNumber', - reason: '1-800-Value' -}, //(454) 232-9873 -{ - match: '#NumericValue #PhoneNumber', - tag: 'PhoneNumber', - reason: '(800) PhoneNumber' -}, // ==== Currency ==== -// chinese yuan -{ - match: '#Demonym #Currency', - tag: 'Currency', - reason: 'demonym-currency' -}, // ==== Ordinal ==== -{ - match: '[second] #Noun', - group: 0, - tag: 'Ordinal', - reason: 'second-noun' -}, // ==== Unit ==== -//5 yan -{ - match: '#Value+ [#Currency]', - group: 0, - tag: 'Unit', - reason: '5-yan' -}, { - match: '#Value [(foot|feet)]', - group: 0, - tag: 'Unit', - reason: 'foot-unit' -}, //minus 7 -{ - match: '(minus|negative) #Value', - tag: 'Value', - reason: 'minus-value' -}, //5 kg. -{ - match: '#Value [#Abbreviation]', - group: 0, - tag: 'Unit', - reason: 'value-abbr' -}, { - match: '#Value [k]', - group: 0, - tag: 'Unit', - reason: 'value-k' -}, { - match: '#Unit an hour', - tag: 'Unit', - reason: 'unit-an-hour' -}, //seven point five -{ - match: '#Value (point|decimal) #Value', - tag: 'Value', - reason: 'value-point-value' -}, // ten bucks -{ - match: '(#Value|a) [(buck|bucks|grand)]', - group: 0, - tag: 'Currency', - reason: 'value-bucks' -}, //quarter million -{ - match: '#Determiner [(half|quarter)] #Ordinal', - group: 0, - tag: 'Value', - reason: 'half-ordinal' -}, { - match: 'a #Value', - tag: 'Value', - reason: 'a-value' -}, // ==== Money ==== -{ - match: '[#Value+] #Currency', - group: 0, - tag: 'Money', - reason: '15 usd' -}, // thousand and two -{ - match: "(hundred|thousand|million|billion|trillion|quadrillion)+ and #Value", - tag: 'Value', - reason: 'magnitude-and-value' -}, //'a/an' can mean 1 - "a hour" -{ - match: '!once [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)', - group: 0, - tag: 'Value', - reason: 'a-is-one' -}]; -var verbs = "(".concat(_ambig.personVerb.join('|'), ")"); -var list$2 = [// adj -> gerund -// amusing his aunt -{ - match: '[#Adjective] #Possessive #Noun', - group: 0, - tag: 'Verb', - reason: 'gerund-his-noun' -}, // loving you -{ - match: '[#Adjective] (us|you)', - group: 0, - tag: 'Gerund', - reason: 'loving-you' -}, // slowly stunning -{ - match: '(slowly|quickly) [#Adjective]', - group: 0, - tag: 'Gerund', - reason: 'slowly-adj' -}, // like -{ - match: '(#Modal|i|they|we|do) not? [like]', - group: 0, - tag: 'PresentTense', - reason: 'modal-like' -}, // do not simply like -{ - match: 'do (simply|just|really|not)+ [(#Adjective|like)]', - group: 0, - tag: 'Verb', - reason: 'do-simply-like' -}, // does mean -{ - match: 'does (#Adverb|not)? [#Adjective]', - group: 0, - tag: 'PresentTense', - reason: 'does-mean' -}, // i mean -{ - match: 'i (#Adverb|do)? not? [mean]', - group: 0, - tag: 'PresentTense', - reason: 'i-mean' -}, // { match: '!are (i|you|we) (#Adverb|do)? [#Adjective]', group: 0, tag: 'PresentTense', reason: 'i-mean' }, -// ==== Tense ==== -//he left -{ - match: '#Noun #Adverb? [left]', - group: 0, - tag: 'PastTense', - reason: 'left-verb' -}, //this rocks -{ - match: '(this|that) [#Plural]', - group: 0, - tag: 'PresentTense', - reason: 'this-verbs' -}, // ==== Auxiliary ==== -//was walking -{ - match: "[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)", - group: 0, - tag: 'Auxiliary', - reason: 'copula-walking' -}, //support a splattering of auxillaries before a verb -{ - match: "[(has|had) (#Adverb|not)+?] #PastTense", - group: 0, - tag: 'Auxiliary', - reason: 'had-walked' -}, //would walk -{ - match: "[#Adverb+? (#Modal|did)+ (#Adverb|not)+?] #Verb", - group: 0, - tag: 'Auxiliary', - reason: 'modal-verb' -}, //would have had -{ - match: "[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb", - group: 0, - tag: 'Auxiliary', - reason: 'would-have' -}, //would be walking -// { match: `#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'would-be' }, -//had been walking -// { -// match: `(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb`, -// group: 0, -// tag: 'Auxiliary', -// reason: 'had-been', -// }, -//support a splattering of auxillaries before a verb -{ - match: "[(has|had) (#Adverb|not)+?] #PastTense", - group: 0, - tag: 'Auxiliary', - reason: 'had-walked' -}, // will walk -{ - match: '[(do|does|will|have|had)] (not|#Adverb)? #Verb', - group: 0, - tag: 'Auxiliary', - reason: 'have-had' -}, // about to go -{ - match: '[about to] #Adverb? #Verb', - group: 0, - tag: ['Auxiliary', 'Verb'], - reason: 'about-to' -}, //would be walking -{ - match: "#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb", - group: 0, - tag: 'Auxiliary', - reason: 'would-be' -}, //were being run -{ - match: "(were|was) being [#PresentTense]", - group: 0, - tag: 'PastTense', - reason: 'was-being' -}, //have run -// { match: `have #PresentTense`, group: 0, tag: 'PastTense', reason: 'have-vb' }, -//would have had -{ - match: "[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb", - group: 0, - tag: 'Auxiliary', - reason: 'would-have' -}, //had been walking -{ - match: "(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb", - group: 0, - tag: 'Auxiliary', - reason: 'had-been' -}, // was being driven -{ - match: '[(be|being|been)] #Participle', - group: 0, - tag: 'Auxiliary', - reason: 'being-foo' -}, // ==== Phrasal ==== -//'foo-up' -{ - match: '(#Verb && @hasHyphen) up', - tag: 'PhrasalVerb', - reason: 'foo-up' -}, { - match: '(#Verb && @hasHyphen) off', - tag: 'PhrasalVerb', - reason: 'foo-off' -}, { - match: '(#Verb && @hasHyphen) over', - tag: 'PhrasalVerb', - reason: 'foo-over' -}, { - match: '(#Verb && @hasHyphen) out', - tag: 'PhrasalVerb', - reason: 'foo-out' -}, //fall over -{ - match: '#PhrasalVerb [#PhrasalVerb]', - group: 0, - tag: 'Particle', - reason: 'phrasal-particle' -}, //back it up -{ - match: '#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]', - group: 0, - tag: 'Adverb', - reason: 'phrasal-pronoun-advb' -}, // ==== Copula ==== -//will be running (not copula) -{ - match: '[will #Adverb? not? #Adverb? be] #Gerund', - group: 0, - tag: 'Copula', - reason: 'will-be-copula' -}, //for more complex forms, just tag 'be' -{ - match: 'will #Adverb? not? #Adverb? [be] #Adjective', - group: 0, - tag: 'Copula', - reason: 'be-copula' -}, // ==== Infinitive ==== -//march to -{ - match: '[march] (up|down|back|to|toward)', - group: 0, - tag: 'Infinitive', - reason: 'march-to' -}, //must march -{ - match: '#Modal [march]', - group: 0, - tag: 'Infinitive', - reason: 'must-march' -}, //let him glue -{ - match: '(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)', - group: 0, - tag: 'Infinitive', - reason: 'let-him-glue' -}, //he quickly foo -// { match: '#Noun #Adverb [#Noun]', group: 0, tag: 'Verb', reason: 'quickly-foo' }, -//will secure our -{ - match: 'will [#Adjective]', - group: 0, - tag: 'Verb', - reason: 'will-adj' -}, //he disguised the thing -{ - match: '#Pronoun [#Adjective] #Determiner #Adjective? #Noun', - group: 0, - tag: 'Verb', - reason: 'he-adj-the' -}, //is eager to go -{ - match: '#Copula [#Adjective to] #Verb', - group: 0, - tag: 'Verb', - reason: 'adj-to' -}, // open the door -{ - match: '[open] #Determiner', - group: 0, - tag: 'Infinitive', - reason: 'open-the' -}, // compromises are possible -{ - match: '[#PresentTense] (are|were|was) #Adjective', - group: 0, - tag: 'Plural', - reason: 'compromises-are-possible' -}, // would wade -{ - match: "#Modal [".concat(verbs, "]"), - group: 0, - tag: 'Verb', - reason: 'would-mark' -}, { - match: "#Adverb [".concat(verbs, "]"), - group: 0, - tag: 'Verb', - reason: 'really-mark' -}, //to mark -{ - match: '(to|#Modal) [mark]', - group: 0, - tag: 'PresentTense', - reason: 'to-mark' -}, // wade smith -{ - match: "".concat(verbs, " #Person"), - tag: 'Person', - reason: 'rob-smith' -}, // wade m. Cooper -{ - match: "".concat(verbs, " #Acronym #ProperNoun"), - tag: 'Person', - reason: 'rob-a-smith' -}, // damn them -{ - match: '[shit] (#Determiner|#Possessive|them)', - group: 0, - tag: 'Verb', - reason: 'swear1-verb' -}, { - match: '[damn] (#Determiner|#Possessive|them)', - group: 0, - tag: 'Verb', - reason: 'swear2-verb' -}, { - match: '[fuck] (#Determiner|#Possessive|them)', - group: 0, - tag: 'Verb', - reason: 'swear3-verb' -}]; -var _07Verbs = list$2; -var list$1 = [// ==== Region ==== -//West Norforlk -{ - match: '(west|north|south|east|western|northern|southern|eastern)+ #Place', - tag: 'Region', - reason: 'west-norfolk' -}, //some us-state acronyms (exlude: al, in, la, mo, hi, me, md, ok..) -{ - match: '#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]', - group: 0, - tag: 'Region', - reason: 'us-state' -}, // portland oregon -{ - match: 'portland [or]', - group: 0, - tag: 'Region', - reason: 'portland-or' -}, //Foo District -{ - match: '#ProperNoun+ (district|region|province|county|prefecture|municipality|territory|burough|reservation)', - tag: 'Region', - reason: 'foo-district' -}, //District of Foo -{ - match: '(district|region|province|municipality|territory|burough|state) of #ProperNoun', - tag: 'Region', - reason: 'district-of-Foo' -}, // in Foo California -{ - match: 'in [#ProperNoun] #Place', - group: 0, - tag: 'Place', - reason: 'propernoun-place' -}, // ==== Address ==== -{ - match: '#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)', - tag: 'Address', - reason: 'address-st' -} // in houston -// { match: `in [${places}]`, group: 0, tag: 'Place', reason: 'in-paris' }, -// { match: `near [${places}]`, group: 0, tag: 'Place', reason: 'near-paris' }, -// { match: `at [${places}]`, group: 0, tag: 'Place', reason: 'at-paris' }, -// { match: `from [${places}]`, group: 0, tag: 'Place', reason: 'from-paris' }, -// { match: `to [${places}]`, group: 0, tag: 'Place', reason: 'to-paris' }, -// { match: `#Place [${places}]`, group: 0, tag: 'Place', reason: 'tokyo-paris' }, -// // houston texas -// { match: `[${places}] #Place`, group: 0, tag: 'Place', reason: 'paris-france' }, -]; -var _08Place = list$1; -var _09Org = [//John & Joe's -{ - match: '#Noun (&|n) #Noun', - tag: 'Organization', - reason: 'Noun-&-Noun' -}, // teachers union of Ontario -{ - match: '#Organization of the? #ProperNoun', - tag: 'Organization', - reason: 'org-of-place', - safe: true -}, //walmart USA -{ - match: '#Organization #Country', - tag: 'Organization', - reason: 'org-country' -}, //organization -{ - match: '#ProperNoun #Organization', - tag: 'Organization', - reason: 'titlecase-org' -}, //FitBit Inc -{ - match: '#ProperNoun (ltd|co|inc|dept|assn|bros)', - tag: 'Organization', - reason: 'org-abbrv' -}, // the OCED -{ - match: 'the [#Acronym]', - group: 0, - tag: 'Organization', - reason: 'the-acronym', - safe: true -}, // global trade union -{ - match: '(world|global|international|national|#Demonym) #Organization', - tag: 'Organization', - reason: 'global-org' -}, // schools -{ - match: '#Noun+ (public|private) school', - tag: 'School', - reason: 'noun-public-school' -}]; -var nouns = "(".concat(_ambig.personNoun.join('|'), ")"); -var months = "(".concat(_ambig.personMonth.join('|'), ")"); -var places = "(".concat(_ambig.personPlace.join('|'), ")"); -var list = [// ==== Honorific ==== -{ - match: '[(1st|2nd|first|second)] #Honorific', - group: 0, - tag: 'Honorific', - reason: 'ordinal-honorific' -}, { - match: '[(private|general|major|corporal|lord|lady|secretary|premier)] #Honorific? #Person', - group: 0, - tag: 'Honorific', - reason: 'ambg-honorifics' -}, // ==== FirstNames ==== -//is foo Smith -{ - match: '#Copula [(#Noun|#PresentTense)] #LastName', - group: 0, - tag: 'FirstName', - reason: 'copula-noun-lastname' -}, //pope francis -{ - match: '(lady|queen|sister) #ProperNoun', - tag: 'FemaleName', - reason: 'lady-titlecase', - safe: true -}, { - match: '(king|pope|father) #ProperNoun', - tag: 'MaleName', - reason: 'pope-titlecase', - safe: true -}, //ambiguous-but-common firstnames -{ - match: '[(will|may|april|june|said|rob|wade|ray|rusty|drew|miles|jack|chuck|randy|jan|pat|cliff|bill)] #LastName', - group: 0, - tag: 'FirstName', - reason: 'maybe-lastname' -}, // ==== Nickname ==== -// Dwayne 'the rock' Johnson -{ - match: '#FirstName [#Determiner #Noun] #LastName', - group: 0, - tag: 'NickName', - reason: 'first-noun-last' -}, //my buddy -{ - match: '#Possessive [#FirstName]', - group: 0, - tag: 'Person', - reason: 'possessive-name' -}, { - match: '#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun', - tag: 'Person', - reason: 'titlecase-acronym-titlecase', - safe: true -}, //ludwig van beethovan -{ - match: '#Acronym #LastName', - tag: 'Person', - reason: 'acronym-latname', - safe: true -}, //jk rowling -{ - match: '#Person (jr|sr|md)', - tag: 'Person', - reason: 'person-honorific' -}, //peter II -{ - match: '#Person #Person the? #RomanNumeral', - tag: 'Person', - reason: 'roman-numeral' -}, //'Professor Fink', 'General McCarthy' -{ - match: '#FirstName [/^[^aiurck]$/]', - group: 0, - tag: ['Acronym', 'Person'], - reason: 'john-e' -}, //Doctor john smith jr -//general pearson -{ - match: '#Honorific #Person', - tag: 'Person', - reason: 'honorific-person' -}, //remove single 'mr' -{ - match: '#Honorific #Acronym', - tag: 'Person', - reason: 'Honorific-TitleCase' -}, //j.k Rowling -{ - match: '#Noun van der? #Noun', - tag: 'Person', - reason: 'van der noun', - safe: true -}, //king of spain -{ - match: '(king|queen|prince|saint|lady) of #Noun', - tag: 'Person', - reason: 'king-of-noun', - safe: true -}, //lady Florence -{ - match: '(prince|lady) #Place', - tag: 'Person', - reason: 'lady-place' -}, //saint Foo -{ - match: '(king|queen|prince|saint) #ProperNoun', - tag: 'Person', - reason: 'saint-foo' -}, //Foo U Ford -{ - match: '[#ProperNoun] #Person', - group: 0, - tag: 'Person', - reason: 'proper-person', - safe: true -}, // al sharpton -{ - match: 'al (#Person|#ProperNoun)', - tag: 'Person', - reason: 'al-borlen', - safe: true -}, //ferdinand de almar -{ - match: '#FirstName de #Noun', - tag: 'Person', - reason: 'bill-de-noun' -}, //Osama bin Laden -{ - match: '#FirstName (bin|al) #Noun', - tag: 'Person', - reason: 'bill-al-noun' -}, //John L. Foo -{ - match: '#FirstName #Acronym #ProperNoun', - tag: 'Person', - reason: 'bill-acronym-title' -}, //Andrew Lloyd Webber -{ - match: '#FirstName #FirstName #ProperNoun', - tag: 'Person', - reason: 'bill-firstname-title' -}, //Mr Foo -{ - match: '#Honorific #FirstName? #ProperNoun', - tag: 'Person', - reason: 'dr-john-Title' -}, //peter the great -{ - match: '#FirstName the #Adjective', - tag: 'Person', - reason: 'name-the-great' -}, //very common-but-ambiguous lastnames -{ - match: '#FirstName (green|white|brown|hall|young|king|hill|cook|gray|price)', - tag: 'Person', - reason: 'bill-green' -}, // faith smith -{ - match: "".concat(nouns, " #Person"), - tag: 'Person', - reason: 'ray-smith', - safe: true -}, // faith m. Smith -{ - match: "".concat(nouns, " #Acronym? #ProperNoun"), - tag: 'Person', - reason: 'ray-a-smith', - safe: true -}, //give to april -{ - match: "#Infinitive #Determiner? #Adjective? #Noun? (to|for) [".concat(months, "]"), - group: 0, - tag: 'Person', - reason: 'ambig-person' -}, // remind june -{ - match: "#Infinitive [".concat(months, "]"), - group: 0, - tag: 'Person', - reason: 'infinitive-person' -}, // may waits for -// { match: `[${months}] #PresentTense for`, group: 0, tag: 'Person', reason: 'ambig-active-for' }, -// may waits to -// { match: `[${months}] #PresentTense to`, group: 0, tag: 'Person', reason: 'ambig-active-to' }, -// april will -{ - match: "[".concat(months, "] #Modal"), - group: 0, - tag: 'Person', - reason: 'ambig-modal' -}, // may be -{ - match: "[may] be", - group: 0, - tag: 'Verb', - reason: 'may-be' -}, // would april -{ - match: "#Modal [".concat(months, "]"), - group: 0, - tag: 'Person', - reason: 'modal-ambig' -}, // it is may -{ - match: "#Copula [".concat(months, "]"), - group: 0, - tag: 'Person', - reason: 'is-may' -}, // may is -{ - match: "[".concat(months, "] #Copula"), - group: 0, - tag: 'Person', - reason: 'may-is' -}, // with april -{ - match: "that [".concat(months, "]"), - group: 0, - tag: 'Person', - reason: 'that-month' -}, // with april -{ - match: "with [".concat(months, "]"), - group: 0, - tag: 'Person', - reason: 'with-month' -}, // for april -{ - match: "for [".concat(months, "]"), - group: 0, - tag: 'Person', - reason: 'for-month' -}, // this april -{ - match: "this [".concat(months, "]"), - group: 0, - tag: 'Month', - reason: 'this-may' -}, //maybe not 'this' -// next april -{ - match: "next [".concat(months, "]"), - group: 0, - tag: 'Month', - reason: 'next-may' -}, // last april -{ - match: "last [".concat(months, "]"), - group: 0, - tag: 'Month', - reason: 'last-may' -}, // wednesday april -{ - match: "#Date [".concat(months, "]"), - group: 0, - tag: 'Month', - reason: 'date-may' -}, // may 5th -{ - match: "[".concat(months, "] the? #Value"), - group: 0, - tag: 'Month', - reason: 'may-5th' -}, // 5th of may -{ - match: "#Value of [".concat(months, "]"), - group: 0, - tag: 'Month', - reason: '5th-of-may' -}, // dick van dyke -{ - match: '#ProperNoun (van|al|bin) #ProperNoun', - tag: 'Person', - reason: 'title-van-title', - safe: true -}, //jose de Sucre -{ - match: '#ProperNoun (de|du) la? #ProperNoun', - tag: 'Person', - reason: 'title-de-title', - safe: true -}, //Jani K. Smith -{ - match: '#Singular #Acronym #LastName', - tag: '#Person', - reason: 'title-acro-noun', - safe: true -}, //John Foo -{ - match: '#FirstName (#Noun && #ProperNoun) #ProperNoun?', - tag: 'Person', - reason: 'firstname-titlecase' -}, //Joe K. Sombrero -{ - match: '#FirstName #Acronym #Noun', - tag: 'Person', - reason: 'n-acro-noun', - safe: true -}, //Anthony de Marco -{ - match: '#FirstName [(de|di|du|van|von) #Person]', - group: 0, - tag: 'LastName', - reason: 'de-firstname' -}, // Paris Berelc -{ - match: "[".concat(places, "] (#ProperNoun && !#Place)"), - group: 0, - tag: 'FirstName', - reason: 'place-firstname' -}]; -var _10People = list; -var matches = []; -matches = matches.concat(_01Misc); -matches = matches.concat(_02Dates); -matches = matches.concat(_03Adjective); -matches = matches.concat(_04Noun); -matches = matches.concat(_05Adverb); -matches = matches.concat(_06Value); -matches = matches.concat(_07Verbs); -matches = matches.concat(_08Place); -matches = matches.concat(_09Org); -matches = matches.concat(_10People); // cache the easier conditions up-front - -var cacheRequired = function cacheRequired(reg) { - var needTags = []; - var needWords = []; - reg.forEach(function (obj) { - if (obj.optional === true || obj.negative === true) { - return; - } + if (banList.hasOwnProperty(term.reduced)) { + return false; + } //if end of sentence, it is possessive - "was spencer's" - if (obj.tag !== undefined) { - needTags.push(obj.tag); - } - if (obj.word !== undefined) { - needWords.push(obj.word); - } - }); - return { - tags: _unique(needTags), - words: _unique(needWords) - }; -}; // for speed, enumerate (a|b|c) to three matches + let nextTerm = pool.get(term.next); + if (!nextTerm) { + return true; + } //a gerund suggests 'is walking' -var allLists = function allLists(m) { - var more = []; - var lists = m.reg.filter(function (r) { - return r.fastOr !== undefined; - }); - if (lists.length === 1) { - var i = m.reg.findIndex(function (r) { - return r.fastOr !== undefined; - }); - Object.keys(m.reg[i].fastOr).forEach(function (w) { - var newM = Object.assign({}, m); - newM.reg = newM.reg.slice(0); - newM.reg[i] = Object.assign({}, newM.reg[i]); - newM.reg[i].word = w; - delete newM.reg[i].operator; - delete newM.reg[i].fastOr; // newM.reason += '-' + w - - more.push(newM); - }); - } + if (nextTerm.tags.Verb) { + //fix 'jamie's bite' + if (nextTerm.tags.Infinitive) { + return true; + } //fix 'spencer's runs' - return more; -}; // parse them + if (nextTerm.tags.PresentTense) { + return true; + } -var all = []; -matches.forEach(function (m) { - m.reg = matchSyntax(m.match); - var enumerated = allLists(m); + return false; + } //spencer's house - if (enumerated.length > 0) { - all = all.concat(enumerated); - } else { - all.push(m); // console.log(m) - } -}); -all.forEach(function (m) { - m.required = cacheRequired(m.reg); - return m; -}); // console.log(all.length) -// console.log(all[all.length - 1]) - -var matches_1 = all; - -var hasEvery = function hasEvery(chances) { - if (chances.length === 0) { - return []; - } - var obj = {}; - chances.forEach(function (arr) { - arr = _unique(arr); + if (nextTerm.tags.Noun) { + // 'spencer's here' + if (hereThere.hasOwnProperty(nextTerm.reduced) === true) { + return false; + } - for (var i = 0; i < arr.length; i++) { - obj[arr[i]] = obj[arr[i]] || 0; - obj[arr[i]] += 1; - } - }); - var res = Object.keys(obj); - res = res.filter(function (k) { - return obj[k] === chances.length; - }); - res = res.map(function (num) { - return Number(num); - }); - return res; -}; + return true; + } //rocket's red glare -var runner = function runner(doc) { - //find phrases to try for each match - matches_1.forEach(function (m) { - var allChances = []; - m.required.words.forEach(function (w) { - allChances.push(doc._cache.words[w] || []); - }); - m.required.tags.forEach(function (tag) { - allChances.push(doc._cache.tags[tag] || []); - }); - var worthIt = hasEvery(allChances); - if (worthIt.length === 0) { - return; - } + let twoTerm = pool.get(nextTerm.next); - var phrases = worthIt.map(function (index) { - return doc.list[index]; - }); - var tryDoc = doc.buildFrom(phrases); // phrases getting tagged + if (twoTerm && twoTerm.tags.Noun && !twoTerm.tags.Pronoun) { + return true; + } //othwerwise, an adjective suggests 'is good' - var match = tryDoc.match(m.reg, m.group); - if (match.found) { - if (m.safe === true) { - match.tagSafe(m.tag, m.reason); - } else { - match.tag(m.tag, m.reason); + if (nextTerm.tags.Adjective || nextTerm.tags.Adverb || nextTerm.tags.Verb) { + return false; } - } - }); -}; -var runner_1 = runner; // console.log(hasEvery([[1, 2, 2, 3], [2, 3], []])) -// misc: 40ms -//sequence of match-tag statements to correct mis-tags + return false; + }; -var corrections = function corrections(doc) { - runner_1(doc); - fixMisc(doc); - return doc; -}; + const isHas = (term, phrase) => { + let terms = phrase.terms(); + let index = terms.indexOf(term); + let after = terms.slice(index + 1, index + 3); //look for a past-tense verb -var _04Correction = corrections; -/** POS-tag all terms in this document */ + return after.find(t => { + return t.tags.PastTense; + }); + }; -var tagger = function tagger(doc) { - var terms = doc.termList(); // check against any known-words + const checkPossessive$1 = function (term, phrase, world) { + //the rest of 's + let found = term.text.match(hasApostropheS); - doc = _01Init(doc, terms); // everything has gotta be something. ¯\_(:/)_/¯ + if (found !== null) { + //spencer's thing vs spencer-is + if (isPossessive(term, phrase.pool) === true) { + term.tag('#Possessive', 'isPossessive', world); + return null; + } //'spencer is' - doc = _02Fallbacks(doc, terms); // support "didn't" & "spencer's" - doc = _03Contractions(doc); //set our cache, to speed things up + if (found !== null) { + if (isHas(term, phrase)) { + return [found[1], 'has']; + } - doc.cache(); // wiggle-around the results, so they make more sense + return [found[1], 'is']; + } + } - doc = _04Correction(doc); // remove our cache, as it's invalidated now + return null; + }; - doc.uncache(); // run any user-given tagger functions + var _04Possessive = checkPossessive$1; + const hasPerfect = /[a-z\u00C0-\u00FF]'d$/; + const useDid = { + how: true, + what: true + }; + /** split `i'd` into 'i had', or 'i would' */ - doc.world.taggers.forEach(function (fn) { - fn(doc); - }); - return doc; -}; + const checkPerfect$1 = function (term, phrase) { + if (hasPerfect.test(term.clean)) { + let root = term.clean.replace(/'d$/, ''); //look at the next few words -var _02Tagger = tagger; + let terms = phrase.terms(); + let index = terms.indexOf(term); + let after = terms.slice(index + 1, index + 4); //is it before a past-tense verb? - 'i'd walked' -var addMethod$a = function addMethod(Doc) { - /** */ - var Abbreviations = /*#__PURE__*/function (_Doc) { - _inherits(Abbreviations, _Doc); + for (let i = 0; i < after.length; i++) { + let t = after[i]; - var _super = _createSuper(Abbreviations); + if (t.tags.Verb) { + if (t.tags.PastTense) { + return [root, 'had']; + } //what'd you see - function Abbreviations() { - _classCallCheck(this, Abbreviations); - return _super.apply(this, arguments); - } + if (useDid[root] === true) { + return [root, 'did']; + } - _createClass(Abbreviations, [{ - key: "stripPeriods", - value: function stripPeriods() { - this.termList().forEach(function (t) { - if (t.tags.Abbreviation === true && t.next) { - t.post = t.post.replace(/^\./, ''); + return [root, 'would']; } + } //otherwise, 'i'd walk' - var str = t.text.replace(/\./, ''); - t.set(str); - }); - return this; - } - }, { - key: "addPeriods", - value: function addPeriods() { - this.termList().forEach(function (t) { - t.post = t.post.replace(/^\./, ''); - t.post = '.' + t.post; - }); - return this; - } - }]); - return Abbreviations; - }(Doc); + return [root, 'would']; + } - Abbreviations.prototype.unwrap = Abbreviations.prototype.stripPeriods; + return null; + }; - Doc.prototype.abbreviations = function (n) { - var match = this.match('#Abbreviation'); + var _05PerfectTense = checkPerfect$1; + const isRange = /^([0-9.]{1,3}[a-z]{0,2}) ?[-–—] ?([0-9]{1,3}[a-z]{0,2})$/i; + const timeRange = /^([0-9][0-9]?(:[0-9][0-9])?(am|pm)?) ?[-–—] ?([0-9][0-9]?(:[0-9][0-9])?(am|pm)?)$/i; //split '2-4' into '2 to 4' - if (typeof n === 'number') { - match = match.get(n); - } + const checkRange$1 = function (term) { + if (term.tags.PhoneNumber === true) { + return null; + } - return new Abbreviations(match.list, this, this.world); - }; + let parts = term.text.match(isRange); - return Doc; -}; + if (parts !== null) { + return [parts[1], 'to', parts[2]]; + } else { + parts = term.text.match(timeRange); -var Abbreviations = addMethod$a; -var hasPeriod = /\./; + if (parts !== null) { + return [parts[1], 'to', parts[4]]; + } + } -var addMethod$9 = function addMethod(Doc) { - /** */ - var Acronyms = /*#__PURE__*/function (_Doc) { - _inherits(Acronyms, _Doc); + return null; + }; - var _super = _createSuper(Acronyms); + var _06Ranges = checkRange$1; + const contraction = /^(l|c|d|j|m|n|qu|s|t)[\u0027\u0060\u00B4\u2018\u2019\u201A\u201B\u2032\u2035\u2039\u203A]([a-z\u00C0-\u00FF]+)$/i; // basic support for ungendered french contractions + // not perfect, but better than nothing, to support matching on french text. + + const french = { + l: 'le', + // l'amour + c: 'ce', + // c'est + d: 'de', + // d'amerique + j: 'je', + // j'aime + m: 'me', + // m'appelle + n: 'ne', + // n'est + qu: 'que', + // qu'il + s: 'se', + // s'appelle + t: 'tu' // t'aime - function Acronyms() { - _classCallCheck(this, Acronyms); + }; - return _super.apply(this, arguments); - } + const checkFrench$1 = function (term) { + let parts = term.text.match(contraction); - _createClass(Acronyms, [{ - key: "stripPeriods", - value: function stripPeriods() { - this.termList().forEach(function (t) { - var str = t.text.replace(/\./g, ''); - t.set(str); - }); - return this; + if (parts === null || french.hasOwnProperty(parts[1]) === false) { + return null; } - }, { - key: "addPeriods", - value: function addPeriods() { - this.termList().forEach(function (t) { - var str = t.text.replace(/\./g, ''); - str = str.split('').join('.'); // don't add a end-period if there's a sentence-end one - - if (hasPeriod.test(t.post) === false) { - str += '.'; - } - t.set(str); - }); - return this; + let arr = [french[parts[1]], parts[2]]; + + if (arr[0] && arr[1]) { + return arr; } - }]); - return Acronyms; - }(Doc); + return null; + }; - Acronyms.prototype.unwrap = Acronyms.prototype.stripPeriods; - Acronyms.prototype.strip = Acronyms.prototype.stripPeriods; + var _07French = checkFrench$1; + const checkLexicon = _01Lexicon; + const tokenize$2 = _01Tokenizer; + const checkNegative = _01Negative; + const checkApostrophe = _02Simple; + const checkIrregulars = _03Irregulars; + const checkPossessive = _04Possessive; + const checkPerfect = _05PerfectTense; + const checkRange = _06Ranges; + const checkFrench = _07French; + const isNumber = /^[0-9]+$/; + const isOrdinal = /^[0-9]+(st|nd|rd|th)$/; + const isTime = /^[0-9:]+(am|pm)?$/; + + const createPhrase = function (found, doc) { + //create phrase from ['would', 'not'] + let phrase = tokenize$2(found.join(' '), doc.world, doc.pool())[0]; //tag it + + let terms = phrase.terms(); + checkLexicon(terms, doc.world); + let term = terms[0]; // tag number-ranges + + if (isOrdinal.test(term.text) && terms[2]) { + terms[0].tag('Ordinal', 'ord-range', doc.world); + terms[2].tag('Ordinal', 'ord-range', doc.world); + } else if (isNumber.test(term.text) && terms[2]) { + terms[0].tag('Cardinal', 'num-range', doc.world); + terms[2].tag('Cardinal', 'num-range', doc.world); + } else if (isTime.test(term.text) && terms[1] && terms[2]) { + terms[0].tag('Time', 'time-range', doc.world); + terms[1].tag('Date', 'time-range', doc.world); + terms[2].tag('Time', 'time-range', doc.world); + } //make these terms implicit + + + terms.forEach(t => { + t.implicit = t.text; + t.text = ''; + t.clean = ''; // remove whitespace for implicit terms + + t.pre = ''; + t.post = ''; - Doc.prototype.acronyms = function (n) { - var match = this.match('#Acronym'); + if (Object.keys(t.tags).length === 0) { + t.tags.Noun = true; // if no tag, give it a noun + } + }); + return phrase; + }; - if (typeof n === 'number') { - match = match.get(n); - } + const contractions$1 = function (doc) { + let world = doc.world; + doc.list.forEach(p => { + let terms = p.terms(); - return new Acronyms(match.list, this, this.world); - }; + for (let i = 0; i < terms.length; i += 1) { + let term = terms[i]; + let found = checkNegative(term, p); + found = found || checkApostrophe(term); + found = found || checkIrregulars(term); + found = found || checkPossessive(term, p, world); + found = found || checkPerfect(term, p); + found = found || checkRange(term); + found = found || checkFrench(term); //add them in - return Doc; -}; + if (found !== null) { + let newPhrase = createPhrase(found, doc); // keep tag NumberRange, if we had it -var Acronyms = addMethod$9; - -var addMethod$8 = function addMethod(Doc) { - /** split into approximate sub-sentence phrases */ - Doc.prototype.clauses = function (n) { - // an awkward way to disambiguate a comma use - var commas = this["if"]('@hasComma').notIf('@hasComma @hasComma') //fun, cool... - .notIf('@hasComma . .? (and|or) .') //cool, and fun - .notIf('(#City && @hasComma) #Country') //'toronto, canada' - .notIf('(#WeekDay && @hasComma) #Date') //'tuesday, march 2nd' - .notIf('(#Date && @hasComma) #Year') //'july 6, 1992' - .notIf('@hasComma (too|also)$') //at end of sentence - .match('@hasComma'); - var found = this.splitAfter(commas); - var quotes = found.quotations(); - found = found.splitOn(quotes); - var parentheses = found.parentheses(); - found = found.splitOn(parentheses); // it is cool and it is .. - - var conjunctions = found["if"]('#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb').match('#Conjunction'); - found = found.splitBefore(conjunctions); // if it is this then that - - var condition = found["if"]('if .{2,9} then .').match('then'); - found = found.splitBefore(condition); // misc clause partitions - - found = found.splitBefore('as well as .'); - found = found.splitBefore('such as .'); - found = found.splitBefore('in addition to .'); // semicolons, dashes - - found = found.splitAfter('@hasSemicolon'); - found = found.splitAfter('@hasDash'); // passive voice verb - '.. which was robbed is empty' - // let passive = found.match('#Noun (which|that) (was|is) #Adverb? #PastTense #Adverb?') - // if (passive.found) { - // found = found.splitAfter(passive) - // } - // //which the boy robbed - // passive = found.match('#Noun (which|that) the? #Noun+ #Adverb? #PastTense #Adverb?') - // if (passive.found) { - // found = found.splitAfter(passive) - // } - // does there appear to have relative/subordinate clause still? + if (p.has('#NumberRange') === true) { + doc.buildFrom([newPhrase]).tag('NumberRange'); + } //set text as contraction - var tooLong = found.filter(function (d) { - return d.wordCount() > 5 && d.match('#Verb+').length >= 2; - }); - if (tooLong.found) { - var m = tooLong.splitAfter('#Noun .* #Verb .* #Noun+'); - found = found.splitOn(m.eq(0)); - } + let firstTerm = newPhrase.terms(0); + firstTerm.text = term.text; //grab sub-phrase to remove - if (typeof n === 'number') { - found = found.get(n); - } + let match = p.buildFrom(term.id, 1, doc.pool()); + match.replace(newPhrase, doc, true); + } + } + }); + return doc; + }; - return new Doc(found.list, this, this.world); - }; + var _03Contractions = contractions$1; - return Doc; -}; + const hasWord = function (doc, word) { + let arr = doc._cache.words[word] || []; + arr = arr.map(i => doc.list[i]); + return doc.buildFrom(arr); + }; -var Clauses = addMethod$8; + const hasTag = function (doc, tag) { + let arr = doc._cache.tags[tag] || []; + arr = arr.map(i => doc.list[i]); + return doc.buildFrom(arr); + }; //mostly pos-corections here -var addMethod$7 = function addMethod(Doc) { - /** */ - var Contractions = /*#__PURE__*/function (_Doc) { - _inherits(Contractions, _Doc); - var _super = _createSuper(Contractions); + const miscCorrection = function (doc) { + // imperative-form + let m = hasTag(doc, 'Infinitive'); - function Contractions(list, from, world) { - var _this; + if (m.found) { + // you eat? + m = m.ifNo('@hasQuestionMark'); // i speak - _classCallCheck(this, Contractions); + m = m.ifNo('(i|we|they)'); // shut the door! - _this = _super.call(this, list, from, world); - _this.contracted = null; - return _this; - } - /** turn didn't into 'did not' */ + m.not('will be').match('[#Infinitive] (#Determiner|#Possessive) #Noun').notIf('(our|their)').match('#Infinitive').tag('Imperative', 'shut-the'); // go-fast + m.match('^[#Infinitive] #Adverb?$', 0).tag('Imperative', 'go-fast'); // do not go - _createClass(Contractions, [{ - key: "expand", - value: function expand() { - this.list.forEach(function (p) { - var terms = p.terms(); //change the case? + m.match('[(do && #Infinitive)] not? #Verb', 0).tag('Imperative', 'do-not'); // do it - var isTitlecase = terms[0].isTitleCase(); - terms.forEach(function (t, i) { - //use the implicit text - t.set(t.implicit || t.text); - t.implicit = undefined; //add whitespace + m.match('[#Infinitive] (it|some) (#Comparative|#Preposition|please|now|again)', 0).tag('Imperative', 'do-it'); + } //exactly like - if (i < terms.length - 1 && t.post === '') { - t.post += ' '; - } - }); //set titlecase - if (isTitlecase) { - terms[0].toTitleCase(); - } - }); - return this; - } - }]); - - return Contractions; - }(Doc); //find contractable, expanded-contractions - // const findExpanded = r => { - // let remain = r.not('#Contraction') - // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)') - // m.concat(remain.match('(they|we|you|i) have')) - // m.concat(remain.match('i am')) - // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not')) - // return m - // } + m = hasWord(doc, 'like'); + m.match('#Adverb like').notIf('(really|generally|typically|usually|sometimes|often|just) [like]').tag('Adverb', 'adverb-like'); //the orange. + m = hasTag(doc, 'Adjective'); + m.match('#Determiner #Adjective$').notIf('(#Comparative|#Superlative)').terms(1).tag('Noun', 'the-adj-1'); // Firstname x (dangerous) - Doc.prototype.contractions = function (n) { - //find currently-contracted - var found = this.match('@hasContraction+'); //(may want to split these up) - //todo: split consecutive contractions + m = hasTag(doc, 'FirstName'); + m.match('#FirstName (#Noun|@titleCase)').ifNo('^#Possessive').ifNo('(#Pronoun|#Plural)').ifNo('@hasComma .').lastTerm().tag('#LastName', 'firstname-noun'); //three trains / one train - if (typeof n === 'number') { - found = found.get(n); - } + m = hasTag(doc, 'Value'); + m = m.match('#Value #PresentTense').ifNo('#Copula'); - return new Contractions(found.list, this, this.world); - }; //aliases + if (m.found) { + if (m.has('(one|1)') === true) { + m.terms(1).tag('Singular', 'one-presentTense'); + } else { + m.terms(1).tag('Plural', 'value-presentTense'); + } + } // well i've been... - Doc.prototype.expanded = Doc.prototype.isExpanded; - Doc.prototype.contracted = Doc.prototype.isContracted; - return Doc; -}; + doc.match('^(well|so|okay)').tag('Expression', 'well-'); // 10th of a second -var Contractions = addMethod$7; + doc.match('#Value [of a second]', 0).unTag('Value', 'of-a-second'); // 30 seconds -var addMethod$6 = function addMethod(Doc) { - //pull it apart.. - var parse = function parse(doc) { - var things = doc.splitAfter('@hasComma').splitOn('(and|or) not?').not('(and|or) not?'); - var beforeLast = doc.match('[.] (and|or)', 0); - return { - things: things, - conjunction: doc.match('(and|or) not?'), - beforeLast: beforeLast, - hasOxford: beforeLast.has('@hasComma') - }; - }; - /** cool, fun, and nice */ + doc.match('#Value [seconds]', 0).unTag('Value', '30-seconds').tag(['Unit', 'Plural']); //been walking + m = hasTag(doc, 'Gerund'); + m.match("(be|been) (#Adverb|not)+? #Gerund").not('#Verb$').tag('Auxiliary', 'be-walking'); // directive verb - 'use reverse' - var Lists = /*#__PURE__*/function (_Doc) { - _inherits(Lists, _Doc); + doc.match('(try|use|attempt|build|make) #Verb').ifNo('(@hasComma|#Negative|#PhrasalVerb|#Copula|will|be)').lastTerm().tag('#Noun', 'do-verb'); //possessives + //'her match' vs 'let her match' - var _super = _createSuper(Lists); + m = hasTag(doc, 'Possessive'); + m = m.match('#Possessive [#Infinitive]', 0); - function Lists() { - _classCallCheck(this, Lists); + if (!m.lookBehind('(let|made|make|force|ask)').found) { + m.tag('Noun', 'her-match'); + } - return _super.apply(this, arguments); - } + return doc; + }; - _createClass(Lists, [{ - key: "conjunctions", - value: - /** coordinating conjunction */ - function conjunctions() { - return this.match('(and|or)'); - } - /** split-up by list object */ + var fixMisc$1 = miscCorrection; - }, { - key: "parts", - value: function parts() { - return this.splitAfter('@hasComma').splitOn('(and|or) not?'); + const unique$2 = function (arr) { + let obj = {}; + + for (let i = 0; i < arr.length; i++) { + obj[arr[i]] = true; } - /** remove the conjunction */ + return Object.keys(obj); + }; + + var _unique = unique$2; + const list$5 = [// ==== Mutliple tags ==== + { + match: 'too much', + tag: 'Adverb Adjective', + reason: 'bit-4' + }, // u r cool + { + match: 'u r', + tag: 'Pronoun Copula', + reason: 'u r' + }, //sometimes adverbs - 'pretty good','well above' + { + match: '#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)', + tag: '#Copula #Adverb #Adjective', + reason: 'sometimes-adverb' + }, //i better .. + { + match: '(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense', + group: 0, + tag: 'Modal', + reason: 'i-better' + }, //walking is cool + { + match: '[#Gerund] #Adverb? not? #Copula', + group: 0, + tag: 'Activity', + reason: 'gerund-copula' + }, //walking should be fun + { + match: '[#Gerund] #Modal', + group: 0, + tag: 'Activity', + reason: 'gerund-modal' + }, //swear-words as non-expression POS + { + match: 'holy (shit|fuck|hell)', + tag: 'Expression', + reason: 'swears-expression' + }, //Aircraft designer + { + match: '#Noun #Actor', + tag: 'Actor', + reason: 'thing-doer' }, { - key: "items", - value: function items() { - return parse(this).things; - } - /** add a new unit to the list */ + match: '#Conjunction [u]', + group: 0, + tag: 'Pronoun', + reason: 'u-pronoun-2' + }, //'u' as pronoun + { + match: '[u] #Verb', + group: 0, + tag: 'Pronoun', + reason: 'u-pronoun-1' + }, // ==== Determiners ==== + { + match: '#Noun [(who|whom)]', + group: 0, + tag: 'Determiner', + reason: 'captain-who' + }, //that car goes + // { match: 'that #Noun [#PresentTense]', group: 0, tag: 'Determiner', reason: 'that-determiner' }, + { + match: 'a bit much', + tag: 'Determiner Adverb Adjective', + reason: 'bit-3' + }, // ==== Propositions ==== + //all students + { + match: '#Verb #Adverb? #Noun [(that|which)]', + group: 0, + tag: 'Preposition', + reason: 'that-prep' + }, //work, which has been done. + { + match: '@hasComma [which] (#Pronoun|#Verb)', + group: 0, + tag: 'Preposition', + reason: 'which-copula' + }, { + match: '#Copula just [like]', + group: 0, + tag: 'Preposition', + reason: 'like-preposition' + }, //folks like her + { + match: '#Noun [like] #Noun', + group: 0, + tag: 'Preposition', + reason: 'noun-like' + }, //fix for busted-up phrasalVerbs + // { match: '#Noun [#Particle]', group: 0, tag: 'Preposition', reason: 'repair-noPhrasal' }, + // ==== Conditions ==== + // had he survived, + { + match: '[had] #Noun+ #PastTense', + group: 0, + tag: 'Condition', + reason: 'had-he' + }, // were he to survive + { + match: '[were] #Noun+ to #Infinitive', + group: 0, + tag: 'Condition', + reason: 'were-he' + }, // ==== Questions ==== + //the word 'how' + { + match: '^how', + tag: 'QuestionWord', + reason: 'how-question' + }, { + match: '[how] (#Determiner|#Copula|#Modal|#PastTense)', + group: 0, + tag: 'QuestionWord', + reason: 'how-is' + }, // //the word 'which' + { + match: '^which', + tag: 'QuestionWord', + reason: 'which-question' + }, // { match: '[which] . (#Noun)+ #Pronoun', group: 0, tag: 'QuestionWord', reason: 'which-question2' }, + // { match: 'which', tag: 'QuestionWord', reason: 'which-question3' }, + // ==== Conjunctions ==== + { + match: '[so] #Noun', + group: 0, + tag: 'Conjunction', + reason: 'so-conj' + }, //how he is driving + { + match: '[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)', + group: 0, + tag: 'Conjunction', + reason: 'how-he-is-x' + } // { + // match: '[(who|what|where|why|how|when)] #Noun #Adverb? #Infinitive not? #Gerund', + // group: 0, + // tag: 'Conjunction', + // reason: 'when-i-go-fishing', + // }, + ]; + var _01Misc = list$5; + var _ambig = { + // adverbs than can be adjectives + adverbAdjective: ['dark', 'bright', 'flat', 'light', 'soft', 'pale', 'dead', 'dim', 'faux', 'little', 'wee', 'sheer', 'most', 'near', 'good', 'extra', 'all'], + // names that are dates + personDate: ['april', 'june', 'may', 'jan', 'august', 'eve'], + // names that may be months + personMonth: ['january', 'april', 'may', 'june', 'jan', 'sep'], + // names that are adjectives + personAdjective: ['misty', 'rusty', 'dusty', 'rich', 'randy', 'young'], + // names that are verbs + personVerb: ['pat', 'wade', 'ollie', 'will', 'rob', 'buck', 'bob', 'mark', 'jack'], + // names that are verbs + personPlace: ['darwin', 'hamilton', 'paris', 'alexandria', 'houston', 'kobe', 'santiago', 'salvador', 'sydney', 'victoria'], + // names that are nouns + personNoun: ['art', 'baker', 'berg', 'bill', 'brown', 'charity', 'chin', 'christian', 'cliff', 'daisy', 'dawn', 'dick', 'dolly', 'faith', 'franco', 'gene', 'green', 'hall', 'hill', 'holly', 'hope', 'jean', 'jewel', 'joy', 'kelvin', 'king', 'kitty', 'lane', 'lily', 'melody', 'mercedes', 'miles', 'olive', 'penny', 'ray', 'reed', 'robin', 'rod', 'rose', 'sky', 'summer', 'trinity', 'van', 'viola', 'violet', 'wang', 'white'] + }; + const ambig$4 = _ambig; + const dates = "(".concat(ambig$4.personDate.join('|'), ")"); + let list$4 = [// ==== Holiday ==== + { + match: '#Holiday (day|eve)', + tag: 'Holiday', + reason: 'holiday-day' + }, // the captain who + // ==== WeekDay ==== + // sun the 5th + { + match: '[sun] the #Ordinal', + tag: 'WeekDay', + reason: 'sun-the-5th' + }, //sun feb 2 + { + match: '[sun] #Date', + group: 0, + tag: 'WeekDay', + reason: 'sun-feb' + }, //1pm next sun + { + match: '#Date (on|this|next|last|during)? [sun]', + group: 0, + tag: 'WeekDay', + reason: '1pm-sun' + }, //this sat + { + match: "(in|by|before|during|on|until|after|of|within|all) [sat]", + group: 0, + tag: 'WeekDay', + reason: 'sat' + }, { + match: "(in|by|before|during|on|until|after|of|within|all) [wed]", + group: 0, + tag: 'WeekDay', + reason: 'wed' + }, { + match: "(in|by|before|during|on|until|after|of|within|all) [march]", + group: 0, + tag: 'Month', + reason: 'march' + }, //sat november + { + match: '[sat] #Date', + group: 0, + tag: 'WeekDay', + reason: 'sat-feb' + }, // ==== Month ==== + //all march + { + match: "#Preposition [(march|may)]", + group: 0, + tag: 'Month', + reason: 'in-month' + }, //this march + { + match: "this [(march|may)]", + group: 0, + tag: 'Month', + reason: 'this-month' + }, { + match: "next [(march|may)]", + group: 0, + tag: 'Month', + reason: 'this-month' + }, { + match: "last [(march|may)]", + group: 0, + tag: 'Month', + reason: 'this-month' + }, // march 5th + { + match: "[(march|may)] the? #Value", + group: 0, + tag: 'Month', + reason: 'march-5th' + }, // 5th of march + { + match: "#Value of? [(march|may)]", + group: 0, + tag: 'Month', + reason: '5th-of-march' + }, // march and feb + { + match: "[(march|may)] .? #Date", + group: 0, + tag: 'Month', + reason: 'march-and-feb' + }, // feb to march + { + match: "#Date .? [(march|may)]", + group: 0, + tag: 'Month', + reason: 'feb-and-march' + }, //quickly march + { + match: "#Adverb [(march|may)]", + group: 0, + tag: 'Verb', + reason: 'quickly-march' + }, //march quickly + { + match: "[(march|may)] #Adverb", + group: 0, + tag: 'Verb', + reason: 'march-quickly' + }, //5th of March + { + match: '#Value of #Month', + tag: 'Date', + reason: 'value-of-month' + }, //5 March + { + match: '#Cardinal #Month', + tag: 'Date', + reason: 'cardinal-month' + }, //march 5 to 7 + { + match: '#Month #Value to #Value', + tag: 'Date', + reason: 'value-to-value' + }, //march the 12th + { + match: '#Month the #Value', + tag: 'Date', + reason: 'month-the-value' + }, //june 7 + { + match: '(#WeekDay|#Month) #Value', + tag: 'Date', + reason: 'date-value' + }, //7 june + { + match: '#Value (#WeekDay|#Month)', + tag: 'Date', + reason: 'value-date' + }, //may twenty five + { + match: '(#TextValue && #Date) #TextValue', + tag: 'Date', + reason: 'textvalue-date' + }, // in june + { + match: "in [".concat(dates, "]"), + group: 0, + tag: 'Date', + reason: 'in-june' + }, { + match: "during [".concat(dates, "]"), + group: 0, + tag: 'Date', + reason: 'in-june' + }, { + match: "on [".concat(dates, "]"), + group: 0, + tag: 'Date', + reason: 'in-june' + }, { + match: "by [".concat(dates, "]"), + group: 0, + tag: 'Date', + reason: 'by-june' + }, { + match: "after [".concat(dates, "]"), + group: 0, + tag: 'Date', + reason: 'after-june' + }, { + match: "#Date [".concat(dates, "]"), + group: 0, + tag: 'Date', + reason: 'in-june' + }, // june 1992 + { + match: "".concat(dates, " #Value"), + tag: 'Date', + reason: 'june-5th' + }, { + match: "".concat(dates, " #Date"), + tag: 'Date', + reason: 'june-5th' + }, // June Smith + { + match: "".concat(dates, " #ProperNoun"), + tag: 'Person', + reason: 'june-smith', + safe: true + }, // june m. Cooper + { + match: "".concat(dates, " #Acronym? (#ProperNoun && !#Month)"), + tag: 'Person', + reason: 'june-smith-jr' + }, // 'second' + { + match: "#Cardinal [second]", + tag: 'Unit', + reason: 'one-second' + }, // second quarter + // { match: `#Ordinal quarter`, tag: 'Date', reason: 'second-quarter' }, + // 'aug 20-21' + { + match: "#Month #NumberRange", + tag: 'Date', + reason: 'aug 20-21' + }, // timezones + // china standard time + { + match: "(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time", + tag: 'Timezone', + reason: 'std-time' + }, // eastern time + { + match: "(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time", + tag: 'Timezone', + reason: 'eastern-time' + }, // 5pm central + { + match: "#Time [(eastern|mountain|pacific|central|est|pst|gmt)]", + group: 0, + tag: 'Timezone', + reason: '5pm-central' + }, // central european time + { + match: "(central|western|eastern) european time", + tag: 'Timezone', + reason: 'cet' + }]; + var _02Dates = list$4; + const ambig$3 = _ambig; + const adjectives$1 = "(".concat(ambig$3.personAdjective.join('|'), ")"); + let list$3 = [// all fell apart + { + match: '[all] #Determiner? #Noun', + group: 0, + tag: 'Adjective', + reason: 'all-noun' + }, // very rusty + { + match: "#Adverb [".concat(adjectives$1, "]"), + group: 0, + tag: 'Adjective', + reason: 'really-rich' + }, // rusty smith + { + match: "".concat(adjectives$1, " #Person"), + tag: 'Person', + reason: 'randy-smith' + }, // rusty a. smith + { + match: "".concat(adjectives$1, " #Acronym? #ProperNoun"), + tag: 'Person', + reason: 'rusty-smith' + }, //sometimes not-adverbs + { + match: '#Copula [(just|alone)]$', + group: 0, + tag: 'Adjective', + reason: 'not-adverb' + }, //jack is guarded + { + match: '#Singular is #Adverb? [#PastTense$]', + group: 0, + tag: 'Adjective', + reason: 'is-filled' + }, // smoked poutine is + { + match: '[#PastTense] #Singular is', + group: 0, + tag: 'Adjective', + reason: 'smoked-poutine' + }, // baked onions are + { + match: '[#PastTense] #Plural are', + group: 0, + tag: 'Adjective', + reason: 'baked-onions' + }, // well made + { + match: 'well [#PastTense]', + group: 0, + tag: 'Adjective', + reason: 'well-made' + }, // is f*ed up + { + match: '#Copula [fucked up?]', + tag: 'Adjective', + reason: 'swears-adjective' + }, //jack seems guarded + { + match: '#Singular (seems|appears) #Adverb? [#PastTense$]', + group: 0, + tag: 'Adjective', + reason: 'seems-filled' + }, // Gerund-Adjectives - 'amusing, annoying' + //a staggering cost + { + match: '(a|an) [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'a|an' + }, //as amusing as + { + match: 'as [#Gerund] as', + group: 0, + tag: 'Adjective', + reason: 'as-gerund-as' + }, // more amusing than + { + match: 'more [#Gerund] than', + group: 0, + tag: 'Adjective', + reason: 'more-gerund-than' + }, // very amusing + { + match: '(so|very|extremely) [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'so-gerund' + }, // it was amusing + { + match: '(it|he|she|everything|something) #Adverb? was #Adverb? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'it-was-gerund' + }, // found it amusing + { + match: '(found|found) it #Adverb? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'found-it-gerund' + }, // a bit amusing + { + match: 'a (little|bit|wee) bit? [#Gerund]', + group: 0, + tag: 'Adjective', + reason: 'a-bit-gerund' + }, // jury is out - preposition ➔ adjective + { + match: '#Copula #Adjective? [(out|in|through)]$', + group: 0, + tag: 'Adjective', + reason: 'still-out' + }, // shut the door + { + match: '^[#Adjective] (the|your) #Noun', + group: 0, + tag: 'Infinitive', + reason: 'shut-the' + }, // the said card + { + match: 'the [said] #Noun', + group: 0, + tag: 'Adjective', + reason: 'the-said-card' + }, // a myth that uncovered wounds heal + { + match: '#Noun (that|which|whose) [#PastTense && !#Copula] #Noun', + group: 0, + tag: 'Adjective', + reason: 'that-past-noun' + } // the very fed character + // { match: `#Determiner #Adverb [#PastTense] #Noun`, group: 0, tag: 'Adjective', reason: 'very-x-noun' }, + ]; + var _03Adjective = list$3; + var _04Noun = [// ==== Plural ==== + //there are reasons + { + match: 'there (are|were) #Adjective? [#PresentTense]', + group: 0, + tag: 'Plural', + reason: 'there-are' + }, // ==== Singular ==== + //the sun + { + match: '#Determiner [sun]', + group: 0, + tag: 'Singular', + reason: 'the-sun' + }, //did a 900, paid a 20 + { + match: '#Verb (a|an) [#Value]', + group: 0, + tag: 'Singular', + reason: 'did-a-value' + }, //'the can' + { + match: 'the [(can|will|may)]', + group: 0, + tag: 'Singular', + reason: 'the can' + }, // ==== Possessive ==== + //spencer kelly's + { + match: '#FirstName #Acronym? (#Possessive && #LastName)', + tag: 'Possessive', + reason: 'name-poss' + }, //Super Corp's fundraiser + { + match: '#Organization+ #Possessive', + tag: 'Possessive', + reason: 'org-possessive' + }, //Los Angeles's fundraiser + { + match: '#Place+ #Possessive', + tag: 'Possessive', + reason: 'place-possessive' + }, // assign all tasks + { + match: '(#Verb && !#Modal) (all|every|each|most|some|no) [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'all-presentTense' + }, //the above is clear + { + match: '#Determiner [#Adjective] #Copula', + group: 0, + tag: 'Noun', + reason: 'the-adj-is' + }, //real evil is + { + match: '#Adjective [#Adjective] #Copula', + group: 0, + tag: 'Noun', + reason: 'adj-adj-is' + }, // PresentTense/Noun ambiguities + // big dreams, critical thinking + // have big dreams + { + match: '(had|have|#PastTense) #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'adj-presentTense' + }, // excellent answer spencer + { + match: '^#Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'start adj-presentTense' + }, // one big reason + { + match: '#Value #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'one-big-reason' + }, // won widespread support + { + match: '#PastTense #Adjective+ [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'won-wide-support' + }, // many poses + { + match: '(many|few|several|couple) [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'many-poses' + }, // very big dreams + { + match: '#Adverb #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'very-big-dream' + }, // good wait staff + { + match: '#Adjective [#Infinitive] #Noun', + group: 0, + tag: 'Noun', + reason: 'good-wait-staff' + }, // adorable little store + { + match: '#Adjective #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'adorable-little-store' + }, // of basic training + { + match: '#Preposition #Adjective [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'of-basic-training' + }, // early warning + { + match: '#Adjective [#Gerund]', + group: 0, + tag: 'Noun', + reason: 'early-warning' + }, // justifiying higher costs + { + match: '#Gerund #Adverb? #Comparative [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'higher-costs' + }, // do the dance + { + match: '#Infinitive (this|that|the) [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'do-this-dance' + }, //his fine + { + match: '(his|her|its) [#Adjective]', + group: 0, + tag: 'Noun', + reason: 'his-fine' + }, //some pressing issues + { + match: 'some [#Verb] #Plural', + group: 0, + tag: 'Noun', + reason: 'determiner6' + }, //'more' is not always an adverb + { + match: 'more #Noun', + tag: 'Noun', + reason: 'more-noun' + }, { + match: '(#Noun && @hasComma) #Noun (and|or) [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'noun-list' + }, //3 feet + { + match: '(right|rights) of .', + tag: 'Noun', + reason: 'right-of' + }, // a bit + { + match: 'a [bit]', + group: 0, + tag: 'Noun', + reason: 'bit-2' + }, // my first thought + { + match: '#Possessive #Ordinal [#PastTense]', + group: 0, + tag: 'Noun', + reason: 'first-thought' + }, //running-a-show + { + match: '#Gerund #Determiner [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'running-a-show' + }, //the-only-reason + { + match: '#Determiner #Adverb [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'the-reason' + }, //the nice swim + { + match: '(the|this|those|these) #Adjective [#Verb]', + group: 0, + tag: 'Noun', + reason: 'the-adj-verb' + }, // the truly nice swim + { + match: '(the|this|those|these) #Adverb #Adjective [#Verb]', + group: 0, + tag: 'Noun', + reason: 'determiner4' + }, //the orange is + { + match: '#Determiner [#Adjective] (#Copula|#PastTense|#Auxiliary)', + group: 0, + tag: 'Noun', + reason: 'the-adj-2' + }, // a stream runs + { + match: '(the|this|a|an) [#Infinitive] #Adverb? #Verb', + group: 0, + tag: 'Noun', + reason: 'determiner5' + }, //the test string + { + match: '#Determiner [#Infinitive] #Noun', + group: 0, + tag: 'Noun', + reason: 'determiner7' + }, //a nice deal + { + match: '#Determiner #Adjective #Adjective? [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'a-nice-inf' + }, //the wait to vote + { + match: 'the [#Verb] #Preposition .', + group: 0, + tag: 'Noun', + reason: 'determiner1' + }, //a sense of + { + match: '#Determiner [#Verb] of', + group: 0, + tag: 'Noun', + reason: 'the-verb-of' + }, //next career move + { + match: '#Adjective #Noun+ [#Infinitive] #Copula', + group: 0, + tag: 'Noun', + reason: 'career-move' + }, //the threat of force + { + match: '#Determiner #Noun of [#Verb]', + group: 0, + tag: 'Noun', + reason: 'noun-of-noun' + }, //the western line + { + match: '#Determiner [(western|eastern|northern|southern|central)] #Noun', + group: 0, + tag: 'Noun', + reason: 'western-line' + }, //her polling + { + match: '#Possessive [#Gerund]', + group: 0, + tag: 'Noun', + reason: 'her-polling' + }, //her fines + { + match: '(his|her|its) [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'its-polling' + }, //linear algebra + { + match: '(#Determiner|#Value) [(linear|binary|mobile|lexical|technical|computer|scientific|formal)] #Noun', + group: 0, + tag: 'Noun', + reason: 'technical-noun' + }, // a blown motor + { + match: '(the|those|these|a|an) [#Participle] #Noun', + group: 0, + tag: 'Adjective', + reason: 'blown-motor' + }, // walk the walk + { + match: '(the|those|these|a|an) #Adjective? [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'det-inf' + }, { + match: '(the|those|these|a|an) #Adjective? [#PresentTense]', + group: 0, + tag: 'Noun', + reason: 'det-pres' + }, { + match: '(the|those|these|a|an) #Adjective? [#PastTense]', + group: 0, + tag: 'Noun', + reason: 'det-past' + }, // this swimming + { + match: '(this|that) [#Gerund]', + group: 0, + tag: 'Noun', + reason: 'this-gerund' + }, // at some point + { + match: 'at some [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'at-some-inf' + }, //air-flow + { + match: '(#Noun && @hasHyphen) #Verb', + tag: 'Noun', + reason: 'hyphen-verb' + }, //is no walk + { + match: 'is no [#Verb]', + group: 0, + tag: 'Noun', + reason: 'is-no-verb' + }, //different views than + { + match: '[#Verb] than', + group: 0, + tag: 'Noun', + reason: 'correction' + }, // goes to sleep + { + match: '(go|goes|went) to [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'goes-to-verb' + }, //a close watch on + { + match: '(a|an) #Noun [#Infinitive] (#Preposition|#Noun)', + group: 0, + tag: 'Noun', + reason: 'a-noun-inf' + }, //a tv show + { + match: '(a|an) #Noun [#Infinitive]$', + group: 0, + tag: 'Noun', + reason: 'a-noun-inf2' + }, //do so + { + match: 'do [so]', + group: 0, + tag: 'Noun', + reason: 'so-noun' + }, //is mark hughes + { + match: '#Copula [#Infinitive] #Noun', + group: 0, + tag: 'Noun', + reason: 'is-pres-noun' + }, //a close + { + match: '#Determiner #Adverb? [close]', + group: 0, + tag: 'Adjective', + reason: 'a-close' + }, // what the hell + { + match: '#Determiner [(shit|damn|hell)]', + group: 0, + tag: 'Noun', + reason: 'swears-noun' + }, // the staff were + { + match: '(the|these) [#Singular] (were|are)', + group: 0, + tag: 'Plural', + reason: 'singular-were' + }, // running for congress + { + match: '#Gerund #Adjective? for [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'running-for' + }, // running to work + { + match: '#Gerund #Adjective to [#Infinitive]', + group: 0, + tag: 'Noun', + reason: 'running-to' + }, // any questions for + { + match: '(many|any|some|several) [#PresentTense] for', + group: 0, + tag: 'Noun', + reason: 'any-verbs-for' + }, // have fun + { + match: "(have|had) [#Adjective] #Preposition .", + group: 0, + tag: 'Noun', + reason: 'have-fun' + }, // co-founder + { + match: "co #Noun", + tag: 'Actor', + reason: 'co-noun' + }, // to facilitate gas exchange with + { + match: "to #PresentTense #Noun [#PresentTense] #Preposition", + group: 0, + tag: 'Noun', + reason: 'gas-exchange' + }, // a comdominium, or simply condo + { + match: "a #Noun+ or #Adverb+? [#Verb]", + group: 0, + tag: 'Noun', + reason: 'noun-or-noun' + }, // operating system + { + match: "[#Gerund] system", + group: 0, + tag: 'Noun', + reason: 'operating-system' + }, // waited until release + { + match: "#PastTense (until|as|through|without) [#PresentTense]", + group: 0, + tag: 'Noun', + reason: 'waited-until-release' + }, // selling like hot cakes + { + match: "#Gerund like #Adjective? [#PresentTense]", + group: 0, + tag: 'Plural', + reason: 'like-hot-cakes' + }, // some valid reason + { + match: "some #Adjective [#PresentTense]", + group: 0, + tag: 'Noun', + reason: 'some-reason' + }, // for some reason + { + match: "for some [#PresentTense]", + group: 0, + tag: 'Noun', + reason: 'for-some-reason' + }, // same kind of shouts + { + match: "(same|some|the|that|a) kind of [#PresentTense]", + group: 0, + tag: 'Noun', + reason: 'some-kind-of' + }, // a type of shout + { + match: "(same|some|the|that|a) type of [#PresentTense]", + group: 0, + tag: 'Noun', + reason: 'some-type-of' + }, // doing better for fights + { + match: "#Gerund #Adjective #Preposition [#PresentTense]", + group: 0, + tag: 'Noun', + reason: 'doing-better-for-x' + }, // get better aim + { + match: "(get|got|have|had) #Comparative [#PresentTense]", + group: 0, + tag: 'Noun', + reason: 'got-better-aim' + }, // i think tipping sucks + { + match: "#Pronoun #Infinitive [#Gerund] #PresentTense", + group: 0, + tag: 'Noun', + reason: 'tipping-sucks' + } // in various sensory functions + // { + // match: `#Preposition #Determiner #Singular [#PresentTense]`, + // group: 0, + // tag: 'Noun', + // reason: 'various-word-functions', + // }, + ]; + const ambig$2 = _ambig; + const adjectives = "(".concat(ambig$2.adverbAdjective.join('|'), ")"); + var _05Adverb = [//still good + { + match: '[still] #Adjective', + group: 0, + tag: 'Adverb', + reason: 'still-advb' + }, //still make + { + match: '[still] #Verb', + group: 0, + tag: 'Adverb', + reason: 'still-verb' + }, // so hot + { + match: '[so] #Adjective', + group: 0, + tag: 'Adverb', + reason: 'so-adv' + }, // way hotter + { + match: '[way] #Comparative', + group: 0, + tag: 'Adverb', + reason: 'way-adj' + }, // way too hot + { + match: '[way] #Adverb #Adjective', + group: 0, + tag: 'Adverb', + reason: 'way-too-adj' + }, // all singing + { + match: '[all] #Verb', + group: 0, + tag: 'Adverb', + reason: 'all-verb' + }, // sing like an angel + { + match: '(#Verb && !#Modal) [like]', + group: 0, + tag: 'Adverb', + reason: 'verb-like' + }, //barely even walk + { + match: '(barely|hardly) even', + tag: 'Adverb', + reason: 'barely-even' + }, //even held + { + match: '[even] #Verb', + group: 0, + tag: 'Adverb', + reason: 'even-walk' + }, // even left + { + match: 'even left', + tag: '#Adverb #Verb', + reason: 'even-left' + }, //cheering hard - dropped -ly's + { + match: '(#PresentTense && !#Copula) [(hard|quick|long|bright|slow|fast|backwards|forwards)]', + group: 0, + tag: 'Adverb', + reason: 'lazy-ly' + }, // much appreciated + { + match: '[much] #Adjective', + group: 0, + tag: 'Adverb', + reason: 'bit-1' + }, // is well + { + match: '#Copula [#Adverb]$', + group: 0, + tag: 'Adjective', + reason: 'is-well' + }, // a bit cold + { + match: 'a [(little|bit|wee) bit?] #Adjective', + group: 0, + tag: 'Adverb', + reason: 'a-bit-cold' + }, // dark green + { + match: "[".concat(adjectives, "] #Adjective"), + group: 0, + tag: 'Adverb', + reason: 'dark-green' + }, // kinda sparkly + { + match: "#Adverb [#Adverb]$", + group: 0, + tag: 'Adjective', + reason: 'kinda-sparkly' + }, { + match: "#Adverb [#Adverb] (and|or|then)", + group: 0, + tag: 'Adjective', + reason: 'kinda-sparkly-and' + }, // super strong + { + match: "[super] #Adjective #Noun", + group: 0, + tag: 'Adverb', + reason: 'super-strong' + }]; + var _06Value = [// ==== PhoneNumber ==== + //1 800 ... + { + match: '1 #Value #PhoneNumber', + tag: 'PhoneNumber', + reason: '1-800-Value' + }, //(454) 232-9873 + { + match: '#NumericValue #PhoneNumber', + tag: 'PhoneNumber', + reason: '(800) PhoneNumber' + }, // ==== Currency ==== + // chinese yuan + { + match: '#Demonym #Currency', + tag: 'Currency', + reason: 'demonym-currency' + }, // ==== Ordinal ==== + { + match: '[second] #Noun', + group: 0, + tag: 'Ordinal', + reason: 'second-noun' + }, // ==== Unit ==== + //5 yan + { + match: '#Value+ [#Currency]', + group: 0, + tag: 'Unit', + reason: '5-yan' + }, { + match: '#Value [(foot|feet)]', + group: 0, + tag: 'Unit', + reason: 'foot-unit' + }, //minus 7 + { + match: '(minus|negative) #Value', + tag: 'Value', + reason: 'minus-value' + }, //5 kg. + { + match: '#Value [#Abbreviation]', + group: 0, + tag: 'Unit', + reason: 'value-abbr' + }, { + match: '#Value [k]', + group: 0, + tag: 'Unit', + reason: 'value-k' + }, { + match: '#Unit an hour', + tag: 'Unit', + reason: 'unit-an-hour' + }, //seven point five + { + match: '#Value (point|decimal) #Value', + tag: 'Value', + reason: 'value-point-value' + }, // ten bucks + { + match: '(#Value|a) [(buck|bucks|grand)]', + group: 0, + tag: 'Currency', + reason: 'value-bucks' + }, //quarter million + { + match: '#Determiner [(half|quarter)] #Ordinal', + group: 0, + tag: 'Value', + reason: 'half-ordinal' + }, { + match: 'a #Value', + tag: 'Value', + reason: 'a-value' + }, // ==== Money ==== + { + match: '[#Value+] #Currency', + group: 0, + tag: 'Money', + reason: '15 usd' + }, // thousand and two + { + match: "(hundred|thousand|million|billion|trillion|quadrillion)+ and #Value", + tag: 'Value', + reason: 'magnitude-and-value' + }, //'a/an' can mean 1 - "a hour" + { + match: '!once [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)', + group: 0, + tag: 'Value', + reason: 'a-is-one' + }]; + const ambig$1 = _ambig; + const verbs = "(".concat(ambig$1.personVerb.join('|'), ")"); + let list$2 = [// adj -> gerund + // amusing his aunt + { + match: '[#Adjective] #Possessive #Noun', + group: 0, + tag: 'Verb', + reason: 'gerund-his-noun' + }, // loving you + { + match: '[#Adjective] (us|you)', + group: 0, + tag: 'Gerund', + reason: 'loving-you' + }, // slowly stunning + { + match: '(slowly|quickly) [#Adjective]', + group: 0, + tag: 'Gerund', + reason: 'slowly-adj' + }, // like + { + match: '(#Modal|i|they|we|do) not? [like]', + group: 0, + tag: 'PresentTense', + reason: 'modal-like' + }, // do not simply like + { + match: 'do (simply|just|really|not)+ [(#Adjective|like)]', + group: 0, + tag: 'Verb', + reason: 'do-simply-like' + }, // does mean + { + match: 'does (#Adverb|not)? [#Adjective]', + group: 0, + tag: 'PresentTense', + reason: 'does-mean' + }, // i mean + { + match: 'i (#Adverb|do)? not? [mean]', + group: 0, + tag: 'PresentTense', + reason: 'i-mean' + }, // { match: '!are (i|you|we) (#Adverb|do)? [#Adjective]', group: 0, tag: 'PresentTense', reason: 'i-mean' }, + // ==== Tense ==== + //he left + { + match: '#Noun #Adverb? [left]', + group: 0, + tag: 'PastTense', + reason: 'left-verb' + }, //this rocks + { + match: '(this|that) [#Plural]', + group: 0, + tag: 'PresentTense', + reason: 'this-verbs' + }, // ==== Auxiliary ==== + //was walking + { + match: "[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)", + group: 0, + tag: 'Auxiliary', + reason: 'copula-walking' + }, //support a splattering of auxillaries before a verb + { + match: "[(has|had) (#Adverb|not)+?] #PastTense", + group: 0, + tag: 'Auxiliary', + reason: 'had-walked' + }, //would walk + { + match: "#Adverb+? [(#Modal|did)+ (#Adverb|not)+?] #Verb", + group: 0, + tag: 'Auxiliary', + reason: 'modal-verb' + }, //would have had + { + match: "[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb", + group: 0, + tag: 'Auxiliary', + reason: 'would-have' + }, //would be walking + // { match: `#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'would-be' }, + //had been walking + // { + // match: `(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb`, + // group: 0, + // tag: 'Auxiliary', + // reason: 'had-been', + // }, + //support a splattering of auxillaries before a verb + { + match: "[(has|had) (#Adverb|not)+?] #PastTense", + group: 0, + tag: 'Auxiliary', + reason: 'had-walked' + }, // will walk + { + match: '[(do|does|will|have|had)] (not|#Adverb)+? #Verb', + group: 0, + tag: 'Auxiliary', + reason: 'have-had' + }, // about to go + { + match: '[about to] #Adverb? #Verb', + group: 0, + tag: ['Auxiliary', 'Verb'], + reason: 'about-to' + }, //would be walking + { + match: "#Modal (#Adverb|not)+? be (#Adverb|not)+? #Verb", + group: 0, + tag: 'Auxiliary', + reason: 'would-be' + }, //were being run + { + match: "(were|was) being [#PresentTense]", + group: 0, + tag: 'PastTense', + reason: 'was-being' + }, //have run + // { match: `have #PresentTense`, group: 0, tag: 'PastTense', reason: 'have-vb' }, + //would have had + { + match: "[#Modal (#Adverb|not)+? have (#Adverb|not)+? had (#Adverb|not)+?] #Verb", + group: 0, + tag: 'Auxiliary', + reason: 'would-have' + }, //had been walking + { + match: "(#Modal|had|has) (#Adverb|not)+? been (#Adverb|not)+? #Verb", + group: 0, + tag: 'Auxiliary', + reason: 'had-been' + }, // was being driven + { + match: '[(be|being|been)] #Participle', + group: 0, + tag: 'Auxiliary', + reason: 'being-foo' + }, // ==== Phrasal ==== + //'foo-up' + { + match: '(#Verb && @hasHyphen) up', + tag: 'PhrasalVerb', + reason: 'foo-up' + }, { + match: '(#Verb && @hasHyphen) off', + tag: 'PhrasalVerb', + reason: 'foo-off' + }, { + match: '(#Verb && @hasHyphen) over', + tag: 'PhrasalVerb', + reason: 'foo-over' + }, { + match: '(#Verb && @hasHyphen) out', + tag: 'PhrasalVerb', + reason: 'foo-out' + }, //fall over + { + match: '#PhrasalVerb [#PhrasalVerb]', + group: 0, + tag: 'Particle', + reason: 'phrasal-particle' + }, // went on for + { + match: '(lived|went|crept|go) [on] for', + group: 0, + tag: 'PhrasalVerb', + reason: 'went-on' + }, //back it up + { + match: '#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]', + group: 0, + tag: 'Adverb', + reason: 'phrasal-pronoun-advb' + }, // ==== Copula ==== + //will be running (not copula) + { + match: '[will #Adverb? not? #Adverb? be] #Gerund', + group: 0, + tag: 'Copula', + reason: 'will-be-copula' + }, //for more complex forms, just tag 'be' + { + match: 'will #Adverb? not? #Adverb? [be] #Adjective', + group: 0, + tag: 'Copula', + reason: 'be-copula' + }, // ==== Infinitive ==== + //march to + { + match: '[march] (up|down|back|to|toward)', + group: 0, + tag: 'Infinitive', + reason: 'march-to' + }, //must march + { + match: '#Modal [march]', + group: 0, + tag: 'Infinitive', + reason: 'must-march' + }, //let him glue + { + match: '(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)', + group: 0, + tag: 'Infinitive', + reason: 'let-him-glue' + }, //he quickly foo + // { match: '#Noun #Adverb [#Noun]', group: 0, tag: 'Verb', reason: 'quickly-foo' }, + //will secure our + { + match: 'will [#Adjective]', + group: 0, + tag: 'Verb', + reason: 'will-adj' + }, //he disguised the thing + { + match: '#Pronoun [#Adjective] #Determiner #Adjective? #Noun', + group: 0, + tag: 'Verb', + reason: 'he-adj-the' + }, //is eager to go + { + match: '#Copula [#Adjective] to #Verb', + group: 0, + tag: 'Verb', + reason: 'adj-to' + }, // open the door + { + match: '[open] #Determiner', + group: 0, + tag: 'Infinitive', + reason: 'open-the' + }, // compromises are possible + { + match: '[#PresentTense] (are|were|was) #Adjective', + group: 0, + tag: 'Plural', + reason: 'compromises-are-possible' + }, // would wade + { + match: "#Modal [".concat(verbs, "]"), + group: 0, + tag: 'Verb', + reason: 'would-mark' + }, { + match: "#Adverb [".concat(verbs, "]"), + group: 0, + tag: 'Verb', + reason: 'really-mark' + }, //to mark + { + match: '(to|#Modal) [mark]', + group: 0, + tag: 'PresentTense', + reason: 'to-mark' + }, // checkmate is + { + match: '^[#Infinitive] (is|was)', + group: 0, + tag: 'Noun', + reason: 'checkmate-is' + }, // wade smith + { + match: "".concat(verbs, " #Person"), + tag: 'Person', + reason: 'rob-smith' + }, // wade m. Cooper + { + match: "".concat(verbs, " #Acronym #ProperNoun"), + tag: 'Person', + reason: 'rob-a-smith' + }, // damn them + { + match: '[shit] (#Determiner|#Possessive|them)', + group: 0, + tag: 'Verb', + reason: 'swear1-verb' + }, { + match: '[damn] (#Determiner|#Possessive|them)', + group: 0, + tag: 'Verb', + reason: 'swear2-verb' + }, { + match: '[fuck] (#Determiner|#Possessive|them)', + group: 0, + tag: 'Verb', + reason: 'swear3-verb' + }, // become overly weakened + { + match: '(become|fall|grow) #Adverb? [#PastTense]', + group: 0, + tag: 'Adjective', + reason: 'overly-weakened' + }, // a completely beaten man + { + match: '(a|an) #Adverb [#Participle] #Noun', + group: 0, + tag: 'Adjective', + reason: 'completely-beaten' + }, // whose name was + { + match: 'whose [#PresentTense] #Copula', + group: 0, + tag: 'Noun', + reason: 'whos-name-was' + }, // give up on reason + { + match: "#PhrasalVerb #PhrasalVerb #Preposition [#PresentTense]", + group: 0, + tag: 'Noun', + reason: 'given-up-on-x' + } // wants to be #Particle + ]; + var _07Verbs = list$2; + let list$1 = [// ==== Region ==== + //West Norforlk + { + match: '(west|north|south|east|western|northern|southern|eastern)+ #Place', + tag: 'Region', + reason: 'west-norfolk' + }, //some us-state acronyms (exlude: al, in, la, mo, hi, me, md, ok..) + { + match: '#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]', + group: 0, + tag: 'Region', + reason: 'us-state' + }, // portland oregon + { + match: 'portland [or]', + group: 0, + tag: 'Region', + reason: 'portland-or' + }, //Foo District + { + match: '#ProperNoun+ (district|region|province|county|prefecture|municipality|territory|burough|reservation)', + tag: 'Region', + reason: 'foo-district' + }, //District of Foo + { + match: '(district|region|province|municipality|territory|burough|state) of #ProperNoun', + tag: 'Region', + reason: 'district-of-Foo' + }, // in Foo California + { + match: 'in [#ProperNoun] #Place', + group: 0, + tag: 'Place', + reason: 'propernoun-place' + }, // ==== Address ==== + { + match: '#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)', + tag: 'Address', + reason: 'address-st' + } // in houston + // { match: `in [${places}]`, group: 0, tag: 'Place', reason: 'in-paris' }, + // { match: `near [${places}]`, group: 0, tag: 'Place', reason: 'near-paris' }, + // { match: `at [${places}]`, group: 0, tag: 'Place', reason: 'at-paris' }, + // { match: `from [${places}]`, group: 0, tag: 'Place', reason: 'from-paris' }, + // { match: `to [${places}]`, group: 0, tag: 'Place', reason: 'to-paris' }, + // { match: `#Place [${places}]`, group: 0, tag: 'Place', reason: 'tokyo-paris' }, + // // houston texas + // { match: `[${places}] #Place`, group: 0, tag: 'Place', reason: 'paris-france' }, + ]; + var _08Place = list$1; + var _09Org = [//John & Joe's + { + match: '#Noun (&|n) #Noun', + tag: 'Organization', + reason: 'Noun-&-Noun' + }, // teachers union of Ontario + { + match: '#Organization of the? #ProperNoun', + tag: 'Organization', + reason: 'org-of-place', + safe: true + }, //walmart USA + { + match: '#Organization #Country', + tag: 'Organization', + reason: 'org-country' + }, //organization + { + match: '#ProperNoun #Organization', + tag: 'Organization', + reason: 'titlecase-org' + }, //FitBit Inc + { + match: '#ProperNoun (ltd|co|inc|dept|assn|bros)', + tag: 'Organization', + reason: 'org-abbrv' + }, // the OCED + { + match: 'the [#Acronym]', + group: 0, + tag: 'Organization', + reason: 'the-acronym', + safe: true + }, // global trade union + { + match: '(world|global|international|national|#Demonym) #Organization', + tag: 'Organization', + reason: 'global-org' + }, // schools + { + match: '#Noun+ (public|private) school', + tag: 'School', + reason: 'noun-public-school' + }]; + const ambig = _ambig; + const nouns = "(".concat(ambig.personNoun.join('|'), ")"); + const months = "(".concat(ambig.personMonth.join('|'), ")"); + const places = "(".concat(ambig.personPlace.join('|'), ")"); + let list = [// ==== Honorific ==== + { + match: '[(1st|2nd|first|second)] #Honorific', + group: 0, + tag: 'Honorific', + reason: 'ordinal-honorific' + }, { + match: '[(private|general|major|corporal|lord|lady|secretary|premier)] #Honorific? #Person', + group: 0, + tag: 'Honorific', + reason: 'ambg-honorifics' + }, // ==== FirstNames ==== + //is foo Smith + { + match: '#Copula [(#Noun|#PresentTense)] #LastName', + group: 0, + tag: 'FirstName', + reason: 'copula-noun-lastname' + }, //pope francis + { + match: '(lady|queen|sister) #ProperNoun', + tag: 'FemaleName', + reason: 'lady-titlecase', + safe: true + }, { + match: '(king|pope|father) #ProperNoun', + tag: 'MaleName', + reason: 'pope-titlecase', + safe: true + }, //ambiguous-but-common firstnames + { + match: '[(will|may|april|june|said|rob|wade|ray|rusty|drew|miles|jack|chuck|randy|jan|pat|cliff|bill)] #LastName', + group: 0, + tag: 'FirstName', + reason: 'maybe-lastname' + }, // ==== Nickname ==== + // Dwayne 'the rock' Johnson + { + match: '#FirstName [#Determiner #Noun] #LastName', + group: 0, + tag: 'NickName', + reason: 'first-noun-last' + }, //my buddy + { + match: '#Possessive [#FirstName]', + group: 0, + tag: 'Person', + reason: 'possessive-name' + }, { + match: '#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun', + tag: 'Person', + reason: 'titlecase-acronym-titlecase', + safe: true + }, //ludwig van beethovan + { + match: '#Acronym #LastName', + tag: 'Person', + reason: 'acronym-latname', + safe: true + }, //jk rowling + { + match: '#Person (jr|sr|md)', + tag: 'Person', + reason: 'person-honorific' + }, //peter II + { + match: '#Person #Person the? #RomanNumeral', + tag: 'Person', + reason: 'roman-numeral' + }, //'Professor Fink', 'General McCarthy' + { + match: '#FirstName [/^[^aiurck]$/]', + group: 0, + tag: ['Acronym', 'Person'], + reason: 'john-e' + }, //Doctor john smith jr + //general pearson + { + match: '#Honorific #Person', + tag: 'Person', + reason: 'honorific-person' + }, //remove single 'mr' + { + match: '#Honorific #Acronym', + tag: 'Person', + reason: 'Honorific-TitleCase' + }, //j.k Rowling + { + match: '#Noun van der? #Noun', + tag: 'Person', + reason: 'van der noun', + safe: true + }, //king of spain + { + match: '(king|queen|prince|saint|lady) of #Noun', + tag: 'Person', + reason: 'king-of-noun', + safe: true + }, //lady Florence + { + match: '(prince|lady) #Place', + tag: 'Person', + reason: 'lady-place' + }, //saint Foo + { + match: '(king|queen|prince|saint) #ProperNoun', + tag: 'Person', + reason: 'saint-foo' + }, //Foo U Ford + { + match: '[#ProperNoun] #Person', + group: 0, + tag: 'Person', + reason: 'proper-person', + safe: true + }, // al sharpton + { + match: 'al (#Person|#ProperNoun)', + tag: 'Person', + reason: 'al-borlen', + safe: true + }, //ferdinand de almar + { + match: '#FirstName de #Noun', + tag: 'Person', + reason: 'bill-de-noun' + }, //Osama bin Laden + { + match: '#FirstName (bin|al) #Noun', + tag: 'Person', + reason: 'bill-al-noun' + }, //John L. Foo + { + match: '#FirstName #Acronym #ProperNoun', + tag: 'Person', + reason: 'bill-acronym-title' + }, //Andrew Lloyd Webber + { + match: '#FirstName #FirstName #ProperNoun', + tag: 'Person', + reason: 'bill-firstname-title' + }, //Mr Foo + { + match: '#Honorific #FirstName? #ProperNoun', + tag: 'Person', + reason: 'dr-john-Title' + }, //peter the great + { + match: '#FirstName the #Adjective', + tag: 'Person', + reason: 'name-the-great' + }, //very common-but-ambiguous lastnames + { + match: '#FirstName (green|white|brown|hall|young|king|hill|cook|gray|price)', + tag: 'Person', + reason: 'bill-green' + }, // faith smith + { + match: "".concat(nouns, " #Person"), + tag: 'Person', + reason: 'ray-smith', + safe: true + }, // faith m. Smith + { + match: "".concat(nouns, " #Acronym? #ProperNoun"), + tag: 'Person', + reason: 'ray-a-smith', + safe: true + }, //give to april + { + match: "#Infinitive #Determiner? #Adjective? #Noun? (to|for) [".concat(months, "]"), + group: 0, + tag: 'Person', + reason: 'ambig-person' + }, // remind june + { + match: "#Infinitive [".concat(months, "]"), + group: 0, + tag: 'Person', + reason: 'infinitive-person' + }, // may waits for + // { match: `[${months}] #PresentTense for`, group: 0, tag: 'Person', reason: 'ambig-active-for' }, + // may waits to + // { match: `[${months}] #PresentTense to`, group: 0, tag: 'Person', reason: 'ambig-active-to' }, + // april will + { + match: "[".concat(months, "] #Modal"), + group: 0, + tag: 'Person', + reason: 'ambig-modal' + }, // may be + { + match: "[may] be", + group: 0, + tag: 'Verb', + reason: 'may-be' + }, // would april + { + match: "#Modal [".concat(months, "]"), + group: 0, + tag: 'Person', + reason: 'modal-ambig' + }, // it is may + { + match: "#Copula [".concat(months, "]"), + group: 0, + tag: 'Person', + reason: 'is-may' + }, // may is + { + match: "[".concat(months, "] #Copula"), + group: 0, + tag: 'Person', + reason: 'may-is' + }, // with april + { + match: "that [".concat(months, "]"), + group: 0, + tag: 'Person', + reason: 'that-month' + }, // with april + { + match: "with [".concat(months, "]"), + group: 0, + tag: 'Person', + reason: 'with-month' + }, // for april + { + match: "for [".concat(months, "]"), + group: 0, + tag: 'Person', + reason: 'for-month' + }, // this april + { + match: "this [".concat(months, "]"), + group: 0, + tag: 'Month', + reason: 'this-may' + }, //maybe not 'this' + // next april + { + match: "next [".concat(months, "]"), + group: 0, + tag: 'Month', + reason: 'next-may' + }, // last april + { + match: "last [".concat(months, "]"), + group: 0, + tag: 'Month', + reason: 'last-may' + }, // wednesday april + { + match: "#Date [".concat(months, "]"), + group: 0, + tag: 'Month', + reason: 'date-may' + }, // may 5th + { + match: "[".concat(months, "] the? #Value"), + group: 0, + tag: 'Month', + reason: 'may-5th' + }, // 5th of may + { + match: "#Value of [".concat(months, "]"), + group: 0, + tag: 'Month', + reason: '5th-of-may' + }, // dick van dyke + { + match: '#ProperNoun (van|al|bin) #ProperNoun', + tag: 'Person', + reason: 'title-van-title', + safe: true + }, //jose de Sucre + { + match: '#ProperNoun (de|du) la? #ProperNoun', + tag: 'Person', + reason: 'title-de-title', + safe: true + }, //Jani K. Smith + { + match: '#Singular #Acronym #LastName', + tag: '#Person', + reason: 'title-acro-noun', + safe: true + }, //John Foo + { + match: '#FirstName (#Noun && #ProperNoun) #ProperNoun?', + tag: 'Person', + reason: 'firstname-titlecase' + }, //Joe K. Sombrero + { + match: '#FirstName #Acronym #Noun', + tag: 'Person', + reason: 'n-acro-noun', + safe: true + }, //Anthony de Marco + { + match: '#FirstName [(de|di|du|van|von) #Person]', + group: 0, + tag: 'LastName', + reason: 'de-firstname' + }, // Paris Berelc + { + match: "[".concat(places, "] (#ProperNoun && !#Place)"), + group: 0, + tag: 'FirstName', + reason: 'place-firstname' + }]; + var _10People = list; + const parseSyntax = matchSyntax; + const unique$1 = _unique; + let matches$1 = []; + matches$1 = matches$1.concat(_01Misc); + matches$1 = matches$1.concat(_02Dates); + matches$1 = matches$1.concat(_03Adjective); + matches$1 = matches$1.concat(_04Noun); + matches$1 = matches$1.concat(_05Adverb); + matches$1 = matches$1.concat(_06Value); + matches$1 = matches$1.concat(_07Verbs); + matches$1 = matches$1.concat(_08Place); + matches$1 = matches$1.concat(_09Org); + matches$1 = matches$1.concat(_10People); // cache the easier conditions up-front + + const cacheRequired = function (reg) { + let needTags = []; + let needWords = []; + reg.forEach(obj => { + if (obj.optional === true || obj.negative === true) { + return; + } + + if (obj.tag !== undefined) { + needTags.push(obj.tag); + } + + if (obj.word !== undefined) { + needWords.push(obj.word); + } + }); + return { + tags: unique$1(needTags), + words: unique$1(needWords) + }; + }; // for speed, enumerate (a|b|c) to three matches + + + const allLists = function (m) { + let more = []; + let lists = m.reg.filter(r => r.fastOr !== undefined); - }, { - key: "add", - value: function add(str) { - this.forEach(function (p) { - var beforeLast = parse(p).beforeLast; - beforeLast.append(str); //add a comma to it + if (lists.length === 1) { + let i = m.reg.findIndex(r => r.fastOr !== undefined); + Object.keys(m.reg[i].fastOr).forEach(w => { + let newM = Object.assign({}, m); + newM.reg = newM.reg.slice(0); + newM.reg[i] = Object.assign({}, newM.reg[i]); + newM.reg[i].word = w; + delete newM.reg[i].operator; + delete newM.reg[i].fastOr; // newM.reason += '-' + w - beforeLast.termList(0).addPunctuation(','); + more.push(newM); }); - return this; } - /** remove any matching unit from the list */ - }, { - key: "remove", - value: function remove(match) { - return this.items()["if"](match).remove(); + return more; + }; // parse them + + + let all = []; + matches$1.forEach(m => { + m.reg = parseSyntax(m.match); + let enumerated = allLists(m); + + if (enumerated.length > 0) { + all = all.concat(enumerated); + } else { + all.push(m); // console.log(m) + } + }); + all.forEach(m => { + m.required = cacheRequired(m.reg); + return m; + }); // console.log(all.length) + // console.log(all[all.length - 1]) + + var matches_1 = all; + const matches = matches_1; + const unique = _unique; // return intersection of array-of-arrays + + const hasEvery = function (chances) { + if (chances.length === 0) { + return []; } - /** return only lists that use a serial comma */ - }, { - key: "hasOxfordComma", - value: function hasOxfordComma() { - return this.filter(function (doc) { - return parse(doc).hasOxford; + let obj = {}; + chances.forEach(arr => { + arr = unique(arr); + + for (let i = 0; i < arr.length; i++) { + obj[arr[i]] = obj[arr[i]] || 0; + obj[arr[i]] += 1; + } + }); + let res = Object.keys(obj); + res = res.filter(k => obj[k] === chances.length); + res = res.map(num => Number(num)); + return res; + }; + + const runner$1 = function (doc) { + //find phrases to try for each match + matches.forEach(m => { + let allChances = []; + m.required.words.forEach(w => { + allChances.push(doc._cache.words[w] || []); }); - } - }, { - key: "addOxfordComma", - value: function addOxfordComma() { - var items = this.items(); - var needsComma = items.eq(items.length - 2); + m.required.tags.forEach(tag => { + allChances.push(doc._cache.tags[tag] || []); + }); + let worthIt = hasEvery(allChances); - if (needsComma.found && needsComma.has('@hasComma') === false) { - needsComma.post(', '); + if (worthIt.length === 0) { + return; } - return this; - } - }, { - key: "removeOxfordComma", - value: function removeOxfordComma() { - var items = this.items(); - var needsComma = items.eq(items.length - 2); + let phrases = worthIt.map(index => doc.list[index]); + let tryDoc = doc.buildFrom(phrases); // phrases getting tagged - if (needsComma.found && needsComma.has('@hasComma') === true) { - needsComma.post(' '); + let match = tryDoc.match(m.reg, m.group); + + if (match.found) { + if (m.safe === true) { + match.tagSafe(m.tag, m.reason); + } else { + match.tag(m.tag, m.reason); + } } + }); + }; - return this; - } - }]); + var runner_1 = runner$1; // console.log(hasEvery([[1, 2, 2, 3], [2, 3], []])) - return Lists; - }(Doc); // aliases + const fixMisc = fixMisc$1; + const runner = runner_1; // runner: 250ms + // misc: 40ms + //sequence of match-tag statements to correct mis-tags + const corrections$1 = function (doc) { + runner(doc); + fixMisc(doc); + return doc; + }; - Lists.prototype.things = Lists.prototype.items; + var _04Correction = corrections$1; + const init = _01Init; + const fallbacks = _02Fallbacks; + const contractions = _03Contractions; + const corrections = _04Correction; + /** POS-tag all terms in this document */ - Doc.prototype.lists = function (n) { - var m = this["if"]('@hasComma+ .? (and|or) not? .'); // person-list + const tagger$1 = function (doc) { + let terms = doc.termList(); // check against any known-words - var nounList = m.match('(#Noun|#Adjective|#Determiner|#Article)+ #Conjunction not? (#Article|#Determiner)? #Adjective? #Noun+')["if"]('#Noun'); - var adjList = m.match('(#Adjective|#Adverb)+ #Conjunction not? #Adverb? #Adjective+'); - var verbList = m.match('(#Verb|#Adverb)+ #Conjunction not? #Adverb? #Verb+'); - var result = nounList.concat(adjList); - result = result.concat(verbList); - result = result["if"]('@hasComma'); + doc = init(doc, terms); // everything has gotta be something. ¯\_(:/)_/¯ - if (typeof n === 'number') { - result = m.get(n); - } + doc = fallbacks(doc, terms); // support "didn't" & "spencer's" - return new Lists(result.list, this, this.world); - }; + doc = contractions(doc); //set our cache, to speed things up - return Doc; -}; + doc.cache(); // wiggle-around the results, so they make more sense -var Lists = addMethod$6; -var noPlural = '(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)'; //certain words can't be plural, like 'peace' + doc = corrections(doc); // remove our cache, as it's invalidated now -var hasPlural = function hasPlural(doc) { - if (doc.has('#Plural') === true) { - return true; - } // these can't be plural + doc.uncache(); // run any user-given tagger functions + doc.world.taggers.forEach(fn => { + fn(doc); + }); + return doc; + }; - if (doc.has(noPlural) === true) { - return false; - } + var _02Tagger = tagger$1; - return true; -}; + const addMethod$a = function (Doc) { + /** */ + class Abbreviations extends Doc { + stripPeriods() { + this.termList().forEach(t => { + if (t.tags.Abbreviation === true && t.next) { + t.post = t.post.replace(/^\./, ''); + } -var hasPlural_1 = hasPlural; -var irregulars = { - hour: 'an', - heir: 'an', - heirloom: 'an', - honest: 'an', - honour: 'an', - honor: 'an', - uber: 'an' //german u - -}; //pronounced letters of acronyms that get a 'an' - -var an_acronyms = { - a: true, - e: true, - f: true, - h: true, - i: true, - l: true, - m: true, - n: true, - o: true, - r: true, - s: true, - x: true -}; //'a' regexes - -var a_regexs = [/^onc?e/i, //'wu' sound of 'o' -/^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u' -/^eul/i]; - -var makeArticle = function makeArticle(doc) { - //no 'the john smith', but 'a london hotel' - if (doc.has('#Person') || doc.has('#Place')) { - return ''; - } //no a/an if it's plural + let str = t.text.replace(/\./, ''); + t.set(str); + }); + return this; + } + addPeriods() { + this.termList().forEach(t => { + t.post = t.post.replace(/^\./, ''); + t.post = '.' + t.post; + }); + return this; + } - if (doc.has('#Plural')) { - return 'the'; - } + } - var str = doc.text('normal').trim(); //explicit irregular forms + Abbreviations.prototype.unwrap = Abbreviations.prototype.stripPeriods; - if (irregulars.hasOwnProperty(str)) { - return irregulars[str]; - } //spelled-out acronyms + Doc.prototype.abbreviations = function (n) { + let match = this.match('#Abbreviation'); + if (typeof n === 'number') { + match = match.get(n); + } - var firstLetter = str.substr(0, 1); + return new Abbreviations(match.list, this, this.world); + }; - if (doc.has('^@isAcronym') && an_acronyms.hasOwnProperty(firstLetter)) { - return 'an'; - } //'a' regexes + return Doc; + }; + var Abbreviations = addMethod$a; + const hasPeriod = /\./; - for (var i = 0; i < a_regexs.length; i++) { - if (a_regexs[i].test(str)) { - return 'a'; - } - } //basic vowel-startings + const addMethod$9 = function (Doc) { + /** */ + class Acronyms extends Doc { + stripPeriods() { + this.termList().forEach(t => { + let str = t.text.replace(/\./g, ''); + t.set(str); + }); + return this; + } + addPeriods() { + this.termList().forEach(t => { + let str = t.text.replace(/\./g, ''); + str = str.split('').join('.'); // don't add a end-period if there's a sentence-end one - if (/^[aeiou]/i.test(str)) { - return 'an'; - } + if (hasPeriod.test(t.post) === false) { + str += '.'; + } - return 'a'; -}; + t.set(str); + }); + return this; + } -var getArticle = makeArticle; //similar to plural/singularize rules, but not the same + } -var isPlural$2 = [/(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /men$/i, /.tia$/i, /(m|l)ice$/i]; //similar to plural/singularize rules, but not the same + Acronyms.prototype.unwrap = Acronyms.prototype.stripPeriods; + Acronyms.prototype.strip = Acronyms.prototype.stripPeriods; -var isSingular = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i]; -var _rules = { - isSingular: isSingular, - isPlural: isPlural$2 -}; -var endS = /s$/; // double-check this term, if it is not plural, or singular. -// (this is a partial copy of ./tagger/fallbacks/plural) -// fallback plural if it ends in an 's'. + Doc.prototype.acronyms = function (n) { + let match = this.match('#Acronym'); -var isPlural$1 = function isPlural(str) { - // isSingular suffix rules - if (_rules.isSingular.find(function (reg) { - return reg.test(str); - })) { - return false; - } // does it end in an s? + if (typeof n === 'number') { + match = match.get(n); + } + return new Acronyms(match.list, this, this.world); + }; - if (endS.test(str) === true) { - return true; - } // is it a plural like 'fungi'? + return Doc; + }; + var Acronyms = addMethod$9; + + const addMethod$8 = function (Doc) { + /** split into approximate sub-sentence phrases */ + Doc.prototype.clauses = function (n) { + // an awkward way to disambiguate a comma use + let commas = this.if('@hasComma').notIf('@hasComma @hasComma') //fun, cool... + .notIf('@hasComma . .? (and|or) .') //cool, and fun + .notIf('(#City && @hasComma) #Country') //'toronto, canada' + .notIf('(#WeekDay && @hasComma) #Date') //'tuesday, march 2nd' + .notIf('(#Date && @hasComma) #Year') //'july 6, 1992' + .notIf('@hasComma (too|also)$') //at end of sentence + .match('@hasComma'); + let found = this.splitAfter(commas); + let quotes = found.quotations(); + found = found.splitOn(quotes); + let parentheses = found.parentheses(); + found = found.splitOn(parentheses); // it is cool and it is .. + + let conjunctions = found.if('#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb').match('#Conjunction'); + found = found.splitBefore(conjunctions); // if it is this then that + + let condition = found.if('if .{2,9} then .').match('then'); + found = found.splitBefore(condition); // misc clause partitions + + found = found.splitBefore('as well as .'); + found = found.splitBefore('such as .'); + found = found.splitBefore('in addition to .'); // semicolons, dashes + + found = found.splitAfter('@hasSemicolon'); + found = found.splitAfter('@hasDash'); // passive voice verb - '.. which was robbed is empty' + // let passive = found.match('#Noun (which|that) (was|is) #Adverb? #PastTense #Adverb?') + // if (passive.found) { + // found = found.splitAfter(passive) + // } + // //which the boy robbed + // passive = found.match('#Noun (which|that) the? #Noun+ #Adverb? #PastTense #Adverb?') + // if (passive.found) { + // found = found.splitAfter(passive) + // } + // does there appear to have relative/subordinate clause still? + + let tooLong = found.filter(d => d.wordCount() > 5 && d.match('#Verb+').length >= 2); + + if (tooLong.found) { + let m = tooLong.splitAfter('#Noun .* #Verb .* #Noun+'); + found = found.splitOn(m.eq(0)); + } - if (_rules.isPlural.find(function (reg) { - return reg.test(str); - })) { - return true; - } + if (typeof n === 'number') { + found = found.get(n); + } - return null; -}; + return new Doc(found.list, this, this.world); + }; -var isPlural_1$1 = isPlural$1; -var exceptions = { - he: 'his', - she: 'hers', - they: 'theirs', - we: 'ours', - i: 'mine', - you: 'yours', - her: 'hers', - their: 'theirs', - our: 'ours', - my: 'mine', - your: 'yours' -}; // turn "David" to "David's" - -var toPossessive = function toPossessive(doc) { - var str = doc.text('text').trim(); // exceptions - - if (exceptions.hasOwnProperty(str)) { - doc.replaceWith(exceptions[str], true); - doc.tag('Possessive', 'toPossessive'); - return; - } // flanders' - - - if (/s$/.test(str)) { - str += "'"; - doc.replaceWith(str, true); - doc.tag('Possessive', 'toPossessive'); - return; - } //normal form: - - - str += "'s"; - doc.replaceWith(str, true); - doc.tag('Possessive', 'toPossessive'); - return; -}; + return Doc; + }; -var toPossessive_1 = toPossessive; // .nouns() supports some noun-phrase-ish groupings -// pull these apart, if necessary + var Clauses = addMethod$8; -var parse$1 = function parse(doc) { - var res = { - main: doc - }; //support 'mayor of chicago' as one noun-phrase + const addMethod$7 = function (Doc) { + /** */ + class Contractions extends Doc { + constructor(list, from, world) { + super(list, from, world); + this.contracted = null; + } + /** turn didn't into 'did not' */ - if (doc.has('#Noun (of|by|for) .')) { - var m = doc.splitAfter('[#Noun+]', 0); - res.main = m.eq(0); - res.post = m.eq(1); - } - return res; -}; + expand() { + this.list.forEach(p => { + let terms = p.terms(); //change the case? -var parse_1 = parse$1; -var methods$2 = { - /** overload the original json with noun information */ - json: function json(options) { - var n = null; + let isTitlecase = terms[0].isTitleCase(); + terms.forEach((t, i) => { + //use the implicit text + t.set(t.implicit || t.text); + t.implicit = undefined; //add whitespace - if (typeof options === 'number') { - n = options; - options = null; - } + if (i < terms.length - 1 && t.post === '') { + t.post += ' '; + } + }); //set titlecase - options = options || { - text: true, - normal: true, - trim: true, - terms: true - }; - var res = []; - this.forEach(function (doc) { - var json = doc.json(options)[0]; - json.article = getArticle(doc); - res.push(json); - }); + if (isTitlecase) { + terms[0].toTitleCase(); + } + }); + return this; + } - if (n !== null) { - return res[n]; - } + } //find contractable, expanded-contractions + // const findExpanded = r => { + // let remain = r.not('#Contraction') + // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)') + // m.concat(remain.match('(they|we|you|i) have')) + // m.concat(remain.match('i am')) + // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not')) + // return m + // } - return res; - }, - - /** get all adjectives describing this noun*/ - adjectives: function adjectives() { - var list = this.lookAhead('^(that|who|which)? (was|is|will)? be? #Adverb? #Adjective+'); - list = list.concat(this.lookBehind('#Adjective+ #Adverb?$')); - list = list.match('#Adjective'); - return list.sort('index'); - }, - isPlural: function isPlural() { - return this["if"]('#Plural'); //assume tagger has run? - }, - hasPlural: function hasPlural() { - return this.filter(function (d) { - return hasPlural_1(d); - }); - }, - toPlural: function toPlural(agree) { - var _this = this; - var toPlural = this.world.transforms.toPlural; - this.forEach(function (doc) { - if (doc.has('#Plural') || hasPlural_1(doc) === false) { - return; - } // double-check it isn't an un-tagged plural + Doc.prototype.contractions = function (n) { + //find currently-contracted + let found = this.match('@hasContraction+'); //(may want to split these up) + //todo: split consecutive contractions + if (typeof n === 'number') { + found = found.get(n); + } - var main = parse_1(doc).main; - var str = main.text('reduced'); + return new Contractions(found.list, this, this.world); + }; //aliases - if (!main.has('#Singular') && isPlural_1$1(str) === true) { - return; - } - str = toPlural(str, _this.world); - main.replace(str).tag('#Plural'); // 'an apple' -> 'apples' + Doc.prototype.expanded = Doc.prototype.isExpanded; + Doc.prototype.contracted = Doc.prototype.isContracted; + return Doc; + }; + + var Contractions = addMethod$7; + + const addMethod$6 = function (Doc) { + //pull it apart.. + const parse = function (doc) { + let things = doc.splitAfter('@hasComma').splitOn('(and|or) not?').not('(and|or) not?'); + let beforeLast = doc.match('[.] (and|or)', 0); + return { + things: things, + conjunction: doc.match('(and|or) not?'), + beforeLast: beforeLast, + hasOxford: beforeLast.has('@hasComma') + }; + }; + /** cool, fun, and nice */ - if (agree) { - var an = main.lookBefore('(an|a) #Adjective?$').not('#Adjective'); - if (an.found === true) { - an.remove(); + class Lists extends Doc { + /** coordinating conjunction */ + conjunctions() { + return this.match('(and|or)'); } - } - }); - return this; - }, - toSingular: function toSingular(agree) { - var _this2 = this; - - var toSingular = this.world.transforms.toSingular; - this.forEach(function (doc) { - if (doc.has('^#Singular+$') || hasPlural_1(doc) === false) { - return; - } // double-check it isn't an un-tagged plural + /** split-up by list object */ - var main = parse_1(doc).main; - var str = main.text('reduced'); + parts() { + return this.splitAfter('@hasComma').splitOn('(and|or) not?'); + } + /** remove the conjunction */ - if (!main.has('#Plural') && isPlural_1$1(str) !== true) { - return; - } - str = toSingular(str, _this2.world); - main.replace(str).tag('#Singular'); // add an article + items() { + return parse(this).things; + } + /** add a new unit to the list */ + - if (agree) { - // 'apples' -> 'an apple' - var start = doc; - var adj = doc.lookBefore('#Adjective'); + add(str) { + this.forEach(p => { + let beforeLast = parse(p).beforeLast; + beforeLast.append(str); //add a comma to it - if (adj.found) { - start = adj; + beforeLast.termList(0).addPunctuation(','); + }); + return this; } + /** remove any matching unit from the list */ - var article = getArticle(start); - start.insertBefore(article); - } - }); - return this; - }, - toPossessive: function toPossessive() { - this.forEach(function (d) { - toPossessive_1(d); - }); - return this; - } -}; -var methods_1 = methods$2; -var addMethod$5 = function addMethod(Doc) { - /** */ - var Nouns = /*#__PURE__*/function (_Doc) { - _inherits(Nouns, _Doc); + remove(match) { + return this.items().if(match).remove(); + } + /** return only lists that use a serial comma */ - var _super = _createSuper(Nouns); - function Nouns() { - _classCallCheck(this, Nouns); + hasOxfordComma() { + return this.filter(doc => parse(doc).hasOxford); + } - return _super.apply(this, arguments); - } + addOxfordComma() { + let items = this.items(); + let needsComma = items.eq(items.length - 2); - return Nouns; - }(Doc); // add-in our methods + if (needsComma.found && needsComma.has('@hasComma') === false) { + needsComma.post(', '); + } + return this; + } - Object.assign(Nouns.prototype, methods_1); + removeOxfordComma() { + let items = this.items(); + let needsComma = items.eq(items.length - 2); - Doc.prototype.nouns = function (n) { - var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // don't split 'paris, france' + if (needsComma.found && needsComma.has('@hasComma') === true) { + needsComma.post(' '); + } - var keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas + return this; + } - var m = this.not(keep).splitAfter('@hasComma'); // combine them back together + } // aliases - m = m.concat(keep); // don't combine over scare-quotes - var quotes = m.quotations(); + Lists.prototype.things = Lists.prototype.items; - if (quotes.found) { - m = m.splitOn(quotes.eq(0)); - } + Doc.prototype.lists = function (n) { + let m = this.if('@hasComma+ .? (and|or) not? .'); // person-list - m = m.match('#Noun+ (of|by)? the? #Noun+?'); //nouns that we don't want in these results, for weird reasons + let nounList = m.match('(#Noun|#Adjective|#Determiner|#Article)+ #Conjunction not? (#Article|#Determiner)? #Adjective? #Noun+').if('#Noun'); + let adjList = m.match('(#Adjective|#Adverb)+ #Conjunction not? #Adverb? #Adjective+'); + let verbList = m.match('(#Verb|#Adverb)+ #Conjunction not? #Adverb? #Verb+'); + let result = nounList.concat(adjList); + result = result.concat(verbList); + result = result.if('@hasComma'); - if (opts.keep_anaphora !== true) { - m = m.not('#Pronoun'); - m = m.not('(there|these)'); - m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays - // //allow possessives like "spencer's", but not generic ones like, + if (typeof n === 'number') { + result = m.get(n); + } - m = m.not('(my|our|your|their|her|his)'); - } + return new Lists(result.list, this, this.world); + }; - m = m.not('(of|for|by|the)$'); + return Doc; + }; - if (typeof n === 'number') { - m = m.get(n); - } + var Lists = addMethod$6; + const noPlural = '(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)'; //certain words can't be plural, like 'peace' - return new Nouns(m.list, this, this.world); - }; + const hasPlural$1 = function (doc) { + if (doc.has('#Plural') === true) { + return true; + } // these can't be plural - return Doc; -}; -var Nouns = addMethod$5; -var open = /\(/; -var close = /\)/; + if (doc.has(noPlural) === true) { + return false; + } -var addMethod$4 = function addMethod(Doc) { - /** anything between (these things) */ - var Parentheses = /*#__PURE__*/function (_Doc) { - _inherits(Parentheses, _Doc); + return true; + }; - var _super = _createSuper(Parentheses); + var hasPlural_1 = hasPlural$1; + const irregulars = { + hour: 'an', + heir: 'an', + heirloom: 'an', + honest: 'an', + honour: 'an', + honor: 'an', + uber: 'an' //german u - function Parentheses() { - _classCallCheck(this, Parentheses); + }; //pronounced letters of acronyms that get a 'an' - return _super.apply(this, arguments); - } + const an_acronyms = { + a: true, + e: true, + f: true, + h: true, + i: true, + l: true, + m: true, + n: true, + o: true, + r: true, + s: true, + x: true + }; //'a' regexes - _createClass(Parentheses, [{ - key: "unwrap", - value: - /** remove the parentheses characters */ - function unwrap() { - this.list.forEach(function (p) { - var first = p.terms(0); - first.pre = first.pre.replace(open, ''); - var last = p.lastTerm(); - last.post = last.post.replace(close, ''); - }); - return this; + const a_regexs = [/^onc?e/i, //'wu' sound of 'o' + /^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u' + /^eul/i]; + + const makeArticle = function (doc) { + //no 'the john smith', but 'a london hotel' + if (doc.has('#Person') || doc.has('#Place')) { + return ''; + } //no a/an if it's plural + + + if (doc.has('#Plural')) { + return 'the'; } - }]); - return Parentheses; - }(Doc); + let str = doc.text('normal').trim(); //explicit irregular forms - Doc.prototype.parentheses = function (n) { - var list = []; - this.list.forEach(function (p) { - var terms = p.terms(); //look for opening brackets + if (irregulars.hasOwnProperty(str)) { + return irregulars[str]; + } //spelled-out acronyms - for (var i = 0; i < terms.length; i += 1) { - var t = terms[i]; - if (open.test(t.pre)) { - //look for the closing bracket.. - for (var o = i; o < terms.length; o += 1) { - if (close.test(terms[o].post)) { - var len = o - i + 1; - list.push(p.buildFrom(t.id, len)); - i = o; - break; - } - } - } - } - }); //support nth result + let firstLetter = str.substr(0, 1); - if (typeof n === 'number') { - if (list[n]) { - list = [list[n]]; - } else { - list = []; - } + if (doc.has('^@isAcronym') && an_acronyms.hasOwnProperty(firstLetter)) { + return 'an'; + } //'a' regexes - return new Parentheses(list, this, this.world); - } - return new Parentheses(list, this, this.world); - }; + for (let i = 0; i < a_regexs.length; i++) { + if (a_regexs[i].test(str)) { + return 'a'; + } + } //basic vowel-startings - return Doc; -}; -var Parentheses = addMethod$4; + if (/^[aeiou]/i.test(str)) { + return 'an'; + } -var addMethod$3 = function addMethod(Doc) { - /** */ - var Possessives = /*#__PURE__*/function (_Doc) { - _inherits(Possessives, _Doc); + return 'a'; + }; - var _super = _createSuper(Possessives); + var getArticle$1 = makeArticle; + const isPlural$7 = [/(antenn|formul|nebul|vertebr|vit)ae$/i, /(octop|vir|radi|nucle|fung|cact|stimul)i$/i, /men$/i, /.tia$/i, /(m|l)ice$/i]; //similar to plural/singularize rules, but not the same - function Possessives(list, from, world) { - var _this; + const isSingular = [/(ax|test)is$/i, /(octop|vir|radi|nucle|fung|cact|stimul)us$/i, /(octop|vir)i$/i, /(rl)f$/i, /(alias|status)$/i, /(bu)s$/i, /(al|ad|at|er|et|ed|ad)o$/i, /(ti)um$/i, /(ti)a$/i, /sis$/i, /(?:(^f)fe|(lr)f)$/i, /hive$/i, /(^aeiouy|qu)y$/i, /(x|ch|ss|sh|z)$/i, /(matr|vert|ind|cort)(ix|ex)$/i, /(m|l)ouse$/i, /(m|l)ice$/i, /(antenn|formul|nebul|vertebr|vit)a$/i, /.sis$/i, /^(?!talis|.*hu)(.*)man$/i]; + var _rules = { + isSingular: isSingular, + isPlural: isPlural$7 + }; + const rules = _rules; + const endS = /s$/; // double-check this term, if it is not plural, or singular. + // (this is a partial copy of ./tagger/fallbacks/plural) + // fallback plural if it ends in an 's'. + + const isPlural$6 = function (str) { + // isSingular suffix rules + if (rules.isSingular.find(reg => reg.test(str))) { + return false; + } // does it end in an s? - _classCallCheck(this, Possessives); - _this = _super.call(this, list, from, world); - _this.contracted = null; - return _this; - } - /** turn didn't into 'did not' */ + if (endS.test(str) === true) { + return true; + } // is it a plural like 'fungi'? - _createClass(Possessives, [{ - key: "strip", - value: function strip() { - this.list.forEach(function (p) { - var terms = p.terms(); - terms.forEach(function (t) { - var str = t.text.replace(/'s$/, ''); - t.set(str || t.text); - }); - }); - return this; + if (rules.isPlural.find(reg => reg.test(str))) { + return true; } - }]); - - return Possessives; - }(Doc); //find contractable, expanded-contractions - // const findExpanded = r => { - // let remain = r.not('#Contraction') - // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)') - // m.concat(remain.match('(they|we|you|i) have')) - // m.concat(remain.match('i am')) - // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not')) - // return m - // } + return null; + }; - Doc.prototype.possessives = function (n) { - //find currently-contracted - var found = this.match('#Noun+? #Possessive'); //todo: split consecutive contractions + var isPlural_1$1 = isPlural$6; + const exceptions = { + he: 'his', + she: 'hers', + they: 'theirs', + we: 'ours', + i: 'mine', + you: 'yours', + her: 'hers', + their: 'theirs', + our: 'ours', + my: 'mine', + your: 'yours' + }; // turn "David" to "David's" + + const toPossessive$1 = function (doc) { + let str = doc.text('text').trim(); // exceptions + + if (exceptions.hasOwnProperty(str)) { + doc.replaceWith(exceptions[str], true); + doc.tag('Possessive', 'toPossessive'); + return; + } // flanders' - if (typeof n === 'number') { - found = found.get(n); - } - return new Possessives(found.list, this, this.world); - }; + if (/s$/.test(str)) { + str += "'"; + doc.replaceWith(str, true); + doc.tag('Possessive', 'toPossessive'); + return; + } //normal form: - return Doc; -}; -var Possessives = addMethod$3; -var pairs = { - "\"": "\"", - // 'StraightDoubleQuotes' - "\uFF02": "\uFF02", - // 'StraightDoubleQuotesWide' - "'": "'", - // 'StraightSingleQuotes' - "\u201C": "\u201D", - // 'CommaDoubleQuotes' - "\u2018": "\u2019", - // 'CommaSingleQuotes' - "\u201F": "\u201D", - // 'CurlyDoubleQuotesReversed' - "\u201B": "\u2019", - // 'CurlySingleQuotesReversed' - "\u201E": "\u201D", - // 'LowCurlyDoubleQuotes' - "\u2E42": "\u201D", - // 'LowCurlyDoubleQuotesReversed' - "\u201A": "\u2019", - // 'LowCurlySingleQuotes' - "\xAB": "\xBB", - // 'AngleDoubleQuotes' - "\u2039": "\u203A", - // 'AngleSingleQuotes' - // Prime 'non quotation' - "\u2035": "\u2032", - // 'PrimeSingleQuotes' - "\u2036": "\u2033", - // 'PrimeDoubleQuotes' - "\u2037": "\u2034", - // 'PrimeTripleQuotes' - // Prime 'quotation' variation - "\u301D": "\u301E", - // 'PrimeDoubleQuotes' - "`": "\xB4", - // 'PrimeSingleQuotes' - "\u301F": "\u301E" // 'LowPrimeDoubleQuotesReversed' + str += "'s"; + doc.replaceWith(str, true); + doc.tag('Possessive', 'toPossessive'); + return; + }; -}; -var hasOpen = RegExp('(' + Object.keys(pairs).join('|') + ')'); + var toPossessive_1 = toPossessive$1; // pull these apart, if necessary -var addMethod$2 = function addMethod(Doc) { - /** "these things" */ - var Quotations = /*#__PURE__*/function (_Doc) { - _inherits(Quotations, _Doc); + const parse$2 = function (doc) { + let res = { + main: doc + }; //support 'mayor of chicago' as one noun-phrase - var _super = _createSuper(Quotations); + if (doc.has('#Noun (of|by|for) .')) { + let m = doc.splitAfter('[#Noun+]', 0); + res.main = m.eq(0); + res.post = m.eq(1); + } - function Quotations() { - _classCallCheck(this, Quotations); + return res; + }; - return _super.apply(this, arguments); - } + var parse_1 = parse$2; + const hasPlural = hasPlural_1; + const getArticle = getArticle$1; + const isPlural$5 = isPlural_1$1; + const toPossessive = toPossessive_1; + const parse$1 = parse_1; + const methods$4 = { + /** overload the original json with noun information */ + json: function (options) { + let n = null; + + if (typeof options === 'number') { + n = options; + options = null; + } - _createClass(Quotations, [{ - key: "unwrap", - value: - /** remove the quote characters */ - function unwrap() { - return this; - } - }]); + options = options || { + text: true, + normal: true, + trim: true, + terms: true + }; + let res = []; + this.forEach(doc => { + let json = doc.json(options)[0]; + json.article = getArticle(doc); + res.push(json); + }); - return Quotations; - }(Doc); + if (n !== null) { + return res[n]; + } - Doc.prototype.quotations = function (n) { - var list = []; - this.list.forEach(function (p) { - var terms = p.terms(); //look for opening quotes + return res; + }, + + /** get all adjectives describing this noun*/ + adjectives: function () { + let list = this.lookAhead('^(that|who|which)? (was|is|will)? be? #Adverb? #Adjective+'); + list = list.concat(this.lookBehind('#Adjective+ #Adverb?$')); + list = list.match('#Adjective'); + return list.sort('index'); + }, + isPlural: function () { + return this.if('#Plural'); //assume tagger has run? + }, + hasPlural: function () { + return this.filter(d => hasPlural(d)); + }, + toPlural: function (agree) { + let toPlural = this.world.transforms.toPlural; + this.forEach(doc => { + if (doc.has('#Plural') || hasPlural(doc) === false) { + return; + } // double-check it isn't an un-tagged plural + + + let main = parse$1(doc).main; + let str = main.text('reduced'); + + if (!main.has('#Singular') && isPlural$5(str) === true) { + return; + } - for (var i = 0; i < terms.length; i += 1) { - var t = terms[i]; + str = toPlural(str, this.world); + main.replace(str).tag('#Plural'); // 'an apple' -> 'apples' - if (hasOpen.test(t.pre)) { - var _char = (t.pre.match(hasOpen) || [])[0]; - var want = pairs[_char]; // if (!want) { - // console.warn('missing quote char ' + char) - // } - //look for the closing bracket.. + if (agree) { + let an = main.lookBefore('(an|a) #Adjective?$').not('#Adjective'); - for (var o = i; o < terms.length; o += 1) { - if (terms[o].post.indexOf(want) !== -1) { - var len = o - i + 1; - list.push(p.buildFrom(t.id, len)); - i = o; - break; + if (an.found === true) { + an.remove(); } } - } - } - }); //support nth result + }); + return this; + }, + toSingular: function (agree) { + let toSingular = this.world.transforms.toSingular; + this.forEach(doc => { + if (doc.has('^#Singular+$') || hasPlural(doc) === false) { + return; + } // double-check it isn't an un-tagged plural - if (typeof n === 'number') { - if (list[n]) { - list = [list[n]]; - } else { - list = []; - } - return new Quotations(list, this, this.world); - } + let main = parse$1(doc).main; + let str = main.text('reduced'); - return new Quotations(list, this, this.world); - }; // alias + if (!main.has('#Plural') && isPlural$5(str) !== true) { + return; + } + str = toSingular(str, this.world); + main.replace(str).tag('#Singular'); // add an article - Doc.prototype.quotes = Doc.prototype.quotations; - return Doc; -}; + if (agree) { + // 'apples' -> 'an apple' + let start = doc; + let adj = doc.lookBefore('#Adjective'); -var Quotations = addMethod$2; // walked => walk - turn a verb into it's root form + if (adj.found) { + start = adj; + } + + let article = getArticle(start); + start.insertBefore(article); + } + }); + return this; + }, + toPossessive: function () { + this.forEach(d => { + toPossessive(d); + }); + return this; + } + }; + var methods_1 = methods$4; + const methods$3 = methods_1; -var toInfinitive = function toInfinitive(parsed, world) { - var verb = parsed.verb; // console.log(parsed) - // verb.debug() - //1. if it's already infinitive + const addMethod$5 = function (Doc) { + /** */ + class Nouns extends Doc {} // add-in our methods - var str = verb.text('reduced'); - if (verb.has('#Infinitive')) { - return str; - } // 2. world transform does the heavy-lifting + Object.assign(Nouns.prototype, methods$3); + Doc.prototype.nouns = function (n) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + // don't split 'paris, france' + let keep = this.match('(#City && @hasComma) (#Region|#Country)'); // but split the other commas - var tense = null; + let m = this.not(keep).splitAfter('@hasComma'); // combine them back together - if (verb.has('#PastTense')) { - tense = 'PastTense'; - } else if (verb.has('#Gerund')) { - tense = 'Gerund'; - } else if (verb.has('#PresentTense')) { - tense = 'PresentTense'; - } else if (verb.has('#Participle')) { - tense = 'Participle'; - } else if (verb.has('#Actor')) { - tense = 'Actor'; - } + m = m.concat(keep); // don't combine over scare-quotes - return world.transforms.toInfinitive(str, world, tense); -}; + let quotes = m.quotations(); + + if (quotes.found) { + m = m.splitOn(quotes.eq(0)); + } -var toInfinitive_1 = toInfinitive; // spencer walks -> singular -// we walk -> plural -// the most-recent noun-phrase, before this verb. + m = m.match('#Noun+ (of|by)? the? #Noun+?'); //nouns that we don't want in these results, for weird reasons -var findNoun = function findNoun(vb) { - var noun = vb.lookBehind('#Noun+').last(); - return noun; -}; //sometimes you can tell if a verb is plural/singular, just by the verb -// i am / we were -// othertimes you need its subject 'we walk' vs 'i walk' + if (opts.keep_anaphora !== true) { + m = m.not('#Pronoun'); + m = m.not('(there|these)'); + m = m.not('(#Month|#WeekDay)'); //allow Durations, Holidays + // //allow possessives like "spencer's", but not generic ones like, + m = m.not('(my|our|your|their|her|his)'); + } -var isPlural$4 = function isPlural(parsed) { - var vb = parsed.verb; + m = m.not('(of|for|by|the)$'); - if (vb.has('(are|were|does)') || parsed.auxiliary.has('(are|were|does)')) { - return true; - } + if (typeof n === 'number') { + m = m.get(n); + } - if (vb.has('(is|am|do|was)') || parsed.auxiliary.has('(is|am|do|was)')) { - return false; - } //consider its prior noun + return new Nouns(m.list, this, this.world); + }; + return Doc; + }; - var noun = findNoun(vb); + var Nouns = addMethod$5; + const open = /\(/; + const close = /\)/; + + const addMethod$4 = function (Doc) { + /** anything between (these things) */ + class Parentheses extends Doc { + /** remove the parentheses characters */ + unwrap() { + this.list.forEach(p => { + let first = p.terms(0); + first.pre = first.pre.replace(open, ''); + let last = p.lastTerm(); + last.post = last.post.replace(close, ''); + }); + return this; + } - if (noun.has('(we|they|you)')) { - return true; - } + } - if (noun.has('#Plural')) { - return true; - } + Doc.prototype.parentheses = function (n) { + let list = []; + this.list.forEach(p => { + let terms = p.terms(); //look for opening brackets - if (noun.has('#Singular')) { - return false; - } + for (let i = 0; i < terms.length; i += 1) { + const t = terms[i]; - return null; -}; + if (open.test(t.pre)) { + //look for the closing bracket.. + for (let o = i; o < terms.length; o += 1) { + if (close.test(terms[o].post)) { + let len = o - i + 1; + list.push(p.buildFrom(t.id, len)); + i = o; + break; + } + } + } + } + }); //support nth result -var isPlural_1 = isPlural$4; // #Copula : is -> 'is not' -// #PastTense : walked -> did not walk -// #PresentTense : walks -> does not walk -// #Gerund : walking: -> not walking -// #Infinitive : walk -> do not walk + if (typeof n === 'number') { + if (list[n]) { + list = [list[n]]; + } else { + list = []; + } -var toNegative = function toNegative(parsed, world) { - var vb = parsed.verb; // if it's already negative... + return new Parentheses(list, this, this.world); + } - if (parsed.negative.found) { - return; - } // would walk -> would not walk + return new Parentheses(list, this, this.world); + }; + return Doc; + }; - if (parsed.auxiliary.found) { - parsed.auxiliary.eq(0).append('not'); // 'would not have' ➔ 'would not have' + var Parentheses = addMethod$4; - if (parsed.auxiliary.has('#Modal have not')) { - parsed.auxiliary.replace('have not', 'not have'); - } + const addMethod$3 = function (Doc) { + /** */ + class Possessives extends Doc { + constructor(list, from, world) { + super(list, from, world); + this.contracted = null; + } + /** turn didn't into 'did not' */ - return; - } // is walking -> is not walking + strip() { + this.list.forEach(p => { + let terms = p.terms(); + terms.forEach(t => { + let str = t.text.replace(/'s$/, ''); + t.set(str || t.text); + }); + }); + return this; + } - if (vb.has('(#Copula|will|has|had|do)')) { - vb.append('not'); - return; - } // walked -> did not walk + } //find contractable, expanded-contractions + // const findExpanded = r => { + // let remain = r.not('#Contraction') + // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)') + // m.concat(remain.match('(they|we|you|i) have')) + // m.concat(remain.match('i am')) + // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not')) + // return m + // } - if (vb.has('#PastTense')) { - var inf = toInfinitive_1(parsed, world); - vb.replaceWith(inf, true); - vb.prepend('did not'); - return; - } // walks -> does not walk + Doc.prototype.possessives = function (n) { + //find currently-contracted + let found = this.match('#Noun+? #Possessive'); //todo: split consecutive contractions + if (typeof n === 'number') { + found = found.get(n); + } - if (vb.has('#PresentTense')) { - var _inf = toInfinitive_1(parsed, world); + return new Possessives(found.list, this, this.world); + }; - vb.replaceWith(_inf, true); + return Doc; + }; - if (isPlural_1(parsed)) { - vb.prepend('do not'); - } else { - vb.prepend('does not'); - } + var Possessives = addMethod$3; + const pairs = { + '\u0022': '\u0022', + // 'StraightDoubleQuotes' + '\uFF02': '\uFF02', + // 'StraightDoubleQuotesWide' + '\u0027': '\u0027', + // 'StraightSingleQuotes' + '\u201C': '\u201D', + // 'CommaDoubleQuotes' + '\u2018': '\u2019', + // 'CommaSingleQuotes' + '\u201F': '\u201D', + // 'CurlyDoubleQuotesReversed' + '\u201B': '\u2019', + // 'CurlySingleQuotesReversed' + '\u201E': '\u201D', + // 'LowCurlyDoubleQuotes' + '\u2E42': '\u201D', + // 'LowCurlyDoubleQuotesReversed' + '\u201A': '\u2019', + // 'LowCurlySingleQuotes' + '\u00AB': '\u00BB', + // 'AngleDoubleQuotes' + '\u2039': '\u203A', + // 'AngleSingleQuotes' + // Prime 'non quotation' + '\u2035': '\u2032', + // 'PrimeSingleQuotes' + '\u2036': '\u2033', + // 'PrimeDoubleQuotes' + '\u2037': '\u2034', + // 'PrimeTripleQuotes' + // Prime 'quotation' variation + '\u301D': '\u301E', + // 'PrimeDoubleQuotes' + '\u0060': '\u00B4', + // 'PrimeSingleQuotes' + '\u301F': '\u301E' // 'LowPrimeDoubleQuotesReversed' - return; - } //walking -> not walking + }; + const hasOpen = RegExp('(' + Object.keys(pairs).join('|') + ')'); + + const addMethod$2 = function (Doc) { + /** "these things" */ + class Quotations extends Doc { + /** remove the quote characters */ + unwrap() { + return this; + } + } - if (vb.has('#Gerund')) { - var _inf2 = toInfinitive_1(parsed, world); + Doc.prototype.quotations = function (n) { + let list = []; + this.list.forEach(p => { + let terms = p.terms(); //look for opening quotes - vb.replaceWith(_inf2, true); - vb.prepend('not'); - return; - } //fallback 1: walk -> does not walk + for (let i = 0; i < terms.length; i += 1) { + const t = terms[i]; + if (hasOpen.test(t.pre)) { + let char = (t.pre.match(hasOpen) || [])[0]; + let want = pairs[char]; // if (!want) { + // console.warn('missing quote char ' + char) + // } + //look for the closing bracket.. - if (isPlural_1(parsed)) { - vb.prepend('does not'); - return; - } //fallback 2: walk -> do not walk + for (let o = i; o < terms.length; o += 1) { + if (terms[o].post.indexOf(want) !== -1) { + let len = o - i + 1; + list.push(p.buildFrom(t.id, len)); + i = o; + break; + } + } + } + } + }); //support nth result + if (typeof n === 'number') { + if (list[n]) { + list = [list[n]]; + } else { + list = []; + } - vb.prepend('do not'); - return; -}; + return new Quotations(list, this, this.world); + } -var toNegative_1 = toNegative; // who/what is doing this verb? -// get the prior verb most-likely doing this action -// (it can not-exist - 'close the door') + return new Quotations(list, this, this.world); + }; // alias -var getSubject = function getSubject(vb) { - var behind = vb.lookBehind(); - var lastNoun = behind.nouns(null, { - keep_anaphora: true - }).last(); // support 'that' and 'this' - if (!lastNoun.found) { - lastNoun = behind.match('(that|this|each)').last(); - lastNoun = lastNoun.tag('#Noun').nouns(); - } + Doc.prototype.quotes = Doc.prototype.quotations; + return Doc; + }; - return lastNoun; -}; + var Quotations = addMethod$2; -var getSubject_1 = getSubject; - -var parseVerb = function parseVerb(vb) { - var parsed = { - adverb: vb.match('#Adverb+'), - // 'really' - negative: vb.match('#Negative'), - // 'not' - auxiliary: vb.match('#Auxiliary+').not('(#Negative|#Adverb)'), - // 'will' of 'will go' - particle: vb.match('#Particle'), - // 'up' of 'pull up' - verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)'), - original: vb, - subject: getSubject_1(vb) - }; // fallback, if no verb found - - if (!parsed.verb.found) { - // blank-everything - Object.keys(parsed).forEach(function (k) { - parsed[k] = parsed[k].not('.'); - }); // it's all the verb - - parsed.verb = vb; - return parsed; - } // + const toInfinitive$2 = function (parsed, world) { + let verb = parsed.verb; //1. if it's already infinitive + let str = verb.text('reduced'); - if (parsed.adverb && parsed.adverb.found) { - var match = parsed.adverb.text('reduced') + '$'; + if (verb.has('#Infinitive')) { + return str; + } // 2. world transform does the heavy-lifting - if (vb.has(match)) { - parsed.adverbAfter = true; - } - } - return parsed; -}; + let tense = null; -var parse = parseVerb; -/** too many special cases for is/was/will be*/ + if (verb.has('#PastTense')) { + tense = 'PastTense'; + } else if (verb.has('#Gerund')) { + tense = 'Gerund'; + } else if (verb.has('#PresentTense')) { + tense = 'PresentTense'; + } else if (verb.has('#Participle')) { + tense = 'Participle'; + } else if (verb.has('#Actor')) { + tense = 'Actor'; + } -var toBe = function toBe(parsed) { - var isI = false; - var plural = isPlural_1(parsed); - var isNegative = parsed.negative.found; //account for 'i is' -> 'i am' irregular - // if (vb.parent && vb.parent.has('i #Adverb? #Copula')) { - // isI = true; - // } - // 'i look', not 'i looks' + return world.transforms.toInfinitive(str, world, tense); + }; - if (parsed.verb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) { - isI = true; - } + var toInfinitive_1 = toInfinitive$2; // we walk -> plural + // the most-recent noun-phrase, before this verb. - var obj = { - PastTense: 'was', - PresentTense: 'is', - FutureTense: 'will be', - Infinitive: 'is', - Gerund: 'being', - Actor: '', - PerfectTense: 'been', - Pluperfect: 'been' - }; //"i is" -> "i am" - - if (isI === true) { - obj.PresentTense = 'am'; - obj.Infinitive = 'am'; - } + const findNoun = function (vb) { + let noun = vb.lookBehind('#Noun+').last(); + return noun; + }; //sometimes you can tell if a verb is plural/singular, just by the verb + // i am / we were + // othertimes you need its subject 'we walk' vs 'i walk' - if (plural) { - obj.PastTense = 'were'; - obj.PresentTense = 'are'; - obj.Infinitive = 'are'; - } - if (isNegative) { - obj.PastTense += ' not'; - obj.PresentTense += ' not'; - obj.FutureTense = 'will not be'; - obj.Infinitive += ' not'; - obj.PerfectTense = 'not ' + obj.PerfectTense; - obj.Pluperfect = 'not ' + obj.Pluperfect; - obj.Gerund = 'not ' + obj.Gerund; - } + const isPlural$4 = function (parsed) { + let vb = parsed.verb; - return obj; -}; + if (vb.has('(are|were|does)') || parsed.auxiliary.has('(are|were|does)')) { + return true; + } //consider its prior noun -var toBe_1 = toBe; // 'may/could/should' -> 'may/could/should have' -var doModal = function doModal(parsed) { - var str = parsed.verb.text(); - var res = { - PastTense: str + ' have', - PresentTense: str, - FutureTense: str, - Infinitive: str // Gerund: , - // Actor: '', - // PerfectTense: '', - // Pluperfect: '', + let noun = findNoun(vb); - }; - return res; -}; + if (noun.has('(he|she|many|both)')) { + return false; + } -var doModal_1 = doModal; + if (noun.has('(we|they|you|i)')) { + return true; + } -var conjugate = function conjugate(parsed, world) { - var verb = parsed.verb; //special handling of 'is', 'will be', etc. + if (noun.has('#Person')) { + return false; + } - if (verb.has('#Copula') || verb.out('normal') === 'be' && parsed.auxiliary.has('will')) { - return toBe_1(parsed); - } // special handling of 'are walking' + if (noun.has('#Plural')) { + return true; + } + if (noun.has('#Singular')) { + return false; + } - if (parsed.auxiliary.has('are') && verb.has('#Gerund')) { - var og = parsed.original.clone(); - var past = og.clone().replace('are', 'were'); - var fut = og.clone().replace('are', 'will be'); + if (vb.has('(is|am|do|was)')) { + return false; + } - var _infinitive = toInfinitive_1(parsed, world); + if (parsed.auxiliary.has('(is|am|do|was)') && !parsed.negative.found) { + return false; + } - var res = { - PastTense: past.text(), - PresentTense: og.text(), - FutureTense: fut.text(), - Infinitive: _infinitive + return null; }; - return res; - } // special handling of 'he could.' + var isPlural_1 = isPlural$4; + const toInfinitive$1 = toInfinitive_1; + const isPlural$3 = isPlural_1; // #Modal : would walk -> 'would not walk' + // #Copula : is -> 'is not' + // #PastTense : walked -> did not walk + // #PresentTense : walks -> does not walk + // #Gerund : walking: -> not walking + // #Infinitive : walk -> do not walk - if (verb.has('#Modal')) { - return doModal_1(parsed); - } // dont conjugate imperative form - 'close the door' - // if (parsed.auxiliary.has('do')) { - // let str = parsed.original.text() - // let res = { - // PastTense: str, - // PresentTense: str, - // FutureTense: str, - // Infinitive: str, - // } - // return res - // } + const toNegative$1 = function (parsed, world) { + let vb = parsed.verb; // if it's already negative... + if (parsed.negative.found) { + return; + } // would walk -> would not walk - var hasHyphen = parsed.verb.termList(0).hasHyphen(); - var infinitive = toInfinitive_1(parsed, world); - if (!infinitive) { - return {}; - } + if (parsed.auxiliary.found) { + parsed.auxiliary.eq(0).append('not'); // 'would not have' ➔ 'would not have' - var forms = world.transforms.conjugate(infinitive, world); - forms.Infinitive = infinitive; // add particle to phrasal verbs ('fall over') + if (parsed.auxiliary.has('#Modal have not')) { + parsed.auxiliary.replace('have not', 'not have'); + } - if (parsed.particle.found) { - var particle = parsed.particle.text(); - var space = hasHyphen === true ? '-' : ' '; - Object.keys(forms).forEach(function (k) { - return forms[k] += space + particle; - }); - } //put the adverb at the end? - // if (parsed.adverb.found) { - // let adverb = parsed.adverb.text() - // let space = hasHyphen === true ? '-' : ' ' - // if (parsed.adverbAfter === true) { - // Object.keys(forms).forEach(k => (forms[k] += space + adverb)) - // } else { - // Object.keys(forms).forEach(k => (forms[k] = adverb + space + forms[k])) - // } - // } - //apply negative + return; + } // is walking -> is not walking - var isNegative = parsed.negative.found; + if (vb.has('(#Copula|will|has|had|do)')) { + vb.append('not'); + return; + } // walked -> did not walk - if (isNegative) { - forms.PastTense = 'did not ' + forms.Infinitive; - forms.PresentTense = 'does not ' + forms.Infinitive; - forms.Gerund = 'not ' + forms.Gerund; - } //future Tense is pretty straightforward + if (vb.has('#PastTense')) { + let inf = toInfinitive$1(parsed, world); + vb.replaceWith(inf, true); + vb.prepend('did not'); + return; + } // walks -> does not walk - if (!forms.FutureTense) { - if (isNegative) { - forms.FutureTense = 'will not ' + forms.Infinitive; - } else { - forms.FutureTense = 'will ' + forms.Infinitive; - } - } - if (isNegative) { - forms.Infinitive = 'not ' + forms.Infinitive; - } + if (vb.has('#PresentTense')) { + let inf = toInfinitive$1(parsed, world); + vb.replaceWith(inf, true); - return forms; -}; + if (isPlural$3(parsed)) { + vb.prepend('do not'); + } else { + vb.prepend('does not'); + } -var conjugate_1 = conjugate; // if something is 'modal-ish' we are forced to use past-participle -// ('i could drove' is wrong) + return; + } //walking -> not walking -var useParticiple$1 = function useParticiple(parsed) { - if (parsed.auxiliary.has('(could|should|would|may|can|must)')) { - return true; - } - if (parsed.auxiliary.has('am .+? being')) { - return true; - } + if (vb.has('#Gerund')) { + let inf = toInfinitive$1(parsed, world); + vb.replaceWith(inf, true); + vb.prepend('not'); + return; + } //fallback 1: walk -> does not walk - if (parsed.auxiliary.has('had .+? been')) { - return true; - } - return false; -}; // conjugate 'drive' ➔ 'have driven' + if (isPlural$3(parsed)) { + vb.prepend('does not'); + return; + } //fallback 2: walk -> do not walk + + + vb.prepend('do not'); + return; + }; + var toNegative_1 = toNegative$1; // get the prior verb most-likely doing this action + // (it can not-exist - 'close the door') -var toParticiple = function toParticiple(parsed, world) { - //is it already a participle? - if (parsed.auxiliary.has('(have|had)') && parsed.verb.has('#Participle')) { - return; - } // try to swap the main verb to its participle form + const getSubject$2 = function (vb) { + let behind = vb.lookBehind(); + let lastNoun = behind.nouns(null, { + keep_anaphora: true + }).last(); // support 'that' and 'this' + if (!lastNoun.found) { + lastNoun = behind.match('(that|this|each)').last(); + lastNoun = lastNoun.tag('#Noun').nouns(); + } - var obj = conjugate_1(parsed, world); - var str = obj.Participle || obj.PastTense; + return lastNoun; + }; - if (str) { - parsed.verb.replaceWith(str, false); - } // 'am being driven' ➔ 'have been driven' + var getSubject_1 = getSubject$2; + const getSubject$1 = getSubject_1; // turn 'would not really walk up' into parts + + const parseVerb$1 = function (vb) { + let parsed = { + adverb: vb.match('#Adverb+'), + // 'really' + negative: vb.match('#Negative'), + // 'not' + auxiliary: vb.match('#Auxiliary+').not('(#Negative|#Adverb)'), + // 'will' of 'will go' + particle: vb.match('#Particle'), + // 'up' of 'pull up' + verb: vb.match('#Verb+').not('(#Adverb|#Negative|#Auxiliary|#Particle)'), + original: vb, + subject: getSubject$1(vb) + }; // parsed.subject.debug() + // for conjugation purposes, + // 'should start looking' -> 'should start' + + if (parsed.verb.has('(#PresentTense|#PastTense|#Infinitive) #Gerund$')) { + parsed.verb = parsed.verb.not('#Gerund$'); + } // fallback, if no verb found + + + if (!parsed.verb.found) { + // blank-everything + Object.keys(parsed).forEach(k => { + parsed[k] = parsed[k].not('.'); + }); // it's all the verb + + parsed.verb = vb; + return parsed; + } // + + + if (parsed.adverb && parsed.adverb.found) { + let match = parsed.adverb.text('reduced') + '$'; + + if (vb.has(match)) { + parsed.adverbAfter = true; + } + } + return parsed; + }; - if (parsed.auxiliary.has('am .+? being')) { - parsed.auxiliary.remove('am'); - parsed.auxiliary.replace('being', 'have been'); - } // add a 'have' + var parse = parseVerb$1; + const isPlural$2 = isPlural_1; + /** too many special cases for is/was/will be*/ + + const toBe$1 = parsed => { + let isI = false; + let plural = isPlural$2(parsed); + let isNegative = parsed.negative.found; //account for 'i is' -> 'i am' irregular + // if (vb.parent && vb.parent.has('i #Adverb? #Copula')) { + // isI = true; + // } + // 'i look', not 'i looks' + + if (parsed.verb.lookBehind('i (#Adverb|#Verb)?$').found) { + isI = true; + } + + let obj = { + PastTense: 'was', + PresentTense: 'is', + FutureTense: 'will be', + Infinitive: 'is', + Gerund: 'being', + Actor: '', + PerfectTense: 'been', + Pluperfect: 'been' + }; + if (plural) { + obj.PastTense = 'were'; + obj.PresentTense = 'are'; + obj.Infinitive = 'are'; + } //"i is" -> "i am" - if (!parsed.auxiliary.has('have')) { - parsed.auxiliary.append('have'); - } // tag it as a participle + if (isI === true) { + obj.PastTense = 'was'; + obj.PresentTense = 'am'; + obj.Infinitive = 'am'; + } - parsed.verb.tag('Participle', 'toParticiple'); // turn 'i can swim' to -> 'i could swim' + if (isNegative) { + obj.PastTense += ' not'; + obj.PresentTense += ' not'; + obj.FutureTense = 'will not be'; + obj.Infinitive += ' not'; + obj.PerfectTense = 'not ' + obj.PerfectTense; + obj.Pluperfect = 'not ' + obj.Pluperfect; + obj.Gerund = 'not ' + obj.Gerund; + } - parsed.auxiliary.replace('can', 'could'); //'must be' ➔ 'must have been' + return obj; + }; - parsed.auxiliary.replace('be have', 'have been'); //'not have' ➔ 'have not' + var toBe_1 = toBe$1; - parsed.auxiliary.replace('not have', 'have not'); // ensure all new words are tagged right + const doModal$1 = function (parsed) { + let str = parsed.verb.text(); + let res = { + PastTense: str + ' have', + PresentTense: str, + FutureTense: str, + Infinitive: str // Gerund: , + // Actor: '', + // PerfectTense: '', + // Pluperfect: '', - parsed.auxiliary.tag('Auxiliary'); -}; + }; + return res; + }; -var participle = { - useParticiple: useParticiple$1, - toParticiple: toParticiple -}; -var _toParticiple = participle.toParticiple, - useParticiple = participle.useParticiple; // remove any tense-information in auxiliary verbs - -var makeNeutral = function makeNeutral(parsed) { - //remove tense-info from auxiliaries - parsed.auxiliary.remove('(will|are|am|being)'); - parsed.auxiliary.remove('(did|does)'); - parsed.auxiliary.remove('(had|has|have)'); //our conjugation includes the 'not' and the phrasal-verb particle - - parsed.particle.remove(); - parsed.negative.remove(); - return parsed; -}; + var doModal_1 = doModal$1; + const toInfinitive = toInfinitive_1; + const toBe = toBe_1; + const doModal = doModal_1; + const isPlural$1 = isPlural_1; -var methods$1 = { - /** overload the original json with verb information */ - json: function json(options) { - var _this = this; + const conjugate$2 = function (parsed, world) { + let verb = parsed.verb; //special handling of 'is', 'will be', etc. - var n = null; + if (verb.has('#Copula') || verb.out('normal') === 'be' && parsed.auxiliary.has('will')) { + return toBe(parsed); + } // special handling of 'are walking' - if (typeof options === 'number') { - n = options; - options = null; - } - options = options || { - text: true, - normal: true, - trim: true, - terms: true - }; - var res = []; - this.forEach(function (p) { - var json = p.json(options)[0]; - var parsed = parse(p); - json.parts = {}; - Object.keys(parsed).forEach(function (k) { - if (parsed[k] && parsed[k].isA === 'Doc') { - json.parts[k] = parsed[k].text('normal'); - } else { - json.parts[k] = parsed[k]; - } - }); - json.isNegative = p.has('#Negative'); - json.conjugations = conjugate_1(parsed, _this.world); - res.push(json); - }); + if (parsed.auxiliary.has('are') && verb.has('#Gerund')) { + let og = parsed.original.clone(); + let past = og.clone().replace('are', 'were'); + let fut = og.clone().replace('are', 'will be'); + let infinitive = toInfinitive(parsed, world); + let res = { + PastTense: past.text(), + PresentTense: og.text(), + FutureTense: fut.text(), + Infinitive: infinitive + }; + return res; + } // special handling of 'he could.' - if (n !== null) { - return res[n]; - } - return res; - }, + if (verb.has('#Modal')) { + return doModal(parsed); + } // get the root form - /** grab the adverbs describing these verbs */ - adverbs: function adverbs() { - var list = []; // look at internal adverbs - this.forEach(function (vb) { - var advb = parse(vb).adverb; + let infinitive = toInfinitive(parsed, world); - if (advb.found) { - list = list.concat(advb.list); + if (!infinitive) { + return {}; } - }); // look for leading adverbs - var m = this.lookBehind('#Adverb+$'); + let forms = world.transforms.conjugate(infinitive, world); + forms.Infinitive = infinitive; // Singular: the dog chases + // Plural: the dogs chase - if (m.found) { - list = m.list.concat(list); - } // look for trailing adverbs + let bePlural = isPlural$1(parsed); + if (bePlural === true) { + forms.PresentTense = forms.Infinitive; // the dogs chase + } // add particle to phrasal verbs ('fall over') - m = this.lookAhead('^#Adverb+'); - if (m.found) { - list = list.concat(m.list); - } - - return this.buildFrom(list); - }, - /// Verb Inflection + let hasHyphen = parsed.verb.termList(0).hasHyphen(); - /**return verbs like 'we walk' and not 'spencer walks' */ - isPlural: function isPlural() { - var _this2 = this; + if (parsed.particle.found) { + let particle = parsed.particle.text(); + let space = hasHyphen === true ? '-' : ' '; + Object.keys(forms).forEach(k => forms[k] += space + particle); + } //apply negative - var list = []; - this.forEach(function (vb) { - var parsed = parse(vb); - if (isPlural_1(parsed, _this2.world) === true) { - list.push(vb.list[0]); - } - }); - return this.buildFrom(list); - }, + const isNegative = parsed.negative.found; + forms.FutureTense = forms.FutureTense || 'will ' + forms.Infinitive; - /** return verbs like 'spencer walks' and not 'we walk' */ - isSingular: function isSingular() { - var _this3 = this; + if (isNegative) { + forms.PastTense = 'did not ' + forms.Infinitive; + forms.FutureTense = 'will not ' + forms.Infinitive; - var list = []; - this.forEach(function (vb) { - var parsed = parse(vb); + if (bePlural) { + forms.PresentTense = 'do not ' + forms.Infinitive; + forms.Infinitive = 'do not ' + forms.Infinitive; + } else { + forms.PresentTense = 'does not ' + forms.Infinitive; + forms.Infinitive = 'does not ' + forms.Infinitive; + } - if (isPlural_1(parsed, _this3.world) === false) { - list.push(vb.list[0]); + forms.Gerund = 'not ' + forms.Gerund; } - }); - return this.buildFrom(list); - }, - /// Conjugation - - /** return all forms of this verb */ - conjugate: function conjugate() { - var _this4 = this; - - var result = []; - this.forEach(function (vb) { - var parsed = parse(vb); - var forms = conjugate_1(parsed, _this4.world); - result.push(forms); - }); - return result; - }, - /** walk ➔ walked*/ - toPastTense: function toPastTense() { - var _this5 = this; - - this.forEach(function (vb) { - var parsed = parse(vb); // should we support 'would swim' ➔ 'would have swam' + return forms; + }; - if (useParticiple(parsed)) { - _toParticiple(parsed, _this5.world); + var conjugate_1 = conjugate$2; + const conjugate$1 = conjugate_1; // 'i could drive' -> 'i could have driven' + // if something is 'modal-ish' we are forced to use past-participle + // ('i could drove' is wrong) - return; + const useParticiple$1 = function (parsed) { + if (parsed.auxiliary.has('(could|should|would|may|can|must)')) { + return true; } - if (vb.has('#Imperative')) { - return; - } // don't conjugate 'to be' + if (parsed.auxiliary.has('am .+? being')) { + return true; + } + if (parsed.auxiliary.has('had .+? been')) { + return true; + } - if (vb.has('be') && vb.lookBehind('to$').found) { - return; - } // handle 'is raining' -> 'was raining' + return false; + }; // conjugate 'drive' ➔ 'have driven' - if (parsed.verb.has('#Gerund') && parsed.auxiliary.has('(is|will|was)')) { - vb.replace('is', 'was'); + const toParticiple$1 = function (parsed, world) { + //is it already a participle? + if (parsed.auxiliary.has('(have|had)') && parsed.verb.has('#Participle')) { return; - } + } // try to swap the main verb to its participle form - var str = conjugate_1(parsed, _this5.world).PastTense; + + let obj = conjugate$1(parsed, world); + let str = obj.Participle || obj.PastTense; if (str) { - parsed = makeNeutral(parsed); - parsed.verb.replaceWith(str, false); // vb.tag('PastTense') - } - }); - return this; - }, + parsed.verb.replaceWith(str, false); + } // 'am being driven' ➔ 'have been driven' - /** walk ➔ walks */ - toPresentTense: function toPresentTense() { - var _this6 = this; - this.forEach(function (vb) { - var parsed = parse(vb); - var obj = conjugate_1(parsed, _this6.world); - var str = obj.PresentTense; // 'i look', not 'i looks' + if (parsed.auxiliary.has('am .+? being')) { + parsed.auxiliary.remove('am'); + parsed.auxiliary.replace('being', 'have been'); + } // add a 'have' - if (vb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) { - str = obj.Infinitive; - } - if (str) { - //awkward support for present-participle form - // -- should we support 'have been swimming' ➔ 'am swimming' - if (parsed.auxiliary.has('(have|had) been')) { - parsed.auxiliary.replace('(have|had) been', 'am being'); + if (!parsed.auxiliary.has('have')) { + parsed.auxiliary.append('have'); + } // tag it as a participle - if (obj.Particle) { - str = obj.Particle || obj.PastTense; - } - return; - } + parsed.verb.tag('Participle', 'toParticiple'); // turn 'i can swim' to -> 'i could swim' - parsed.verb.replaceWith(str, false); - parsed.verb.tag('PresentTense'); - parsed = makeNeutral(parsed); // avoid 'he would walks' + parsed.auxiliary.replace('can', 'could'); //'must be' ➔ 'must have been' - parsed.auxiliary.remove('#Modal'); - } - }); - return this; - }, + parsed.auxiliary.replace('be have', 'have been'); //'not have' ➔ 'have not' - /** walk ➔ will walk*/ - toFutureTense: function toFutureTense() { - var _this7 = this; + parsed.auxiliary.replace('not have', 'have not'); // ensure all new words are tagged right - this.forEach(function (vb) { - var parsed = parse(vb); // 'i should drive' is already future-enough + parsed.auxiliary.tag('Auxiliary'); + }; - if (useParticiple(parsed)) { - return; - } + var participle = { + useParticiple: useParticiple$1, + toParticiple: toParticiple$1 + }; + const toNegative = toNegative_1; + const parseVerb = parse; + const isPlural = isPlural_1; + const getSubject = getSubject_1; + const conjugate = conjugate_1; + const { + toParticiple, + useParticiple + } = participle; // remove any tense-information in auxiliary verbs + + const makeNeutral = function (parsed) { + //remove tense-info from auxiliaries + parsed.auxiliary.remove('(will|are|am|being)'); + parsed.auxiliary.remove('(did|does)'); + parsed.auxiliary.remove('(had|has|have)'); //our conjugation includes the 'not' and the phrasal-verb particle + + parsed.particle.remove(); + parsed.negative.remove(); + return parsed; + }; - var str = conjugate_1(parsed, _this7.world).FutureTense; + var methods$2 = { + /** overload the original json with verb information */ + json: function (options) { + let n = null; - if (str) { - parsed = makeNeutral(parsed); // avoid 'he would will go' + if (typeof options === 'number') { + n = options; + options = null; + } - parsed.auxiliary.remove('#Modal'); - parsed.verb.replaceWith(str, false); - parsed.verb.tag('FutureTense'); - } - }); - return this; - }, + options = options || { + text: true, + normal: true, + trim: true, + terms: true + }; + let res = []; + this.forEach(p => { + let json = p.json(options)[0]; + let parsed = parseVerb(p); + json.parts = {}; + Object.keys(parsed).forEach(k => { + if (parsed[k] && parsed[k].isA === 'Doc') { + json.parts[k] = parsed[k].text('normal'); + } else { + json.parts[k] = parsed[k]; + } + }); + json.isNegative = p.has('#Negative'); + json.conjugations = conjugate(parsed, this.world); + res.push(json); + }); - /** walks ➔ walk */ - toInfinitive: function toInfinitive() { - var _this8 = this; + if (n !== null) { + return res[n]; + } - this.forEach(function (vb) { - var parsed = parse(vb); - var str = conjugate_1(parsed, _this8.world).Infinitive; + return res; + }, - if (str) { - vb.replaceWith(str, false); - vb.tag('Infinitive'); - } - }); - return this; - }, + /** grab the adverbs describing these verbs */ + adverbs: function () { + let list = []; // look at internal adverbs - /** walk ➔ walking */ - toGerund: function toGerund() { - var _this9 = this; + this.forEach(vb => { + let advb = parseVerb(vb).adverb; - this.forEach(function (vb) { - var parsed = parse(vb); - var str = conjugate_1(parsed, _this9.world).Gerund; + if (advb.found) { + list = list.concat(advb.list); + } + }); // look for leading adverbs - if (str) { - vb.replaceWith(str, false); - vb.tag('Gerund'); - } - }); - return this; - }, + let m = this.lookBehind('#Adverb+$'); - /** drive ➔ driven - naked past-participle if it exists, otherwise past-tense */ - toParticiple: function toParticiple() { - var _this10 = this; + if (m.found) { + list = m.list.concat(list); + } // look for trailing adverbs - this.forEach(function (vb) { - var parsed = parse(vb); - var noAux = !parsed.auxiliary.found; - _toParticiple(parsed, _this10.world); // dirty trick to ensure our new auxiliary is found + m = this.lookAhead('^#Adverb+'); + if (m.found) { + list = list.concat(m.list); + } - if (noAux) { - parsed.verb.prepend(parsed.auxiliary.text()); - parsed.auxiliary.remove(); - } - }); - return this; - }, - /// Negation - - /** return only verbs with 'not'*/ - isNegative: function isNegative() { - return this["if"]('#Negative'); - }, - - /** return only verbs without 'not'*/ - isPositive: function isPositive() { - return this.ifNo('#Negative'); - }, - - /** return only commands - verbs in imperative mood */ - isImperative: function isImperative() { - return this["if"]('#Imperative'); - }, - - /** add a 'not' to these verbs */ - toNegative: function toNegative() { - var _this11 = this; - - this.list.forEach(function (p) { - var doc = _this11.buildFrom([p]); - - var parsed = parse(doc); - toNegative_1(parsed, doc.world); - }); - return this; - }, + return this.buildFrom(list); + }, + /// Verb Inflection - /** remove 'not' from these verbs */ - toPositive: function toPositive() { - var m = this.match('do not #Verb'); + /**return verbs like 'we walk' and not 'spencer walks' */ + isPlural: function () { + let list = []; + this.forEach(vb => { + let parsed = parseVerb(vb); - if (m.found) { - m.remove('do not'); - } + if (isPlural(parsed, this.world) === true) { + list.push(vb.list[0]); + } + }); + return this.buildFrom(list); + }, - return this.remove('#Negative'); - }, + /** return verbs like 'spencer walks' and not 'we walk' */ + isSingular: function () { + let list = []; + this.forEach(vb => { + let parsed = parseVerb(vb); - /** who, or what is doing this action? */ - subject: function subject() { - var list = []; - this.forEach(function (p) { - var found = getSubject_1(p); + if (isPlural(parsed, this.world) === false) { + list.push(vb.list[0]); + } + }); + return this.buildFrom(list); + }, + /// Conjugation + + /** return all forms of this verb */ + conjugate: function () { + let result = []; + this.forEach(vb => { + let parsed = parseVerb(vb); + let forms = conjugate(parsed, this.world); + result.push(forms); + }); + return result; + }, - if (found.list[0]) { - list.push(found.list[0]); - } - }); - return this.buildFrom(list); - } -}; + /** walk ➔ walked*/ + toPastTense: function () { + this.forEach(vb => { + let parsed = parseVerb(vb); // should we support 'would swim' ➔ 'would have swam' -var addMethod$1 = function addMethod(Doc) { - /** */ - var Verbs = /*#__PURE__*/function (_Doc) { - _inherits(Verbs, _Doc); + if (useParticiple(parsed)) { + toParticiple(parsed, this.world); + return; + } // don't conjugate 'go away'. - var _super = _createSuper(Verbs); - function Verbs() { - _classCallCheck(this, Verbs); + if (vb.has('#Imperative')) { + return; + } // don't conjugate 'to be' - return _super.apply(this, arguments); - } - return Verbs; - }(Doc); // add-in our methods + if (vb.has('be') && vb.lookBehind('to$').found) { + return; + } // handle 'is raining' -> 'was raining' - Object.assign(Verbs.prototype, methods$1); // aliases + if (parsed.verb.has('#Gerund') && parsed.auxiliary.has('(is|will|was)')) { + vb.replace('is', 'was'); + return; + } - Verbs.prototype.negate = Verbs.prototype.toNegative; + let str = conjugate(parsed, this.world).PastTense; - Doc.prototype.verbs = function (n) { - var match = this.match('(#Adverb|#Auxiliary|#Verb|#Negative|#Particle)+'); // try to ignore leading and trailing adverbs + if (str) { + parsed = makeNeutral(parsed); + parsed.verb.replaceWith(str, false); + parsed.auxiliary.remove('(do|did|will)'); //?? + } + }); + return this; + }, + + /** walk ➔ walks */ + toPresentTense: function () { + this.forEach(vb => { + // don't conjugate 'go away'. + if (vb.has('#Imperative')) { + return; + } - match = match.not('^#Adverb+'); - match = match.not('#Adverb+$'); // handle commas: - // don't split 'really, really' + let parsed = parseVerb(vb); + let obj = conjugate(parsed, this.world); + let str = obj.PresentTense; // 'i look', not 'i looks' - var keep = match.match('(#Adverb && @hasComma) #Adverb'); // // but split the other commas + if (vb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) { + str = obj.Infinitive; + } - var m = match.not(keep).splitAfter('@hasComma'); // i was shocked looking at... + if (str) { + //awkward support for present-participle form + // -- should we support 'have been swimming' ➔ 'am swimming' + if (parsed.auxiliary.has('(have|had) been')) { + parsed.auxiliary.replace('(have|had) been', 'am being'); - var gerund = m.match('#PastTense #Gerund'); + if (obj.Particle) { + str = obj.Particle || obj.PastTense; + } - if (!gerund.has('(been|am|#Auxiliary) #Gerund')) { - m = m.splitBefore(gerund.match('#Gerund')); - } // combine them back together + return; + } + parsed.verb.replaceWith(str, false); + parsed.verb.tag('PresentTense'); + parsed = makeNeutral(parsed); // avoid 'he would walks' - m = m.concat(keep); - m.sort('index'); //handle slashes? - //ensure there's actually a verb + parsed.auxiliary.remove('#Modal'); + parsed.auxiliary.remove('(do|did|will)'); //?? + } + }); + return this; + }, - m = m["if"]('#Verb'); // the reason he will is ... + /** walk ➔ will walk*/ + toFutureTense: function () { + this.forEach(vb => { + let parsed = parseVerb(vb); // 'i should drive' is already future-enough - if (m.has('(is|was)$')) { - m = m.splitBefore('(is|was)$'); - } //ensure it's not two verbs + if (useParticiple(parsed)) { + return; + } // don't conjugate 'go away'. - if (m.has('#PresentTense #Adverb #PresentTense')) { - m = m.splitBefore('#Adverb #PresentTense'); - } //grab (n)th result + if (vb.has('#Imperative')) { + return; + } + let str = conjugate(parsed, this.world).FutureTense; - if (typeof n === 'number') { - m = m.get(n); - } + if (str) { + parsed = makeNeutral(parsed); // avoid 'he would will go' - var vb = new Verbs(m.list, this, this.world); - return vb; - }; + parsed.auxiliary.remove('#Modal'); + parsed.verb.replaceWith(str, false); + parsed.verb.tag('FutureTense'); + parsed.auxiliary.remove('(do|did|will)'); //?? + // parsed.auxiliary.remove('(do|did|will)') //?? + } + }); + return this; + }, - return Doc; -}; + /** walks ➔ walk */ + toInfinitive: function () { + this.forEach(vb => { + let parsed = parseVerb(vb); + let str = conjugate(parsed, this.world).Infinitive; -var Verbs = addMethod$1; + if (str) { + vb.replaceWith(str, false); + vb.tag('Infinitive'); + } + }); + return this; + }, -var addMethod = function addMethod(Doc) { - /** */ - var People = /*#__PURE__*/function (_Doc) { - _inherits(People, _Doc); + /** walk ➔ walking */ + toGerund: function () { + this.forEach(vb => { + let parsed = parseVerb(vb); + let str = conjugate(parsed, this.world).Gerund; - var _super = _createSuper(People); + if (str) { + vb.replaceWith(str, false); + vb.tag('Gerund'); + } + }); + return this; + }, + + /** drive ➔ driven - naked past-participle if it exists, otherwise past-tense */ + toParticiple: function () { + this.forEach(vb => { + let parsed = parseVerb(vb); + let noAux = !parsed.auxiliary.found; + toParticiple(parsed, this.world); // dirty trick to ensure our new auxiliary is found + + if (noAux) { + parsed.verb.prepend(parsed.auxiliary.text()); + parsed.auxiliary.remove(); + } + }); + return this; + }, + /// Negation + + /** return only verbs with 'not'*/ + isNegative: function () { + return this.if('#Negative'); + }, + + /** return only verbs without 'not'*/ + isPositive: function () { + return this.ifNo('#Negative'); + }, + + /** return only commands - verbs in imperative mood */ + isImperative: function () { + return this.if('#Imperative'); + }, + + /** add a 'not' to these verbs */ + toNegative: function () { + this.list.forEach(p => { + let doc = this.buildFrom([p]); + let parsed = parseVerb(doc); + toNegative(parsed, doc.world); + }); + return this; + }, - function People() { - _classCallCheck(this, People); + /** remove 'not' from these verbs */ + toPositive: function () { + let m = this.match('do not #Verb'); - return _super.apply(this, arguments); - } + if (m.found) { + m.remove('do not'); + } - return People; - }(Doc); + return this.remove('#Negative'); + }, - Doc.prototype.people = function (n) { - var match = this.splitAfter('@hasComma'); - match = match.match('#Person+'); //grab (n)th result + /** who, or what is doing this action? */ + subject: function () { + let list = []; + this.forEach(p => { + let found = getSubject(p); - if (typeof n === 'number') { - match = match.get(n); - } + if (found.list[0]) { + list.push(found.list[0]); + } + }); + return this.buildFrom(list); + } + }; + const methods$1 = methods$2; - return new People(match.list, this, this.world); - }; + const addMethod$1 = function (Doc) { + /** */ + class Verbs extends Doc {} // add-in our methods - return Doc; -}; -var People = addMethod; -var subclass = [Abbreviations, Acronyms, Clauses, Contractions, Lists, Nouns, Parentheses, Possessives, Quotations, Verbs, People]; + Object.assign(Verbs.prototype, methods$1); // aliases -var extend = function extend(Doc) { - // add basic methods - Object.keys(_simple).forEach(function (k) { - return Doc.prototype[k] = _simple[k]; - }); // add subclassed methods + Verbs.prototype.negate = Verbs.prototype.toNegative; - subclass.forEach(function (addFn) { - return addFn(Doc); - }); - return Doc; -}; + Doc.prototype.verbs = function (n) { + let match = this.match('(#Adverb|#Auxiliary|#Verb|#Negative|#Particle)+'); // try to ignore leading and trailing adverbs -var Subset = extend; -var methods = { - misc: methods$4, - selections: _simple -}; -/** a parsed text object */ + match = match.not('^#Adverb+'); + match = match.not('#Adverb+$'); // handle commas: + // don't split 'really, really' -var Doc = /*#__PURE__*/function () { - function Doc(list, from, world) { - var _this = this; + let keep = match.match('(#Adverb && @hasComma) #Adverb'); // // but split the other commas - _classCallCheck(this, Doc); + let m = match.not(keep).splitAfter('@hasComma'); // i was shocked looking at... + // let gerund = m.match('#PastTense #Gerund') + // if (!gerund.has('(been|am|#Auxiliary) #Gerund')) { + // m = m.splitBefore(gerund.match('#Gerund')) + // } + // combine them back together - this.list = list; // this.reasons = [] - //quiet these properties in console.logs + m = m.concat(keep); + m.sort('index'); //handle slashes? + //ensure there's actually a verb - Object.defineProperty(this, 'from', { - enumerable: false, - value: from, - writable: true - }); //borrow some missing data from parent + m = m.if('#Verb'); // the reason he will is ... - if (world === undefined && from !== undefined) { - world = from.world; - } //'world' getter + if (m.has('(is|was)$')) { + m = m.splitBefore('(is|was)$'); + } //ensure it's not two verbs - Object.defineProperty(this, 'world', { - enumerable: false, - value: world, - writable: true - }); //fast-scans for our data + if (m.has('#PresentTense #Adverb #PresentTense')) { + m = m.splitBefore('#Adverb #PresentTense'); + } //grab (n)th result - Object.defineProperty(this, '_cache', { - enumerable: false, - writable: true, - value: {} - }); //'found' getter - Object.defineProperty(this, 'found', { - get: function get() { - return _this.list.length > 0; - } - }); //'length' getter + if (typeof n === 'number') { + m = m.get(n); + } - Object.defineProperty(this, 'length', { - get: function get() { - return _this.list.length; - } - }); // this is way easier than .constructor.name... + let vb = new Verbs(m.list, this, this.world); + return vb; + }; + + return Doc; + }; - Object.defineProperty(this, 'isA', { - get: function get() { - return 'Doc'; + var Verbs = addMethod$1; + + const addMethod = function (Doc) { + /** */ + class People extends Doc {// honorifics(){} + // firstNames(){} + // lastNames(){} + // pronouns(){} + // toPronoun(){} + // fromPronoun(){} } - }); - } - /** run part-of-speech tagger on all results*/ + Doc.prototype.people = function (n) { + let match = this.splitAfter('@hasComma'); + match = match.match('#Person+'); //grab (n)th result - _createClass(Doc, [{ - key: "tagger", - value: function tagger() { - return _02Tagger(this); - } - /** pool is stored on phrase objects */ + if (typeof n === 'number') { + match = match.get(n); + } - }, { - key: "pool", - value: function pool() { - if (this.list.length > 0) { - return this.list[0].pool; - } + return new People(match.list, this, this.world); + }; - return this.all().list[0].pool; - } - }]); + return Doc; + }; - return Doc; -}(); -/** create a new Document object */ + var People = addMethod; + const subsets = _simple; + const subclass = [Abbreviations, Acronyms, Clauses, Contractions, Lists, Nouns, Parentheses, Possessives, Quotations, Verbs, People]; + const extend$1 = function (Doc) { + // add basic methods + Object.keys(subsets).forEach(k => Doc.prototype[k] = subsets[k]); // add subclassed methods -Doc.prototype.buildFrom = function (list) { - list = list.map(function (p) { - return p.clone(true); - }); // new this.constructor() + subclass.forEach(addFn => addFn(Doc)); + return Doc; + }; - var doc = new Doc(list, this, this.world); - return doc; -}; -/** create a new Document from plaintext. */ + var Subset = extend$1; + const methods = { + misc: methods$6, + selections: _simple + }; + const tagger = _02Tagger; + const tokenize$1 = _01Tokenizer; + const extend = Subset; + /** a parsed text object */ + + class Doc$1 { + constructor(list, from, world) { + this.list = list; // this.reasons = [] + //quiet these properties in console.logs + + Object.defineProperty(this, 'from', { + enumerable: false, + value: from, + writable: true + }); //borrow some missing data from parent + + if (world === undefined && from !== undefined) { + world = from.world; + } //'world' getter + + + Object.defineProperty(this, 'world', { + enumerable: false, + value: world, + writable: true + }); //fast-scans for our data + + Object.defineProperty(this, '_cache', { + enumerable: false, + writable: true, + value: {} + }); //'found' getter + + Object.defineProperty(this, 'found', { + get: () => this.list.length > 0 + }); //'length' getter + + Object.defineProperty(this, 'length', { + get: () => this.list.length + }); // this is way easier than .constructor.name... + + Object.defineProperty(this, 'isA', { + get: () => 'Doc' + }); + } + /** run part-of-speech tagger on all results*/ -Doc.prototype.fromText = function (str) { - var list = _01Tokenizer(str, this.world, this.pool()); + tagger() { + return tagger(this); + } + /** pool is stored on phrase objects */ - return this.buildFrom(list); -}; -Object.assign(Doc.prototype, methods.misc); -Object.assign(Doc.prototype, methods.selections); //add sub-classes + pool() { + if (this.list.length > 0) { + return this.list[0].pool; + } -Subset(Doc); //aliases + return this.all().list[0].pool; + } -var aliases = { - untag: 'unTag', - and: 'match', - notIf: 'ifNo', - only: 'if', - onlyIf: 'if' -}; -Object.keys(aliases).forEach(function (k) { - return Doc.prototype[k] = Doc.prototype[aliases[k]]; -}); -var Doc_1 = Doc; + } + /** create a new Document object */ -var smallTagger = function smallTagger(doc) { - var terms = doc.termList(); - _01Lexicon(terms, doc.world); // run any user-given tagger functions + Doc$1.prototype.buildFrom = function (list) { + list = list.map(p => p.clone(true)); // new this.constructor() + let doc = new Doc$1(list, this, this.world); + return doc; + }; + /** create a new Document from plaintext. */ - doc.world.taggers.forEach(function (fn) { - fn(doc); - }); - return doc; -}; -var tiny = smallTagger; + Doc$1.prototype.fromText = function (str) { + let list = tokenize$1(str, this.world, this.pool()); + return this.buildFrom(list); + }; -function instance(worldInstance) { - //blast-out our word-lists, just once - var world = worldInstance; - /** parse and tag text into a compromise object */ + Object.assign(Doc$1.prototype, methods.misc); + Object.assign(Doc$1.prototype, methods.selections); //add sub-classes - var nlp = function nlp() { - var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var lexicon = arguments.length > 1 ? arguments[1] : undefined; + extend(Doc$1); //aliases - if (lexicon) { - world.addWords(lexicon); - } + const aliases = { + untag: 'unTag', + and: 'match', + notIf: 'ifNo', + only: 'if', + onlyIf: 'if' + }; + Object.keys(aliases).forEach(k => Doc$1.prototype[k] = Doc$1.prototype[aliases[k]]); + var Doc_1 = Doc$1; + const lexiconStep = _01Lexicon; //for the tokenize-only build, we want to keep - var list = _01Tokenizer(text, world); + const smallTagger = function (doc) { + let terms = doc.termList(); + lexiconStep(terms, doc.world); // run any user-given tagger functions - var doc = new Doc_1(list, null, world); - doc.tagger(); - return doc; - }; - /** parse text into a compromise object, without running POS-tagging */ + doc.world.taggers.forEach(fn => { + fn(doc); + }); + return doc; + }; + var tiny = smallTagger; + const tokenize = _01Tokenizer; + const fromJSON = fromJSON_1; + const version = _version; + const World = World_1; + const Doc = Doc_1; + const Phrase = Phrase_1; + const Term = Term_1; + const Pool = Pool_1; + const tinyTagger = tiny; + const parseMatch = matchSyntax; + + function instance(worldInstance) { + //blast-out our word-lists, just once + let world = worldInstance; + /** parse and tag text into a compromise object */ + + const nlp = function () { + let text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let lexicon = arguments.length > 1 ? arguments[1] : undefined; + + if (lexicon) { + world.addWords(lexicon); + } - nlp.tokenize = function () { - var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var lexicon = arguments.length > 1 ? arguments[1] : undefined; - var w = world; + let list = tokenize(text, world); + let doc = new Doc(list, null, world); + doc.tagger(); + return doc; + }; + /** parse text into a compromise object, without running POS-tagging */ - if (lexicon) { - w = w.clone(); - w.words = {}; - w.addWords(lexicon); - } - var list = _01Tokenizer(text, w); + nlp.tokenize = function () { + let text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let lexicon = arguments.length > 1 ? arguments[1] : undefined; + let w = world; - var doc = new Doc_1(list, null, w); + if (lexicon) { + w = w.clone(); + w.words = {}; + w.addWords(lexicon); + } - if (lexicon || doc.world.taggers.length > 0) { - tiny(doc); - } + let list = tokenize(text, w); + let doc = new Doc(list, null, w); - return doc; - }; - /** mix in a compromise-plugin */ + if (lexicon || doc.world.taggers.length > 0) { + tinyTagger(doc); + } + return doc; + }; + /** mix in a compromise-plugin */ - nlp.extend = function (fn) { - fn(Doc_1, world, this, Phrase_1, Term_1, Pool_1); - return this; - }; - /** create a compromise Doc object from .json() results */ + nlp.extend = function (fn) { + fn(Doc, world, this, Phrase, Term, Pool); + return this; + }; + /** create a compromise Doc object from .json() results */ - nlp.fromJSON = function (json) { - var list = fromJSON_1(json, world); - return new Doc_1(list, null, world); - }; - /** make a deep-copy of the library state */ + nlp.fromJSON = function (json) { + let list = fromJSON(json, world); + return new Doc(list, null, world); + }; + /** make a deep-copy of the library state */ - nlp.clone = function () { - return instance(world.clone()); - }; - /** log our decision-making for debugging */ + nlp.clone = function () { + return instance(world.clone()); + }; + /** log our decision-making for debugging */ - nlp.verbose = function () { - var bool = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - world.verbose(bool); - return this; - }; - /** grab currently-used World object */ + nlp.verbose = function () { + let bool = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + world.verbose(bool); + return this; + }; + /** grab currently-used World object */ - nlp.world = function () { - return world; - }; - /** pre-parse any match statements */ + nlp.world = function () { + return world; + }; + /** pre-parse any match statements */ - nlp.parseMatch = function (str, opts) { - return matchSyntax(str, opts); - }; - /** current version of the library */ + nlp.parseMatch = function (str, opts) { + return parseMatch(str, opts); + }; + /** current version of the library */ - nlp.version = _version; // aliases - nlp["import"] = nlp.load; - nlp.plugin = nlp.extend; - return nlp; -} + nlp.version = version; // aliases -var src$1 = instance(new World_1()); + nlp.import = nlp.load; + nlp.plugin = nlp.extend; + return nlp; + } -var compromise = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': src$1 -}); + var src = instance(new World()); + return src; + }); +})(compromise); -const fromTemplate = function (doc) { +const fromTemplate$1 = function (doc) { let tmpl = doc.template('short description'); if (tmpl) { @@ -14876,14 +14549,14 @@ const fromTemplate = function (doc) { return null; }; -var template = fromTemplate; +var template = fromTemplate$1; -const preProcess = function (doc) { +const preProcess$1 = function (doc) { doc.parentheses().remove(); return doc; }; -var _00PreProcess = preProcess; +var _00PreProcess = preProcess$1; const cleanUp = function (s) { // 'an actor and was a politician' @@ -14892,7 +14565,7 @@ const cleanUp = function (s) { }; // founded in 1952 as the flagship .. -const findPivot = function (s) { +const findPivot$1 = function (s) { let m = s.matchOne('#Copula+ (a|an|the|any|one) of?'); if (!m.found) { @@ -14913,8 +14586,8 @@ const findPivot = function (s) { let f = s.splitOn(m); let verb = f.eq(1); - let article = verb.match(`(a|an|the|any)? of?`); - verb.remove(`(a|an|the|any)? of?`); + let article = verb.match("(a|an|the|any)? of?"); + verb.remove("(a|an|the|any)? of?"); return { before: f.eq(0), verb: f.eq(1), @@ -14923,9 +14596,9 @@ const findPivot = function (s) { }; }; -var _01Pivot = findPivot; +var _01Pivot = findPivot$1; -const byClause = function (s) { +const byClause$1 = function (s) { // 'an actor and also a politician' s.remove('and (also|eventually) (a|an|the|#Possessive) .*'); // 'an actor who was a politician' @@ -14937,7 +14610,7 @@ const byClause = function (s) { return s; }; -var _02ByClause = byClause; +var _02ByClause = byClause$1; const safeCuts = function (s) { // 'in hamilton, Canada' @@ -15072,7 +14745,7 @@ const hardCuts = function (s) { var _04HardCuts = hardCuts; -const lastTry = function (s) { +const lastTry$1 = function (s) { s.remove('(small|large|minor|major)'); s.remove('(extinct|retired|annual|biweekly|monthly|daily)'); s.remove('(female|male)'); @@ -15083,10 +14756,9 @@ const lastTry = function (s) { return s; }; -var _05LastTry = lastTry; +var _05LastTry = lastTry$1; -//check text is appropriate length -const isGood = function (doc, options) { +const isGood$1 = function (doc, options) { if (doc && typeof doc.text === 'function') { let text = doc.text(); @@ -15098,13 +14770,16 @@ const isGood = function (doc, options) { return false; }; -var _isGood = isGood; - -function getCjsExportFromNamespace (n) { - return n && n['default'] || n; -} +var _isGood = isGood$1; -var nlp = getCjsExportFromNamespace(compromise); +const nlp$2 = compromise.exports; +const preProcess = _00PreProcess; +const findPivot = _01Pivot; +const byClause = _02ByClause; +const safeCut = _03SafeCuts; +const hardCut = _04HardCuts; +const lastTry = _05LastTry; +const isGood = _isGood; const post = function (s) { s.remove('^(and|or|but)'); @@ -15123,9 +14798,9 @@ const doSentence = function (doc, options) { } let txt = sentence.text(); - let s = nlp(txt); - _00PreProcess(s); - let pivot = _01Pivot(s); // if we can't pivot it properly, don't bother + let s = nlp$2(txt); + preProcess(s); + let pivot = findPivot(s); // if we can't pivot it properly, don't bother if (!pivot || !pivot.verb || !pivot.verb.found) { return ''; @@ -15138,35 +14813,35 @@ const doSentence = function (doc, options) { } // maybe it's good already - if (_isGood(after, options)) { + if (isGood(after, options)) { return post(after); } // parse major chunks - after = _02ByClause(after); + after = byClause(after); - if (_isGood(after, options)) { + if (isGood(after, options)) { return post(after); } // perform some modifications - after = _03SafeCuts(after); + after = safeCut(after); - if (_isGood(after, options)) { + if (isGood(after, options)) { return post(after); } // really give it a go - after = _04HardCuts(after); + after = hardCut(after); - if (_isGood(after, options)) { + if (isGood(after, options)) { return post(after); } // atleast we tried - after = _05LastTry(after); + after = lastTry(after); - if (_isGood(after, options)) { + if (isGood(after, options)) { return post(after); } // console.log(after.text()) // count += 1 @@ -15181,10 +14856,10 @@ const doSentence = function (doc, options) { var sentence = doSentence; -const bad$1 = ['living', 'births', 'former', 'deceased', 'missing', 'with', 'descent', 'award', 'winners', 'nominees', 'alumni', 'other'].map(str => new RegExp(`\\b${str}\\b`, 'i')); -const good$1 = ['male', 'female'].map(str => new RegExp(`\\b${str}\\b`, 'i')); -const like$1 = ['male', 'female', 'century'].map(str => new RegExp(`\\b${str}\\b`, 'i')); -const dislike$1 = ['people', 'place', 'from', 'in', 'people from'].map(str => new RegExp(`\\b${str}\\b`), 'i'); +const bad$1 = ['living', 'births', 'former', 'deceased', 'missing', 'with', 'descent', 'award', 'winners', 'nominees', 'alumni', 'other'].map(str => new RegExp("\\b".concat(str, "\\b"), 'i')); +const good$1 = ['male', 'female'].map(str => new RegExp("\\b".concat(str, "\\b"), 'i')); +const like$1 = ['male', 'female', 'century'].map(str => new RegExp("\\b".concat(str, "\\b"), 'i')); +const dislike$1 = ['people', 'place', 'from', 'in', 'people from'].map(str => new RegExp("\\b".concat(str, "\\b")), 'i'); var regs = { good: good$1, bad: bad$1, @@ -15201,7 +14876,7 @@ const { const hasYear = /[0-9]{4}/; const isPlural = /s$/; -const fromCategory = function (doc) { +const fromCategory$1 = function (doc) { let cats = doc.categories(); // try to focus on the best ones, first let tmp = cats.filter(cat => { @@ -15274,11 +14949,13 @@ const fromCategory = function (doc) { return cats[0]; }; -var _01Choose = fromCategory; +var _01Choose = fromCategory$1; + +const nlp$1 = compromise.exports; const useAn = function (str) { const a_regexs = [/^onc?e/i, //'wu' sound of 'o' - /^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u' + /^u[bcfhjknq-t][aeiou]/i, // 'yu' sound for hard 'u' /^eul/i]; for (let i = 0; i < a_regexs.length; i++) { @@ -15297,7 +14974,7 @@ const useAn = function (str) { const changeCat = function (cat, options) { - let c = nlp(cat); + let c = nlp$1(cat); c.nouns().toSingular(); // add article to the front if (options.article) { @@ -15325,18 +15002,25 @@ const changeCat = function (cat, options) { var _02Change = changeCat; +const chooseCat = _01Choose; +const change = _02Change; + const byCategory = function (doc, options) { - let cat = _01Choose(doc); + let cat = chooseCat(doc); if (!cat) { return ''; } - return _02Change(cat, options); + return change(cat, options); }; var category = byCategory; +const nlp = compromise.exports; +const fromTemplate = template; +const fromSentence = sentence; +const fromCategory = category; const defaults = { article: true, template: true, @@ -15360,7 +15044,7 @@ const plugin = function (models) { let txt = ''; if (options.template) { - txt = template(doc); + txt = fromTemplate(doc); if (seemsGood(txt, options)) { return txt.trim(); @@ -15369,7 +15053,7 @@ const plugin = function (models) { if (options.sentence) { - txt = sentence(doc, options); + txt = fromSentence(doc, options); if (seemsGood(txt, options)) { return txt.trim(); @@ -15377,7 +15061,7 @@ const plugin = function (models) { } if (options.category) { - return category(doc, options); + return fromCategory(doc, options); } return ''; @@ -15424,4 +15108,4 @@ const plugin = function (models) { var src = plugin; -export default src; +export { src as default }; diff --git a/plugins/summary/package-lock.json b/plugins/summary/package-lock.json index 6ec27d1f..fafba526 100644 --- a/plugins/summary/package-lock.json +++ b/plugins/summary/package-lock.json @@ -9,56 +9,60 @@ "version": "0.3.0", "license": "MIT", "dependencies": { - "compromise": "13.10.5" + "compromise": "13.11.4" }, "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "@rollup/plugin-node-resolve": "11.2.1", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "13.0.6", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^5.1.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", - "dev": true + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -75,83 +79,102 @@ } }, "node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -168,193 +191,249 @@ } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "dependencies": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -363,189 +442,278 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=4" @@ -578,6 +746,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -686,452 +869,570 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -1141,55 +1442,59 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1197,59 +1502,124 @@ "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "node_modules/@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } } }, - "node_modules/@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" } }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "node_modules/@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", @@ -1263,7 +1633,7 @@ "node": ">= 10.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "rollup": "^2.42.0" } }, "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { @@ -1275,16 +1645,6 @@ "@types/node": "*" } }, - "node_modules/@rollup/plugin-node-resolve/node_modules/resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "dependencies": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } - }, "node_modules/@rollup/pluginutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", @@ -1317,15 +1677,6 @@ "integrity": "sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg==", "dev": true }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1369,13 +1720,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" }, "peerDependencies": { @@ -1383,25 +1734,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1424,16 +1775,16 @@ } }, "node_modules/browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" @@ -1452,12 +1803,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "node_modules/buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, "node_modules/builtin-modules": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", @@ -1481,10 +1826,14 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", - "dev": true + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } }, "node_modules/chalk": { "version": "2.4.2", @@ -1516,9 +1865,9 @@ "dev": true }, "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "node_modules/commander": { @@ -1527,15 +1876,21 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "node_modules/compromise": { - "version": "13.10.5", - "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.10.5.tgz", - "integrity": "sha512-je5+lMKnQWmWfYZiO9IXtxWHr3KA4dQiyzVHsZskfNgGVHlSFK2sWreosoBYeRmP9/JrHiggSdDWE1lqPejvmA==", + "version": "13.11.4", + "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.11.4.tgz", + "integrity": "sha512-nBITcNdqIHSVDDluaG6guyFFCSNXN+Hu87fU8VlhkE5Z0PwTZN1nro2O7a8JcUH88nB5EOzrxd9zKfXLSNFqcg==", "dependencies": { "efrt-unpack": "2.2.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=8.0.0" } }, "node_modules/concat-map": { @@ -1554,12 +1909,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "dependencies": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "funding": { @@ -1577,9 +1932,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/debug": { @@ -1671,33 +2026,37 @@ "integrity": "sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==" }, "node_modules/electron-to-chromium": { - "version": "1.3.704", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", - "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -1766,12 +2125,6 @@ "node": ">=0.8.0" } }, - "node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1845,10 +2198,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -1860,6 +2238,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { @@ -1892,6 +2273,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1913,6 +2306,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1929,6 +2337,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -1969,9 +2391,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true, "engines": { "node": ">= 0.4" @@ -2044,22 +2466,22 @@ } }, "node_modules/is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "dependencies": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -2077,11 +2499,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2132,6 +2566,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -2215,12 +2661,6 @@ "node": ">=6" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -2267,15 +2707,15 @@ "dev": true }, "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2343,9 +2783,15 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "node_modules/picomatch": { @@ -2358,9 +2804,9 @@ } }, "node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "node_modules/randombytes": { @@ -2373,23 +2819,23 @@ } }, "node_modules/re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "node_modules/readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -2400,21 +2846,21 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "dependencies": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" }, "engines": { "node": ">=4" } }, "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "node_modules/regenerator-transform": { @@ -2443,17 +2889,17 @@ } }, "node_modules/regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" @@ -2466,9 +2912,9 @@ "dev": true }, "node_modules/regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -2487,12 +2933,16 @@ } }, "node_modules/resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "dependencies": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resumer": { @@ -2505,9 +2955,9 @@ } }, "node_modules/rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2516,30 +2966,7 @@ "node": ">=10.0.0" }, "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "node_modules/rollup-plugin-filesize-check": { @@ -2548,28 +2975,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "node_modules/rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "dependencies": { - "rollup-pluginutils": "^2.5.0" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "dependencies": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -2582,15 +2987,6 @@ "terser": "^5.0.0" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2664,9 +3060,9 @@ "dev": true }, "node_modules/split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "dependencies": { "through": "2" @@ -2676,23 +3072,23 @@ } }, "node_modules/string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" }, "engines": { "node": ">= 0.4" @@ -2740,101 +3136,40 @@ } }, "node_modules/tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "dependencies": { - "chalk": "4.1.0", - "tap-out": "3.0.0" + "colorette": "^1.2.2", + "tap-in": "3.2.1" }, "bin": { "tap-dancer": "src/index.js" } }, - "node_modules/tap-dancer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tap-dancer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/tap-dancer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/tap-dancer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "bin": { + "tap-in": "bin/tap-in.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", - "dev": true, - "dependencies": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" - }, - "bin": { - "tap-out": "bin/cmd.js" + "node": ">=8.0.0" } }, "node_modules/tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", @@ -2842,17 +3177,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "bin": { @@ -2914,9 +3251,9 @@ } }, "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "node_modules/unbox-primitive": { @@ -2935,40 +3272,40 @@ } }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, "engines": { "node": ">=4" @@ -3053,35 +3390,35 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" } }, "@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true }, "@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -3091,74 +3428,75 @@ } }, "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -3172,339 +3510,370 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, - "@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", - "dev": true - }, + "@babel/parser": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { @@ -3525,6 +3894,15 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -3606,353 +3984,366 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -3962,52 +4353,53 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" } }, "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -4018,56 +4410,89 @@ } }, "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, "@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -4086,16 +4511,6 @@ "requires": { "@types/node": "*" } - }, - "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "requires": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } } } }, @@ -4130,15 +4545,6 @@ "integrity": "sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg==", "dev": true }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -4173,33 +4579,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" } }, "balanced-match": { @@ -4219,16 +4625,16 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "buffer-from": { @@ -4237,12 +4643,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, "builtin-modules": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", @@ -4260,9 +4660,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true }, "chalk": { @@ -4292,9 +4692,9 @@ "dev": true }, "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "commander": { @@ -4303,10 +4703,16 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "compromise": { - "version": "13.10.5", - "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.10.5.tgz", - "integrity": "sha512-je5+lMKnQWmWfYZiO9IXtxWHr3KA4dQiyzVHsZskfNgGVHlSFK2sWreosoBYeRmP9/JrHiggSdDWE1lqPejvmA==", + "version": "13.11.4", + "resolved": "https://registry.npmjs.org/compromise/-/compromise-13.11.4.tgz", + "integrity": "sha512-nBITcNdqIHSVDDluaG6guyFFCSNXN+Hu87fU8VlhkE5Z0PwTZN1nro2O7a8JcUH88nB5EOzrxd9zKfXLSNFqcg==", "requires": { "efrt-unpack": "2.2.0" } @@ -4327,12 +4733,12 @@ } }, "core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "requires": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "dependencies": { @@ -4345,9 +4751,9 @@ } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "debug": { @@ -4426,33 +4832,37 @@ "integrity": "sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==" }, "electron-to-chromium": { - "version": "1.3.704", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", - "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" } }, "es-get-iterator": { @@ -4502,12 +4912,6 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4565,10 +4969,26 @@ "has-symbols": "^1.0.1" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4600,6 +5020,15 @@ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, + "has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -4612,6 +5041,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4628,6 +5066,17 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -4653,9 +5102,9 @@ } }, "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-core-module": { @@ -4698,22 +5147,22 @@ "dev": true }, "is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "requires": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" } }, "is-set": { @@ -4722,12 +5171,21 @@ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -4756,6 +5214,15 @@ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -4817,12 +5284,6 @@ "minimist": "^1.2.5" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -4866,15 +5327,15 @@ "dev": true }, "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true }, "object-is": { @@ -4921,9 +5382,15 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "picomatch": { @@ -4933,9 +5400,9 @@ "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "randombytes": { @@ -4948,23 +5415,23 @@ } }, "re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -4975,18 +5442,18 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "regenerator-transform": { @@ -5009,17 +5476,17 @@ } }, "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { @@ -5029,9 +5496,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -5046,11 +5513,12 @@ } }, "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -5064,35 +5532,12 @@ } }, "rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "rollup-plugin-filesize-check": { @@ -5101,28 +5546,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "requires": { - "rollup-pluginutils": "^2.5.0" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -5135,15 +5558,6 @@ "terser": "^5.0.0" } }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -5207,32 +5621,32 @@ "dev": true }, "split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "string.prototype.trimend": { @@ -5265,82 +5679,31 @@ } }, "tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "requires": { - "chalk": "4.1.0", - "tap-out": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "colorette": "^1.2.2", + "tap-in": "3.2.1" } }, - "tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", + "tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "requires": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" } }, "tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -5348,17 +5711,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "dependencies": { @@ -5406,9 +5771,9 @@ "dev": true }, "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "unbox-primitive": { @@ -5424,31 +5789,31 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "util-deprecate": { diff --git a/plugins/summary/package.json b/plugins/summary/package.json index 4f3a32a0..f9267607 100644 --- a/plugins/summary/package.json +++ b/plugins/summary/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-summary", "description": "text-summary plugin for wtf_wikipedia", - "version": "0.3.0", + "version": "0.3.1", "main": "./builds/wtf-plugin-summary.js", "unpkg": "./builds/wtf-plugin-summary.min.js", "module": "./builds/wtf-plugin-summary.mjs", @@ -28,24 +28,22 @@ "printWidth": 100 }, "dependencies": { - "compromise": "13.10.5" + "compromise": "13.11.4" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "@rollup/plugin-node-resolve": "11.2.1", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "13.0.6", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^5.1.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "license": "MIT" -} +} \ No newline at end of file diff --git a/plugins/summary/rollup.config.js b/plugins/summary/rollup.config.js index af202eb1..f514e66a 100644 --- a/plugins/summary/rollup.config.js +++ b/plugins/summary/rollup.config.js @@ -1,6 +1,6 @@ -import commonjs from 'rollup-plugin-commonjs' +import commonjs from '@rollup/plugin-commonjs' import { terser } from 'rollup-plugin-terser' -import babel from 'rollup-plugin-babel' +import { babel } from '@rollup/plugin-babel' import sizeCheck from 'rollup-plugin-filesize-check' import resolve from '@rollup/plugin-node-resolve' //import compromise @@ -18,6 +18,7 @@ export default [ resolve(), commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -40,6 +41,7 @@ export default [ resolve(), commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -61,6 +63,7 @@ export default [ resolve(), commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }), diff --git a/plugins/summary/tests/stress.test.js b/plugins/summary/tests/stress.test.js index 4478079b..9738c380 100644 --- a/plugins/summary/tests/stress.test.js +++ b/plugins/summary/tests/stress.test.js @@ -19,8 +19,9 @@ test('first-sentence cleanup summary', (t) => { let arr = fs .readFileSync(abs) .toString() - .split(/\n/) + .split(/\r?\n/) .filter((s) => s) + let count = 0 arr.forEach((txt) => { let str = wtf(txt).summary({ article: false }) @@ -28,7 +29,10 @@ test('first-sentence cleanup summary', (t) => { count += 1 } }) - let want = parseInt(arr.length * 0.75, 10) - t.ok(count > want, count + ' > ' + want) + + let want = arr.length * 0.75 + + console.log(count, want) + t.ok(count > want, 'stress test failed: ' + count + ' > ' + want) t.end() }) diff --git a/plugins/wikitext/builds/wtf-plugin-wikitext.js b/plugins/wikitext/builds/wtf-plugin-wikitext.js index 18c7fe36..3f85e90e 100644 --- a/plugins/wikitext/builds/wtf-plugin-wikitext.js +++ b/plugins/wikitext/builds/wtf-plugin-wikitext.js @@ -1,9 +1,9 @@ -/* wtf-plugin-wikitext 1.1.0 MIT */ +/* wtf-plugin-wikitext 1.1.1 MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.wtfWikitext = factory()); -}(this, (function () { 'use strict'; +})(this, (function () { 'use strict'; const defaults$3 = { images: true, @@ -22,7 +22,7 @@ let text = ''; //if it's a redirect page if (this.isRedirect() === true) { - return `#REDIRECT [[${this.redirectTo().page}]]`; + return "#REDIRECT [[".concat(this.redirectTo().page, "]]"); } //render infoboxes (up at the top) @@ -39,7 +39,7 @@ if (options.categories === true) { text += '\n'; - this.categories().forEach(cat => text += `\n[[Category: ${cat}]]`); + this.categories().forEach(cat => text += "\n[[Category: ".concat(cat, "]]")); } return text; @@ -54,10 +54,10 @@ let name = obj.template; Object.keys(obj).forEach(k => { if (k !== 'template') { - data += ` | ${k} = ${obj[k]}`; + data += " | ".concat(k, " = ").concat(obj[k]); } }); - return `{{${name}${data}}} `; + return "{{".concat(name).concat(data, "}} "); }; const toWiki$9 = function (options) { @@ -67,7 +67,7 @@ if (this.title()) { let side = '=='; - text += `\n${side} ${this.title()} ${side}\n`; + text += "\n".concat(side, " ").concat(this.title(), " ").concat(side, "\n"); } // render some templates? @@ -123,13 +123,12 @@ var _03Paragraph = toWiki$8; - //escape a string like 'fun*2.Co' for a regExpr function escapeRegExp(string) { return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string } //sometimes text-replacements can be ambiguous - words used multiple times.. - const smartReplace = function (all, text, result) { + const smartReplace$1 = function (all, text, result) { if (!text || !all) { return all; } @@ -153,8 +152,9 @@ return all; }; - var smartReplace_1 = smartReplace; + var smartReplace_1 = smartReplace$1; + const smartReplace = smartReplace_1; const defaults = { links: true }; @@ -168,7 +168,7 @@ this.links().forEach(link => { let str = link.text() || link.page(); let tag = link.makeWikitext(); - text = smartReplace_1(text, str, tag); + text = smartReplace(text, str, tag); }); } @@ -176,12 +176,12 @@ //support bolds this.bold().forEach(str => { let tag = '**' + str + '**'; - text = smartReplace_1(text, str, tag); + text = smartReplace(text, str, tag); }); //do italics this.italic().forEach(str => { let tag = '***' + str + '***'; - text = smartReplace_1(text, str, tag); + text = smartReplace(text, str, tag); }); } @@ -190,49 +190,48 @@ var _04Sentence = toWiki$7; - // add `[text](href)` to the text const toWiki$6 = function () { //if it's an external link, we good if (this.site()) { if (this.text()) { - return `[${this.site()}|${this.text()}]`; + return "[".concat(this.site(), "|").concat(this.text(), "]"); } - return `[${this.site()}]`; + return "[".concat(this.site(), "]"); } let page = this.page() || ''; if (this.anchor()) { - page += `#${this.anchor()}`; + page += "#".concat(this.anchor()); } let str = this.text() || ''; if (str && str.toLowerCase() !== page.toLowerCase()) { - return `[[${page}|${str}]]`; + return "[[".concat(page, "|").concat(str, "]]"); } - return `[[${page}]]`; + return "[[".concat(page, "]]"); }; var _05Link = toWiki$6; const toWiki$5 = function () { - let text = `[[${this.file()}|thumb`; + let text = "[[".concat(this.file(), "|thumb"); let caption = this.data.caption; if (caption) { - text += `|${this.data.caption.wikitext()}`; + text += "|".concat(this.data.caption.wikitext()); } return text + ']]'; }; - var image = toWiki$5; + var image$1 = toWiki$5; const toWiki$4 = function () { - let text = `{{${this.data.template || ''}`; + let text = "{{".concat(this.data.template || ''); Object.keys(this.data).forEach(k => { if (k === 'template') { return; @@ -241,60 +240,60 @@ let val = this.data[k]; if (val) { - text += `| ${k} = ${val || ''}`; + text += "| ".concat(k, " = ").concat(val || ''); } }); text += '}}\n'; return text; }; - var template = toWiki$4; + var template$1 = toWiki$4; const toWiki$3 = function () { - let text = `{{Infobox ${this._type || ''}\n`; + let text = "{{Infobox ".concat(this._type || '', "\n"); Object.keys(this.data).forEach(k => { let val = this.data[k]; if (val) { - text += `| ${k} = ${val.wikitext() || ''}\n`; + text += "| ".concat(k, " = ").concat(val.wikitext() || '', "\n"); } }); text += '}}\n'; return text; }; - var infobox = toWiki$3; + var infobox$1 = toWiki$3; const toWiki$2 = function () { let txt = ''; this.lines().forEach(s => { - txt += `* ${s.wikitext()}\n`; + txt += "* ".concat(s.wikitext(), "\n"); }); return txt; }; - var list = toWiki$2; + var list$1 = toWiki$2; const toWiki$1 = function () { if (this.data.inline) { - return `${this.data.inline.wikitext()}`; + return "".concat(this.data.inline.wikitext(), ""); } let type = this.data.type || 'cite web'; let data = ''; Object.keys(this.data).forEach(k => { if (k !== 'template' && k !== 'type') { - data += ` | ${k} = ${this.data[k]}`; + data += " | ".concat(k, " = ").concat(this.data[k]); } }); - return `{{${type}${data}}}`; + return "{{".concat(type).concat(data, "}}"); }; - var reference = toWiki$1; + var reference$1 = toWiki$1; const toWiki = function (options) { let rows = this.data; - let wiki = `{| class="wikitable"\n`; // draw headers + let wiki = "{| class=\"wikitable\"\n"; // draw headers let headers = Object.keys(rows[0]); headers = headers.filter(k => /^col[0-9]/.test(k) !== true); @@ -314,18 +313,30 @@ wiki += '| ' + val + '\n'; }); }); - wiki += `|}`; + wiki += "|}"; return wiki; }; - var table = toWiki; + var table$1 = toWiki; + + const doc = _01Doc; + const section = _02Section; + const paragraph = _03Paragraph; + const sentence = _04Sentence; + const link = _05Link; + const image = image$1; + const template = template$1; + const infobox = infobox$1; + const list = list$1; + const reference = reference$1; + const table = table$1; const plugin = function (models) { - models.Doc.prototype.makeWikitext = _01Doc; - models.Section.prototype.makeWikitext = _02Section; - models.Paragraph.prototype.makeWikitext = _03Paragraph; - models.Sentence.prototype.makeWikitext = _04Sentence; - models.Link.prototype.makeWikitext = _05Link; + models.Doc.prototype.makeWikitext = doc; + models.Section.prototype.makeWikitext = section; + models.Paragraph.prototype.makeWikitext = paragraph; + models.Sentence.prototype.makeWikitext = sentence; + models.Link.prototype.makeWikitext = link; models.Image.prototype.makeWikitext = image; models.Infobox.prototype.makeWikitext = infobox; models.Template.prototype.makeWikitext = template; @@ -338,5 +349,5 @@ return src; -}))); +})); //# sourceMappingURL=wtf-plugin-wikitext.js.map diff --git a/plugins/wikitext/builds/wtf-plugin-wikitext.js.map b/plugins/wikitext/builds/wtf-plugin-wikitext.js.map index c38a519b..38952a7a 100644 --- a/plugins/wikitext/builds/wtf-plugin-wikitext.js.map +++ b/plugins/wikitext/builds/wtf-plugin-wikitext.js.map @@ -1 +1 @@ -{"version":3,"file":"wtf-plugin-wikitext.js","sources":["../src/01-doc.js","../src/02-section.js","../src/03-paragraph.js","../src/_lib/smartReplace.js","../src/04-sentence.js","../src/05-link.js","../src/image.js","../src/template.js","../src/infobox.js","../src/list.js","../src/reference.js","../src/table.js","../src/index.js"],"sourcesContent":["const defaults = {\n images: true,\n tables: true,\n templates: true,\n infoboxes: true,\n categories: true,\n lists: true,\n links: true,\n paragraphs: true\n}\nconst toWiki = function (options) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n let text = ''\n\n //if it's a redirect page\n if (this.isRedirect() === true) {\n return `#REDIRECT [[${this.redirectTo().page}]]`\n }\n\n //render infoboxes (up at the top)\n if (options.infoboxes === true) {\n text += this.infoboxes()\n .map((i) => i.makeWikitext(options))\n .join('\\n')\n }\n\n //render each section\n if (options.sections === true || options.paragraphs === true || options.sentences === true) {\n let sections = this.sections()\n text += sections.map((s) => s.makeWikitext(options)).join('\\n')\n }\n\n // add categories on the bottom\n if (options.categories === true) {\n text += '\\n'\n this.categories().forEach((cat) => (text += `\\n[[Category: ${cat}]]`))\n }\n return text\n}\nmodule.exports = toWiki\n","const defaults = {}\n\nconst doTemplate = function (obj) {\n let data = ''\n let name = obj.template\n Object.keys(obj).forEach((k) => {\n if (k !== 'template') {\n data += ` | ${k} = ${obj[k]}`\n }\n })\n return `{{${name}${data}}} `\n}\n\nconst toWiki = function (options) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n let text = ''\n if (this.title()) {\n let side = '=='\n text += `\\n${side} ${this.title()} ${side}\\n`\n }\n // render some templates?\n if (options.templates === true) {\n this.templates().forEach((tmpl) => {\n text += doTemplate(tmpl.json()) + '\\n'\n })\n }\n\n //make a table\n if (options.tables === true) {\n text += this.tables()\n .map((t) => t.makeWikitext(options))\n .join('\\n')\n }\n\n // make a html bullet-list\n if (options.lists === true) {\n text += this.lists()\n .map((list) => list.text(options))\n .join('\\n')\n }\n text += this.paragraphs()\n .map((p) => {\n return p.makeWikitext(options)\n })\n .join('\\n')\n\n // render references\n // these will be out of place\n this.references().forEach((ref) => {\n text += ref.makeWikitext(options) + '\\n'\n })\n\n return text\n}\nmodule.exports = toWiki\n","const defaults = {}\n\nconst toWiki = function (options) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n let text = ''\n\n // do images\n this.images().forEach((img) => {\n text += img.makeWikitext()\n })\n // do lists\n this.lists().forEach((list) => {\n text += list.makeWikitext()\n })\n // render sentences\n text += this.sentences()\n .map((s) => {\n return s.makeWikitext(options)\n })\n .join('\\n')\n return text\n}\nmodule.exports = toWiki\n","//escape a string like 'fun*2.Co' for a regExpr\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') // $& means the whole matched string\n}\n\n//sometimes text-replacements can be ambiguous - words used multiple times..\nconst smartReplace = function (all, text, result) {\n if (!text || !all) {\n return all\n }\n\n if (typeof all === 'number') {\n all = String(all)\n }\n text = escapeRegExp(text)\n //try a word-boundary replace\n let reg = new RegExp('\\\\b' + text + '\\\\b')\n if (reg.test(all) === true) {\n all = all.replace(reg, result)\n } else {\n //otherwise, fall-back to a much messier, dangerous replacement\n // console.warn('missing \\'' + text + '\\'');\n all = all.replace(text, result)\n }\n return all\n}\n\nmodule.exports = smartReplace\n","const smartReplace = require('./_lib/smartReplace')\n\nconst defaults = {\n links: true\n}\n\nconst toWiki = function (options) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n let text = this.text()\n if (options.links === true) {\n this.links().forEach((link) => {\n let str = link.text() || link.page()\n let tag = link.makeWikitext()\n text = smartReplace(text, str, tag)\n })\n }\n if (options.formatting === true) {\n //support bolds\n this.bold().forEach((str) => {\n let tag = '**' + str + '**'\n text = smartReplace(text, str, tag)\n })\n //do italics\n this.italic().forEach((str) => {\n let tag = '***' + str + '***'\n text = smartReplace(text, str, tag)\n })\n }\n\n return text\n}\nmodule.exports = toWiki\n","// add `[text](href)` to the text\nconst toWiki = function () {\n //if it's an external link, we good\n if (this.site()) {\n if (this.text()) {\n return `[${this.site()}|${this.text()}]`\n }\n return `[${this.site()}]`\n }\n let page = this.page() || ''\n if (this.anchor()) {\n page += `#${this.anchor()}`\n }\n\n let str = this.text() || ''\n if (str && str.toLowerCase() !== page.toLowerCase()) {\n return `[[${page}|${str}]]`\n }\n return `[[${page}]]`\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n let text = `[[${this.file()}|thumb`\n let caption = this.data.caption\n if (caption) {\n text += `|${this.data.caption.wikitext()}`\n }\n return text + ']]'\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n let text = `{{${this.data.template || ''}`\n Object.keys(this.data).forEach((k) => {\n if (k === 'template') {\n return\n }\n let val = this.data[k]\n if (val) {\n text += `| ${k} = ${val || ''}`\n }\n })\n text += '}}\\n'\n return text\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n let text = `{{Infobox ${this._type || ''}\\n`\n Object.keys(this.data).forEach((k) => {\n let val = this.data[k]\n if (val) {\n text += `| ${k} = ${val.wikitext() || ''}\\n`\n }\n })\n text += '}}\\n'\n return text\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n let txt = ''\n this.lines().forEach((s) => {\n txt += `* ${s.wikitext()}\\n`\n })\n return txt\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n if (this.data.inline) {\n return `${this.data.inline.wikitext()}`\n }\n let type = this.data.type || 'cite web'\n let data = ''\n Object.keys(this.data).forEach((k) => {\n if (k !== 'template' && k !== 'type') {\n data += ` | ${k} = ${this.data[k]}`\n }\n })\n return `{{${type}${data}}}`\n}\nmodule.exports = toWiki\n","const toWiki = function (options) {\n let rows = this.data\n let wiki = `{| class=\"wikitable\"\\n`\n\n // draw headers\n let headers = Object.keys(rows[0])\n headers = headers.filter((k) => /^col[0-9]/.test(k) !== true)\n if (headers.length > 0) {\n wiki += '|-\\n'\n headers.forEach((k) => {\n wiki += '! ' + k + '\\n'\n })\n }\n //make rows\n rows.forEach((o) => {\n wiki += '|-\\n'\n Object.keys(o).forEach((k) => {\n let val = o[k].wikitext(options)\n wiki += '| ' + val + '\\n'\n })\n })\n wiki += `|}`\n return wiki\n}\nmodule.exports = toWiki\n","const doc = require('./01-doc')\nconst section = require('./02-section')\nconst paragraph = require('./03-paragraph')\nconst sentence = require('./04-sentence')\nconst link = require('./05-link')\nconst image = require('./image')\nconst template = require('./template')\nconst infobox = require('./infobox')\nconst list = require('./list')\nconst reference = require('./reference')\nconst table = require('./table')\n\nconst plugin = function (models) {\n models.Doc.prototype.makeWikitext = doc\n models.Section.prototype.makeWikitext = section\n models.Paragraph.prototype.makeWikitext = paragraph\n models.Sentence.prototype.makeWikitext = sentence\n models.Link.prototype.makeWikitext = link\n models.Image.prototype.makeWikitext = image\n models.Infobox.prototype.makeWikitext = infobox\n models.Template.prototype.makeWikitext = template\n models.Table.prototype.makeWikitext = table\n models.List.prototype.makeWikitext = list\n models.Reference.prototype.makeWikitext = reference\n}\nmodule.exports = plugin\n"],"names":["defaults","images","tables","templates","infoboxes","categories","lists","links","paragraphs","toWiki","options","Object","assign","text","isRedirect","redirectTo","page","map","i","makeWikitext","join","sections","sentences","s","forEach","cat","doTemplate","obj","data","name","template","keys","k","title","side","tmpl","json","t","list","p","references","ref","img","escapeRegExp","string","replace","smartReplace","all","result","String","reg","RegExp","test","link","str","tag","formatting","bold","italic","site","anchor","toLowerCase","file","caption","wikitext","val","_type","txt","lines","inline","type","rows","wiki","headers","filter","length","o","plugin","models","Doc","prototype","doc","Section","section","Paragraph","paragraph","Sentence","sentence","Link","Image","image","Infobox","infobox","Template","Table","table","List","Reference","reference"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"wtf-plugin-wikitext.js","sources":["../src/01-doc.js","../src/02-section.js","../src/03-paragraph.js","../src/_lib/smartReplace.js","../src/04-sentence.js","../src/05-link.js","../src/image.js","../src/template.js","../src/infobox.js","../src/list.js","../src/reference.js","../src/table.js","../src/index.js"],"sourcesContent":["const defaults = {\n images: true,\n tables: true,\n templates: true,\n infoboxes: true,\n categories: true,\n lists: true,\n links: true,\n paragraphs: true\n}\nconst toWiki = function (options) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n let text = ''\n\n //if it's a redirect page\n if (this.isRedirect() === true) {\n return `#REDIRECT [[${this.redirectTo().page}]]`\n }\n\n //render infoboxes (up at the top)\n if (options.infoboxes === true) {\n text += this.infoboxes()\n .map((i) => i.makeWikitext(options))\n .join('\\n')\n }\n\n //render each section\n if (options.sections === true || options.paragraphs === true || options.sentences === true) {\n let sections = this.sections()\n text += sections.map((s) => s.makeWikitext(options)).join('\\n')\n }\n\n // add categories on the bottom\n if (options.categories === true) {\n text += '\\n'\n this.categories().forEach((cat) => (text += `\\n[[Category: ${cat}]]`))\n }\n return text\n}\nmodule.exports = toWiki\n","const defaults = {}\n\nconst doTemplate = function (obj) {\n let data = ''\n let name = obj.template\n Object.keys(obj).forEach((k) => {\n if (k !== 'template') {\n data += ` | ${k} = ${obj[k]}`\n }\n })\n return `{{${name}${data}}} `\n}\n\nconst toWiki = function (options) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n let text = ''\n if (this.title()) {\n let side = '=='\n text += `\\n${side} ${this.title()} ${side}\\n`\n }\n // render some templates?\n if (options.templates === true) {\n this.templates().forEach((tmpl) => {\n text += doTemplate(tmpl.json()) + '\\n'\n })\n }\n\n //make a table\n if (options.tables === true) {\n text += this.tables()\n .map((t) => t.makeWikitext(options))\n .join('\\n')\n }\n\n // make a html bullet-list\n if (options.lists === true) {\n text += this.lists()\n .map((list) => list.text(options))\n .join('\\n')\n }\n text += this.paragraphs()\n .map((p) => {\n return p.makeWikitext(options)\n })\n .join('\\n')\n\n // render references\n // these will be out of place\n this.references().forEach((ref) => {\n text += ref.makeWikitext(options) + '\\n'\n })\n\n return text\n}\nmodule.exports = toWiki\n","const defaults = {}\n\nconst toWiki = function (options) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n let text = ''\n\n // do images\n this.images().forEach((img) => {\n text += img.makeWikitext()\n })\n // do lists\n this.lists().forEach((list) => {\n text += list.makeWikitext()\n })\n // render sentences\n text += this.sentences()\n .map((s) => {\n return s.makeWikitext(options)\n })\n .join('\\n')\n return text\n}\nmodule.exports = toWiki\n","//escape a string like 'fun*2.Co' for a regExpr\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') // $& means the whole matched string\n}\n\n//sometimes text-replacements can be ambiguous - words used multiple times..\nconst smartReplace = function (all, text, result) {\n if (!text || !all) {\n return all\n }\n\n if (typeof all === 'number') {\n all = String(all)\n }\n text = escapeRegExp(text)\n //try a word-boundary replace\n let reg = new RegExp('\\\\b' + text + '\\\\b')\n if (reg.test(all) === true) {\n all = all.replace(reg, result)\n } else {\n //otherwise, fall-back to a much messier, dangerous replacement\n // console.warn('missing \\'' + text + '\\'');\n all = all.replace(text, result)\n }\n return all\n}\n\nmodule.exports = smartReplace\n","const smartReplace = require('./_lib/smartReplace')\n\nconst defaults = {\n links: true\n}\n\nconst toWiki = function (options) {\n options = options || {}\n options = Object.assign({}, defaults, options)\n let text = this.text()\n if (options.links === true) {\n this.links().forEach((link) => {\n let str = link.text() || link.page()\n let tag = link.makeWikitext()\n text = smartReplace(text, str, tag)\n })\n }\n if (options.formatting === true) {\n //support bolds\n this.bold().forEach((str) => {\n let tag = '**' + str + '**'\n text = smartReplace(text, str, tag)\n })\n //do italics\n this.italic().forEach((str) => {\n let tag = '***' + str + '***'\n text = smartReplace(text, str, tag)\n })\n }\n\n return text\n}\nmodule.exports = toWiki\n","// add `[text](href)` to the text\nconst toWiki = function () {\n //if it's an external link, we good\n if (this.site()) {\n if (this.text()) {\n return `[${this.site()}|${this.text()}]`\n }\n return `[${this.site()}]`\n }\n let page = this.page() || ''\n if (this.anchor()) {\n page += `#${this.anchor()}`\n }\n\n let str = this.text() || ''\n if (str && str.toLowerCase() !== page.toLowerCase()) {\n return `[[${page}|${str}]]`\n }\n return `[[${page}]]`\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n let text = `[[${this.file()}|thumb`\n let caption = this.data.caption\n if (caption) {\n text += `|${this.data.caption.wikitext()}`\n }\n return text + ']]'\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n let text = `{{${this.data.template || ''}`\n Object.keys(this.data).forEach((k) => {\n if (k === 'template') {\n return\n }\n let val = this.data[k]\n if (val) {\n text += `| ${k} = ${val || ''}`\n }\n })\n text += '}}\\n'\n return text\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n let text = `{{Infobox ${this._type || ''}\\n`\n Object.keys(this.data).forEach((k) => {\n let val = this.data[k]\n if (val) {\n text += `| ${k} = ${val.wikitext() || ''}\\n`\n }\n })\n text += '}}\\n'\n return text\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n let txt = ''\n this.lines().forEach((s) => {\n txt += `* ${s.wikitext()}\\n`\n })\n return txt\n}\nmodule.exports = toWiki\n","const toWiki = function () {\n if (this.data.inline) {\n return `${this.data.inline.wikitext()}`\n }\n let type = this.data.type || 'cite web'\n let data = ''\n Object.keys(this.data).forEach((k) => {\n if (k !== 'template' && k !== 'type') {\n data += ` | ${k} = ${this.data[k]}`\n }\n })\n return `{{${type}${data}}}`\n}\nmodule.exports = toWiki\n","const toWiki = function (options) {\n let rows = this.data\n let wiki = `{| class=\"wikitable\"\\n`\n\n // draw headers\n let headers = Object.keys(rows[0])\n headers = headers.filter((k) => /^col[0-9]/.test(k) !== true)\n if (headers.length > 0) {\n wiki += '|-\\n'\n headers.forEach((k) => {\n wiki += '! ' + k + '\\n'\n })\n }\n //make rows\n rows.forEach((o) => {\n wiki += '|-\\n'\n Object.keys(o).forEach((k) => {\n let val = o[k].wikitext(options)\n wiki += '| ' + val + '\\n'\n })\n })\n wiki += `|}`\n return wiki\n}\nmodule.exports = toWiki\n","const doc = require('./01-doc')\nconst section = require('./02-section')\nconst paragraph = require('./03-paragraph')\nconst sentence = require('./04-sentence')\nconst link = require('./05-link')\nconst image = require('./image')\nconst template = require('./template')\nconst infobox = require('./infobox')\nconst list = require('./list')\nconst reference = require('./reference')\nconst table = require('./table')\n\nconst plugin = function (models) {\n models.Doc.prototype.makeWikitext = doc\n models.Section.prototype.makeWikitext = section\n models.Paragraph.prototype.makeWikitext = paragraph\n models.Sentence.prototype.makeWikitext = sentence\n models.Link.prototype.makeWikitext = link\n models.Image.prototype.makeWikitext = image\n models.Infobox.prototype.makeWikitext = infobox\n models.Template.prototype.makeWikitext = template\n models.Table.prototype.makeWikitext = table\n models.List.prototype.makeWikitext = list\n models.Reference.prototype.makeWikitext = reference\n}\nmodule.exports = plugin\n"],"names":["defaults","images","tables","templates","infoboxes","categories","lists","links","paragraphs","toWiki","options","Object","assign","text","isRedirect","redirectTo","page","map","i","makeWikitext","join","sections","sentences","s","forEach","cat","_01Doc","doTemplate","obj","data","name","template","keys","k","title","side","tmpl","json","t","list","p","references","ref","_02Section","img","_03Paragraph","escapeRegExp","string","replace","smartReplace","all","result","String","reg","RegExp","test","smartReplace_1","require$$0","link","str","tag","formatting","bold","italic","_04Sentence","site","anchor","toLowerCase","_05Link","file","caption","wikitext","image","val","_type","infobox","txt","lines","inline","type","reference","rows","wiki","headers","filter","length","o","table","doc","section","require$$1","paragraph","require$$2","sentence","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","plugin","models","Doc","prototype","Section","Paragraph","Sentence","Link","Image","Infobox","Template","Table","List","Reference","src"],"mappings":"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"} \ No newline at end of file diff --git a/plugins/wikitext/builds/wtf-plugin-wikitext.min.js b/plugins/wikitext/builds/wtf-plugin-wikitext.min.js index fe7e7347..93d25203 100644 --- a/plugins/wikitext/builds/wtf-plugin-wikitext.min.js +++ b/plugins/wikitext/builds/wtf-plugin-wikitext.min.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).wtfWikitext=e()}(this,(function(){"use strict";const t={images:!0,tables:!0,templates:!0,infoboxes:!0,categories:!0,lists:!0,links:!0,paragraphs:!0};var e=function(e){e=e||{},e=Object.assign({},t,e);let i="";if(!0===this.isRedirect())return`#REDIRECT [[${this.redirectTo().page}]]`;if(!0===e.infoboxes&&(i+=this.infoboxes().map((t=>t.makeWikitext(e))).join("\n")),!0===e.sections||!0===e.paragraphs||!0===e.sentences){let t=this.sections();i+=t.map((t=>t.makeWikitext(e))).join("\n")}return!0===e.categories&&(i+="\n",this.categories().forEach((t=>i+=`\n[[Category: ${t}]]`))),i};const i={};var a=function(t){t=t||{},t=Object.assign({},i,t);let e="";if(this.title()){let t="==";e+=`\n${t} ${this.title()} ${t}\n`}return!0===t.templates&&this.templates().forEach((t=>{e+=function(t){let e="",i=t.template;return Object.keys(t).forEach((i=>{"template"!==i&&(e+=` | ${i} = ${t[i]}`)})),`{{${i}${e}}} `}(t.json())+"\n"})),!0===t.tables&&(e+=this.tables().map((e=>e.makeWikitext(t))).join("\n")),!0===t.lists&&(e+=this.lists().map((e=>e.text(t))).join("\n")),e+=this.paragraphs().map((e=>e.makeWikitext(t))).join("\n"),this.references().forEach((i=>{e+=i.makeWikitext(t)+"\n"})),e};const n={};var s=function(t){t=t||{},t=Object.assign({},n,t);let e="";return this.images().forEach((t=>{e+=t.makeWikitext()})),this.lists().forEach((t=>{e+=t.makeWikitext()})),e+=this.sentences().map((e=>e.makeWikitext(t))).join("\n"),e};var r=function(t,e,i){if(!e||!t)return t;"number"==typeof t&&(t=String(t)),e=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");let a=new RegExp("\\b"+e+"\\b");return t=!0===a.test(t)?t.replace(a,i):t.replace(e,i)};const o={links:!0};var c=function(t){t=t||{},t=Object.assign({},o,t);let e=this.text();return!0===t.links&&this.links().forEach((t=>{let i=t.text()||t.page(),a=t.makeWikitext();e=r(e,i,a)})),!0===t.formatting&&(this.bold().forEach((t=>{e=r(e,t,"**"+t+"**")})),this.italic().forEach((t=>{e=r(e,t,"***"+t+"***")}))),e};var h=function(){if(this.site())return this.text()?`[${this.site()}|${this.text()}]`:`[${this.site()}]`;let t=this.page()||"";this.anchor()&&(t+="#"+this.anchor());let e=this.text()||"";return e&&e.toLowerCase()!==t.toLowerCase()?`[[${t}|${e}]]`:`[[${t}]]`};var f=function(){let t=`[[${this.file()}|thumb`;return this.data.caption&&(t+="|"+this.data.caption.wikitext()),t+"]]"};var l=function(){let t="{{"+(this.data.template||"");return Object.keys(this.data).forEach((e=>{if("template"===e)return;let i=this.data[e];i&&(t+=`| ${e} = ${i||""}`)})),t+="}}\n",t};var p=function(){let t=`{{Infobox ${this._type||""}\n`;return Object.keys(this.data).forEach((e=>{let i=this.data[e];i&&(t+=`| ${e} = ${i.wikitext()||""}\n`)})),t+="}}\n",t};var k=function(){let t="";return this.lines().forEach((e=>{t+=`* ${e.wikitext()}\n`})),t};var m=function(){if(this.data.inline)return`${this.data.inline.wikitext()}`;let t=this.data.type||"cite web",e="";return Object.keys(this.data).forEach((t=>{"template"!==t&&"type"!==t&&(e+=` | ${t} = ${this.data[t]}`)})),`{{${t}${e}}}`};var u=function(t){let e=this.data,i='{| class="wikitable"\n',a=Object.keys(e[0]);return a=a.filter((t=>!0!==/^col[0-9]/.test(t))),a.length>0&&(i+="|-\n",a.forEach((t=>{i+="! "+t+"\n"}))),e.forEach((e=>{i+="|-\n",Object.keys(e).forEach((a=>{let n=e[a].wikitext(t);i+="| "+n+"\n"}))})),i+="|}",i};return function(t){t.Doc.prototype.makeWikitext=e,t.Section.prototype.makeWikitext=a,t.Paragraph.prototype.makeWikitext=s,t.Sentence.prototype.makeWikitext=c,t.Link.prototype.makeWikitext=h,t.Image.prototype.makeWikitext=f,t.Infobox.prototype.makeWikitext=p,t.Template.prototype.makeWikitext=l,t.Table.prototype.makeWikitext=u,t.List.prototype.makeWikitext=k,t.Reference.prototype.makeWikitext=m}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).wtfWikitext=e()}(this,(function(){"use strict";const t={images:!0,tables:!0,templates:!0,infoboxes:!0,categories:!0,lists:!0,links:!0,paragraphs:!0};const e={};const i={};const n=function(t,e,i){if(!e||!t)return t;"number"==typeof t&&(t=String(t)),e=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");let n=new RegExp("\\b"+e+"\\b");return t=!0===n.test(t)?t.replace(n,i):t.replace(e,i)},a={links:!0};const o=function(e){e=e||{},e=Object.assign({},t,e);let i="";if(!0===this.isRedirect())return"#REDIRECT [[".concat(this.redirectTo().page,"]]");if(!0===e.infoboxes&&(i+=this.infoboxes().map((t=>t.makeWikitext(e))).join("\n")),!0===e.sections||!0===e.paragraphs||!0===e.sentences){let t=this.sections();i+=t.map((t=>t.makeWikitext(e))).join("\n")}return!0===e.categories&&(i+="\n",this.categories().forEach((t=>i+="\n[[Category: ".concat(t,"]]")))),i},c=function(t){t=t||{},t=Object.assign({},e,t);let i="";if(this.title()){let t="==";i+="\n".concat(t," ").concat(this.title()," ").concat(t,"\n")}return!0===t.templates&&this.templates().forEach((t=>{i+=function(t){let e="",i=t.template;return Object.keys(t).forEach((i=>{"template"!==i&&(e+=" | ".concat(i," = ").concat(t[i]))})),"{{".concat(i).concat(e,"}} ")}(t.json())+"\n"})),!0===t.tables&&(i+=this.tables().map((e=>e.makeWikitext(t))).join("\n")),!0===t.lists&&(i+=this.lists().map((e=>e.text(t))).join("\n")),i+=this.paragraphs().map((e=>e.makeWikitext(t))).join("\n"),this.references().forEach((e=>{i+=e.makeWikitext(t)+"\n"})),i},s=function(t){t=t||{},t=Object.assign({},i,t);let e="";return this.images().forEach((t=>{e+=t.makeWikitext()})),this.lists().forEach((t=>{e+=t.makeWikitext()})),e+=this.sentences().map((e=>e.makeWikitext(t))).join("\n"),e},r=function(t){t=t||{},t=Object.assign({},a,t);let e=this.text();return!0===t.links&&this.links().forEach((t=>{let i=t.text()||t.page(),a=t.makeWikitext();e=n(e,i,a)})),!0===t.formatting&&(this.bold().forEach((t=>{e=n(e,t,"**"+t+"**")})),this.italic().forEach((t=>{e=n(e,t,"***"+t+"***")}))),e},h=function(){if(this.site())return this.text()?"[".concat(this.site(),"|").concat(this.text(),"]"):"[".concat(this.site(),"]");let t=this.page()||"";this.anchor()&&(t+="#".concat(this.anchor()));let e=this.text()||"";return e&&e.toLowerCase()!==t.toLowerCase()?"[[".concat(t,"|").concat(e,"]]"):"[[".concat(t,"]]")},f=function(){let t="[[".concat(this.file(),"|thumb");return this.data.caption&&(t+="|".concat(this.data.caption.wikitext())),t+"]]"},l=function(){let t="{{".concat(this.data.template||"");return Object.keys(this.data).forEach((e=>{if("template"===e)return;let i=this.data[e];i&&(t+="| ".concat(e," = ").concat(i||""))})),t+="}}\n",t},p=function(){let t="{{Infobox ".concat(this._type||"","\n");return Object.keys(this.data).forEach((e=>{let i=this.data[e];i&&(t+="| ".concat(e," = ").concat(i.wikitext()||"","\n"))})),t+="}}\n",t},k=function(){let t="";return this.lines().forEach((e=>{t+="* ".concat(e.wikitext(),"\n")})),t},m=function(){if(this.data.inline)return"".concat(this.data.inline.wikitext(),"");let t=this.data.type||"cite web",e="";return Object.keys(this.data).forEach((t=>{"template"!==t&&"type"!==t&&(e+=" | ".concat(t," = ").concat(this.data[t]))})),"{{".concat(t).concat(e,"}}")},u=function(t){let e=this.data,i='{| class="wikitable"\n',n=Object.keys(e[0]);return n=n.filter((t=>!0!==/^col[0-9]/.test(t))),n.length>0&&(i+="|-\n",n.forEach((t=>{i+="! "+t+"\n"}))),e.forEach((e=>{i+="|-\n",Object.keys(e).forEach((n=>{let a=e[n].wikitext(t);i+="| "+a+"\n"}))})),i+="|}",i};return function(t){t.Doc.prototype.makeWikitext=o,t.Section.prototype.makeWikitext=c,t.Paragraph.prototype.makeWikitext=s,t.Sentence.prototype.makeWikitext=r,t.Link.prototype.makeWikitext=h,t.Image.prototype.makeWikitext=f,t.Infobox.prototype.makeWikitext=p,t.Template.prototype.makeWikitext=l,t.Table.prototype.makeWikitext=u,t.List.prototype.makeWikitext=k,t.Reference.prototype.makeWikitext=m}})); diff --git a/plugins/wikitext/builds/wtf-plugin-wikitext.mjs b/plugins/wikitext/builds/wtf-plugin-wikitext.mjs index 9403cc6e..9f04b866 100644 --- a/plugins/wikitext/builds/wtf-plugin-wikitext.mjs +++ b/plugins/wikitext/builds/wtf-plugin-wikitext.mjs @@ -1,4 +1,4 @@ -/* wtf-plugin-wikitext 1.1.0 MIT */ +/* wtf-plugin-wikitext 1.1.1 MIT */ const defaults$3 = { images: true, tables: true, @@ -16,7 +16,7 @@ const toWiki$a = function (options) { let text = ''; //if it's a redirect page if (this.isRedirect() === true) { - return `#REDIRECT [[${this.redirectTo().page}]]`; + return "#REDIRECT [[".concat(this.redirectTo().page, "]]"); } //render infoboxes (up at the top) @@ -33,7 +33,7 @@ const toWiki$a = function (options) { if (options.categories === true) { text += '\n'; - this.categories().forEach(cat => text += `\n[[Category: ${cat}]]`); + this.categories().forEach(cat => text += "\n[[Category: ".concat(cat, "]]")); } return text; @@ -48,10 +48,10 @@ const doTemplate = function (obj) { let name = obj.template; Object.keys(obj).forEach(k => { if (k !== 'template') { - data += ` | ${k} = ${obj[k]}`; + data += " | ".concat(k, " = ").concat(obj[k]); } }); - return `{{${name}${data}}} `; + return "{{".concat(name).concat(data, "}} "); }; const toWiki$9 = function (options) { @@ -61,7 +61,7 @@ const toWiki$9 = function (options) { if (this.title()) { let side = '=='; - text += `\n${side} ${this.title()} ${side}\n`; + text += "\n".concat(side, " ").concat(this.title(), " ").concat(side, "\n"); } // render some templates? @@ -117,13 +117,12 @@ const toWiki$8 = function (options) { var _03Paragraph = toWiki$8; -//escape a string like 'fun*2.Co' for a regExpr function escapeRegExp(string) { return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string } //sometimes text-replacements can be ambiguous - words used multiple times.. -const smartReplace = function (all, text, result) { +const smartReplace$1 = function (all, text, result) { if (!text || !all) { return all; } @@ -147,8 +146,9 @@ const smartReplace = function (all, text, result) { return all; }; -var smartReplace_1 = smartReplace; +var smartReplace_1 = smartReplace$1; +const smartReplace = smartReplace_1; const defaults = { links: true }; @@ -162,7 +162,7 @@ const toWiki$7 = function (options) { this.links().forEach(link => { let str = link.text() || link.page(); let tag = link.makeWikitext(); - text = smartReplace_1(text, str, tag); + text = smartReplace(text, str, tag); }); } @@ -170,12 +170,12 @@ const toWiki$7 = function (options) { //support bolds this.bold().forEach(str => { let tag = '**' + str + '**'; - text = smartReplace_1(text, str, tag); + text = smartReplace(text, str, tag); }); //do italics this.italic().forEach(str => { let tag = '***' + str + '***'; - text = smartReplace_1(text, str, tag); + text = smartReplace(text, str, tag); }); } @@ -184,49 +184,48 @@ const toWiki$7 = function (options) { var _04Sentence = toWiki$7; -// add `[text](href)` to the text const toWiki$6 = function () { //if it's an external link, we good if (this.site()) { if (this.text()) { - return `[${this.site()}|${this.text()}]`; + return "[".concat(this.site(), "|").concat(this.text(), "]"); } - return `[${this.site()}]`; + return "[".concat(this.site(), "]"); } let page = this.page() || ''; if (this.anchor()) { - page += `#${this.anchor()}`; + page += "#".concat(this.anchor()); } let str = this.text() || ''; if (str && str.toLowerCase() !== page.toLowerCase()) { - return `[[${page}|${str}]]`; + return "[[".concat(page, "|").concat(str, "]]"); } - return `[[${page}]]`; + return "[[".concat(page, "]]"); }; var _05Link = toWiki$6; const toWiki$5 = function () { - let text = `[[${this.file()}|thumb`; + let text = "[[".concat(this.file(), "|thumb"); let caption = this.data.caption; if (caption) { - text += `|${this.data.caption.wikitext()}`; + text += "|".concat(this.data.caption.wikitext()); } return text + ']]'; }; -var image = toWiki$5; +var image$1 = toWiki$5; const toWiki$4 = function () { - let text = `{{${this.data.template || ''}`; + let text = "{{".concat(this.data.template || ''); Object.keys(this.data).forEach(k => { if (k === 'template') { return; @@ -235,60 +234,60 @@ const toWiki$4 = function () { let val = this.data[k]; if (val) { - text += `| ${k} = ${val || ''}`; + text += "| ".concat(k, " = ").concat(val || ''); } }); text += '}}\n'; return text; }; -var template = toWiki$4; +var template$1 = toWiki$4; const toWiki$3 = function () { - let text = `{{Infobox ${this._type || ''}\n`; + let text = "{{Infobox ".concat(this._type || '', "\n"); Object.keys(this.data).forEach(k => { let val = this.data[k]; if (val) { - text += `| ${k} = ${val.wikitext() || ''}\n`; + text += "| ".concat(k, " = ").concat(val.wikitext() || '', "\n"); } }); text += '}}\n'; return text; }; -var infobox = toWiki$3; +var infobox$1 = toWiki$3; const toWiki$2 = function () { let txt = ''; this.lines().forEach(s => { - txt += `* ${s.wikitext()}\n`; + txt += "* ".concat(s.wikitext(), "\n"); }); return txt; }; -var list = toWiki$2; +var list$1 = toWiki$2; const toWiki$1 = function () { if (this.data.inline) { - return `${this.data.inline.wikitext()}`; + return "".concat(this.data.inline.wikitext(), ""); } let type = this.data.type || 'cite web'; let data = ''; Object.keys(this.data).forEach(k => { if (k !== 'template' && k !== 'type') { - data += ` | ${k} = ${this.data[k]}`; + data += " | ".concat(k, " = ").concat(this.data[k]); } }); - return `{{${type}${data}}}`; + return "{{".concat(type).concat(data, "}}"); }; -var reference = toWiki$1; +var reference$1 = toWiki$1; const toWiki = function (options) { let rows = this.data; - let wiki = `{| class="wikitable"\n`; // draw headers + let wiki = "{| class=\"wikitable\"\n"; // draw headers let headers = Object.keys(rows[0]); headers = headers.filter(k => /^col[0-9]/.test(k) !== true); @@ -308,18 +307,30 @@ const toWiki = function (options) { wiki += '| ' + val + '\n'; }); }); - wiki += `|}`; + wiki += "|}"; return wiki; }; -var table = toWiki; +var table$1 = toWiki; + +const doc = _01Doc; +const section = _02Section; +const paragraph = _03Paragraph; +const sentence = _04Sentence; +const link = _05Link; +const image = image$1; +const template = template$1; +const infobox = infobox$1; +const list = list$1; +const reference = reference$1; +const table = table$1; const plugin = function (models) { - models.Doc.prototype.makeWikitext = _01Doc; - models.Section.prototype.makeWikitext = _02Section; - models.Paragraph.prototype.makeWikitext = _03Paragraph; - models.Sentence.prototype.makeWikitext = _04Sentence; - models.Link.prototype.makeWikitext = _05Link; + models.Doc.prototype.makeWikitext = doc; + models.Section.prototype.makeWikitext = section; + models.Paragraph.prototype.makeWikitext = paragraph; + models.Sentence.prototype.makeWikitext = sentence; + models.Link.prototype.makeWikitext = link; models.Image.prototype.makeWikitext = image; models.Infobox.prototype.makeWikitext = infobox; models.Template.prototype.makeWikitext = template; @@ -330,4 +341,4 @@ const plugin = function (models) { var src = plugin; -export default src; +export { src as default }; diff --git a/plugins/wikitext/package-lock.json b/plugins/wikitext/package-lock.json index 22aa25e7..185c33ff 100644 --- a/plugins/wikitext/package-lock.json +++ b/plugins/wikitext/package-lock.json @@ -9,52 +9,56 @@ "version": "1.1.0", "license": "MIT", "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^5.1.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "peerDependencies": { "wtf_wikipedia": "^8.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", - "dev": true + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -71,83 +75,102 @@ } }, "node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -164,193 +187,249 @@ } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "dependencies": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -359,189 +438,278 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=4" @@ -574,6 +742,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -682,452 +865,570 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -1137,55 +1438,59 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1193,70 +1498,178 @@ "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-babel/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-babel/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" } }, + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, "node_modules/@types/node": { "version": "13.9.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.0.tgz", "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==", "dev": true }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1300,13 +1713,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" }, "peerDependencies": { @@ -1314,25 +1727,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1355,16 +1768,16 @@ } }, "node_modules/browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" @@ -1383,21 +1796,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "node_modules/buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "node_modules/builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -1412,10 +1810,14 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", - "dev": true + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } }, "node_modules/chalk": { "version": "2.4.2", @@ -1447,9 +1849,9 @@ "dev": true }, "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "node_modules/commander": { @@ -1458,6 +1860,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1474,12 +1882,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "dependencies": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "funding": { @@ -1497,9 +1905,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/debug": { @@ -1577,33 +1985,37 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.704", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", - "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -1672,12 +2084,6 @@ "node": ">=0.8.0" } }, - "node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1751,10 +2157,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -1766,6 +2197,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { @@ -1798,6 +2232,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1819,6 +2265,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1835,6 +2296,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -1875,9 +2350,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true, "engines": { "node": ">= 0.4" @@ -1919,12 +2394,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, "node_modules/is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -1950,28 +2419,22 @@ } }, "node_modules/is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "dependencies": { - "@types/estree": "0.0.39" + "@types/estree": "*" } }, - "node_modules/is-reference/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -1989,11 +2452,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2044,6 +2519,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -2127,12 +2614,6 @@ "node": ">=6" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -2179,15 +2660,15 @@ "dev": true }, "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2255,15 +2736,33 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "node_modules/randombytes": { @@ -2276,23 +2775,23 @@ } }, "node_modules/re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "node_modules/readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -2303,21 +2802,21 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "dependencies": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" }, "engines": { "node": ">=4" } }, "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "node_modules/regenerator-transform": { @@ -2346,17 +2845,17 @@ } }, "node_modules/regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" @@ -2369,9 +2868,9 @@ "dev": true }, "node_modules/regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -2390,12 +2889,16 @@ } }, "node_modules/resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "dependencies": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resumer": { @@ -2408,9 +2911,9 @@ } }, "node_modules/rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2419,30 +2922,7 @@ "node": ">=10.0.0" }, "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "node_modules/rollup-plugin-filesize-check": { @@ -2451,28 +2931,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "node_modules/rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "dependencies": { - "rollup-pluginutils": "^2.5.0" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "dependencies": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -2485,15 +2943,6 @@ "terser": "^5.0.0" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2567,9 +3016,9 @@ "dev": true }, "node_modules/split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "dependencies": { "through": "2" @@ -2579,23 +3028,23 @@ } }, "node_modules/string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" }, "engines": { "node": ">= 0.4" @@ -2643,101 +3092,40 @@ } }, "node_modules/tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "dependencies": { - "chalk": "4.1.0", - "tap-out": "3.0.0" + "colorette": "^1.2.2", + "tap-in": "3.2.1" }, "bin": { "tap-dancer": "src/index.js" } }, - "node_modules/tap-dancer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tap-dancer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/tap-dancer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/tap-dancer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tap-dancer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "bin": { + "tap-in": "bin/tap-in.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", - "dev": true, - "dependencies": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" - }, - "bin": { - "tap-out": "bin/cmd.js" + "node": ">=8.0.0" } }, "node_modules/tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", @@ -2745,17 +3133,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "bin": { @@ -2817,9 +3207,9 @@ } }, "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "node_modules/unbox-primitive": { @@ -2838,40 +3228,40 @@ } }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, "engines": { "node": ">=4" @@ -2956,35 +3346,35 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.16.0" } }, "@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true }, "@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -2994,74 +3384,75 @@ } }, "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -3075,339 +3466,370 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.16.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", "dev": true, "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", "dev": true }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.16.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { @@ -3428,6 +3850,15 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -3509,353 +3940,366 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -3865,52 +4309,53 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" } }, "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -3921,67 +4366,135 @@ } }, "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, "@types/node": { "version": "13.9.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.0.tgz", "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==", "dev": true }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -4016,33 +4529,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.3.0" } }, "balanced-match": { @@ -4062,16 +4575,16 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "buffer-from": { @@ -4080,18 +4593,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true - }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -4103,9 +4604,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true }, "chalk": { @@ -4135,9 +4636,9 @@ "dev": true }, "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true }, "commander": { @@ -4146,6 +4647,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -4162,12 +4669,12 @@ } }, "core-js-compat": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz", - "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "requires": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "dependencies": { @@ -4180,9 +4687,9 @@ } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "debug": { @@ -4250,33 +4757,37 @@ } }, "electron-to-chromium": { - "version": "1.3.704", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz", - "integrity": "sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" } }, "es-get-iterator": { @@ -4326,12 +4837,6 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4389,10 +4894,26 @@ "has-symbols": "^1.0.1" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4424,6 +4945,15 @@ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, + "has-dynamic-import": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz", + "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -4436,6 +4966,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4452,6 +4991,17 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -4477,9 +5027,9 @@ } }, "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-core-module": { @@ -4503,12 +5053,6 @@ "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -4522,30 +5066,22 @@ "dev": true }, "is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "requires": { - "@types/estree": "0.0.39" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - } + "@types/estree": "*" } }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-tostringtag": "^1.0.0" } }, "is-set": { @@ -4554,12 +5090,21 @@ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -4588,6 +5133,15 @@ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -4649,12 +5203,6 @@ "minimist": "^1.2.5" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -4698,15 +5246,15 @@ "dev": true }, "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true }, "object-is": { @@ -4753,15 +5301,27 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "randombytes": { @@ -4774,23 +5334,23 @@ } }, "re-emitter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", - "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==", "dev": true }, "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -4801,18 +5361,18 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "regenerator-transform": { @@ -4835,17 +5395,17 @@ } }, "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { @@ -4855,9 +5415,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -4872,11 +5432,12 @@ } }, "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -4890,35 +5451,12 @@ } }, "rollup": { - "version": "2.44.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.44.0.tgz", - "integrity": "sha512-rGSF4pLwvuaH/x4nAS+zP6UNn5YUDWf/TeEU5IoXSZKBbKRNTCI3qMnYXKZgrC0D2KzS2baiOZt1OlqhMu5rnQ==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" + "fsevents": "~2.3.2" } }, "rollup-plugin-filesize-check": { @@ -4927,28 +5465,6 @@ "integrity": "sha512-FlFjye7Vk3tmI9HevcU+nrhIyzvARXG5cua1NQJXFlrp+lRht0qmQ1AgXdUrHpfnHmro/r1qopmjokfvavh36g==", "dev": true }, - "rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "requires": { - "rollup-pluginutils": "^2.5.0" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, "rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", @@ -4961,15 +5477,6 @@ "terser": "^5.0.0" } }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -5033,32 +5540,32 @@ "dev": true }, "split": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "string.prototype.trim": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz", - "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", + "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" } }, "string.prototype.trimend": { @@ -5091,82 +5598,31 @@ } }, "tap-dancer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.1.tgz", - "integrity": "sha512-uNzizp+IHd4fJL6ec9mOySmWFhmtGYPUjiRdgJ6pHKG2pc70wUOJh32Wxd1akveyzuPQjS7rtb4SFgVju0kJfw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/tap-dancer/-/tap-dancer-0.3.4.tgz", + "integrity": "sha512-pRrO9k2XY69/jzW1DaWT8ttK4I7y51y2DTYdcgNJScDKhjiAXugyur8xIoVGN84v3QEJV+tBb+13TQ4/cNnrjg==", "dev": true, "requires": { - "chalk": "4.1.0", - "tap-out": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "colorette": "^1.2.2", + "tap-in": "3.2.1" } }, - "tap-out": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-3.0.0.tgz", - "integrity": "sha512-JzlrjCL3anqI9xHGPfYb6Mo+6nYs60m0tDy6i0sWhYDlrBDVerYPNWoUo1buK3YeWQFdm42KQv8wu9qLf1tL5A==", + "tap-in": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tap-in/-/tap-in-3.2.1.tgz", + "integrity": "sha512-JlMpyAcXHaYsQC5R74YBMQH1ksPRu4okT7mqTvj7T1JESum1Ttw5MGACL+YLf1jIELIdBfx/4x1c3wtfXX/sSQ==", "dev": true, "requires": { - "re-emitter": "1.1.3", - "readable-stream": "2.2.9", - "split": "1.0.0", - "trim": "0.0.1" + "re-emitter": "1.1.4", + "readable-stream": "2.3.7", + "split": "1.0.1", + "trim": "1.0.1" } }, "tape": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.2.2.tgz", - "integrity": "sha512-grXrzPC1ly2kyTMKdqxh5GiLpb0BpNctCuecTB0psHX4Gu0nc+uxWR4xKjTh/4CfQlH4zhvTM2/EXmHXp6v/uA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.2.tgz", + "integrity": "sha512-F+UjjvUJsEq/D0NwTKtuekTJsN7vpvYT/dvkZuBw7Y+2whC2JIU8syHIlNNkqstmtBu/mVoqhDr1QJGFUl+caA==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -5174,17 +5630,19 @@ "defined": "^1.0.0", "dotignore": "^0.1.2", "for-each": "^0.3.3", - "glob": "^7.1.6", + "get-package-type": "^0.1.0", + "glob": "^7.2.0", "has": "^1.0.3", + "has-dynamic-import": "^2.0.0", "inherits": "^2.0.4", - "is-regex": "^1.1.2", + "is-regex": "^1.1.4", "minimist": "^1.2.5", - "object-inspect": "^1.9.0", + "object-inspect": "^1.11.0", "object-is": "^1.1.5", "object.assign": "^4.1.2", "resolve": "^2.0.0-next.3", "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.4", + "string.prototype.trim": "^1.2.5", "through": "^2.3.8" }, "dependencies": { @@ -5232,9 +5690,9 @@ "dev": true }, "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-1.0.1.tgz", + "integrity": "sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==", "dev": true }, "unbox-primitive": { @@ -5250,31 +5708,31 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "util-deprecate": { diff --git a/plugins/wikitext/package.json b/plugins/wikitext/package.json index 00488c02..ba92cfe5 100644 --- a/plugins/wikitext/package.json +++ b/plugins/wikitext/package.json @@ -1,7 +1,7 @@ { "name": "wtf-plugin-wikitext", "description": "wikitext output plugin for wtf_wikipedia", - "version": "1.1.0", + "version": "1.1.1", "main": "./builds/wtf-plugin-wikitext.js", "unpkg": "./builds/wtf-plugin-wikitext.min.js", "module": "./builds/wtf-plugin-wikitext.mjs", @@ -31,17 +31,15 @@ "wtf_wikipedia": "^8.0.0" }, "devDependencies": { - "@babel/core": "7.13.14", - "@babel/preset-env": "7.13.12", - "rollup": "2.44.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "rollup": "2.59.0", "rollup-plugin-filesize-check": "0.0.1", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^5.1.0", "rollup-plugin-terser": "7.0.2", - "tap-dancer": "0.3.1", - "tape": "5.2.2" + "tap-dancer": "0.3.4", + "tape": "5.3.2" }, "license": "MIT" -} +} \ No newline at end of file diff --git a/plugins/wikitext/rollup.config.js b/plugins/wikitext/rollup.config.js index 65ec2662..475f2ad7 100644 --- a/plugins/wikitext/rollup.config.js +++ b/plugins/wikitext/rollup.config.js @@ -1,6 +1,6 @@ -import commonjs from 'rollup-plugin-commonjs' +import commonjs from '@rollup/plugin-commonjs' import { terser } from 'rollup-plugin-terser' -import babel from 'rollup-plugin-babel' +import { babel } from '@rollup/plugin-babel' import sizeCheck from 'rollup-plugin-filesize-check' import { version } from './package.json' @@ -16,6 +16,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -37,6 +38,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }) @@ -57,6 +59,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'] }), diff --git a/rollup.config.js b/rollup.config.js index 6eb9f2f3..dff02c66 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,6 +1,6 @@ -import commonjs from 'rollup-plugin-commonjs' +import commonjs from '@rollup/plugin-commonjs' import { terser } from 'rollup-plugin-terser' -import babel from 'rollup-plugin-babel' +import { babel } from '@rollup/plugin-babel' import sizeCheck from 'rollup-plugin-filesize-check' import { nodeResolve } from '@rollup/plugin-node-resolve' @@ -17,6 +17,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'], }), @@ -41,6 +42,7 @@ export default [ plugins: [ commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'], }), @@ -66,6 +68,7 @@ export default [ }), commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'], }), @@ -90,6 +93,7 @@ export default [ }), commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'], }), @@ -115,6 +119,7 @@ export default [ }), commonjs(), babel({ + babelHelpers: "bundled", babelrc: false, presets: ['@babel/preset-env'], }), diff --git a/scratch.js b/scratch.js index 69ea5eaa..b3a8a94c 100644 --- a/scratch.js +++ b/scratch.js @@ -20,6 +20,7 @@ wtf.extend(require('./plugins/html')) // const wtf = require('wtf_wikipedia') // wtf.extend(require('wtf-plugin-html')) -const input = "'''some bold text'''" - -console.log(wtf(input).html()) +const input = "'''some bold text''' yeah" +let doc = wtf(input, { pageID: 'foo' }) +// doc._wiki = 'foo' +console.log(doc.pageID()) diff --git a/src/04-sentence/parse.js b/src/04-sentence/parse.js index b822305f..71afc724 100644 --- a/src/04-sentence/parse.js +++ b/src/04-sentence/parse.js @@ -7,8 +7,8 @@ const literalAbbreviations = require('./_abbreviations') const abbreviations = literalAbbreviations.concat('[^]][^]]') const abbrev_reg = new RegExp("(^| |')(" + abbreviations.join('|') + `)[.!?] ?$`, 'i') -const acronym_reg = /[ .'][A-Z].? *?$/i -const elipses_reg = /\.{3,} +?$/ +const acronym_reg = /[ .'][A-Z].? *$/i +const elipses_reg = /\.{3,} +$/ const circa_reg = / c\.\s$/ const hasWord = /\p{Letter}/iu diff --git a/src/_version.js b/src/_version.js index d06ff6f3..5a818ce3 100644 --- a/src/_version.js +++ b/src/_version.js @@ -1 +1 @@ -module.exports = '9.0.1' \ No newline at end of file +module.exports = '9.0.2' \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 0a12492e..8d5944ad 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -31,6 +31,6 @@ "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */, "allowSyntheticDefaultImports": true }, - "include": ["src/**/*.js", "plugins/**"], + "include": ["src/**/*.js", "plugins/**/*"], "exclude": ["node_modules", "**/node_modules/*", "**/builds/"] }